From 3c54f2470e8791a26f5d38f6df9862624f083904 Mon Sep 17 00:00:00 2001 From: timmypidashev Date: Sun, 8 May 2022 16:37:52 -0700 Subject: [PATCH] Start ruby template --- .gitattributes | 7 + .gitignore | 35 + .ruby-version | 1 + Banner.png | Bin 55664 -> 0 bytes Gemfile | 72 + Gemfile.lock | 234 + README.md | 27 +- Rakefile | 6 + app/assets/config/manifest.js | 4 + .../4.3.html => app/assets/images/.keep | 0 app/assets/stylesheets/application.css | 15 + app/channels/application_cable/channel.rb | 4 + app/channels/application_cable/connection.rb | 4 + app/controllers/application_controller.rb | 2 + .../controllers/concerns/.keep | 0 app/helpers/application_helper.rb | 2 + app/javascript/application.js | 3 + app/javascript/controllers/application.js | 9 + .../controllers/hello_controller.js | 7 + app/javascript/controllers/index.js | 11 + app/jobs/application_job.rb | 7 + app/mailers/application_mailer.rb | 4 + app/models/application_record.rb | 3 + app/models/concerns/.keep | 0 app/views/layouts/application.html.erb | 16 + app/views/layouts/mailer.html.erb | 13 + app/views/layouts/mailer.text.erb | 1 + assignments.html | 88 - bin/bundle | 114 + bin/importmap | 4 + bin/rails | 4 + bin/rake | 4 + bin/setup | 33 + blog.html | 92 - config.ru | 6 + config/application.rb | 22 + config/boot.rb | 4 + config/cable.yml | 10 + config/credentials.yml.enc | 1 + config/database.yml | 25 + config/environment.rb | 5 + config/environments/development.rb | 70 + config/environments/production.rb | 93 + config/environments/test.rb | 60 + config/importmap.rb | 7 + config/initializers/assets.rb | 12 + .../initializers/content_security_policy.rb | 26 + .../initializers/filter_parameter_logging.rb | 8 + config/initializers/inflections.rb | 16 + config/initializers/permissions_policy.rb | 11 + config/locales/en.yml | 33 + config/puma.rb | 43 + config/routes.rb | 6 + config/storage.yml | 34 + css/assignments.less | 137 - css/login.less | 309 - css/styles.css | 307 - db/seeds.rb | 7 + download.html | 57 - images/colors/colors.png | Bin 3941 -> 0 bytes images/elements/ai/line_long.ai | 1412 - images/elements/ai/line_medium.ai | 1423 - images/elements/ai/line_short.ai | 1447 - images/elements/png/discord.png | Bin 56695 -> 0 bytes images/elements/png/github.png | Bin 63785 -> 0 bytes images/elements/png/gmail.png | Bin 25542 -> 0 bytes images/elements/png/itch.png | Bin 74801 -> 0 bytes images/elements/png/line_long.png | Bin 608 -> 0 bytes images/elements/png/line_medium.png | Bin 578 -> 0 bytes images/elements/png/line_short.png | Bin 474 -> 0 bytes images/elements/png/timmy.png | Bin 45276 -> 0 bytes images/elements/png/twitter.png | Bin 45622 -> 0 bytes images/elements/png/youtube.png | Bin 35748 -> 0 bytes index.html | 102 - js/closeNav.js | 3 - js/less.js | 11339 --- js/openNav.js | 3 - lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 login.html | 65 - projects.html | 58 - public/404.html | 67 + public/422.html | 67 + public/500.html | 66 + public/apple-touch-icon-precomposed.png | 0 public/apple-touch-icon.png | 0 public/favicon.ico | 0 public/robots.txt | 1 + python/assignments/1.1.html | 2 - python/assignments/1.2.html | 2 - python/assignments/1.3.html | 2 - python/assignments/2.1.html | 30 - python/assignments/2.2.html | 30 - python/assignments/2.3.html | 30 - python/assignments/3.1.html | 30 - python/assignments/3.2.html | 30 - python/assignments/3.3.html | 30 - python/assignments/4.1.html | 30 - python/assignments/4.2.html | 30 - python/assignments/5.1.html | 30 - python/assignments/5.2.html | 30 - python/assignments/5.3.html | 30 - src-noconflict/ace.js | 21402 ------ src-noconflict/ext-beautify.js | 331 - src-noconflict/ext-code_lens.js | 238 - src-noconflict/ext-elastic_tabstops_lite.js | 277 - src-noconflict/ext-emmet.js | 1331 - src-noconflict/ext-error_marker.js | 9 - src-noconflict/ext-hardwrap.js | 85 - src-noconflict/ext-keybinding_menu.js | 193 - src-noconflict/ext-language_tools.js | 2166 - src-noconflict/ext-linking.js | 64 - src-noconflict/ext-modelist.js | 248 - src-noconflict/ext-options.js | 799 - src-noconflict/ext-prompt.js | 2806 - src-noconflict/ext-rtl.js | 122 - src-noconflict/ext-searchbox.js | 514 - src-noconflict/ext-settings_menu.js | 820 - src-noconflict/ext-spellcheck.js | 73 - src-noconflict/ext-split.js | 207 - src-noconflict/ext-static_highlight.js | 229 - src-noconflict/ext-statusbar.js | 56 - src-noconflict/ext-textarea.js | 430 - src-noconflict/ext-themelist.js | 67 - src-noconflict/ext-whitespace.js | 213 - src-noconflict/keybinding-emacs.js | 1169 - src-noconflict/keybinding-sublime.js | 422 - src-noconflict/keybinding-vim.js | 6198 -- src-noconflict/keybinding-vscode.js | 262 - src-noconflict/mode-abap.js | 221 - src-noconflict/mode-abc.js | 271 - src-noconflict/mode-actionscript.js | 275 - src-noconflict/mode-ada.js | 137 - src-noconflict/mode-alda.js | 311 - src-noconflict/mode-apache_conf.js | 363 - src-noconflict/mode-apex.js | 457 - src-noconflict/mode-applescript.js | 278 - src-noconflict/mode-aql.js | 102 - src-noconflict/mode-asciidoc.js | 349 - src-noconflict/mode-asl.js | 422 - src-noconflict/mode-assembly_x86.js | 193 - src-noconflict/mode-autohotkey.js | 244 - src-noconflict/mode-batchfile.js | 230 - src-noconflict/mode-c9search.js | 293 - src-noconflict/mode-c_cpp.js | 503 - src-noconflict/mode-cirru.js | 210 - src-noconflict/mode-clojure.js | 315 - src-noconflict/mode-cobol.js | 101 - src-noconflict/mode-coffee.js | 400 - src-noconflict/mode-coldfusion.js | 2596 - src-noconflict/mode-crystal.js | 642 - src-noconflict/mode-csharp.js | 502 - src-noconflict/mode-csound_document.js | 4105 -- src-noconflict/mode-csound_orchestra.js | 3035 - src-noconflict/mode-csound_score.js | 462 - src-noconflict/mode-csp.js | 59 - src-noconflict/mode-css.js | 720 - src-noconflict/mode-curly.js | 2564 - src-noconflict/mode-d.js | 520 - src-noconflict/mode-dart.js | 715 - src-noconflict/mode-diff.js | 147 - src-noconflict/mode-django.js | 2595 - src-noconflict/mode-dockerfile.js | 500 - src-noconflict/mode-dot.js | 417 - src-noconflict/mode-drools.js | 498 - src-noconflict/mode-edifact.js | 166 - src-noconflict/mode-eiffel.js | 135 - src-noconflict/mode-ejs.js | 3533 - src-noconflict/mode-elixir.js | 501 - src-noconflict/mode-elm.js | 306 - src-noconflict/mode-erlang.js | 1010 - src-noconflict/mode-forth.js | 297 - src-noconflict/mode-fortran.js | 430 - src-noconflict/mode-fsharp.js | 316 - src-noconflict/mode-fsl.js | 259 - src-noconflict/mode-ftl.js | 1193 - src-noconflict/mode-gcode.js | 93 - src-noconflict/mode-gherkin.js | 168 - src-noconflict/mode-gitignore.js | 59 - src-noconflict/mode-glsl.js | 580 - src-noconflict/mode-gobstones.js | 1090 - src-noconflict/mode-golang.js | 413 - src-noconflict/mode-graphqlschema.js | 214 - src-noconflict/mode-groovy.js | 989 - src-noconflict/mode-haml.js | 1873 - src-noconflict/mode-handlebars.js | 2622 - src-noconflict/mode-haskell.js | 380 - src-noconflict/mode-haskell_cabal.js | 141 - src-noconflict/mode-haxe.js | 386 - src-noconflict/mode-hjson.js | 353 - src-noconflict/mode-html.js | 2509 - src-noconflict/mode-html_elixir.js | 3088 - src-noconflict/mode-html_ruby.js | 3550 - src-noconflict/mode-ini.js | 162 - src-noconflict/mode-io.js | 248 - src-noconflict/mode-jack.js | 346 - src-noconflict/mode-jade.js | 2025 - src-noconflict/mode-java.js | 1038 - src-noconflict/mode-javascript.js | 798 - src-noconflict/mode-json.js | 329 - src-noconflict/mode-json5.js | 360 - src-noconflict/mode-jsoniq.js | 2632 - src-noconflict/mode-jsp.js | 1433 - src-noconflict/mode-jssm.js | 325 - src-noconflict/mode-jsx.js | 411 - src-noconflict/mode-julia.js | 303 - src-noconflict/mode-kotlin.js | 797 - src-noconflict/mode-latex.js | 296 - src-noconflict/mode-latte.js | 2708 - src-noconflict/mode-less.js | 839 - src-noconflict/mode-liquid.js | 2742 - src-noconflict/mode-lisp.js | 112 - src-noconflict/mode-livescript.js | 279 - src-noconflict/mode-logiql.js | 317 - src-noconflict/mode-logtalk.js | 352 - src-noconflict/mode-lsl.js | 343 - src-noconflict/mode-lua.js | 452 - src-noconflict/mode-luapage.js | 3028 - src-noconflict/mode-lucene.js | 154 - src-noconflict/mode-makefile.js | 412 - src-noconflict/mode-markdown.js | 3194 - src-noconflict/mode-mask.js | 1803 - src-noconflict/mode-matlab.js | 263 - src-noconflict/mode-maze.js | 292 - src-noconflict/mode-mediawiki.js | 592 - src-noconflict/mode-mel.js | 263 - src-noconflict/mode-mips.js | 264 - src-noconflict/mode-mixal.js | 122 - src-noconflict/mode-mushcode.js | 681 - src-noconflict/mode-mysql.js | 167 - src-noconflict/mode-nginx.js | 298 - src-noconflict/mode-nim.js | 363 - src-noconflict/mode-nix.js | 647 - src-noconflict/mode-nsis.js | 312 - src-noconflict/mode-nunjucks.js | 2698 - src-noconflict/mode-objectivec.js | 740 - src-noconflict/mode-ocaml.js | 421 - src-noconflict/mode-pascal.js | 223 - src-noconflict/mode-perl.js | 381 - src-noconflict/mode-pgsql.js | 1743 - src-noconflict/mode-php.js | 13110 ---- src-noconflict/mode-php_laravel_blade.js | 13311 ---- src-noconflict/mode-pig.js | 310 - src-noconflict/mode-plain_text.js | 32 - src-noconflict/mode-powershell.js | 418 - src-noconflict/mode-praat.js | 478 - src-noconflict/mode-prisma.js | 489 - src-noconflict/mode-prolog.js | 371 - src-noconflict/mode-properties.js | 80 - src-noconflict/mode-protobuf.js | 593 - src-noconflict/mode-puppet.js | 368 - src-noconflict/mode-python.js | 508 - src-noconflict/mode-qml.js | 381 - src-noconflict/mode-r.js | 312 - src-noconflict/mode-raku.js | 593 - src-noconflict/mode-razor.js | 2875 - src-noconflict/mode-rdoc.js | 243 - src-noconflict/mode-red.js | 450 - src-noconflict/mode-redshift.js | 360 - src-noconflict/mode-rhtml.js | 2808 - src-noconflict/mode-rst.js | 257 - src-noconflict/mode-ruby.js | 1003 - src-noconflict/mode-rust.js | 282 - src-noconflict/mode-sass.js | 529 - src-noconflict/mode-scad.js | 414 - src-noconflict/mode-scala.js | 984 - src-noconflict/mode-scheme.js | 232 - src-noconflict/mode-scrypt.js | 364 - src-noconflict/mode-scss.js | 873 - src-noconflict/mode-sh.js | 449 - src-noconflict/mode-sjs.js | 1015 - src-noconflict/mode-slim.js | 5240 -- src-noconflict/mode-smarty.js | 2635 - src-noconflict/mode-smithy.js | 507 - src-noconflict/mode-snippets.js | 207 - src-noconflict/mode-soy_template.js | 2848 - src-noconflict/mode-space.js | 167 - src-noconflict/mode-sparql.js | 320 - src-noconflict/mode-sql.js | 271 - src-noconflict/mode-sqlserver.js | 445 - src-noconflict/mode-stylus.js | 472 - src-noconflict/mode-svg.js | 1582 - src-noconflict/mode-swift.js | 395 - src-noconflict/mode-tcl.js | 387 - src-noconflict/mode-terraform.js | 400 - src-noconflict/mode-tex.js | 160 - src-noconflict/mode-text.js | 9 - src-noconflict/mode-textile.js | 150 - src-noconflict/mode-toml.js | 153 - src-noconflict/mode-tsx.js | 888 - src-noconflict/mode-turtle.js | 296 - src-noconflict/mode-twig.js | 2693 - src-noconflict/mode-typescript.js | 869 - src-noconflict/mode-vala.js | 677 - src-noconflict/mode-vbscript.js | 635 - src-noconflict/mode-velocity.js | 2792 - src-noconflict/mode-verilog.js | 118 - src-noconflict/mode-vhdl.js | 116 - src-noconflict/mode-visualforce.js | 2640 - src-noconflict/mode-wollok.js | 914 - src-noconflict/mode-xml.js | 676 - src-noconflict/mode-xquery.js | 2644 - src-noconflict/mode-yaml.js | 330 - src-noconflict/mode-zeek.js | 539 - src-noconflict/snippets/abap.js | 9 - src-noconflict/snippets/abc.js | 45 - src-noconflict/snippets/actionscript.js | 171 - src-noconflict/snippets/ada.js | 9 - src-noconflict/snippets/alda.js | 9 - src-noconflict/snippets/apache_conf.js | 9 - src-noconflict/snippets/apex.js | 9 - src-noconflict/snippets/applescript.js | 9 - src-noconflict/snippets/aql.js | 9 - src-noconflict/snippets/asciidoc.js | 9 - src-noconflict/snippets/asl.js | 9 - src-noconflict/snippets/assembly_x86.js | 9 - src-noconflict/snippets/autohotkey.js | 9 - src-noconflict/snippets/batchfile.js | 9 - src-noconflict/snippets/c9search.js | 9 - src-noconflict/snippets/c_cpp.js | 145 - src-noconflict/snippets/cirru.js | 9 - src-noconflict/snippets/clojure.js | 104 - src-noconflict/snippets/cobol.js | 9 - src-noconflict/snippets/coffee.js | 109 - src-noconflict/snippets/coldfusion.js | 9 - src-noconflict/snippets/crystal.js | 9 - src-noconflict/snippets/csharp.js | 9 - src-noconflict/snippets/csound_document.js | 24 - src-noconflict/snippets/csound_orchestra.js | 61 - src-noconflict/snippets/csound_score.js | 9 - src-noconflict/snippets/csp.js | 9 - src-noconflict/snippets/css.js | 981 - src-noconflict/snippets/curly.js | 9 - src-noconflict/snippets/d.js | 9 - src-noconflict/snippets/dart.js | 97 - src-noconflict/snippets/diff.js | 25 - src-noconflict/snippets/django.js | 122 - src-noconflict/snippets/dockerfile.js | 9 - src-noconflict/snippets/dot.js | 9 - src-noconflict/snippets/drools.js | 33 - src-noconflict/snippets/edifact.js | 254 - src-noconflict/snippets/eiffel.js | 9 - src-noconflict/snippets/ejs.js | 9 - src-noconflict/snippets/elixir.js | 9 - src-noconflict/snippets/elm.js | 9 - src-noconflict/snippets/erlang.js | 174 - src-noconflict/snippets/forth.js | 9 - src-noconflict/snippets/fortran.js | 9 - src-noconflict/snippets/fsharp.js | 9 - src-noconflict/snippets/fsl.js | 14 - src-noconflict/snippets/ftl.js | 9 - src-noconflict/snippets/gcode.js | 9 - src-noconflict/snippets/gherkin.js | 9 - src-noconflict/snippets/gitignore.js | 9 - src-noconflict/snippets/glsl.js | 9 - src-noconflict/snippets/gobstones.js | 1718 - src-noconflict/snippets/golang.js | 9 - src-noconflict/snippets/graphqlschema.js | 46 - src-noconflict/snippets/groovy.js | 9 - src-noconflict/snippets/haml.js | 34 - src-noconflict/snippets/handlebars.js | 9 - src-noconflict/snippets/haskell.js | 96 - src-noconflict/snippets/haskell_cabal.js | 9 - src-noconflict/snippets/haxe.js | 9 - src-noconflict/snippets/hjson.js | 9 - src-noconflict/snippets/html.js | 867 - src-noconflict/snippets/html_elixir.js | 9 - src-noconflict/snippets/html_ruby.js | 9 - src-noconflict/snippets/ini.js | 9 - src-noconflict/snippets/io.js | 76 - src-noconflict/snippets/jack.js | 9 - src-noconflict/snippets/jade.js | 9 - src-noconflict/snippets/java.js | 254 - src-noconflict/snippets/javascript.js | 209 - src-noconflict/snippets/json.js | 9 - src-noconflict/snippets/json5.js | 9 - src-noconflict/snippets/jsoniq.js | 75 - src-noconflict/snippets/jsp.js | 113 - src-noconflict/snippets/jssm.js | 9 - src-noconflict/snippets/jsx.js | 9 - src-noconflict/snippets/julia.js | 9 - src-noconflict/snippets/kotlin.js | 9 - src-noconflict/snippets/latex.js | 9 - src-noconflict/snippets/latte.js | 9 - src-noconflict/snippets/less.js | 9 - src-noconflict/snippets/liquid.js | 895 - src-noconflict/snippets/lisp.js | 9 - src-noconflict/snippets/livescript.js | 9 - src-noconflict/snippets/logiql.js | 9 - src-noconflict/snippets/logtalk.js | 9 - src-noconflict/snippets/lsl.js | 1246 - src-noconflict/snippets/lua.js | 35 - src-noconflict/snippets/luapage.js | 9 - src-noconflict/snippets/lucene.js | 9 - src-noconflict/snippets/makefile.js | 18 - src-noconflict/snippets/markdown.js | 102 - src-noconflict/snippets/mask.js | 9 - src-noconflict/snippets/matlab.js | 9 - src-noconflict/snippets/maze.js | 23 - src-noconflict/snippets/mediawiki.js | 9 - src-noconflict/snippets/mel.js | 9 - src-noconflict/snippets/mips.js | 9 - src-noconflict/snippets/mixal.js | 9 - src-noconflict/snippets/mushcode.js | 9 - src-noconflict/snippets/mysql.js | 9 - src-noconflict/snippets/nginx.js | 9 - src-noconflict/snippets/nim.js | 9 - src-noconflict/snippets/nix.js | 9 - src-noconflict/snippets/nsis.js | 9 - src-noconflict/snippets/nunjucks.js | 9 - src-noconflict/snippets/objectivec.js | 9 - src-noconflict/snippets/ocaml.js | 9 - src-noconflict/snippets/pascal.js | 9 - src-noconflict/snippets/perl.js | 361 - src-noconflict/snippets/pgsql.js | 9 - src-noconflict/snippets/php.js | 397 - src-noconflict/snippets/php_laravel_blade.js | 9 - src-noconflict/snippets/pig.js | 9 - src-noconflict/snippets/plain_text.js | 9 - src-noconflict/snippets/powershell.js | 9 - src-noconflict/snippets/praat.js | 9 - src-noconflict/snippets/prisma.js | 9 - src-noconflict/snippets/prolog.js | 9 - src-noconflict/snippets/properties.js | 9 - src-noconflict/snippets/protobuf.js | 9 - src-noconflict/snippets/puppet.js | 9 - src-noconflict/snippets/python.js | 172 - src-noconflict/snippets/qml.js | 9 - src-noconflict/snippets/r.js | 135 - src-noconflict/snippets/raku.js | 9 - src-noconflict/snippets/razor.js | 17 - src-noconflict/snippets/rdoc.js | 9 - src-noconflict/snippets/red.js | 9 - src-noconflict/snippets/redshift.js | 9 - src-noconflict/snippets/rhtml.js | 9 - src-noconflict/snippets/rst.js | 36 - src-noconflict/snippets/ruby.js | 942 - src-noconflict/snippets/rust.js | 9 - src-noconflict/snippets/sass.js | 9 - src-noconflict/snippets/scad.js | 9 - src-noconflict/snippets/scala.js | 9 - src-noconflict/snippets/scheme.js | 9 - src-noconflict/snippets/scrypt.js | 9 - src-noconflict/snippets/scss.js | 9 - src-noconflict/snippets/sh.js | 97 - src-noconflict/snippets/sjs.js | 9 - src-noconflict/snippets/slim.js | 9 - src-noconflict/snippets/smarty.js | 9 - src-noconflict/snippets/smithy.js | 9 - src-noconflict/snippets/snippets.js | 23 - src-noconflict/snippets/soy_template.js | 9 - src-noconflict/snippets/space.js | 9 - src-noconflict/snippets/sparql.js | 9 - src-noconflict/snippets/sql.js | 40 - src-noconflict/snippets/sqlserver.js | 83 - src-noconflict/snippets/stylus.js | 9 - src-noconflict/snippets/svg.js | 9 - src-noconflict/snippets/swift.js | 9 - src-noconflict/snippets/tcl.js | 106 - src-noconflict/snippets/terraform.js | 9 - src-noconflict/snippets/tex.js | 204 - src-noconflict/snippets/text.js | 9 - src-noconflict/snippets/textile.js | 44 - src-noconflict/snippets/toml.js | 9 - src-noconflict/snippets/tsx.js | 9 - src-noconflict/snippets/turtle.js | 9 - src-noconflict/snippets/twig.js | 9 - src-noconflict/snippets/typescript.js | 9 - src-noconflict/snippets/vala.js | 200 - src-noconflict/snippets/vbscript.js | 9 - src-noconflict/snippets/velocity.js | 43 - src-noconflict/snippets/verilog.js | 9 - src-noconflict/snippets/vhdl.js | 9 - src-noconflict/snippets/visualforce.js | 9 - src-noconflict/snippets/wollok.js | 98 - src-noconflict/snippets/xml.js | 9 - src-noconflict/snippets/xquery.js | 75 - src-noconflict/snippets/yaml.js | 9 - src-noconflict/snippets/zeek.js | 9 - src-noconflict/theme-ambiance.js | 185 - src-noconflict/theme-chaos.js | 163 - src-noconflict/theme-chrome.js | 135 - src-noconflict/theme-clouds.js | 102 - src-noconflict/theme-clouds_midnight.js | 103 - src-noconflict/theme-cobalt.js | 120 - src-noconflict/theme-crimson_editor.js | 125 - src-noconflict/theme-dawn.js | 115 - src-noconflict/theme-dracula.js | 135 - src-noconflict/theme-dreamweaver.js | 148 - src-noconflict/theme-eclipse.js | 105 - src-noconflict/theme-github.js | 110 - src-noconflict/theme-gob.js | 119 - src-noconflict/theme-gruvbox.js | 89 - src-noconflict/theme-idle_fingers.js | 103 - src-noconflict/theme-iplastic.js | 128 - src-noconflict/theme-katzenmilch.js | 128 - src-noconflict/theme-kr_theme.js | 111 - src-noconflict/theme-kuroir.js | 68 - src-noconflict/theme-merbivore.js | 102 - src-noconflict/theme-merbivore_soft.js | 103 - src-noconflict/theme-mono_industrial.js | 114 - src-noconflict/theme-monokai.js | 112 - src-noconflict/theme-nord_dark.js | 102 - src-noconflict/theme-one_dark.js | 139 - src-noconflict/theme-pastel_on_dark.js | 115 - src-noconflict/theme-solarized_dark.js | 95 - src-noconflict/theme-solarized_light.js | 98 - src-noconflict/theme-sqlserver.js | 145 - src-noconflict/theme-terminal.js | 121 - src-noconflict/theme-textmate.js | 137 - src-noconflict/theme-tomorrow.js | 115 - src-noconflict/theme-tomorrow_night.js | 115 - src-noconflict/theme-tomorrow_night_blue.js | 113 - src-noconflict/theme-tomorrow_night_bright.js | 128 - .../theme-tomorrow_night_eighties.js | 115 - src-noconflict/theme-twilight.js | 116 - src-noconflict/theme-vibrant_ink.js | 101 - src-noconflict/theme-xcode.js | 95 - src-noconflict/worker-base.js | 1421 - src-noconflict/worker-coffee.js | 1470 - src-noconflict/worker-css.js | 9000 --- src-noconflict/worker-html.js | 10922 --- src-noconflict/worker-javascript.js | 15001 ---- src-noconflict/worker-json.js | 1715 - src-noconflict/worker-lua.js | 3608 - src-noconflict/worker-php.js | 3687 - src-noconflict/worker-xml.js | 3208 - src-noconflict/worker-xquery.js | 57668 ---------------- storage/.keep | 0 test/application_system_test_case.rb | 5 + .../application_cable/connection_test.rb | 11 + test/controllers/.keep | 0 test/fixtures/files/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/system/.keep | 0 test/test_helper.rb | 13 + tmp/.keep | 0 tmp/pids/.keep | 0 tmp/storage/.keep | 0 vendor/.keep | 0 vendor/javascript/.keep | 0 545 files changed, 1372 insertions(+), 351339 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .ruby-version delete mode 100644 Banner.png create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 app/assets/config/manifest.js rename python/assignments/4.3.html => app/assets/images/.keep (100%) create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/controllers/application_controller.rb rename python/editor.js => app/controllers/concerns/.keep (100%) create mode 100644 app/helpers/application_helper.rb create mode 100644 app/javascript/application.js create mode 100644 app/javascript/controllers/application.js create mode 100644 app/javascript/controllers/hello_controller.js create mode 100644 app/javascript/controllers/index.js create mode 100644 app/jobs/application_job.rb create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/application_record.rb create mode 100644 app/models/concerns/.keep create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb delete mode 100644 assignments.html create mode 100755 bin/bundle create mode 100755 bin/importmap create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup delete mode 100644 blog.html create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/cable.yml create mode 100644 config/credentials.yml.enc create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/importmap.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/content_security_policy.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/permissions_policy.rb create mode 100644 config/locales/en.yml create mode 100644 config/puma.rb create mode 100644 config/routes.rb create mode 100644 config/storage.yml delete mode 100644 css/assignments.less delete mode 100644 css/login.less delete mode 100644 css/styles.css create mode 100644 db/seeds.rb delete mode 100644 download.html delete mode 100644 images/colors/colors.png delete mode 100644 images/elements/ai/line_long.ai delete mode 100644 images/elements/ai/line_medium.ai delete mode 100644 images/elements/ai/line_short.ai delete mode 100644 images/elements/png/discord.png delete mode 100644 images/elements/png/github.png delete mode 100644 images/elements/png/gmail.png delete mode 100644 images/elements/png/itch.png delete mode 100644 images/elements/png/line_long.png delete mode 100644 images/elements/png/line_medium.png delete mode 100644 images/elements/png/line_short.png delete mode 100644 images/elements/png/timmy.png delete mode 100644 images/elements/png/twitter.png delete mode 100644 images/elements/png/youtube.png delete mode 100644 index.html delete mode 100644 js/closeNav.js delete mode 100644 js/less.js delete mode 100644 js/openNav.js create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep delete mode 100644 login.html delete mode 100644 projects.html create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/apple-touch-icon-precomposed.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/robots.txt delete mode 100644 python/assignments/1.1.html delete mode 100644 python/assignments/1.2.html delete mode 100644 python/assignments/1.3.html delete mode 100644 python/assignments/2.1.html delete mode 100644 python/assignments/2.2.html delete mode 100644 python/assignments/2.3.html delete mode 100644 python/assignments/3.1.html delete mode 100644 python/assignments/3.2.html delete mode 100644 python/assignments/3.3.html delete mode 100644 python/assignments/4.1.html delete mode 100644 python/assignments/4.2.html delete mode 100644 python/assignments/5.1.html delete mode 100644 python/assignments/5.2.html delete mode 100644 python/assignments/5.3.html delete mode 100644 src-noconflict/ace.js delete mode 100644 src-noconflict/ext-beautify.js delete mode 100644 src-noconflict/ext-code_lens.js delete mode 100644 src-noconflict/ext-elastic_tabstops_lite.js delete mode 100644 src-noconflict/ext-emmet.js delete mode 100644 src-noconflict/ext-error_marker.js delete mode 100644 src-noconflict/ext-hardwrap.js delete mode 100644 src-noconflict/ext-keybinding_menu.js delete mode 100644 src-noconflict/ext-language_tools.js delete mode 100644 src-noconflict/ext-linking.js delete mode 100644 src-noconflict/ext-modelist.js delete mode 100644 src-noconflict/ext-options.js delete mode 100644 src-noconflict/ext-prompt.js delete mode 100644 src-noconflict/ext-rtl.js delete mode 100644 src-noconflict/ext-searchbox.js delete mode 100644 src-noconflict/ext-settings_menu.js delete mode 100644 src-noconflict/ext-spellcheck.js delete mode 100644 src-noconflict/ext-split.js delete mode 100644 src-noconflict/ext-static_highlight.js delete mode 100644 src-noconflict/ext-statusbar.js delete mode 100644 src-noconflict/ext-textarea.js delete mode 100644 src-noconflict/ext-themelist.js delete mode 100644 src-noconflict/ext-whitespace.js delete mode 100644 src-noconflict/keybinding-emacs.js delete mode 100644 src-noconflict/keybinding-sublime.js delete mode 100644 src-noconflict/keybinding-vim.js delete mode 100644 src-noconflict/keybinding-vscode.js delete mode 100644 src-noconflict/mode-abap.js delete mode 100644 src-noconflict/mode-abc.js delete mode 100644 src-noconflict/mode-actionscript.js delete mode 100644 src-noconflict/mode-ada.js delete mode 100644 src-noconflict/mode-alda.js delete mode 100644 src-noconflict/mode-apache_conf.js delete mode 100644 src-noconflict/mode-apex.js delete mode 100644 src-noconflict/mode-applescript.js delete mode 100644 src-noconflict/mode-aql.js delete mode 100644 src-noconflict/mode-asciidoc.js delete mode 100644 src-noconflict/mode-asl.js delete mode 100644 src-noconflict/mode-assembly_x86.js delete mode 100644 src-noconflict/mode-autohotkey.js delete mode 100644 src-noconflict/mode-batchfile.js delete mode 100644 src-noconflict/mode-c9search.js delete mode 100644 src-noconflict/mode-c_cpp.js delete mode 100644 src-noconflict/mode-cirru.js delete mode 100644 src-noconflict/mode-clojure.js delete mode 100644 src-noconflict/mode-cobol.js delete mode 100644 src-noconflict/mode-coffee.js delete mode 100644 src-noconflict/mode-coldfusion.js delete mode 100644 src-noconflict/mode-crystal.js delete mode 100644 src-noconflict/mode-csharp.js delete mode 100644 src-noconflict/mode-csound_document.js delete mode 100644 src-noconflict/mode-csound_orchestra.js delete mode 100644 src-noconflict/mode-csound_score.js delete mode 100644 src-noconflict/mode-csp.js delete mode 100644 src-noconflict/mode-css.js delete mode 100644 src-noconflict/mode-curly.js delete mode 100644 src-noconflict/mode-d.js delete mode 100644 src-noconflict/mode-dart.js delete mode 100644 src-noconflict/mode-diff.js delete mode 100644 src-noconflict/mode-django.js delete mode 100644 src-noconflict/mode-dockerfile.js delete mode 100644 src-noconflict/mode-dot.js delete mode 100644 src-noconflict/mode-drools.js delete mode 100644 src-noconflict/mode-edifact.js delete mode 100644 src-noconflict/mode-eiffel.js delete mode 100644 src-noconflict/mode-ejs.js delete mode 100644 src-noconflict/mode-elixir.js delete mode 100644 src-noconflict/mode-elm.js delete mode 100644 src-noconflict/mode-erlang.js delete mode 100644 src-noconflict/mode-forth.js delete mode 100644 src-noconflict/mode-fortran.js delete mode 100644 src-noconflict/mode-fsharp.js delete mode 100644 src-noconflict/mode-fsl.js delete mode 100644 src-noconflict/mode-ftl.js delete mode 100644 src-noconflict/mode-gcode.js delete mode 100644 src-noconflict/mode-gherkin.js delete mode 100644 src-noconflict/mode-gitignore.js delete mode 100644 src-noconflict/mode-glsl.js delete mode 100644 src-noconflict/mode-gobstones.js delete mode 100644 src-noconflict/mode-golang.js delete mode 100644 src-noconflict/mode-graphqlschema.js delete mode 100644 src-noconflict/mode-groovy.js delete mode 100644 src-noconflict/mode-haml.js delete mode 100644 src-noconflict/mode-handlebars.js delete mode 100644 src-noconflict/mode-haskell.js delete mode 100644 src-noconflict/mode-haskell_cabal.js delete mode 100644 src-noconflict/mode-haxe.js delete mode 100644 src-noconflict/mode-hjson.js delete mode 100644 src-noconflict/mode-html.js delete mode 100644 src-noconflict/mode-html_elixir.js delete mode 100644 src-noconflict/mode-html_ruby.js delete mode 100644 src-noconflict/mode-ini.js delete mode 100644 src-noconflict/mode-io.js delete mode 100644 src-noconflict/mode-jack.js delete mode 100644 src-noconflict/mode-jade.js delete mode 100644 src-noconflict/mode-java.js delete mode 100644 src-noconflict/mode-javascript.js delete mode 100644 src-noconflict/mode-json.js delete mode 100644 src-noconflict/mode-json5.js delete mode 100644 src-noconflict/mode-jsoniq.js delete mode 100644 src-noconflict/mode-jsp.js delete mode 100644 src-noconflict/mode-jssm.js delete mode 100644 src-noconflict/mode-jsx.js delete mode 100644 src-noconflict/mode-julia.js delete mode 100644 src-noconflict/mode-kotlin.js delete mode 100644 src-noconflict/mode-latex.js delete mode 100644 src-noconflict/mode-latte.js delete mode 100644 src-noconflict/mode-less.js delete mode 100644 src-noconflict/mode-liquid.js delete mode 100644 src-noconflict/mode-lisp.js delete mode 100644 src-noconflict/mode-livescript.js delete mode 100644 src-noconflict/mode-logiql.js delete mode 100644 src-noconflict/mode-logtalk.js delete mode 100644 src-noconflict/mode-lsl.js delete mode 100644 src-noconflict/mode-lua.js delete mode 100644 src-noconflict/mode-luapage.js delete mode 100644 src-noconflict/mode-lucene.js delete mode 100644 src-noconflict/mode-makefile.js delete mode 100644 src-noconflict/mode-markdown.js delete mode 100644 src-noconflict/mode-mask.js delete mode 100644 src-noconflict/mode-matlab.js delete mode 100644 src-noconflict/mode-maze.js delete mode 100644 src-noconflict/mode-mediawiki.js delete mode 100644 src-noconflict/mode-mel.js delete mode 100644 src-noconflict/mode-mips.js delete mode 100644 src-noconflict/mode-mixal.js delete mode 100644 src-noconflict/mode-mushcode.js delete mode 100644 src-noconflict/mode-mysql.js delete mode 100644 src-noconflict/mode-nginx.js delete mode 100644 src-noconflict/mode-nim.js delete mode 100644 src-noconflict/mode-nix.js delete mode 100644 src-noconflict/mode-nsis.js delete mode 100644 src-noconflict/mode-nunjucks.js delete mode 100644 src-noconflict/mode-objectivec.js delete mode 100644 src-noconflict/mode-ocaml.js delete mode 100644 src-noconflict/mode-pascal.js delete mode 100644 src-noconflict/mode-perl.js delete mode 100644 src-noconflict/mode-pgsql.js delete mode 100644 src-noconflict/mode-php.js delete mode 100644 src-noconflict/mode-php_laravel_blade.js delete mode 100644 src-noconflict/mode-pig.js delete mode 100644 src-noconflict/mode-plain_text.js delete mode 100644 src-noconflict/mode-powershell.js delete mode 100644 src-noconflict/mode-praat.js delete mode 100644 src-noconflict/mode-prisma.js delete mode 100644 src-noconflict/mode-prolog.js delete mode 100644 src-noconflict/mode-properties.js delete mode 100644 src-noconflict/mode-protobuf.js delete mode 100644 src-noconflict/mode-puppet.js delete mode 100644 src-noconflict/mode-python.js delete mode 100644 src-noconflict/mode-qml.js delete mode 100644 src-noconflict/mode-r.js delete mode 100644 src-noconflict/mode-raku.js delete mode 100644 src-noconflict/mode-razor.js delete mode 100644 src-noconflict/mode-rdoc.js delete mode 100644 src-noconflict/mode-red.js delete mode 100644 src-noconflict/mode-redshift.js delete mode 100644 src-noconflict/mode-rhtml.js delete mode 100644 src-noconflict/mode-rst.js delete mode 100644 src-noconflict/mode-ruby.js delete mode 100644 src-noconflict/mode-rust.js delete mode 100644 src-noconflict/mode-sass.js delete mode 100644 src-noconflict/mode-scad.js delete mode 100644 src-noconflict/mode-scala.js delete mode 100644 src-noconflict/mode-scheme.js delete mode 100644 src-noconflict/mode-scrypt.js delete mode 100644 src-noconflict/mode-scss.js delete mode 100644 src-noconflict/mode-sh.js delete mode 100644 src-noconflict/mode-sjs.js delete mode 100644 src-noconflict/mode-slim.js delete mode 100644 src-noconflict/mode-smarty.js delete mode 100644 src-noconflict/mode-smithy.js delete mode 100644 src-noconflict/mode-snippets.js delete mode 100644 src-noconflict/mode-soy_template.js delete mode 100644 src-noconflict/mode-space.js delete mode 100644 src-noconflict/mode-sparql.js delete mode 100644 src-noconflict/mode-sql.js delete mode 100644 src-noconflict/mode-sqlserver.js delete mode 100644 src-noconflict/mode-stylus.js delete mode 100644 src-noconflict/mode-svg.js delete mode 100644 src-noconflict/mode-swift.js delete mode 100644 src-noconflict/mode-tcl.js delete mode 100644 src-noconflict/mode-terraform.js delete mode 100644 src-noconflict/mode-tex.js delete mode 100644 src-noconflict/mode-text.js delete mode 100644 src-noconflict/mode-textile.js delete mode 100644 src-noconflict/mode-toml.js delete mode 100644 src-noconflict/mode-tsx.js delete mode 100644 src-noconflict/mode-turtle.js delete mode 100644 src-noconflict/mode-twig.js delete mode 100644 src-noconflict/mode-typescript.js delete mode 100644 src-noconflict/mode-vala.js delete mode 100644 src-noconflict/mode-vbscript.js delete mode 100644 src-noconflict/mode-velocity.js delete mode 100644 src-noconflict/mode-verilog.js delete mode 100644 src-noconflict/mode-vhdl.js delete mode 100644 src-noconflict/mode-visualforce.js delete mode 100644 src-noconflict/mode-wollok.js delete mode 100644 src-noconflict/mode-xml.js delete mode 100644 src-noconflict/mode-xquery.js delete mode 100644 src-noconflict/mode-yaml.js delete mode 100644 src-noconflict/mode-zeek.js delete mode 100644 src-noconflict/snippets/abap.js delete mode 100644 src-noconflict/snippets/abc.js delete mode 100644 src-noconflict/snippets/actionscript.js delete mode 100644 src-noconflict/snippets/ada.js delete mode 100644 src-noconflict/snippets/alda.js delete mode 100644 src-noconflict/snippets/apache_conf.js delete mode 100644 src-noconflict/snippets/apex.js delete mode 100644 src-noconflict/snippets/applescript.js delete mode 100644 src-noconflict/snippets/aql.js delete mode 100644 src-noconflict/snippets/asciidoc.js delete mode 100644 src-noconflict/snippets/asl.js delete mode 100644 src-noconflict/snippets/assembly_x86.js delete mode 100644 src-noconflict/snippets/autohotkey.js delete mode 100644 src-noconflict/snippets/batchfile.js delete mode 100644 src-noconflict/snippets/c9search.js delete mode 100644 src-noconflict/snippets/c_cpp.js delete mode 100644 src-noconflict/snippets/cirru.js delete mode 100644 src-noconflict/snippets/clojure.js delete mode 100644 src-noconflict/snippets/cobol.js delete mode 100644 src-noconflict/snippets/coffee.js delete mode 100644 src-noconflict/snippets/coldfusion.js delete mode 100644 src-noconflict/snippets/crystal.js delete mode 100644 src-noconflict/snippets/csharp.js delete mode 100644 src-noconflict/snippets/csound_document.js delete mode 100644 src-noconflict/snippets/csound_orchestra.js delete mode 100644 src-noconflict/snippets/csound_score.js delete mode 100644 src-noconflict/snippets/csp.js delete mode 100644 src-noconflict/snippets/css.js delete mode 100644 src-noconflict/snippets/curly.js delete mode 100644 src-noconflict/snippets/d.js delete mode 100644 src-noconflict/snippets/dart.js delete mode 100644 src-noconflict/snippets/diff.js delete mode 100644 src-noconflict/snippets/django.js delete mode 100644 src-noconflict/snippets/dockerfile.js delete mode 100644 src-noconflict/snippets/dot.js delete mode 100644 src-noconflict/snippets/drools.js delete mode 100644 src-noconflict/snippets/edifact.js delete mode 100644 src-noconflict/snippets/eiffel.js delete mode 100644 src-noconflict/snippets/ejs.js delete mode 100644 src-noconflict/snippets/elixir.js delete mode 100644 src-noconflict/snippets/elm.js delete mode 100644 src-noconflict/snippets/erlang.js delete mode 100644 src-noconflict/snippets/forth.js delete mode 100644 src-noconflict/snippets/fortran.js delete mode 100644 src-noconflict/snippets/fsharp.js delete mode 100644 src-noconflict/snippets/fsl.js delete mode 100644 src-noconflict/snippets/ftl.js delete mode 100644 src-noconflict/snippets/gcode.js delete mode 100644 src-noconflict/snippets/gherkin.js delete mode 100644 src-noconflict/snippets/gitignore.js delete mode 100644 src-noconflict/snippets/glsl.js delete mode 100644 src-noconflict/snippets/gobstones.js delete mode 100644 src-noconflict/snippets/golang.js delete mode 100644 src-noconflict/snippets/graphqlschema.js delete mode 100644 src-noconflict/snippets/groovy.js delete mode 100644 src-noconflict/snippets/haml.js delete mode 100644 src-noconflict/snippets/handlebars.js delete mode 100644 src-noconflict/snippets/haskell.js delete mode 100644 src-noconflict/snippets/haskell_cabal.js delete mode 100644 src-noconflict/snippets/haxe.js delete mode 100644 src-noconflict/snippets/hjson.js delete mode 100644 src-noconflict/snippets/html.js delete mode 100644 src-noconflict/snippets/html_elixir.js delete mode 100644 src-noconflict/snippets/html_ruby.js delete mode 100644 src-noconflict/snippets/ini.js delete mode 100644 src-noconflict/snippets/io.js delete mode 100644 src-noconflict/snippets/jack.js delete mode 100644 src-noconflict/snippets/jade.js delete mode 100644 src-noconflict/snippets/java.js delete mode 100644 src-noconflict/snippets/javascript.js delete mode 100644 src-noconflict/snippets/json.js delete mode 100644 src-noconflict/snippets/json5.js delete mode 100644 src-noconflict/snippets/jsoniq.js delete mode 100644 src-noconflict/snippets/jsp.js delete mode 100644 src-noconflict/snippets/jssm.js delete mode 100644 src-noconflict/snippets/jsx.js delete mode 100644 src-noconflict/snippets/julia.js delete mode 100644 src-noconflict/snippets/kotlin.js delete mode 100644 src-noconflict/snippets/latex.js delete mode 100644 src-noconflict/snippets/latte.js delete mode 100644 src-noconflict/snippets/less.js delete mode 100644 src-noconflict/snippets/liquid.js delete mode 100644 src-noconflict/snippets/lisp.js delete mode 100644 src-noconflict/snippets/livescript.js delete mode 100644 src-noconflict/snippets/logiql.js delete mode 100644 src-noconflict/snippets/logtalk.js delete mode 100644 src-noconflict/snippets/lsl.js delete mode 100644 src-noconflict/snippets/lua.js delete mode 100644 src-noconflict/snippets/luapage.js delete mode 100644 src-noconflict/snippets/lucene.js delete mode 100644 src-noconflict/snippets/makefile.js delete mode 100644 src-noconflict/snippets/markdown.js delete mode 100644 src-noconflict/snippets/mask.js delete mode 100644 src-noconflict/snippets/matlab.js delete mode 100644 src-noconflict/snippets/maze.js delete mode 100644 src-noconflict/snippets/mediawiki.js delete mode 100644 src-noconflict/snippets/mel.js delete mode 100644 src-noconflict/snippets/mips.js delete mode 100644 src-noconflict/snippets/mixal.js delete mode 100644 src-noconflict/snippets/mushcode.js delete mode 100644 src-noconflict/snippets/mysql.js delete mode 100644 src-noconflict/snippets/nginx.js delete mode 100644 src-noconflict/snippets/nim.js delete mode 100644 src-noconflict/snippets/nix.js delete mode 100644 src-noconflict/snippets/nsis.js delete mode 100644 src-noconflict/snippets/nunjucks.js delete mode 100644 src-noconflict/snippets/objectivec.js delete mode 100644 src-noconflict/snippets/ocaml.js delete mode 100644 src-noconflict/snippets/pascal.js delete mode 100644 src-noconflict/snippets/perl.js delete mode 100644 src-noconflict/snippets/pgsql.js delete mode 100644 src-noconflict/snippets/php.js delete mode 100644 src-noconflict/snippets/php_laravel_blade.js delete mode 100644 src-noconflict/snippets/pig.js delete mode 100644 src-noconflict/snippets/plain_text.js delete mode 100644 src-noconflict/snippets/powershell.js delete mode 100644 src-noconflict/snippets/praat.js delete mode 100644 src-noconflict/snippets/prisma.js delete mode 100644 src-noconflict/snippets/prolog.js delete mode 100644 src-noconflict/snippets/properties.js delete mode 100644 src-noconflict/snippets/protobuf.js delete mode 100644 src-noconflict/snippets/puppet.js delete mode 100644 src-noconflict/snippets/python.js delete mode 100644 src-noconflict/snippets/qml.js delete mode 100644 src-noconflict/snippets/r.js delete mode 100644 src-noconflict/snippets/raku.js delete mode 100644 src-noconflict/snippets/razor.js delete mode 100644 src-noconflict/snippets/rdoc.js delete mode 100644 src-noconflict/snippets/red.js delete mode 100644 src-noconflict/snippets/redshift.js delete mode 100644 src-noconflict/snippets/rhtml.js delete mode 100644 src-noconflict/snippets/rst.js delete mode 100644 src-noconflict/snippets/ruby.js delete mode 100644 src-noconflict/snippets/rust.js delete mode 100644 src-noconflict/snippets/sass.js delete mode 100644 src-noconflict/snippets/scad.js delete mode 100644 src-noconflict/snippets/scala.js delete mode 100644 src-noconflict/snippets/scheme.js delete mode 100644 src-noconflict/snippets/scrypt.js delete mode 100644 src-noconflict/snippets/scss.js delete mode 100644 src-noconflict/snippets/sh.js delete mode 100644 src-noconflict/snippets/sjs.js delete mode 100644 src-noconflict/snippets/slim.js delete mode 100644 src-noconflict/snippets/smarty.js delete mode 100644 src-noconflict/snippets/smithy.js delete mode 100644 src-noconflict/snippets/snippets.js delete mode 100644 src-noconflict/snippets/soy_template.js delete mode 100644 src-noconflict/snippets/space.js delete mode 100644 src-noconflict/snippets/sparql.js delete mode 100644 src-noconflict/snippets/sql.js delete mode 100644 src-noconflict/snippets/sqlserver.js delete mode 100644 src-noconflict/snippets/stylus.js delete mode 100644 src-noconflict/snippets/svg.js delete mode 100644 src-noconflict/snippets/swift.js delete mode 100644 src-noconflict/snippets/tcl.js delete mode 100644 src-noconflict/snippets/terraform.js delete mode 100644 src-noconflict/snippets/tex.js delete mode 100644 src-noconflict/snippets/text.js delete mode 100644 src-noconflict/snippets/textile.js delete mode 100644 src-noconflict/snippets/toml.js delete mode 100644 src-noconflict/snippets/tsx.js delete mode 100644 src-noconflict/snippets/turtle.js delete mode 100644 src-noconflict/snippets/twig.js delete mode 100644 src-noconflict/snippets/typescript.js delete mode 100644 src-noconflict/snippets/vala.js delete mode 100644 src-noconflict/snippets/vbscript.js delete mode 100644 src-noconflict/snippets/velocity.js delete mode 100644 src-noconflict/snippets/verilog.js delete mode 100644 src-noconflict/snippets/vhdl.js delete mode 100644 src-noconflict/snippets/visualforce.js delete mode 100644 src-noconflict/snippets/wollok.js delete mode 100644 src-noconflict/snippets/xml.js delete mode 100644 src-noconflict/snippets/xquery.js delete mode 100644 src-noconflict/snippets/yaml.js delete mode 100644 src-noconflict/snippets/zeek.js delete mode 100644 src-noconflict/theme-ambiance.js delete mode 100644 src-noconflict/theme-chaos.js delete mode 100644 src-noconflict/theme-chrome.js delete mode 100644 src-noconflict/theme-clouds.js delete mode 100644 src-noconflict/theme-clouds_midnight.js delete mode 100644 src-noconflict/theme-cobalt.js delete mode 100644 src-noconflict/theme-crimson_editor.js delete mode 100644 src-noconflict/theme-dawn.js delete mode 100644 src-noconflict/theme-dracula.js delete mode 100644 src-noconflict/theme-dreamweaver.js delete mode 100644 src-noconflict/theme-eclipse.js delete mode 100644 src-noconflict/theme-github.js delete mode 100644 src-noconflict/theme-gob.js delete mode 100644 src-noconflict/theme-gruvbox.js delete mode 100644 src-noconflict/theme-idle_fingers.js delete mode 100644 src-noconflict/theme-iplastic.js delete mode 100644 src-noconflict/theme-katzenmilch.js delete mode 100644 src-noconflict/theme-kr_theme.js delete mode 100644 src-noconflict/theme-kuroir.js delete mode 100644 src-noconflict/theme-merbivore.js delete mode 100644 src-noconflict/theme-merbivore_soft.js delete mode 100644 src-noconflict/theme-mono_industrial.js delete mode 100644 src-noconflict/theme-monokai.js delete mode 100644 src-noconflict/theme-nord_dark.js delete mode 100644 src-noconflict/theme-one_dark.js delete mode 100644 src-noconflict/theme-pastel_on_dark.js delete mode 100644 src-noconflict/theme-solarized_dark.js delete mode 100644 src-noconflict/theme-solarized_light.js delete mode 100644 src-noconflict/theme-sqlserver.js delete mode 100644 src-noconflict/theme-terminal.js delete mode 100644 src-noconflict/theme-textmate.js delete mode 100644 src-noconflict/theme-tomorrow.js delete mode 100644 src-noconflict/theme-tomorrow_night.js delete mode 100644 src-noconflict/theme-tomorrow_night_blue.js delete mode 100644 src-noconflict/theme-tomorrow_night_bright.js delete mode 100644 src-noconflict/theme-tomorrow_night_eighties.js delete mode 100644 src-noconflict/theme-twilight.js delete mode 100644 src-noconflict/theme-vibrant_ink.js delete mode 100644 src-noconflict/theme-xcode.js delete mode 100644 src-noconflict/worker-base.js delete mode 100644 src-noconflict/worker-coffee.js delete mode 100644 src-noconflict/worker-css.js delete mode 100644 src-noconflict/worker-html.js delete mode 100644 src-noconflict/worker-javascript.js delete mode 100644 src-noconflict/worker-json.js delete mode 100644 src-noconflict/worker-lua.js delete mode 100644 src-noconflict/worker-php.js delete mode 100644 src-noconflict/worker-xml.js delete mode 100644 src-noconflict/worker-xquery.js create mode 100644 storage/.keep create mode 100644 test/application_system_test_case.rb create mode 100644 test/channels/application_cable/connection_test.rb create mode 100644 test/controllers/.keep create mode 100644 test/fixtures/files/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/system/.keep create mode 100644 test/test_helper.rb create mode 100644 tmp/.keep create mode 100644 tmp/pids/.keep create mode 100644 tmp/storage/.keep create mode 100644 vendor/.keep create mode 100644 vendor/javascript/.keep diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..31eeee0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +# See https://git-scm.com/docs/gitattributes for more about git attribute files. + +# Mark the database schema as having been generated. +db/schema.rb linguist-generated + +# Mark any vendored files as having been vendored. +vendor/* linguist-vendored diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..886f714 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-* + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/ +!/tmp/pids/.keep + +# Ignore uploaded files in development. +/storage/* +!/storage/.keep +/tmp/storage/* +!/tmp/storage/ +!/tmp/storage/.keep + +/public/assets + +# Ignore master key for decrypting credentials and more. +/config/master.key diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..79bc2c7 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +ruby-3.0.4 diff --git a/Banner.png b/Banner.png deleted file mode 100644 index 32299c5c353ef853c575943beb90f22fad3f5601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55664 zcmeEuRa9Nw(j}VU96W*G?gV#tcefBYxVr~}6Ck)8B)A24Cn31IdvJG$-hB7o{`;+8 z`l-idtbuGc`>a!|R#mNZ@-f`jf9J*j4h8A zmt^)BH+!={fxqni;t0(yY;M^vH=33=a@LwQ5Y^Fn{|gyT80tTx6A4b7{v9HL$p5|q z1xEud&25BvhX3w{|I2P@ zF=GhMCV_(SgX!+>_Vo08cF%p`;^JCu^LD>{%8SlPyUSzvtpMBrj9fU9Wl5bi1h}7~ z#?vJl5Kh|(J@4(yz5S9FB%y53m9W1-UqTU>sM<6g?jIL?mj#u#c>B!(9zi?!3ke7! z9HlWwoC-2?Iv+0jtunk+B%Bujh42Lm;T`CU3)`1K3Q#2tG(Sb9pK(?&DpZns5Gf}62k~&Zg^QL}Cd>Bo=gm|$^UFPHXlPKF0?c>2 zs(GgPhJihoq{PJcE2~p;%6ek?kp1BBC9&noMiwjsrsULLS{3@o`*{;l_#X&nLUfAX zx5{Iu%qo!BjOYcShFfi8)Z@(WAtWRvjbsTKCCh(6>ustjap^Kw7=24i0jCUD{b-17sbsUvafKCH2l85g*v$V2b}^TJRQww$%qx>5vLU5a58YBAsB zlSz82opJ?51@{bda=9@wU4$a>i8SB?zQd)se2%sazMb30eSd)^irFOtO3?w##y04$ zD_1xq+K z*OpUw4vowNf;TEEYF$HJ-Kmy!Y42w0(NvC_zY2CuO^q|~;pF7x?5w7y=BdY>p(q0K z5nQ!!u5DgxRX_|(+Y*xcOYBwHe;BQrwKYsm1?Y-All%*)FI_F1`Mn^%7v zWgyABnHg}+@TZE)%gbP7ymMt*e7sIy$-~a=Y$RMGD2BFJ0?2OiYG#RvI!g zGQjla%iLN7Qri$nBXJowlKZRmwY0o9dxjxg_9&O=Aki^0Fcf)ayW7#i(9qBi8#A5f zT``U3@p@$xT?%@7>*Z!wdd;7GgM-M;2HvH<_Y)HnNXd+wd&|qq4R$N7UPo5W&NZJ# z7LL|GP*77>=r>gZb1o{P2})iD*HBhzDJqVfZw-2m5E2qL*e$nuoSA5u<9Qiy*E$a8 zy+%BILc4FoFmg!@^L5r*Dk`z5CddXFEz9k3ZNP#g4kpKZ;F*|QWVLITFk(V~`~o-+^}2L@!BaDS{*g}Us!&(FWh6%ES)dH(dG zXJT5Zw_VH=^4;6pTXa91YyT|e>N*|U6>4o|H8k~USJ%|c%yzZi_v!vBo+x$Lq#}cl zxTK`n`|ntG^Zk9l4(5VlIy|%}LLNc$ub)(vE_)MF#J;tal`Le~hi(rcQ3SKei3aU1 zdwsE80s;cJ$7sYhZf@7*1}&NuhJ?jU;(;U%sIwCjK9>g-_DhYV^i%7w(0G2i;(uiW zK!s7wRXD-YNU^38Ci{%^eBLk5PjbmjQPQ-*!GlQ1$r@VAPrU)|5BK*?@+gI6lM@ry z$IC5FTLb-1PROi=prD+b4PZdH%Kgv#d!MkXC}`+g;i1`pr~o$oPP7AuiHVu%wO@=% zz$xCEnM0FgJ68!lTKH<@=eIvaD+7)}r+MQ%h8DV6)l0P4>}s7SuBWWx>4|LkI3nlj zT6aRoJvKd!^DHJnL)@A{0UZEjv5)jf7-n812=#y!Y!*kjIMu@^{f;p} zL|pYa4o*K@8WnmGk4puclziMB0QPjUksptckPwYPpgk5=eEUFN4cQigEj z@II>~Am>9UQKPJ)F+Fy(Lo+=#!pCp0xO1KZ5%m@O;_~5N&MP_|53-CZipvslLd%?*xWNM_-g&)hubP+1?QX&tWXgl!3h7BL6`jDEieN=UMMJ;yrG$^} z_-#7XwQIdXPxE^A?K8{EV#N7lladKJv7B6#S9+@tp9VZuj#rM$qwBYy1+Sce^ZAh* zWcfH95*NqH%*f|1qAMxMEtJD)<2ANP#N%=*C!%>P6@#9Mi-Xhlcs{s^7DpE`u{=LM zzarZKeLQXtl{G8X0sUd*Z$g6S#iaB3x!O+X7UN3g-mmOm4^kb1A53M~Nytb4T^F$K zO9R$A-H2o^*QudmkKPVxrpHs9RbRRGk`k*s%Q}b<pese7CfvDU|$nwt8hZQkal9yFCp<4O@PG#@QTs&VM$W)ruzn9*8Q z{U6t^L-F^mN=i!La&G6=EDcuzPkc|jNnIcmcO}P5&E5xI2Ezt1i-akK9X_0)(HSX_ zI9>H>t1H;8_d4?dTKh5XhYQQo<8B8tjKgul%s-yJ^1l41%23zGm}_yjw^*K8(ssWb zR9e)2DNe@o}23udJU$8= zarg4(7!@;TNFn28fWG1ss^dP=S8z4onVLCEfXCw{(~UEMGU)R9CX3H`|1niilFOlL2?b=KAuMUOi&q*@#5H^G^HiIeo>`dc)VR7TItLeYAGBVCYo<5^eFSmTzHP6_=p3v*wY+b>ZAUG5v7Si$_T2LifKzAhG$!f>y z(E0I5^v%n)SH}xp2i1Zp#~U0xR3udP&i1lBp|mwj?B_lVI5Jjf_w(EEwEca&_6sN3 zl3(J7K|z1;4DX+b{T~jpF_?#AB$&ro*=kraCmMiAX*o$%gWq56a=2!mJd!y9a?b9_ zuVI)hGCm}gg^2p5KQK>cKBc8x_qSKH-yU9u@<5*d1I_}DnSG+bg$S}x? z&w9WbktuZ&aFg&N9=GAX_bAL6e7={ZN~Ss+ws@E0Y6J!aB3|#u$`1PRQ7%-%q32Vk-e@shGEl|e zhrhY#i+l@NOAjbd(4Q{pblQ%WigRskkB~4dhPAcC{MkfJOMmanAAy~G8s zndVnDZJ~EODR}FZk`~_Wz2_rdIjY2Hp_voEN40+>wD+j##;U2VCh~uDtdaE)$h=wg z+nkt>e?%ORfKb$I|F9KVf*xLv50A07ULk`<#de6?h)r0yzt{4A5jrYk1aC1hX#-n( zo^%2i1HQ(*e12IPJ@m`>@1R!5{J5CWhv&yGmE|56)itRY|9cbjE=BN)r+pP8|5$$M?P@$q8|!5$Ws z!^Xka9VNeE|Ar!bgY_)Fs~gOx-6&oijkj|akq?lRYq%NuR@UN1-<>rrqmSO?T&KFAlCjlK`>o~eO&CcM-=Erx$gh_r$0WK*?^_SbUs4E zd3&e|@edWIW73lc+vmW`a7>^WqWP$APYI)=qr>NZ%wF4AQTXuGU^JN&d%mu+Z}Yih zbFaeZC7E^FJVfW4!r$aGW_KCVr<=E{x0A$gPgaS&aeS!}Hn1MrKQ$oAw|(qgWH@bo zEy34CH~0QlGx+vi{Ra5O&U4Sf9ag$j;0A%Js|uT3gi)y3I8oGg4&Wu?#Z-}UJI zj_q{0TUAgnZYBwKx7)eQWQoLn`14YyWb^=qflkcTjzC9;uZux5sS%Ydfos?K-Z}D>)^l(R!At zhR*k?yZ4I2{Z1#is7vEgWMuL8$x4d2vjw`k4C&3=(C5eP1Cezi_IO-8Y#eMRWS3yk zHcJOG4~LhP&TOTX$v;&ki`shLo|hcke={xg9)gq4&!mWhEp3(DcdEW-S(V8%eqy6c zvH0w`_Goy`!Un8P%*$!m!&p@ON zMuu&4He1Z&Z(3b8+0Rp`a!N|fj2zlik_bFNpksQmpt@-okLBPkl~hTNQ)u!Kgl=js zxV|io*Q>{8uwz`UzBoS8b8B`}{f^@r_?QqGHI7nmGr!@~gc4O+THflk&MwsbWc!FH zo9rWLhe&jE8dO{F>T}k;^N{J+GZr_zNK{^09EW3~1t$@9f%}ny1vNZW=*3|O8$Q^p z$!BPu^C~7&RNB{9%+=NP)2H=DSDxGchq%#R=E?M9eL>knJ*S-WkCoyQqi99FD~EOEVJ6a^Q&C?RpVirVn;2*O{uS!t3d8A>?x# z8zXGiayRb{o}~6*eF-0uk|8TvtQ`s$Z3pU^Y3rGNG0eYP%({&hGGe|N1|-$e*x^=@ zjgQxEycv28cGGpR3a6fJp@P0fT@tflG%mm1`X^nSv33zq$4bxB{T)hWJD5#oWLao( zT8|5Se3U?qLiL$~l(se6#LA3C_A!OFB^NeA|9Y&Zo7AKpotW=(eRPEM znRW!6bG6{?ZDMizpIaZ14KFfEj7$%+bvRxW%pOc5vGN1gX_RK$;cm$^kMG!8%`n5Y z$_+VM=;^6rq&V02Z8gi-xq$F<3M@?UD3X?LxUh^&__|3?d**S=eu0e5G7SW6v>`Y; zM00H=*m-9J6%}p&jL|^z&|$8Qmf3{+fpyK}!~y&M>Mh0Oc+}71I)Bd=$VBQgGaJ6%oJ=pZ4G(T$acZMPhbgFx zS*>5(?eEKLVPT2hd$kbkKQeLE69w*ZHgoZ3?ffv~=>9q~GSc2I*d>1pg%Gnn>`(RQ zfSIdnpWHD5=)DynfEs#f0yIiB-|P0^CY)unO>Y(K*IS@z-c#&t5Qp6N3Hxd+LW##8}+m4yV(HRYu)Z{KYgmJtNSGbeR8tY+9P!Av%ySAab<6d zd3NT=CbykG?t4&Nqws)bOo}E#!VdHj$9x=S;@}S5yn!A~_THf$By+vv!4m``((gRI zm!>pqGvRkp)oxW)?t-ffGl`{R2A|V1GIFFlN+UFRjT0x6c3zNP^janyRW$l8GPsG2 zM@-z>#nR+*47bd(8`xo_tQFALl$9wYbEYY4<%gi>EslSbGc{{wl*ueT zE|(*;cigulri{*&em(25tNg`-g-c@4F==$Dt0}u$5f*a4IK|+7P9&UH!4!iUW@HS} z{p9$I^?8%eu(0)~cGYi?w33#&y*sr~H*BEz=tVY{uu8&W!}PC~A2o7GIBG&+{?FW0 zr0{2{OL`KqkbMoM6kgo{@&*Zsrq~h1I_tf%L<%EoXIP~he?(szu*+`Qk+2?Dmv^f`iy&~hi2x$HRh&fQZpgIZs|gS;6HZJJR2?g zxXJyIlDW*Mk5JXqE6ut}WVO#6+{1TlNp-=3%Ne6(o;3cx@@F>>C@5XG7!8d(H`#PE z(Yw+#)YTJ`lMj@5GRi$IEd`dB0sp+GQxcO^(kdL4N=9=C{xfr09Tqyiw;v)D@4?Z+ zyKvjc=>DuC_xF9JI0!Cua^11z&IJD6Uf=h)Fk5MOpNwP~ta6bhaCgP=0>Y_qb7|+K z4skKmy+`+devv=SJS!jR@Bi4ES0)ivTizc`!>GW*&{kEY!n}-tF~L@&mqySy%Q*5I z4ru-X(X02nq?j#-(oXI)zm0DKKXJ$#buBIW2ovrUNNUF7Vpl!^VfQxE`!4zK@2CRG zqsKAi8Lwq8(-x219()A5f@O7ur9>^biEOJ4653JTM$J$=TDb8g+C8T9Y~l1QR*}lj zeEI6;_#ZAnqYW;o^UEHCg=sFG)k3g;)W}-L_`9F%@pc9oE@~>zoyNJGDvxz#g)1v| zt@)OcoUXhjHHq`Kj#zPITwGeC0fndLJod;lPX%?12&fAidq+nc?96O@TF6VCZ{;@& zBv20cP{Vz4V6r|Byp_*o3>)6~3a9hipGRD#0Yh|Xh$Lu^5KS@jnyLK;|9+nRvb&K6 z#;~E$q6bkka1>+PDM~IC5e(`d6i}sb-tHWpE9oNwO7Cv>oae|8TztgqukE?v};s{eYB3TzEKC`@-}CD1}zArB?{A# zWEtF;b_~W1Z)j+V)Y5V86kmLsYmJ&VHl3e_;lfEu8e8aa)ssPX#t!|lsD1KuW>ZD# zO_N=`%+%Yr!|e-!4B2kt7xbM&-z<%z$u?2|@ZbYix#RTiYyz*0(V2o(q4}l{HDo`Y z+Pkpd7txP0Pe{n#uUXKsN3C{Ppy|Z6=P3LKwC;4^`QP;=kB!S)<3N-(`{n0UNfGl5 zo0jSEFM25<*l-pb_H`UcB@m%zFWLm(+$0u)sVs-=Rl=EQ3?{B?hg&x0eBBTzUxEBA&n~g$4%zL?3GJHPs zvr3nVIo*y0db&=+Asew0@ndQ?4}ol`3k0={zh(cOiJ^l{;P*$g@HuvSI?YrKg~$a^ zBk!mCtlYHsBCZLKY)eh_?7Ivr|GkzPEHkYrj~6Uhzk8n9z6L`^ zP;%&Q_y>BA4L?^UvLzO1^QR@*lqX}>@a2nfB|ob=$r}XYay=Aw82K<7XtpL{1kat} z)j`#~WC{8C+jmPFCIhajY%JEu?Pw&b`SQHPlV|!|8L)55I4vt1G2nzrN&u(JiNH%8 zg@TUhB_DJ$9-_D=Yh-W&_B!%(y^$p3^R8!q?-0SJWaIRw)<9vfRc+)U;{S`^jcKGJ? z_aUQ@EV~B2RvWd!_bzs3HNFg&xGM*R;EQZ_l%l;m5_mXaV=(Z@VFv#MA{>~qva*l~ zMtbUs;`XFSiY)m}%wAD-Y8+?-vtoz%9DH(ix<3l6z$u-BpBzC{7Yz2c9z-dJ1;PEY zsRzJ2s6zO`;NrnmFc;E;CK9-M_YEq#XTUcnenx^xG=J7g; zVad#iO6`d%EX>Uni=%)H7gRXet>i?{;M#W3w&NS~(r0F5*w!CNnzuA-dCA|IU7^In zz>u);AsPqo9opP*SGdX{Ps82MZUmYIk|_IjKHB<-vB+c}H>AFhW2M^LeayI*7^TUf zjiab*XdnRVD7TU+Hz>U1e2I(06zjs4*xN_=ZucCk))g6x@QU0`0%()%eQNHXBCMi{ zie$5|iFx5N&Q5p?6W5GuZet%OwQsv9L_hR%)+HY7@1rbwk57maMW);@!Yxou{#+T# z(=*pAoju6rRLdebB3M$e)<&lI$MY_M3=Q$yrun!J_XY?8*j**AW+gS|&H18J)`SrF zrAEiDF&44Y5K*1HY~yV>L|{5%A0sC1-MKk!=0&z( z673Gp1Z=%N1!{!F4B|*Md0rHJGGMKCLP}yRWYxWF2wr!MRg{;Oo@;c>{Zzi3K`3C5 zv2RSPH}ZQ5vR)_sN+$?NC577KWLr|PszpRWK~Yy%f0tD4H#w6qrGD)Cb#oY`Vv04I zDPWznULQ)_P_^67c?_3<`@Ri0{}oPJT1?bM`l)d&_mqE~90uY2<6c34dwnyO%AOQi z8_O08>7F}^?!6J9M))K7fK?U_K}3Nt)B?0&rTkpb)|GTx&AR6ujP z%F8Y^Z^YQZN*mc-p~G}7t~~8Zc-x-H^cG13WHfkT6uWuC^ z`dJBFL){>B9!ux|$SeaKkz@11TTP-mv%kJYHE+cbbrY;FtSp+7oL+R{UIFm4{pr%r zQKPl_}T_vkmL;@-Bc8JSJx4E{H>DJd?1!7^=uxR9W zw{_yP!)HD7a~&*RR`f%+XKWE&@V0aF)7gZJWWJf{@yoV*x*J3R+eXDX&~Cok3^*h< z|DFyaH}W|=YkV4CDzb>jk)UEIhs+B|zx`*efi5p6)|ARNJLc_U&8U~RHwv-~clv0@ z<-j=({h|Cv3sO21=1dn8Rn-alidI#9eFlWz$jq$(l88yv^9_AUkymeU8Nh%q0PHI@ zwXN~T?%hdidcvCeGy#?a7*C1J_u={o7;G(71=SnZQS^@tu1!@>wx6vd_1Gq3(SR87 z@M?f|&MY$yH*fxv_J{KM%Hri?kK^uS_d}mKJFGfSdkl(%jEtv?tQQ~PP4O!o`wfl^ zR9^77#p2Rn)biu&WbpVF6cqF@?BoY`Gq;^@-W5CFfj9|yI9goD_Ht;B=WEPQR@%S; zOH0SGU$fdrYyQ?O?Uq}xF0OL^WoT$}-U05|5qjPfdVc75dFXgP=XYGGgYIL;Hwg|4-t4PmEdOmb!<`&-onP+&l za5Z59X6w-%$#*&b;5wc7 zn8Ku>j4*9mO*WVfZZZRd{azkcmE`58W=;Cz@|oK%F{igC-xVv`zflE9sv9X^1fmZ@ zN&>z}3aj+>68rPJ+sPK+u_^%|q~}3>b=1~uxq*QHvA)=6@-~6I1Bt;b;-L&acL47P zXi@`xeF(fbw=)MzGj7mwiY*VoZPFLzPIk87cBEqgagV5DK=v0#LKCi2qlit$yk( zlvq!Z_3Aq7nWaX*VQTt7QHr0gr_Nn3Kw82eHNKyIAG;Kbi0}suTBjh_brc2NmSGk9 zH(ltYPW`9P^C3}BPfzZ4tL3E?0EWMRyq{z`e_GDty#4p@U+l`+jqb={lMu@r*|?Lg zj*j^mb>`~CGM6AliU{!?*WfXvg(F9YA0SmVwTD8jm(vM%BSl$RB$eC^9LjEb**8Fc zve~n=xw$02uCBC3j&os^frp2Oi_3jHM*;wyo0^(P&o8r76^ZWl55vhH%Q(BEP!lI~ z>`3v+Nl8C-N8mjBe0wpfv0Kj2n-v#1oyadyw(m*!js*A-4-gLHH$z%}N(qyS$Njxo z^{*%_J*c9-Nm0<9rAtan(`~m@yQ3<(Fx4S?w@du4ap%f|->_mB?97|NluXaa$QX1Z zF(}LTjtKwpG((7sYYIcuylI@H?9xaClwt#+T!^}3wYEO+ds$pjEAA9-Lhr9UxRN*BBd4>&&!nazZl!Oy?9NpgmAL*42hf-kCw)tN7t$ z|JY}nV3d-26txB>hh_xA<-gK;_sP)SLq|($@xkBw^ADwrJf$n>c!d3*CG)w9jdF6N zM;Qh$4~wh(FT?hX^mLpQ1xha5A5v3O?=Mf)-rPS3dcWA~3tZ6H@!yv#QLV7J5Rm>^ zclf54zP$beSwUjIwT3qECk-aE%@Us@^edU^n-oyi@QZR28^P^DQIg`|G!X2+tWsYe z`WiolSQce54C0M`5c0kJF}kzaT@_X_G)X>5VW(5{WBI`(h5Bi+@03N&&IQ5& z5vCAXP9gon_%DjoC!h>R#=>TbB!)qP@c8*#+&;mctTZ~^RS77W?F6y$S;fKW;vb;< zK8u*^(RXAi=9?;Y*T0sPe$h=|AG0HmmWp}EEvLX zam^&sPG5UL(PK@m+2@xICV(PS?Yomh2_IV~tmb=^x*3XZRa$2=y?4rB^DaXt|C>;a zYzr3?I{VektkCJm>T{a!-?4f^KCLoO;9SZh%25ST4ZJ&N{6$|4Su2@WK0?AMr-R*)Fb z5E4h?=T7%8_a=e;y=Ai%l+9D8(J<}8nGwr%#$azDrubQJwE%98u3 z!L)hS!&gkrSuOskCI(=VMQSDh4c~#jfm8^lmA*Xex?4;wCkOlVEa%K@EeDs?gPo&6 zPLpSmzA=QM*opM7tR&+_qtH7IdzbpuiTP#szhl2XOQC^HO&OSJhmC3}=&89p?FJe@ z@DsUfN$GjZIbUVyMP1b~7!tL~Xei3_TJNXYyK?Yc{iGQH5Te=f@#nFT(72s9%x-)8 z7AJfAe`lPkxXZU1|IsG=rY1>9ObqttD6d6=4v@%j2>WA(_kj#!nj3z~M{sA>rYwZ&vuRYnolI9p}DHZVuz2$b>L?-DeS!K_n!<+s!Ns+Q+rq z?9q`dUdhh`%BhM|qxg{VcP?AsT5;e_@WRz*ZEw+0D#Vun)N^WUG`_|`k~b#17@Qc@ zXa1*Byhhv(@kO+NZ>{RU1O4)j5Aj99JPCF}M3@|^0un-2j)u)EmL{00Ev)R7M@uSb z)2ktIIOX~6*I_Kd?R3EiaZFl_)zlLehKzENzB1hXEk>BVhiOr}Vi9r8JWZVf>;UPT zxt@+_9v`NJd2;>bk@Pp$sEr;a3Z2;DC5qaHR(tw1@+yRq9L~9EYTol?m<8@Q;rlAT z3Y0bW2|hF%sSVd<^awVR!gN}db@K81s}I_!c^-*JmrnZ`r=y_tQP|dStUg>h$G);5@;?zZ7oq*UDrJ9eLNosRc7fD}FeM zu_)BUFr2(Th4V6rw7lDG2i+~+Wuv2%Ioy}jUzizW1s0#mqnKs2cfo-B4qP{#zH_vS#g|j*(PaRNH=lkl|8>WP;B6zCxZnUEa^|BT;cL-MEi2O zgHR;HUf@pj=qUqoWpkUs1KC*9B41`++6?3ir8*mYU9`E1 z@=QH|O>`K~N_(lWiO)|-iP>!PqB9WsF%AJkJAqk5SzQU;h;BE=0OP~ir*9@dVyuo4 z)n1~076QrZ6K=JNJso=!J&TFLhv}g@x|9#!WgvrO`r{O{GA+qiYN_yiVObK*l}ko8!$vJm)x(gz4y(}q z{m#8Rh%PkJoDqmfjkaFTr<)&_ntG$OG@f9h;!;vzM&>@I=>6_>@C?2c)R1Qyi>Di{ z(!MgT^C=LfoGRn@KhD6f8({7$)b>(mL)R$%;;f6qJ^@2~Z|5bwx!R8wk1wTlXkG+N$jh#i%0cDwn?Whn;-5MM0!iMsag@JN6(RWobQ__* zaSPNg-H6)Y|J2>$8hP=TcS$S4$C@6Z4p6G=wNH9^k@?F$t#>(5c7IGrb!s{C+#jt@ zKKvt=l#T~gQ$Y-alN zU&RR+)BuUvF|Q8<^uV59S-eA8LPC|9f>{;W_vO60B}{fv-QyF&5Jwak5@U&17qsD+ z1HNbJg1cmDxL=^F7#$qmz*?4^#T%`xq9FnvQ~qjF4d)!z*Pe}-F!OTBNfF=D10GGK zwA18gR9S%FpP~S?+rVnpx#h1@AOkThW9M%l+Y(*=BE}7Zm+F#lK!BFw1b&APh|o~s z(O$J|Bn&V>QAtfreL7J;vkj!!+DejzFP3W@+;3iwwP66~F%m)2^tA;QiNK&+D~;Xj z7TX^ZQMtd0X$5ZRexpS4Gaz4h9v`4Wr>7n6jUqu@diwTlb7p82g2 zya&8)6;PBhUN6Am0_VU#oBR|yG}AV33u zg+drYfffM)xRbRt{i?VINZPDh!BuPE3**kZ3nX=0q?m*S836$((rSLB6_LGGe&Q*B za-&5!o%7cxa<^Cnn+y6Zd49|@*@!#~Zxe||ebcwVdl^LRJm4JUgDL?U6f80@x-=jn z)SwY3wJ-`SogONrc=3ouz&gKy1`aM7rT#x8`d@Ij?dR1wx27Us-e@_la8!tittAU{ zE8qxWpx25jK>XFVHBnIU7J{jL47cUDQwrN@cJ<@JzCeGXAQEWaxWr2G0Qa0pe7T>- zCaZE(Ed%poFma(GysibAB4C{j=~z;r*JVTc1ChgaWznXXXCD!mqVwy@MhnOSixP$h z<51HrCznG+Vhjy~&~F_e85j;c^xvZsIHqP(zplc+#uqcdadZlbjcNXK1q!&3jsD*| z{{OVcTmTfDNz@mBs8Vez1GF_r5CEz^2M32?1=q~CAOR8(GF(Jt8vMH^s zXl!7oa{~=5+_zEhv@~cK8J8REjjXInG)vdl*DKoZ&xiIVgFwMg`7axQ;6u2tM5C0` zb|H`2@&0m;j%pb$z|RWX2YmVMI}A(`CBSx^FNl=t;<8<+^?&gb0m0A%td`r$$x%~N zQ=j{@-iVw&7>rXIB)Fi@pfL;(P?F6n5t7kFY+=`wk`335n%?{;vxYaH6CBP9%(Q^5*xLMXarBipRwRo zuu~d%BPhwN0drWAe}SH~6eA1>oGCZZ)7SqH@D0oq+0)a*W2(J{=Ovl(mCX&NZg6YDK#)oVTLPj$A($E_u8ExrdLQrJ1Nuz>Qbt6uQ4JuY zsg^JD*X@*o_l1Sq2o)|mE50qJw8CTqWKUxlN}SQ;)zb(IX+h7=&tqV;6=ITVh6!jA z6Ra@lP=#G~H|u!(FN`g7RljnB1#{=6_b{(Z-Hs;_BPrMk|nTZiCjg zR{+sR?eerc-CS;%;J3LYLio}Au|E#D|45%no?kPO5v0c@3QiQSoySJKbKcga4w}?u z0H5^lRIwT?EG&4YMM`ocgMVQ3cdW4_;%n>&hU2TSH}Fxh?H49sx{gU6%(bRz~msC4~Z+ z!DxTNH|xY0ZZ9n@Eh&jWe1{*O)Wexe-#Z1}+mEy5((HuGz~0(Wn(J$Enz>#qL+w`A zK&$SM8tsXOa!Jg6dfZFgp3KQS{Ru1N7@ej%CO9vrfriyUo37s_m3Gpm_CB8T4Od`i z9^&H$UPtAkREJO<+SB!-eM5bH38Y?u*L~?9;AI<5vcqer;#aCRsY6oRtsx8=;KaA0 zgS3p~gCho~%fwGhl_BQQge5;4%QH9hNF{svyWO_4Av*6ZxFxb9CEEmxOIvzBVco7E zvPU2!+6U$-FZVoaP-wKhUx*e5g)s#j9v%ws72s?;@T%Lh9xR6y6vX}lnj^w_zyeA{ z{Jq@jdV^Se7;7pjE|TpCp*rzII#I-bNqVD_i=KaajL1b9#Yp`c%L zYeFgqnyV0hZb(i;bvIdfbCq?N;sO;#)QD(BM@Lipn>!~8uO^z4QTk7W2yp{z&RE-w z;a0mL%z%DD@lbSh_VP5qHnH3i`+P|_8;O>03(yW6g-j={DP&=xL6z*#4?E(F|KS2i za~*IH6RReeHs?acSP_`)&oxe8$SyDtPFmyesute@O$Kf*Iy3Ss@@vvnV<% zlq)4|jrebMle=v$bD>f8=Q3cYpb-B?YsSkTg;u(2q9{LQ-`T$Z&`ky%J7V%fs9@KQ znDrB+tve^95)r6znt{jtTyRT+9XN?iGnM$AU?SgEwa15{%O@qVIOnKZgQTp(>uG6~ zL_Z-y!V9;%Z4*dB;{vmfEtEd~5!3`gY}y%6d5~#6hk+7FJpJKs2shtF#8b~ic>kT( z3^8B_vVMp~{-4|j+$P;%`Q;ng>puI}AYldOM%IPV^glI1 zC;RIL1Rh2H@GtMq*-OW@hI1 z?`uv?w}wfE6|+Zf=;-L~Zh+7P5b@PdPfw$wpoo7~uyb-c{~e6%JO>E==mG9ox1oN+ zolkpgY^>n5m9@3Cot2e^#k&vqNHx)HuBkK;^YimSbEoMrF)l8y(@?Qc4FqRc4BY+e z*RSa4==zzNq@<+!`ug?QSc`X$r(Niy5H4o%5wMlhW)h*;*RQ%Pgw19M%U|5n6W0Ji zAs(|Kii*Cv5>Rt88n$xBx3RLa0-QNOIoq}VI{FpxaeZA^Tg%Qdk=%O_ zl^_EE8pVZ~tdC~^EA5p9C{gl5W(UY7>AghW^8PKon|GI!N(#Rt4wwOKQv4fmX!)Z| zmRpSFz?%VdXT95TGSy92u0OL6!2_Yf{S{dS*lt40>F{Zu{7UuyFbA{6w6w*5K+&+pjgj=v&V`1C#&V+{AUCpB?@}n^ zlZgZLS$~|-SaSh!*!2+-zEa$YiG05480F-d8q5IXII1!Nh6BO{q` zQX(K+Cf!1STS z_4B7cg|S!Kbc*&rW{jQQ7gJDCQ6(iO+pn~G0w8$&V6R<6g>gljl7Q>;W7B7;7&KH= zwI@y;RQJbQN3p$Em-U(+0Q~42oiEWL_F*kl#~m_!z4jG-pIH-o>#!JWLF?@&Bf?4h z%oUcrp*KLTugOl_%#MCdGjo}RHjgq9OUaGGVUv<#tMo{**c+dj1SCi)DJhkNo&Z9T zeZZJ4r`~)B>cQZ^NG8wIoq3jLt6>RRm-h&xLGvX5$c_vTqYgPt^t!ct?h1)Im=SQ; z{~InAisseUe#)5Yl6_AAC~e)37V5ymX`ptoCj(MdcGTI0iSw)3Q2V7H=nws#=3)t$ zZEBn<4)buqUh(iNh{f`$MV-W>f-2a6*!CA7E@TgKcW&kHNe6(grK->7o}PEJQfOJ+ zj-qj?$aJmIgefY3gcmUEM7|s>*4^2R?IIv>QpMi)y6C^eDtW4&F!~Uc;Ce7KoWZA+ z<-B#Ick|#~SAho3B%4%VCtJ3;ua0Fsct!T^nT#=@6k~69)m?v4PfArYNR1p&At@3J zN8K-ClMPZh+6{2EpG5&7q^}x)D=)t4B{9<9_Xc!uv9phRRSL8ZweMkJVch`8-KVaQ zzBCbps>LHdH^Ewy?g;niYd32>$PiLk0v=m!-M^KV^|pGiN=wHkPfupQot9Un<ult&&=9OmB9xomFl5hgFy+d@b~k9_K>fySHO;&EY&dDw6!SbM}Oc|yB*4BDp^ zFZUG~v$ndqrl#QM(_SG1wdM(?YTto*3ZkQ*Zm*))m&ehUZy|P*5q$$Acm1P&hSerK z4ME4LL|Xz}$jHbqPpdDlIJU}!t?o3y+q{o7dOXh#C351mu@Snpz$;4R?}shJsy-&X z3!z!9y(<)YvSfFGXs!oG;=T-yzLZrO7c2ZA)JrEhkBEpUFK1$G==`dnS04#eH9lHQ zQq6?F<;Sb*@##}`c2`SXQ&m}Uw4Xgo>8&_dz57vZDyJ1iG?)~~cRF*sNk3V=F^j|~ zF>v2U{BCzHwxie4xX<-}){&K!RewJZ=p8$rCScL|jm=9`j52^$81d7tRDXZJ3ddK_ zh6A_Zey3mkWi#VVKj-j! zX+#P~X;WkGjbbjKlh1(yNe+Ft=Y5q?B;K#h1qhF`;!+oqY@IqhlN5-4g=*){`p_ihlD3zH}xn z+5J{PD_L`K9={V^@hGmc^s#y(&oL?eCx9UWXzTFk>~cz z>}-*&S$es+VLSIG%Cq3^(qpCn4|fQdYjyJ9Yz(E1VBUvC{Dd$eQ(~}`x;h^9^i-6Bxj~(B*vSYuZz~Upr8Z%lp5yN-KPs{_mh<^waMQnig--=bHG0wQB_q{ z9?78*RDNCqL>11fdhC+%UuFN=v$3*j{?yJE;uxFtZrI?3B-4zA^5)#NQ z%5xdMKcDi<);vWFJiV-0eeAOLTjp|5B2jPahoNQuU(~(zS618i1_}rg(%l`>9n#$) zAT8ZUNVjyCfOL1aG)R|-ba!`&blt@{=X1yRhx-rQF&yI^?w7say=tyGpE;jrtzv37 zBB3CyG`k<$_C+NYddTD|v6j+mj(f<}I$VUSzn6>K37q(xYvK8{xcc~V@A4!)3lXi9 z?U&@qeXs2V4Fm)P(Q5{Y#Ilnm5Oe5xUPljX&KwlXFc^5Kn)V_6FynIV>fWZ;NGjJ$ z;-LBF$tFN?A@%%FC)DvYu#?CYHtL9y=K`FxrAt$seLC!rs5?)|AObSas}A9iIp?bW zmeiTT*NO78KhBUhPVrmH2B^>AlbmWq183eIc{ztKLc>WpW#TM8dT<{pYIprO&gHlsOLGeVw@LaWZt(tmoCy zd-NSH!^JXfy{i#U%RvWSWk(u zwlG@Qi@ij{)xRa$aAg_^@wh!dl;m+U>7IFvcyLxd7W1QmA;n@-fD)hH|FQtYl{}C-dV0i~zs#Tj!F7APzhju* zPWSZWAiFj&Do^GJ4_i$ggchL0Cs^VmkN2JW)jtyVrS7F9Ga{>;wGHb6#3}H{__Qce@^gNRdt(?y$c!gtF>hR#21qv{WP#HZ6>PBr|H1DjnX7 zFwJm&%Xlv1plaN6NuTrwdn@EKG_Z=TK2=qD^+9w+Z~}N8=TUa$I*p1b>T;I0#e8Qo zBzC&3N5puB#K@Iy#Y#aKi6;2y{%W#kv>f?a;>vHPWMuX@;~2QPIrRj677QDA89$or zQIiGo=vH>;ZiF9dP-ZEq=>nL^Ol1u+%e`L+s!hQ%>}d2V#03vI8B`doKM8k;wuZ08 zV~w~S_oKp=`+uj9Iry_FtP>d{CoB8s;^K1m_35fl_Jc@k#z`pZjSA*=_dW&*ky}}F zj$)jbHCt+>#w2oiPN7O1s|HRd@a_shbTG?gw!1ZwX2TVlO?wLk#Ala&l+bKY- zu4?(kqksC1x!b78qfiU`i}pr?*X3KtfOQm*uvP47Fj0aL4P&C zVCRZ;cCM3T_wW82p58X$+y%)4L_h$C^X4d^BL)%4KEzM7h-`8CWpVJG8FlAhvYOmN*$}k zK9bx`0Ss~Esz1AuSxfNG_JEJirYp!rGmy}cQmP%IR>?m%d57ze+sgDEz7T20R2hQe zcc)3Nr1ig?&lC9ER0wgungmqg%;zgPM1#3ANsO55Zl*iM$Wfz&l- zxwcv>I&CUv?b_5`u;{ap9PuUYOVWn+VREw>C#xOT*WAx;M`PxC&Pwk@%!J;3*BeQ> z_)%e4l&)1}_LzR@F0+5qe!V;Unihr0y%oS}<5UeQ-zg z3+!F99M_B4?bO$6b>D{a{!!qcT_cdrU?$gP}?SxW|Ig1#JQ95 zevn)066-VlN~KpAGIyaV2ue-pZ1qs+Bs}@Jshmez*wUm4x%?`Ae(2UGD>m&$0RRGt z&%=4P_;JPTru*~pEMV%FR3{`XWyrt;isG`W;Z2s-c+|+Ux_(>T?_0{^7|i;aa$s4| z@Z(9T<37vffQRD?Ba>!BjaQxS2f`1TDy(P=7`?8u?>}4-a&bKz!*96b3mcJ0<(r#Pb9{ zSo^TDx?){gX7&Y-cQq6x;{7T-hCHNp6apQuZmJ*xJO&28FoZ%;ktVs%j`!_$Qi7{( z+B&_qVfA^z=%M#@g%H459F{?z`Bjh}wJQISFVal0YQsQ%ppfgT_wFgtv5i?`IV1h< z;muUF<7OB^j~BFv+tcmtvCC%3_mkMzj*i>=mIGN2=E*$%T-q`mEE_`3_)n3H6u*iJ z9IFZWBKoo&c20P!q?`MUSf}&~x(qo_;jy->(9%E!9@lv%Z7*TyG?B;qAqm-Uzm`!%b@3 z{nlnoslqpGvi!e(NbriVZw_*bGk>#KIUOa}Y%==Ti>SL~3Tu)|67w=4GU7`5btNVD zK{vZ;b4Dtd{6#sOw5&QH_4+L7h5|MIlKUg79GtF&M)tlkG}gt+V(aV3_O9L7UV%$# zalf%*Dib*85Yr58(<_nBh0Z61nTN7@KY-H_f#QpH|$8L}SR zQ=upOPHO}&bwxef6)0W<*}b~N%AE9@Nqew`y}@DPC@&!&CLy_z^OVC7pdZ8YtQFm3 zc}sA-t;eAjUnA0E51Z@HBgckE=+beylh!WaMaVUWP&9el`@`JEN$%s07AEzn7UFN- zz4ki}lE&8}jS^240|E|f%vH!JE4wXG_g7PfAD>Z=ll6$y2MPs38#3|<-L7@(qBFjJ zZStDN$2aIBNnlJr`Jkl*G^uRia;-1aWBY2&p4oho)}2+QKejmS`@_8Xi^st|)7WVB zs6K7uWJ`aKdrhB!6`5{_yv*-O?f#Zip1N%cP}l!z1y6Q)8KuFbKcnBNnut|}2^Tds z+%KOZHGZU$_ZRpJx~(pF89A0fKcneKFjB~^GXY6*o|>w~^c3sQFi%#F-?gGANXU=3 zQL{_@YeB!i^}!4yBx2Q!yrW)2m@qX?2@J^co||1R*ymECAMV{$-P6V{6RCyy<17F(oW;&4mvFrU3N1xE7~UL_e&W* zo=CxXfJHIxYe+R+<|Jgrm#k@mhNgbeoP(HJ+tL7tzwp- zN*chR916P1C!ba_ zTU~7@_~w+58@{G@i_4=@giA;8f3y%%EGpd z7%^P?)+)VLE~c*$MKLjvi1uj^JfkxG2ubg@eww^!BH6?(6RctWU_hv zHfz-NjzjJCZZ`EYjS#ton^6ar=;Q#_TQHc`>}97EkntHkUziwVw%&jqCeNK1AA3vb zFU$hkY(VZN#0Si=*FIuefP7wIiC6)@igvye0j%exRq+{NAZpdD<2Jvig{4@ylRptr zc37zGrrFy-fZk45SHOr2{u;``Scc0u?+=bfV&;$r)D&Z*T#--=(ZSmnjGwij^RudQ*S2;AD*aTKa-c}44J9rI=#@HVaf?$;zyQ&UxF*JVcUM?kH*C8<-R zR|N(JA`$p+LZgW;QBZJK>V0VM3pDyW03B96%8Z^MOk4-V02j+G%sx1Lgi>n+%2u^# zBn`AV_?GcRQZAY9-rfOHQKhEVA3%1_mRn~eyZ^>i#KM%LHLhoJwr^Gg+drz=NaqCr`DL1R02P>Nz?6!WPcs zO#7IU;*V8ixtqh~1{S9yI8N}1Ty}pwcI8r(E%Hpv%rrcGIru))QS0#MyQQU-KK|;d zB%mWPrww*pI@Lg3zOLIbR=(>Vd~c`uUe?{cd0q2)T5h+^+L7xATR`iQ33dvlXfEp@ zY8#B7JxH5Hy@D$;hxg;-p68+V8AS7W>+Y^n!zxN1Pg#=VcWQ6xwR}wQ3$H)V>@2jz zD^=G7#J}zB?PjA309{E=UT3eK$N$Ab90lrfgJU1z$$+auf>$Wk$&ibiwlOkuppvA+ zk@Y29G@3}r3~s^J6%#w*47KVP0Y|K#VGp4(gMD^Yl8u=#ykmXWtdvwt^E|4Tw#VzJ zuf@n+N~ALv=bHyVeM!Gt?x)DTNs{8?uOfxhX|RT;3+;bE*2QvWILW)NqIfF*D@EoZ*FI_3k3;5#Q# zX?q!3lI~5vfnvYlSuOUOJEqmDuz}TrgDB^tw`_KRSSOy49{2OQ(g0&Qd6>B^M$O!O zmnhyM)HIEPFw=D;l@pL}CKr8nXD;twIUVYZZ1)Sr!1a`w2Ys`o0N#&HvGV&PbPGGn zKh?tMADC}J71tLvkTgoIv9K&n@)DeW*XMsD<&2efjtJfX^6eR%M?2 z&SX+Iz3VJw;;xj+%a07O23F$AMy(e*L;K@mZdy-=NR9(EjE3hnarlYEO?_!r>WY}Zz^zq5M zU2>Kdv#bns?>iI}7Mx3CaK&0RRnuJVzX@ypcBMX3R??AJ5&A8`;tg_LG$WjU&wj30 zVW~JWyC|H5wyNsnM6Nm|+|Ix{@a=kH1O2{ZXfL~a1Vz6rq z$5&_FK@SNDK3UD{>HVdF$+AOSQ7I0e>`WsX8gN-WM7y~;pw^**x{Xyf^IIm99s!Er zG*iWG1(k_=#nG(^?*{{KsXnrZbFU66%S%=|6eg@LqSG7ucht0&L1x%nWI8laFKg*3 z)N}6!$rvGmxd$#YnJMDN;4U0EvZrII6oPOoyk~u}JS`(d#pwAVrb?-ld#Q~@mlRss zI)=i;lXJJbyFDkWM|uEU8vObOKh-p5dp-A;VI=m~JvtHNG)3q~+0cSXu7;e7?u44| zzxH$KReJ5bEO+okoU>+)Rf|np$qsHSw->ufiHXrWhe8L(`=upDPuiS_RlIwI?astc zapyvCksyC-LnzE6Kmb=9>$We>Es+!NS3Jw;(c^CBA9l-l6X;^n{M*RSpKM2Tpo%)+dcT^%_4zG_a0Yt2FKI9rs^~9llYCQ?S{(}_m=^CK zt=HIcBzxv6)2q&VC~E)!_bl z0Qp+M6R>O(B;X5vh_s7Vv2wGb2HD)|haZ_tsl+TXUw@=LlvDPI_A4D77@6%c0k-8< zLp9Y`j8L7NVcG`tHU?xolA;}Y-P~(c@iO<&XoV_xv7|3{|EmQ!lJ*-|c-(;n=~nio zSS|odmvW+v^&vP7>t1Q4tkKMFJ0t)V1vz43{1#^$d0aiNvC%K%3e|AlJJOJTv@gVI za^WRn6zDcR6xX_%Q=+|e2=>$#MXUf zZJMw~&|F*4I;l(B11m(v&yV@^r~iprhJy{x$KZ24`!c?Hxxjh{d%SHX#C1%Ig)4O_2U|B+ z@!0f0-^_$V($@pWwDhL2ZT>p=T87(#)Nb8O_D@O%`|+>5HUjP4R{s7vqJrtuwlFPS z>A$&#l0z26hBiE$spu*Rl%AMlY2%mV&gfx@HdfBU0>~*oKu&W-u-vs%IwOY~3@mES zlHs0Zww-tb=sQ;~eBJ+kmRuGh163XJyfghpGUpQY!Ok@Xi_%U76s^U8@eJ1d z%Hs)NyqUm`WI)ZYs#;n%kLlc+(T`_1og#A`<1=FYnW%YQUgiu2FCG=E%e{ZcbNKSD zfMnfSn;b&KBzx_{y8C?e_jS%qfbd)vpo%hONZ{&;u}DW^fv49@pjT61!}Tt0GVUO< z*-$w)CPu7oUYq@vPx#gESik=;HF%bJT?l7%)B8&}hU05+aPZxoN6*LUv$nu7oBjFF z{idjttgH@TMZIk=In|akju|q7ca$Ia@SpXsR@nKYH)RPbPT&XMq2ZB2qLWJdf*K4& z(!RH{h;eUa8xj+X4LljE;!jQ5Y;7rZD7X2o{X2?An&B1!E>puG`k4E*nmxanAgz_-ocnYVi3h? z9Z|T01ZQwJyMGM^k|QH=PZBsT+&dy_3-{p2>~Vsm7ZWp19>#1ow!AL8X*z!^}g) zqG(UI7Iy2d+Iaox_G?v{ZFLPDiDT$usFhy$IjKg}!C!jVD$;*Vp?zC!|Lpl%`}(eu zW{WR(lam(+N((k7rl}R6+wz4)e#GplosdxFAO65|tp*K}rrd&pw)7d=6|@Yrj!Ob| zA3jV0sNUufj{xt)>oZA_oUPl)j_pK9hz+eYBy?LO#CvY$SI8rfP<~;Zy}g0f1G&Z< z(x~}rS4v6WzERSza5(GARh%0*B=!v^p~HwYdEM5Qiv!``51+)Z+bGE^noh;JE-H0f zHPy}T%38G<=|av`XrmtyY~4&D1AC_>gm>n3b^WrPg&|PSq@cfbW3eD&$jJ|$`(q&g zTJw$~K=!P}JTf$~=)`eRzS#_|O8fmtQF&Wsbt z&gjWKo6|py`T3OiPfO|zXskaS$gT_^5D%&^*xu#KeimN-nm< zMSCt{lWWsqUG6LI&edJ2+2jJ>whwOhczk(ztHs3R1W|8nR687 z=E3emry2U2s3{hJnE`->zz0jzmd|B#wZFTe3bW)a2CE z7LbK1XQAS|HmD%DjiEwzs^Dk?qW|{x_6?>4r%UNsX*u`VC1C{XHa9gebapSzWO`{P zj*kV=OEXVa+UXbZ60|eYG=$r2YNR`z(T)jB>uO;8g`8qC%+Vaur;jG= zV!29W1_J_i)*qo7+$iXa$`w9GwtHSLxQL?$-j!)s@WPwWA1tahX<-=)-=j}lW!XzN@Ee8kft zrU=JA@S7fbO?q!d3M9av*ScOUCgKIt(sB><)!L5&;oCSM0-;k{*Y0c-$#iYZ-PY!N zW<^V7+qq?P?*DCC5~6s~DhA>^3LG>7lt1ZGtJL6Eg_sSD_*!mj6I3oTbKEX<93$0k z0eDd21PXd;oui@(vwd6X(D{40C`N$Lb zr4FAC6~Z9CON|l*UUcY8DL3XEzQh4dJAyyW7);NlWzEg*CMLb=X7!S)nhcwn+~nlB z)zxEM&u3%8t{Qxbjh}m32Uo1$2qTbIFMu_nbByMD1?dMNYG7cH-P|nGAQpD0B1?Z& ztZ5_~ouqK=E}u}*HQx&gJ7_Jnc6Q7NZ1o19RfPF-pNHnZ({t0d_MnmFkB77Bj7W&s z8B2CA`@o14S7LAW>P+i?(9TgQDJO0KNK(lMy0UbhIj>{W&pn^syve^|1Cz(g-AR~B zxbqp6$LGmEZmjj1C_E}kwFDQ7-b4P9u*y*D3KY545?`Q+I&-Q?<|$7+Dqm0^bjiuM zl{sNJLzpFmzpvh6`Q_+cXX!LTJvBQ!`uq2Six59Kn~z*ksYQdZ~Kj^D_*HUK-y7&DZLmf=IJZkNpW^Q zKth1{dfv9bpN8M%E>b;DIX*%4mmR;b4UmghQ&uLUhY;P{NXnWhzAzD^jaCh-XE3Sr zS3z6+TT(*1C?5D;)`ME1h+zz)J>JH3gnDLbYS2m;W46G=#FnLw+idn^xdAmLvY*eH zhvijI^72{g=3CzgT%9J;K37zTgB?C&$T$cnNdL~8n_iqOpUSC}UzhKSvfQ~iC^Z!r zR?_q3W$T#=HPqEJdF+kOJ@)4VW(s$Lb$Ap$G#h#oICmXPSyy24l5+~sOB0wB=FJUP z!Ky{bwKi~70pWhzWpY0$n>+oFWFGMI$*nKP2J8r0HR(38#LVhQgpdaIUO*8GXfo6X zy;1Rk1$OKQJ2ojiDJl=#lwQU0-dFop3D4w=y7ONbLXpvt@9U(aTr*k*;9vEy#0cK) z)ff+aBW%X|duJzjANo^R3yTJhI@iM9rQu|MKbD9wO1;%ohZg;@%Sfc{z*kefP*|zF z6kXR-)7i<}Ru2$$Bi`RKr3`BHBAuFQ2ezyiAZ8x1Hoqq2{PX(+oh}MmD|NX?A6-`m-aY!iJBVsczk>eG?xC$JD}tRm3Zo zQJoq-GE3d7V8X@L;|c{;3}Z^~Fao{t_N;#lz1M5dL4xdWd0P<$bHW{*&J>3+<-W#5D2?%xEfsZK6!%MiqL!+Zf6-ekr zBEmxgb|T6{nIXtSGw(I%PlIvDbB4NM!UThWqmYGH zq_NS1{VJ4WqzDbBiE_;zSbUcW0sy}Haeai+)6*@p#+=@#SY%{mqz5D`>&!Bd`hFnb_pF}xCG4mG0Xq3+s>s1aVcUa(`)wUNJCMo0KHao*GjW2J!bxyQ zR_gBQ0jErW5)`1S8JC`Jt*HJ$4<|a}x;mw9Xy+JNY-d~@Mu4mmR&5w>LlB<8*lZ69 zvOw8hUw=Q745xm+naShL?z7k9LBhg9>QITLV&~CFEn|XgLTs$EvT}{{q56T($y!%{ z-P0|SHe|qHrj&*$yIf81le&h6(B+gWvP)BCgGUL0-qG)BE; zCscVdRpN=hKd?LHUhd;VrM1I=4&H>JkSZp~31%9dA{=;pJoWLpnm14Ag+oAIsXOh= z^oErT4)OH#1S@@acb8M!M$^K=`r}7Q$zb)edWN*DtSq1|&oQTT&F{dkXX&iPKb$(- zeOsZ^7)>mIkA_xbZEo(Q%BbLK&lOAtIVSE+pvMc_loW)*b_4NZo()ii0e9{*TJ{gt zU@1u;weZaUI5qi>fcxE?MwBGQ;aFGK1{~S)Rxb`o$Kv9$Uj(Xm8Yv5PY@;Dmi1|T+ z!ZZML%3AI7#L2qbDXm0}j6{ucoh)~^fG2R;{+Q^?k|NBoBDdb6KBma-=N7TqM4!Yg zNh(CEj(`0CmL!}&zASEOsi(48|Q0z9IOz7V9@fe`0j5l-xN zFY9oCq^&i(&0eJBwK-6wZqjwVj9PuR1F!Ol%MS;aV%r8vk45*LU7m{f&3FhA3g&V) z552qI7ZKS%ycOZ&#h;Tk0-^aN9e%45pWS|{(knP0Ir=+g!Ln2_AQ?V|#2iyCW`;v} zKW_tJrY^ zQskAhFDlVe)W}uw`0nLyc}$wiY%J6m*Zl-`-*4bu8a8 zV)0B%PyKRTwHwEzH>cWMm2J_g66l80iMw~$tnGa+@+rQV!5*r6Q}P|5dODd7Mm4FT zL@M`e;f;pfSjW@dVF)tO!u8k}QEV*7g$`E!x#w+~Q&5laK8c*}wLPMX5frxFm3>{C zj+&aTo?Z?I!W_~mCvYg>antXqz-)PNm=m@T?j%7&ohO(d^A2S+1O(BO@ws9SiM!z0J0p|JDcSBW$It=`KS{-k3} z@B3wD|Llog)LIC?mV;)}ZOIp3KB!cmOm|`~!MzQ))~qRq{0#|7BIOIJfzIvGMEIFW zg^A`rsYR*>g?fJ{b@v@`5rty=JlF|O{hPpZw}b^BE6)_B0-xZM4uUcI*RH_GIa(a` zTprJ{GjV)um=ZkB0L_h8iPoHA{4qUR2MYeNJ;a&S;e+u5=rZDE)Jw#Azc*_R!(pJB za3~G!I~Dl6OYK`q4h~w{ zcjRn9OGp!(8i9$~TU|bGFviS)`}fU-V_jZPfNDHXFLq+cp!hSHI4pA<0%bIhRHAIn zMil?s%t8@NPNTg3Vmy%%wk|S}p+l8iVVVsDUuz4v(fQ?$C~w1LsvyXl(h*AvdoEjZV3EQ&z7<^nBz zxZ@)I*d%(9^mfN4(T+V=`RvLAD#Zt{oVJVLxc4??4BzPDN1Q7oQ^eytc)Euw+=5Vs zf_1r5ZEWRj)LU0&^vvSuGxBJS9ZUo!kjr4*N2BVB@k{yJ^jK3k$+b`0z`u!0$O3kD z;uNzTGxG)b`aZb#`2NpW@L_KwIL-H<>FG!@FkFziVI_ts-1K~S%VZB2|Yhz^ITC=DoaZKrg}%Q^L0=}yKV*v zbB@%_tnBw}xi3a0$%JB4eIEh&q?XEVNbAA^fI> z3g6LD-5%W;8x|D*5&gZWm=o@n%~1g@>Kie9Q|Mktvu8LHhwe{=y)35oE)EDR-7q{N z@5!vcEAj<-DwS>yy~)U3|4>nB+CNFRPAIt~Wp5KD+r3`BCr*uXzn?Dtt#P~}NfS** z8r^V|<0lREi7ifGY6dGVWVwwIUN2dBzF|#slCZzgdQMW2tvIm?b_~(7yKjPx$@!ZL z8kHj4^r_=q`fNE5afZpgSHIvGlx~VUt2Ji>BG!E@lBB7enufUHxg0UB`QrqtzlrFK zu>`5hj9^0I$EjI&BfgPpvBMe`si{m@%~s-MPVP+#o3ocCe@C7`k>Q~5_2|eNU+Gur z&D54Sh+)$$TzVoh&L@!QS3LO3#r@@kJ70ptW<=diEXvkrRIR)&{hW#6gx;IYFnWg5 z%XxW=V)*z17L!z(7C0GE^WI!L%S@@)A_nsX3%GZHkQ2e~+>(fM?MD{DS;h#@wQr6a zPkP4Ry|j$TVDDwBmwc6M=8w+&+Hgg3GYs9wEOZ;DHdR5IF*vz+_3a}W3iNWcaFSFF zJ{HXc5&}8afN?v19b5lscnrF-=Ig4bG@FG%RWV|y16Pe~-D=8=9Y4)0$h>F`)EJRY zeF&AV>6`P^`j`#>(_9vG8#Y((`7h014S~#AZNWj6ZoiIjuatlB(yzOYX*Wp|(?D_I zPG!*8ci|s8ck?cy!YsZsTtWp7g|;V|K`Z5n1a*;7<2~pV$Rhj+#?r6*K(>{NtJx!7 zOeQvkmY6W<(mtcmrhWJ-&Olx!s|Eu})a6%l@~P%m$XOQs224wtUqK;3k!a4+ayBIJ zI{I5i$t0*H79#v_j9Fy38A#?$39jT{>j=tDg(PdlMjMpuiv;#5z59|sqFXKAlRmzp zuYyWnx_`$-BnXu#Ar?_|Rq8M-a8A?k*HmHDPd$+a*&Mq0Euz@2E+;qQK@CmP1ZlH$&XST^)mOa#|R;*jRQ6}LF_dDtN` ze?=JPjivYqQRY9yQ4g`*ZuFcu;J|6+hYuBWs4acR85mu9cbf!{*6TQNG+!sh!N(FI z^1M>gVLNuXj}zWR8D+_&rK_2WQ3>EOVc==#BgS6`Vy>2EdN%XUV=;u92cBnS`cu}T z1Z|HE$D!0((dkU>q8I#_bLnkw|BC+y2CnVFKuSU);U`S|w)@l0B|Ro;X-3}>lAXPC z3e7!K3u#ZPBm|UU#r}H8?^jS@H$=sSBjoukT%a<4RZwt#@^^|-W}s}^-tGXK)Uwn1thFT zgLMDr=@8KA!UmvXh=9xbE93i%V{VR&6DrPgf7}ewg&=wzM05}%zIb7FF(}fo;OV}? z*%a?Te85CQTi0d=OacHK(CRc)6o6bZ!7BOF@n-`Lbl-^GB%ZW*#y4TUzRWKWK#~-! z$*Y&vkanVlhK0TJzWY1O+yN+M@)w?A9qRhts5~G*s>#ZR>%${^f-)kM%0Hu`P28}yc2poW~KywF?@=^H%CJCqk+%Dh|{NJgPTKtsLp z1MWJgip;u_DNxzAUDDM2V8V7V&@bs8opf0hff^nf%Hyy#SfW}4g#Jv z57@*dq{R*_%8~i{GZ=l{(}!aLxakuWtMr?f-U34o-V_Gr@j~diu6#khYPNCN?)Yer zkQgsBJrx8eR`t{j3=C9MrhuIWpvc;L8CvSskKH;xH!(wDtPV2W34aC$DFS3zWR&G! zK?v@3<4Zz3v{bBjg;f4CqpCgN_yNnXwhf646BF}8wdtp>#ERdt0~ZggE1o)AHi#5w zP*<&Bv19*D>gqDLnn3n#g7&v38Q^r$mEv&**|Q6ZgIW{Qij0$XZmS6!r>ym zWH~@Yn37WRouW(ReK733(A{B{C-0*Dm!m$U^ETgEnRi{%iL!>S{sGdWT>q_A3^@3I z<|70-DV(UMr;f3hn7q7`^~bh1(7&^1^?9HBxP6`tT(m$(S?)p$P$==L_~w)wm!_9?T{Z-sby3i@>b3s)O)xXnCn z^xZNQvRe%f_nM90O{Z{H=Q}w5SO2Zl{Qfx9sR8AA`0I>iuF@^w3!X2}~%-DD; zv~p-KSo-;5#i#*3^lEQ{fz8MK+-u#j#)_Rz(Z$RcsHf;_kjFnS2?0$g?u%1>hj{v` zuN470S|qsz9#MS|#63@a9-OkPa8wv2nZ9R*&<7n+G*(=SZN~;&euAsY>8rU)Xn84vf04Ba2D-ZSyX;31M9a!*Lo z$=RyD5Te4%YqSvmnzu7}=(mUDQxT{t-S7b{lqrdO0Q>KqpP?YbI+eHa)ho~h2zN~7P~v_kW7#xZC+!5&zkr<(2iR{Z z;2;0_9nxylYy#BYKBZ3!!L3#+n)sT_!7C6@!vJ%)c^9}Q_}@CPq97euQrDrjAVJln zf+l@+^Jkt_oL ze=n-TzvM8W`8ocx4*xvC_X6DSNX-5g^55tEbFq`|<=ql|L(KjguYVr^;=~x#*_`CgI}$FFW;dAV(Sk^sJ1y$cO)RaJI`2IM8WcZ~OqE7?86o)XOIKiTT}F z*x5IA{xplF=H})mC*v-r0zNa)@U@vF>l;9m2Hev&_qvL&fX_NxrQfI!g89!3p#*~< z^S(3ene6MgZ%#l9W|IV3c#tUBmy2&4fn(N4bWbit4gn7ReJk94Rg7+98~8MOsx1>L5*ouXcr?<4z=&UAzO(90c2uGE&48g9>Y?Au7f4 zn{o`Si0^cgVo$0yp-4-auVI!1xMv=}G|_ z;msRUn+{4#x#6EZqW<7+1$YHt2Yk`xuj)Z?N~W5D?sSAt5fD9J$0=Wx8sV*NJn?-a zeMh?X?gguHoU2qEF*Gy;$a!(d!jAijIC9=N4>xzwvX%*p!?FV5^|eM9FFD3T67)3FU-1Sqy!U07iQ zFkWXbhJZh&##Lv`svhk4D>fK-QT;hNIUq*{&S(LLD-4CfD_y`A6sQbGf8wyh3P6n* z>2Uj_Pa4OqJksxmZ!c%Ez7!AlzMYnStw5zz6h`z!rY*rkC1hs|FYK$hDp?FpXOfc>poQd!xdWw*g|?a%~-Xny{b<#UUP zLR3w5{eF2I|13Pf%x6$=cCd;V=K| zI|;B2JV$3t#?9)tdKI0NnzAOn!>9lSJ{(+vWK4prtna88jlDmL`cqV{s;W%BNKUrh z-j#{<^elzX6SzG1jrC4V{X)F@LEonc@)?1RDQ+ekFqt86%83*xyZ?3aQ#i28K19t} zKNav$Dtpy*F$2bqmX@qtHI!U&$iFc%@EaLFCAKjJmF#O>^+kk6dOQ{QcpY8}U7;X4 zn3*?Mo=cZ&=bbF@01VfjHj#{%E4BrGPM5K%v|fl3prHTm6G|^rljha7I%^5oWgMPXNjh?%E@gqgBZ4eRNKe54!7p@)+wx80qMSZgZ7zDrADCZg@>wnB}RWcJ7|m$`V5i)G`Kt>qwufe zv$=CBGgoGxZ|>=nm=@seTA1EBKj%>3W2w|dhU>=8a?6ZJ8tW;06Id%~)`uYCzy8me zL42_a0cEGNvMwLP55sm)v(WeLAD|s6w9}6^@)zH+W>Lu7b`5$zPHT{~UEoCbbgi1k z#Qj;u+sCstwEO<0)EYz0wpKxu{D1Ge*7)LEF6QW@tWB_$IBjTqC-TeW+9&@yAEY$! z&Wy#eU2VRf?Pv?)cK=C)*hA>?mlZ1j7+-coIb)5X?LdzIrs2!S!Rt}qdo^wely})_B!OP`7z-1d9gcp*VB`Zlx%7YT9t7APy4cqQK;8`; zMf=SqZD-5IOj^@}mRuAgdiVBA6LX5j*~9VNxYJVptUX&%}Ny^Yi!DIzYk9CPH$cS3+F;z=_xTZ$AqmIyCy| zPp+bG4trxcp`md5D!k1emsUPLK&>ky{^sV!1uSO{ z4i0{fsl~;`*;TuN%?wu)m$roJ>go>;z5V@?@e~XU@@3Pq7<8i-AcwEZRGcFMJ1&}rYaWV%) zWMn#TYd1x0*iX@+p@ZN%z+=xqKtY*}3;4qoKa@XvSOm5^YMPMXU=L4^mey8tGjpPH zulm}c;NZf-LhxM?Cp6Soh^pKz+qIV9x4VD32XTU$X9l!5wc=L4w^Tk2-f5X-a>DTH? zU{XRL`j(NswPc-ZroASVDtZIAwMHr;JRJS=FVDlg_6nQN5USiqcfHd$+A|41b?X?? z5)#zjzppkOP6X$^H#6`k6sQEnQBZTa^aLYuECQcMPVNF!(Eza-Xg$rGB93UWlu385rd3P}F*Y~*C*bPC1;G9VS zH!vjq(k~UvFQ59;Fm7=Kv{nE#X=Ag0a)9k+;32Q5xbnl>)7BP91l1N4tM6Jl1O^2a z5h9y`6?)ZkqtN4D=(a49C7tW$84(tWCJeagSEKI-Sr$$4Y zIugjnm6u2G{R09(RNf4Z|In(>Y8JbCk`x#JmU!}(ahX+6P~CC+XA}W9_Fs<}bOp}| z%_Y^c=`?OTCPv1Qp&_kx*<#7Oq2(r4*UkRT0i~rD=ZlS?2#k1)m3?ENX91*&fFwpa zdS7nqaJm&o>g5*C=e5qIBWqR1$&tG|SRx{h!1PuUde81^1|4ut2{_{|CB>3C>yJRN zA={w+-dSvLa4Qb;M_gj!LK38vqtFCjFc`4Ngo7g^YDU)Tw-rqLn=S4aX7NK#hdUz? zILy&Xk*yDrK*eWBrE#vQ$$#V)`@FcQ%xX_bU5fh#OXqM-qjg?gL}iL$q7;{~ zLQR+u{?q8<^a||tya6;~s_Z;jWCiQorN3DpL9^ z&FjGTZfG;kkFBnv0yL9&Sy`2J9Jj%-B_07?e5yBv3Te?qe2K})7E=5Jb|oJ`+iY|iv1gW> zp0<gcBP5KPiZ_~clgqZ>msJZ4*`et?tQ%dab`Z1sh*HKgY;$aZbUqOHX6OtwL zX*Q^)hE?kTn+PLf9)G^vm*|2m)ZUVpYznFM+veGD8kz>ha*pO4cv2V!O?P+q60(Pd z#h!6Y7TvP))p-cX-|OqiF$_H&Nu)P#_&%=*YiXrCs`X)AX&0y*FSOGL`CPP~wt-@d z%`idR)gO;rL-Dpnnd(F_VPWoDum@L`LuA{dvnudy(=avAsd)ySV39{CD(RuBt#JiQ<+aE^Lub`5Y%V99HMaz zZ5OXCqo8nquJi>cV&zgRQ?;RL`Wq&LLo9r5lYHjeJsYLm)20TJ=jLz#%-6Tr*xDEa zwr-&>51y;{nML5c*sov5dZdV-wwd+AqQX?hnWM1yzpKBH!VJ%;?n{T#~AnABJGbu&4&d_`2?1C^Mb-g!lV#WjHJQi ztGqSU)ui;bl4S*-@K!n9zifojv`M-avw%OD+Ajjz31=WvdAbfe;sp>aqc5R4 zA{Dl+kS6)Wfxly3#K|C*viI|zTt=ssbWqOwOI9L}x?!EYl_B8a$-`D!+u2Qn1w3eE_MgB?4s% z&Ur^8j2E!ps(gQbBqoGVgPp(&jJfN33Qi$zzOh+$HVzi>k58atmU-{;4MUGbO+dif zU~zJs!Sy&VYnBwg0 zzP|SifxUN*$54&O0Eu47yeyKVWDn=@@DzbFLrRATrJiPZGcD2>l(AeM+dziIF7)Q4Ms)?*$NfCQGX#GF! zy=7FCQQJ0b5sEZ|(v7rqhe&rLARwIs(hW)qNW;(|T@EqC&>jOsx2!EyqF9V{wO?LOTHxKqmNjFCn6#6!u zB(uM*@K))-hL9!1B_$*}sdIC3b4>Gc%%>M*aEXa;cTZToFZXMMJkg0Gi7OYHfvMY4 zTd=>M-!E~ELiHJ0#v)c9X8w0ZP}k2U8vfP^&!0aBuy!T004&7{((qv>r_vBv}++-g2cNoJd70d~OzH9#mh&H2$jHmvv?D7KXpnS8dtaY0*{t zv5_s$A}(q7L=ijKVuax?ZGRdRkOKKqj^9Y?U+L8}wp(y|oo~^-teRk(*eYob#w62+ zBA)vVE`S+j_;S(bQEHjNNS46taOm)97MPf!qz58CzU0%I0RU0&Zm_^yosD){iS3n>vC`kFnJ6R!n z2#9Xh*6q6c8KY=K=SU!PnES?S1uxj#CXezgD%|5u)&8b!*i7Gc8Ry5R^S@sdm^oOm zv)!y&U>ETB_LAca3r(izzvzNgK@I+OZL!v!Vg-OxwBgGfT8(u z+}OQDvslUZLHmWoNTuj*G_#ko=!pA0Kk;Oe-?TJx&lQ z{q-x(`?alp^Y4@88RUbWW$gPwU9TA?1CG^0wP&DB=QB-)HN%QE7!#Q$5riA-SoEZg!N10#<;iFG;A|cBXS^kk#Q6KVt>AN;tK#3 zsYrjy3$sb!H-Ub zolROOMzJ6;Tw5`-zM`VOxMF*m#}iZdlX5`;CK|?bq5I2NyN4?!C*<~=iS7_OPR>&> z$HfF_(g_YM6x2HH9V3t%`!>JFrq)Vnn!XW~|5IIkvj@3ozP{-sIziwi?8*0b!MkWb z@jvkSD2F^HL~Mp&i$xEyNs)QVLI)jFx5mSZc}n%h6<7$3yD?ti$EcDbqhnxTpkwIQ zI@yn`!)`E0!r^j@5v0Bi&H2_&UNKA0aDR`sGuI)EJ0qqxAl^c0!1HM8vv1_H(o-rp zhkV{tt?n6*?LtFzqwqy0RU|caw?Lio>-9o=NC&*g9;>);q>fip2n|k*K3P1?z7W;1$`1= zMOKSSjHmnji7ZqDx{ES#Afbjcvk#EV3_iy{=W~#x6UDnKIRjradT#Gv9Ly(f+wE4= zC)Y@6MwZPv5=+tLM@k~sKhGV;jyjd{b4)*KDh^zbde!9D$5yFGPp><1=hoNPmz4Y+ z*ZIW5rLF7SbmY>wh9YFDuFgn%rkH14X&msK?ImGG;`Qa7s}3PiM8x;wGNw3}B(h>?=2y9U?B~xA!d)qM{`OI%A1R31t;F2bt3PLkg)gvnI*Y zHi-7;Ep2LIqvIP77TXH9CM$Ft+x85Xue5(H2oB;{$4ool2AED6=QokzQLnhJx8ALz z8Qd%Il-G0w#}M(qU5=GZgw_hwXwNDM6_}sUNDMp^? zds1QX%|EV91#3+>Aye|i=Rsh2XLn&cCL=*`BcYRk+ff{-xa^g9Z63C1ZsS8u$pr5DW>ck>3A}+J2oe$!PAqrQ53Q!V_4TS=)lE7X zw{n9VwE&t$)Aw?rRorMy%Se)++i94ee-xn8 zfmQ$dCC}~OZQ`-f|3LVL_@^rk_t)@mU6l%FxMtj+=c5sm=w7r%KK-{}4HM5%NYY4} z8D}+b2Q!0N^)6+5Sjer+OoAjdX;E;Dmrb(#4~bomb_Q(qnkfzIR}FCwW#5pJ6SF)< ze0yL!Q4Xo25VQZ$uvMY-Fg`Kkd3!V>n?a+!@|MNxFu7#P|`bwmT zZIY3@FgN?{kikMC`-zHWVwsfWiS!beMa6NXi^8vOtt{^j-?4qCX{`UGard+FZp+t= zgt`YOUP1p4X1I(}Oy?ec>)itzwRS}o%&Ph{zX_(U=i7$`@FgnGee8pR5 zFQmZAd$x9@TKGMdt$w4}NJsEDDM2Ot9U-a^*vlw*C~6nc)UPbj!BZVkau$sG`6?mW ze!DM6|rT+dd- z7}IMR56#H1vzAjl`E-5FAvgaAEiBu3QJS@D@bf}Z4qD>f_qd2ba)<8cIsQ&2Y#22^ z({ZeMb4w^VnL{l3;ZSu4qk%lGS00cV1ui2XO2vyeHe=FCpQ+!7H|JeJV~S z#vXB5PJQfq_;log~IJsi0t;(qo;-7 z1D4Sj!t}(KVT{`AW1Q3U{H-IpPRPF{+?Mo>SBQMCvvUohF|YS!n_bRy4D1f#d&hte zTj$XcTM;=Poqui`xf^$ZQqA_g!HmvAGAZV5%prR5dHREQ@A+#!;)St}N4|a{W~%GKo_^@kfkd zqxZ#r;K_nCx^@~h4d{!QM=g=>wrd=_EVewJdfSGY*_2*_x!|K$N^tiqx`pnw?(xxw zpb*^P5aDp6$ehefI{c^NQxzc}aMkK~?oT@b-d3zQ)H|G3uNI^Bjxo1sYS*EpsEA=o zc6`G&G(4~1pTuLQ};3wrwFn->RjB~%;&wvSQ9$W1!L zrBmKE$0|Wbv3tVBpNLnv21vXK(Zv$nhc@aQT>+~3#Kc^A*Gx`uzn_0-pX7F#Shif9 zs8hg#k7v2o`{DqsX?@lGCrQ;df^2N|3r*fo`r)h9%SovX{ecK2|o zMpj&->doKhO2UR+cPFuNsSZ8>)YSWSg2z11xe}Gz4%`8nuNJTVaOsebNj@i|`}yZj zUTM?itn9l1y={V1ll^wRmIsw^3~e&b7(RWcx@te{%%?>YM66n2(@%=`0|J7;2s2!v zuo79Fq|^hvEDfPkho4HHHe#G`X!YME5lm}#m9z)PGF9N9LkqgIvsoDJw}YPy{0g8^KCk{AqFK$HD-Jb{*H1vrOg?COL%5l1TG*tZzJV2vcDHPh zSs90a_~d$jI5z?XGj7$%u5J?0d7tQ){N^u`;P-nIk}{2pRa9IY%Uz-~mYkZb*fzoc zIs%ZZy7wDCpepQ$D}?04V%_Q07SoA0Qm8;qpm>PKfmq2&p1g& zVwqw4Zu6Uil_Hx3wUlH8nKl!`P>VSWX-0uRULdP9TQLQ8oi${E7Unv52XpI>+l7|( zRK&>D+qxYLCwFwFcu5Q*)?{@8;68vc!6QQWOBCy@<=a!)i1z8^^4@YIl}G=F3lOQ` z@jVp%BzNN8cBWcEW{sO)@S_$ZVH1;LZot0uHMeWGO#Q=BFj=BJt?QU&GwCc5u!b^~p$$>Roh2oP#nEp1575+`6el>Dy>_?BzJ3Gndj z?aNgWLq!J>)t%702Z(NkQ^4AeAVAGf~!rRL@i8AD(iIS zWp!k_;&XI;TEiHd84DF_f8jWXg)99`CV|`3-I^g~5547ME4Km-OuxKA#i5XXZ$h5p z@mXI!u%UlqzNtLY{= zh={Gis-d}auOVEPk{ooTSoLejpPRX>erh6Ob>%M`_z9pvmnAMrb}Qq1{5rEDBdD(t zvo6Ayl#r0&rl{T4&5p&sjj;qeJb-r-|9kEcV6x~wLeH~v4K$s~Pxp`=KS!eA6r2=c zudI>!)--?C=z{DGP=VkE?MyHw^@lD+WsnO!zv z&&@?gi-D#e7&rXD&uAIg?ORp-7#Zw7D!-xr8h;rW(`l}Nqxf8HX=i{?Y zPODJKR#7_-+A4&1%v@f&sTpUh=da1wUy(9)sF2%y#U=m z-tFSy4Pf<{pP$djrKd~d^G0o0vQijMRww(ahNAK3Ptii?juy+1ZcNeFx?YER)4KRa zBODyg&SCoNu>I?;wf1%+EV^EnfS|x7i_cj*zQMaqot*?9&^~Hb)qbhB`OMZU*yJ^D zQuqyD=#Ts0%=S~H;-0cY)Nsu(pm7miuAylfR@zd$)41lMy^9c^U+=c##O)j#>%INX zNeD4>!5E`A8mMy#zbeA3o}kXp1G~aS+3yA^@s};Jq|%Z^sF|E&4PZ|ChY}+wrd?;jNFG3Nsx6IKhLs{p4N$~9! zgC-n)EPlcVy$E=jXqG1yDmuClaAR)uN7++%J-L2meGxN?KT}T@1NbPi0{AmJeT47f zdP6rZt>G_RxLuUb)^uG8QbJ!#55+Uq?`Ro4fPP_|*DYl`v5@=qVq2$wCE@nL{Lxv{ zn1o${!RUVC75WjurcBbQN8_&tv;bw$fh=gK+Eq zH#kHwU8ECA_=bce2R#czcr&Jugp~rc+oIQeU$)sUl*hj3#78|kGMfsD-2lvLX+_0q zX3j}WTQ`V`c0Il5-1z>aXXVDrHbCxaI__ZvcdiQ|A?apm(;-biISZx=S(yo>3+=#3 zhI?v)hAnTMfCMSFgQQz$)_NJllgl|EpLb{R1eiJtJVO;ARijt#SgZHFR4T-qzIh0U3|2w%`YELJE3e)=2 zPZWgoxCv3zmUD-=M!LhPzwJ|FJm+CEy_GsJ_u|42X36V1um^^#_+J&@y-e3n!Sx|* zta3yjh3x&PO7H;DUI57dmr$N2?9ERpb~;2pbKY0EpWWOiK%1KE9-}) znruhg*(pz(ZQ>@bVLSODF*sjUjt?}SnOP_LYUe^mfBatSO+blPsKOFc8Di@Ma$n!u zjE9MkSUN{XM^3`3$l?X3^)9*jQyU}B<>1+KwEP>siIIU~?@QB5qS^9Z7 zs*yoKs~?j8(9sNWscjXOjWic)mG%_T`TO}J@ZzPX1rp{?XsM}frYmJ)wE2_973S=o z@HF6%e(^Iow|mO)^(z{xMb$J2Jp#^%fLRSNEf(Fj+u7YY*i>iv@e>Rb84m z^7J_|tLJGJi+!0T4L!4iz(1t*b5s?X>UKo%FzEk&{Fta&48UotDi0Nzb$L%&3ar#Z zW46+6lj~j(H@|BxQW2>HAb9tVlH*W4&?83V=Yt(`eSSS6-_^roI*i&&#U_`d(WmwE z;7YxC#}3z6+%N-o8;j5U%n~PbP9>D5GzHHU-!nEw){p+pk3a1!9=JK@UM`<_1_lNI z*s8HRORvG0X2ZJRd?Lx*iwextAFcEKYH>UtQgvw4_1!zpQj=NcpZTy)ox9%>68Voe z+KJLd&|$324QNV&f`Y)_0&o!6*x2HUWvh*%T>2C?QW=UhoRu=8H65|3+iwr%cy@{q6Y+zVrIGoa!EXfp+5A1@Q8Wj1&-<(+O$( zE$5$p$SotVc6)k|{HWJs+5QXft~i~*Nn3^tJY@bssM=i9N}AtrixzEb+6xEoNBC9W zxz|hoXE&+E*T-wep)Y14p^1~1=(Q=+Iw=~wtBh@It9%aYhVYdjMCLvJtKkOq(1fAJ zing?Bw1;a#z-sVO#xHw9~iheJ9oKoa&>lgcD-Qg8}M{5 zpt*T$53!F==V9C=Cd0^Gz!rPUPy4q>$Dk%|vx#cP2-uTnXZQE_!)Y5jUU^O*@T4G; zjnIWi#8K)CcY`kK^jYt33x5yatXE^WJchfYgL$T6cvq%GoXR27Y0$sH&oMn^}1?i=tHrWjtO5=<4- zJPWwKzPZ1fX#UsptF~cws@(%XMe6J<@iJ5%E193(&PMpn_9{yNN_XZ8K@w!&ws9d+*vo%9?4RuH<-7dyccezdvsc{=ngn zubso?OBEYI7YsE^XZMavJIqg9jWB_OcrP>X`SC=4bI-))*>F@OICZ)*-~mF z>^Zt6Y42XfrltZdJlu1DG`4$me%=QJ!UP2&#}2I?{@B&&HKHHN@|AF|sW^l;^#48R zN^_{GVhPuj+ll=&%%tn>>3JjS>+2vJ3i-PX7c%fVCPgo4!NCpd&KKs9bmv3Vd!sZ~9Ni)v^aPzM%J0OcZ<%lk|4UwOK|< ziIs(AD$#&EFv}qC*W3&!Qn-AI>8Z_LwRLqxJ)hqxd%6q=zf6bC*=Fd~6;`T^<@PkF zd|wgg%2x~5(9i&l)YG`Pi zt4@i6Z-YIj?imHD$zx=X`khieOGty9v89?G64%6Hp?ylQzmfn(iGC@F=|c3A<-CF= z(tB3)FQ(z;p3TN1(vy>~hviuL;PjJl=GbnF!JXVdyI$RhR3ISckLjNhOx(aaH(OS5 zRZ{Y`E8RZG$jQqq8R+isn~sV}FL&_&1_mD(pjvTSUYD(&{mjhEw&I<6=AHE`b^(xb z^K?y2*6P(fj_fH)zkT&DW#cmlJCWlqs%j7Rc-cl+&h4@5MsEL$C;rXXyJY{=QgZ>E zlM5pYR6!oNuvxcu<7{-41j9WZG}pV=;9B_zx;4?)k)u-iKfTc1=i-@-q1>0rLH89% z=Ajwv8qs(3{Y=I}W6TaCxKN*t9{fNnUS3|#+Hm;Wp+NyOM7Opqh=@qukddS(zvg*; z8uMfH68h zAN%khPR+@(xvFV=j*^-a(li-qNlh+SGeE*!!7-w0ut{x_D_thSA!E7~(o;CA8Awvo zKBmS&g>0y1|G4~R_HP~i5>O2Ci^FuXg9C#A5<&};laZEndZW%OHmCsH| zdFy|%z+q2ZC3+kkJoPwAFuvpSyF)?Nu+`Dk_AF~2vK6w?fVM)Eit1_?5UEiOeVJ*v zbfp`*KVL-E`s&aO=^CmgCMYZ{%*r}&USex??4$Nn0paBynlcMP6YbIYCukrf+}n?+ zj?VlR@07UV{?}xg_pb@(-+_Vtzw!fr<&}15&*b#926@QS<_bfQBjQAB2&HCyzn7!U zHTG4;lqe+YP3mgkWPDG9jkIBNKpgd5??EFkBGf^|fA)W)Q-A&RYnk{|_XUueSBw3Q zDJ+93DsLU3rSD2!6Lg1KvPQq?i!Q5RqWOaA$V-S3W;!_9x9enWeRHR|EolJLq@$&w z``1V}&&e~Fkd&Ayp7XM^9&+*bS*mFEHo`f)w^+EsV?(QX;S0#|#>U1FqKF@%d83e_ z!Fl=;6W#0^Rcbl*2GqrmRbUMURCb`qS5JlYy7J8CjiT!|fOe5;)j!3vr@yU!J>?tf z&jSh6V&sS1x|I`VVE@R)xerr72RbTQ5>1bI={Lke+Sl;5u^7DD+?v;=dZ!fh%#k{U z5MoHL@l~9kLI=(FQFPDKPc-{baig;u#13H9gLyI*He$klf9LPG#~glIB0jPCLryB{ z?-vuSG*X#gC?`Gd$s_^}&7ZcBW2o^w#-u7I%U}9KLu<~S=mEHoo}SyKW8}yk?SD+| zCTj|RzGJ2uxo=5`+uPmp8XO#KA#Z)Qi=GL{_1fFe8kSr{v40FTZh7({1*M;X_GN3k zQbk*&Ihc3>i;4M2R$BINm(If2(bo>^yq6z*DILZbYL~cPpQ7`$qL*svE*H_N6L_}A@N z0&28n4ggzFOZ8K=4R8=19uH;}_L+!5sQi&M>K*2?wb`iNv>g>pU2lfNm}O2Q#ucn$ zUeIFET_tj|f2Y{^A-*Ec-Z?lJtNxsapP!psN6i&R%OafVbU6btrOAul5lvicTkfRHur01E(#||?zS^#(g>&u~ew%ff-83Tfy-6Dz8CZ4D`tYxNZ7~$Vl+3xZ+xwx0*X?{%K=o zX5O-}Kw%ZID}C#1zCkXPWCy|LPTv|4iP|+eiC>#@xsKVWf2G z{}si-!AGdzW#P7JN7kt23OjF)T?h*gOMtKdOy>mpJ4gWWOdjpXWxL8oZhm2bHB5E= znmEYN?bzifgZr-TXmHF;VJ?mG*Aj|oIS4()VLb$u z$b|ILWFfEcZ2zfPC_#JawF*~p9ADW;eO(^c}^?7db#a4zF(`#RVw%4INW?(R1EwjQdGZ9xQ4>eV1QjOhQVbaq~=qKC^0UM^Yv}0n#XWbABx6cbcgQes} zO-xo@zj9dKGCaq4PJ1JdZFUkcsJm|8PKV0cq!+?NYOdi24R3Y-45U%aWq(GN<_9f5 zCKpgQt^Mv^mZ~T=D8Z21oB9E)bz&i)B^(nfYeN-?#T`tU)X+BnI;arPQ{t^?LSz{b z=_M$YI+krD7|Ldv3b5#q4?*40@9Jqu`}=_3=tC9L@$}E1HJ9S!zf4>447eAjrEM&* z8g)K8^Z52wM=fFnz2}tl{CqeA(ii*t`aYiF0k1hLG{nKr-hDS~4(;y=aQfOMlFgm1 z10=9PRs2HvPlMFwL^ zkqL-W9T`S=FDGi|l%+~8^|oo@j!RaAj*O$GX(LL8MjMNs4m+QssOtfDR|zs@!0+F{ z?v5rV)U+QCdNRn``TbVmc}^4hA^n3LY6(Fd!7q~J^QMytwZB#GO?JSUG#iFY)lP!R z#JaHKiSGP9LBd=tx;I3Jyg*kwejQkZ?R&RyXBbVPOy8~aZ-anK?x2}<-!?a!1k-t ztW8nOx3;p1ktnS3ay3!M8>>^9GkNq?T}_vf=oue7gNL!tH}`(0qv%IG4e$YEYJMOq z;pr^*OZ^rps-Y3D%DbI49J)H{RI%JoLW=eQxm5GwlkXlo`h~o6BQQDQwvL7o;!L~)Wpey*@xuh< zf6OVJcc2RFil1MvcO9wegzJEsSL7xK#Dai^@{5{LNj>7a>a}f{A}OO?Z&A?R3CA=08ML z+YYiiW)3gzSJjs8mp_wc8fMbaxYY-Z8Eyp;F!OT+qrcGPZKVOXIgudB*A|>-O?T(I zG{$)WInGi_>3L8_hPtH%jxZrGDFbq}MzPSEi@lYsPdDpd;g{ia-p$9+d=LFRaC|$|Om8XDxu|*-BaU>HLxILci&l7@gZsPoJLFnPTC1c{8bI4zHMq&A^%evdu?QtpoGf zuidy`BD;Uj4nOTfApkOzm^~ZY`|06EzW(0sv%$*ny4?PE`{4~>uSh95u|k>ztD4Qq0vU)Gp!-P@-Crmu6-hc~RRwrX&DUe4 z)wXl8d#xZ3r8)-CAr-i{vBe4+tF-%+6neVj(8kw1{FfRp=GAn#HHx{EgimJYK?9Ki zzkc8gf}eaZ(^dhG_tT+@f*v9gy%lU1GPwPL7a zW1)ls-MN%>U*l7l)T6#*KZ5RmVCk}p&aOq+GP-ZAWtivW)>#t*puinm z2cSKHe*g89xk?mCQ2_iBBmXP zh3RpuZESXvILv*HBSoeXQy7cHv}mhgp8-OqBzP16;g`YQpKnmKGyH3Yft?rS4xtgT z@I3^VmGLaeFwq+&vH^Ib)9!SEXp=62IA}A zdrS|YB2}1S3PANhQ<(WJQ+Jn6MqH{VEZEKssr{U4!r zQ5~LX87yc{LS)g}>8OPsRx*S=cEz1csPzKvA;W;*?tRojkm0dixVZRPSLKhC6ieE} z>>d;tw9Q7P8DoiUCG99>xKr@Hl|KD!z9coODR@Hdo zE{|3;$IQ%3g&vmW9!^gTcHc5T#~7|t2~*S2xn3cA;C=g6S~KTH;ez&$JI$Hmsp2NKy^0n`OsLfS@4TVqL%~uFT9y$UPa%)^=^7>`dcf7mF8|&Tt9plFj_&5 zc>MSxmY5@m5=*@Sh9-5AFZLdlPVBIziuf+C%1jAbCQS`IT$&sBoXg1Vc)!Qu4KV*K z#ZNPqr&$alj?Vy_eQIB>#_`7NqjXnLxVx$ufg+GZSHR&WXtZ?sf=8=ror;3vZl$0I zXTo3#cJFu@o7GRizs4lyC1-22N}sSsmb^ zV4S!ValL*?)^K+{+Fmf@P6RoXRpu*28_?r#h z0PsNmF&5V+)zo4)L>^Yl>6+ zjEFi@_rf8o*a5?jj~=~V{^tuIC+iv)x1X4tY-MS?zq`G=w?{%mvf?(+p5jCb#6-4p zb!V$xeSPZFw~T8Wyd!i64SbU`5_-3bM@G>tOWu6d&6MVp31+0Ed2jTKB)vp~ zhOneoFwM-(?fulnikGc2{O~sjJquPhWRXhUIXep+<~U!6`;ix@GlWZmd}$m|-bhFw z8LGN3yZ{9{+!e$CLXp=KE!>Rym}bt49UoIftcYB1wt?;dRivO*)i7ixzM!B0etZmf z=sR&spV-QCsT@Ayc;1uDx>8`gsb9Pl7=;kC9t@nhWXNN z;^JEo@L`fHgO~5IULyPJmueNN13?lTU!uASfcK3z;~9B>q$XckW1}Ot&Db^1jgJE# z2R7}e?`Oty@xmozMKS0*)?$k_2v~e?xR{%|X589OmKBi_tTDR$@UrB_G_sAUB884j z+-e%7{^C4_nr3GkXJu=xw%9qj9cDM*PYnZJ*N>QT2aW+!VqzOR>zU8dB^ap7)l>>+8S#EX8)~-f&3WgZPcWLv~m~DJ7G9W#u`lXGL z;u&2i>g~hcoTnqv*qhEHz3vDcX`>j5kT$Nhn5ZT8PtzEI>~X$5ahcxs%!B7bEm%Q{ z7HHp)hoior$H}og!(E{cqIR*3U>)9f`Rncy$qo1RVv_qyb<_JYVpnL|`|n1ytFOKc z#Sd2(A`w1kf%T=t zU|Yu5;dSghg(r<(X1leVT4lHxdk<+b7~Y&6sl7T}af8V?Lg}BZ-@`HtiYkWNzd`S|Cjfdr*ypMA_<5a{~P#6FPvBd_YSG$<3 z4ZIt<`O_)uks@9X^Ud>u7bgW?g8l+uTx__{Nxq9bc-{B&obUQx>;XN)a;6mN3>;F{ zXhqO4F*VXgw!fg&^hf_*u&@_mY2rtpKid#@Ts-ct@DefJRfsQ*RJ#ItCQ zolilo?>{1ce>4;>_2fzB6Nj$u;mzZ*5O0uszvL_8wtGb9B64}S=Q`iG*jutO^JntP z(ZI*!(pO5jWT3Bx4Nh^gD?>WB>-g5zKHn}e$8Z3!6tC_U4BRazO46F|`$q)!Yk4AO zyxvOy>ydk4fF{hx=`sCjxwUcRcdEK{w&cd|@M1wZcvwOysoTRHCT4?34P<6NnDnZ{ zTL1xRZrp2%3#ThpNaejA)5`E=_b_X}n>DqbpxPp+?Z(W5wL3cK+P09v%XO-Eb($#?blx!$4B@4r07@W_)h79#2k=B6fmSa^OcQ$s1Bqe)sd! zFIOa0EGS(`F_MHd$AXp{l$LUAjK{j&H8OZfe@v$em!e0gsKyZU#Kf~c4^Qju>Q_p1 z5g4|UyjbiPTU&({RBcrGK|X?Kcbi*edKIhX6m&E46}uVe!%U8Fn83!&r`9u%JK!`v zAe7L&HhcHUHcsTKs35BMu$ug6ui=UPqG#fU-eWZN7l|AB%LUCiW7o^~vg(Da=EAGw z$tFYcIQ`V_Ov-%z5_mKT7DXB>_g2(okH}r2RKny7zBSSD(LSPgJL`LiBOD_m39R7;ycZ+!y$LoUXQ81FjRXe0X8uNm!OtUV%Mi)-wpJQy%jc)1-5HJ6)=RC!7be0N~F+%IS0 zK6gRW(^cNycVN3dR5oFin3P`QVS4-f>IiLP=WIBnEvsy~%mgDfgwKnc?p3E5zID+N z;S8@kP3jN3oFONwqWpCd)Mev|jhp3Ao=B7%di{0lj!GHfNDwP(JJ0*>vst;JF|4|} zxw*NtxmgvKCzDJa?$Idh4lz2OZjYBsV2Mb}NKR(5`!!2N@L}(Vd|;kJwf|auz%0HM z_9mk@OKfdikT=`7JQY|Q%QQ~C(zKB>$u|_H>xqaeVtZU;F zpJScpKLi|?m}iiAlI6C4!N#ntt*Y+1tcR)DA{&yDy1PSwhXFw+tNf=%)$}kqoBeV+ zAuHP5>ST?1@k@xMeY1B|g0HzLx=~8b(2pf9rNv}xj}x*dXwR|c@Nu@M*5CyC#!nTl zAl~byzmwcU_Cu%Cx-xZKB95=(&!4y4%1090tukMvLCiQ9C&e|wjjvv2tkYfLW!N#R z9Mr)GEalJVjy2$ULVbzm(ratCYjlgDn`X;@XQi$cckgsDawTwjo<J;{GR$HR^o z&Y4ZB7W^?isF@zOsR41?DHV4_LWzKcY!l!TmCgqtQY9b^=*MgfTGy#{uWAZHF?Z&KIPj?}s8z6DIx$=|1tErhD+mq~p!)KBd8=~2v%Z*{r=JUogE&pDZX z73DP_UOa}hqO{@_=Wgv=K8Bj8(ZY#OJQ>|qibYAXrXWy#BsV2XxVDs-Dpx%z4h^#3 zLhs6jIW(F&C&NKS>lp2*D5mm@_tanl??n3D4rj))#wzy=foI96#J6K{9hSn3fm|oC z(Z2=KW5cbr9(X#%H{S9UlEmiY@Bcc<5IZGY>a@Q|;2xz3c^k?gA(dlV{aTK_cuQ_3 zuNI-5>up|A`^XL-M8fN6ma`(5rV}!dI3r`HxTFO_shLapQLh4ZJdWjB(?E6 z*6sK8@3qxu%9@cF&4PDP3@xReeYYhs9Ie4|RQ{3mwmXJWaMf2u}v zx4nNll&X$s*S0HXm8vjiRM2uK!YD1RaFo1Mx+1n`b|hkb$ONG){6r=&_m}Z8eDx85 zlAeX*NOX49C)B;VKT|DL?U)|Xn zlN7IZh)13m!vuS(lRL68g1f*3R#hwb$Lt_=Ld1M5uA| z3k{qs4ikg5GssKItIgFsEu|!-utC0E!G+J9fh$p@xc_0jnC~|6)C{^xqi3KkC+lc^ z*p^7r=xvJlWq|BznWw7i;}jkH(TsiFB3Y@Yzo4K^W7#N`Zn^6k*E1`(P`!OOH~$&E zWL9Khr{a5ts#E=H-K>tOXW4jOB9Ndg zKe5ZCIp_;Nh<#oq4_lkDRnlQ7=W8`XuBDm!sV?hNaVc|Trwq(momCj0Psfm~%J%20 z_I2ge>}ak?_9%VWW-|`8?`U41Uz?eLWW(%^t6s5n-AZ;vhPE{a_#fA$AWiD_+x7bM z+t2)(!souZsPrT{!)xk`WbvhO->q&I#%VHb*wU5BcORLz^4Zb8Ic8y}=^t6!$%i+X zmRF^}BCk8M+3`cus-Z$F@wR`e(O;?kqjBuk#ojU5)u~g9_W&x3b{vjB!*b6YZn0yQ zKaN{-w7wpy+tK`uakJ+gI#*3dAw%99+faC@uU?~&W40^f!JFkV6^oRF*-s?AeK?Pw zVTnEh4}&zKP9tNOMeqMT`S%k+aKSM#!v6PF@B=;YT<`8D;s5!45GMncEQ@8R|9yl1 zo`e66ga7AyVQ@qH59Kqg%^FeSP7(t;M)99=Pqd-Vmi@o*A3vMMC$Fng=p?~LeFadQ zF)Ix*U7H8AM!FTOkCNY*dI`gWY~EEobo)aeA$}-)RzqcC5_Qs@{Em&vq_TK_bFctl zeL#H2nP{8C-Yf#?OP9cfMDJ7VDb!S(xHAV)(o^B^3?CE#T|5GRYzwK+b9K%s+>q%8 zcSix&bzxMdY|-3dug8_t)tn05klxA1+<`5>pNJy@!(V@E!9iMmK4Mi>*M9cJ^;sQ* zGE9@Eu9gGBQfa>oD?a{3{7vHDqOGIj^D}(rmKz*=g+C;=QQ$+e)X7*lvi3W@*+-85 zV}>pIlYUT;Xa4pL;(scRW-hSkj;{GrZ>4GakmO{C`ehu(b1fb(#QY8bl-%4dw@K;TaILNlHnrU6V7LbE%I?VWWQh zb}WFi`bIUKZY}fMSFy)gDZlfShh=dSfj<%_;jtK{J9p8oa8o?D?)pgYlePAB7L4Iu z+$@)8nm->6L6ErP=?ih9j180X;$>+R)Iw}i`;^D1LM^f123H^NK@Gja9zEd^|GMe& zVRCBI3NPxzPtRUbRwvzXOh5g^3W1|PWUm_sS*$*VgR?g_>Ac?1_hkR$Th>Re2XngX z?32V#D4wvCcassR;MHaX%%-uSk`F>2XXzpWwMCvtem-xtJ6DPl6OH^TDC{1$y@eW2 zz6cgA5q?CdPI@hRIZZpdMo&?hw7KU5mqW00XEPWAv;}h}d2?%te zY{{n&c*}K7!dy* i3;&i}{}*TB9&<(IoqgJx7V;zTB_p9IULy9{@Baf#2dnY` diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..70bcb79 --- /dev/null +++ b/Gemfile @@ -0,0 +1,72 @@ +source "https://rubygems.org" +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby "3.0.4" + +# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" +gem "rails", "~> 7.0.2", ">= 7.0.2.4" + +# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] +gem "sprockets-rails" + +# Use sqlite3 as the database for Active Record +gem "sqlite3", "~> 1.4" + +# Use the Puma web server [https://github.com/puma/puma] +gem "puma", "~> 5.0" + +# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] +gem "importmap-rails" + +# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] +gem "turbo-rails" + +# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] +gem "stimulus-rails" + +# Build JSON APIs with ease [https://github.com/rails/jbuilder] +gem "jbuilder" + +# Use Redis adapter to run Action Cable in production +# gem "redis", "~> 4.0" + +# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] +# gem "kredis" + +# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] +# gem "bcrypt", "~> 3.1.7" + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] + +# Reduces boot times through caching; required in config/boot.rb +gem "bootsnap", require: false + +# Use Sass to process CSS +# gem "sassc-rails" + +# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] +# gem "image_processing", "~> 1.2" + +group :development, :test do + # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem + gem "debug", platforms: %i[ mri mingw x64_mingw ] +end + +group :development do + # Use console on exceptions pages [https://github.com/rails/web-console] + gem "web-console" + + # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler] + # gem "rack-mini-profiler" + + # Speed up commands on slow machines / big apps [https://github.com/rails/spring] + # gem "spring" +end + +group :test do + # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] + gem "capybara" + gem "selenium-webdriver" + gem "webdrivers" +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..474fb87 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,234 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.2.4) + actionpack (= 7.0.2.4) + activesupport (= 7.0.2.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.2.4) + actionpack (= 7.0.2.4) + activejob (= 7.0.2.4) + activerecord (= 7.0.2.4) + activestorage (= 7.0.2.4) + activesupport (= 7.0.2.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.2.4) + actionpack (= 7.0.2.4) + actionview (= 7.0.2.4) + activejob (= 7.0.2.4) + activesupport (= 7.0.2.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.2.4) + actionview (= 7.0.2.4) + activesupport (= 7.0.2.4) + rack (~> 2.0, >= 2.2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.2.4) + actionpack (= 7.0.2.4) + activerecord (= 7.0.2.4) + activestorage (= 7.0.2.4) + activesupport (= 7.0.2.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.2.4) + activesupport (= 7.0.2.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.2.4) + activesupport (= 7.0.2.4) + globalid (>= 0.3.6) + activemodel (7.0.2.4) + activesupport (= 7.0.2.4) + activerecord (7.0.2.4) + activemodel (= 7.0.2.4) + activesupport (= 7.0.2.4) + activestorage (7.0.2.4) + actionpack (= 7.0.2.4) + activejob (= 7.0.2.4) + activerecord (= 7.0.2.4) + activesupport (= 7.0.2.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.2.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + bindex (0.8.1) + bootsnap (1.11.1) + msgpack (~> 1.2) + builder (3.2.4) + capybara (3.37.0) + addressable + matrix + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + childprocess (4.1.0) + concurrent-ruby (1.1.10) + crass (1.0.6) + debug (1.5.0) + irb (>= 1.3.6) + reline (>= 0.2.7) + digest (3.1.0) + erubi (1.10.0) + globalid (1.0.0) + activesupport (>= 5.0) + i18n (1.10.0) + concurrent-ruby (~> 1.0) + importmap-rails (1.0.3) + actionpack (>= 6.0.0) + railties (>= 6.0.0) + io-console (0.5.11) + irb (1.4.1) + reline (>= 0.3.0) + jbuilder (2.11.5) + actionview (>= 5.0.0) + activesupport (>= 5.0.0) + loofah (2.17.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (1.0.2) + matrix (0.4.2) + method_source (1.0.0) + mini_mime (1.1.2) + minitest (5.15.0) + msgpack (1.5.1) + net-imap (0.2.3) + digest + net-protocol + strscan + net-pop (0.1.1) + digest + net-protocol + timeout + net-protocol (0.1.3) + timeout + net-smtp (0.3.1) + digest + net-protocol + timeout + nio4r (2.5.8) + nokogiri (1.13.6-x86_64-linux) + racc (~> 1.4) + public_suffix (4.0.7) + puma (5.6.4) + nio4r (~> 2.0) + racc (1.6.0) + rack (2.2.3) + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (7.0.2.4) + actioncable (= 7.0.2.4) + actionmailbox (= 7.0.2.4) + actionmailer (= 7.0.2.4) + actionpack (= 7.0.2.4) + actiontext (= 7.0.2.4) + actionview (= 7.0.2.4) + activejob (= 7.0.2.4) + activemodel (= 7.0.2.4) + activerecord (= 7.0.2.4) + activestorage (= 7.0.2.4) + activesupport (= 7.0.2.4) + bundler (>= 1.15.0) + railties (= 7.0.2.4) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.4.2) + loofah (~> 2.3) + railties (7.0.2.4) + actionpack (= 7.0.2.4) + activesupport (= 7.0.2.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rake (13.0.6) + regexp_parser (2.3.1) + reline (0.3.1) + io-console (~> 0.5) + rexml (3.2.5) + rubyzip (2.3.2) + selenium-webdriver (4.1.0) + childprocess (>= 0.5, < 5.0) + rexml (~> 3.2, >= 3.2.5) + rubyzip (>= 1.2.2) + sprockets (4.0.3) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + sqlite3 (1.4.2) + stimulus-rails (1.0.4) + railties (>= 6.0.0) + strscan (3.0.1) + thor (1.2.1) + timeout (0.2.0) + turbo-rails (1.0.1) + actionpack (>= 6.0.0) + railties (>= 6.0.0) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) + web-console (4.2.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + webdrivers (5.0.0) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (~> 4.0) + websocket-driver (0.7.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.5.4) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + bootsnap + capybara + debug + importmap-rails + jbuilder + puma (~> 5.0) + rails (~> 7.0.2, >= 7.0.2.4) + selenium-webdriver + sprockets-rails + sqlite3 (~> 1.4) + stimulus-rails + turbo-rails + tzinfo-data + web-console + webdrivers + +RUBY VERSION + ruby 3.0.4p208 + +BUNDLED WITH + 2.3.13 diff --git a/README.md b/README.md index c206937..7db80e4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,24 @@ -# Portfolio -My portfolio website! - +# README + +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..9a5ea73 --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative "config/application" + +Rails.application.load_tasks diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js new file mode 100644 index 0000000..ddd546a --- /dev/null +++ b/app/assets/config/manifest.js @@ -0,0 +1,4 @@ +//= link_tree ../images +//= link_directory ../stylesheets .css +//= link_tree ../../javascript .js +//= link_tree ../../../vendor/javascript .js diff --git a/python/assignments/4.3.html b/app/assets/images/.keep similarity index 100% rename from python/assignments/4.3.html rename to app/assets/images/.keep diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 0000000..288b9ab --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb new file mode 100644 index 0000000..d672697 --- /dev/null +++ b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb new file mode 100644 index 0000000..0ff5442 --- /dev/null +++ b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000..09705d1 --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,2 @@ +class ApplicationController < ActionController::Base +end diff --git a/python/editor.js b/app/controllers/concerns/.keep similarity index 100% rename from python/editor.js rename to app/controllers/concerns/.keep diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/javascript/application.js b/app/javascript/application.js new file mode 100644 index 0000000..0d7b494 --- /dev/null +++ b/app/javascript/application.js @@ -0,0 +1,3 @@ +// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails +import "@hotwired/turbo-rails" +import "controllers" diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js new file mode 100644 index 0000000..1213e85 --- /dev/null +++ b/app/javascript/controllers/application.js @@ -0,0 +1,9 @@ +import { Application } from "@hotwired/stimulus" + +const application = Application.start() + +// Configure Stimulus development experience +application.debug = false +window.Stimulus = application + +export { application } diff --git a/app/javascript/controllers/hello_controller.js b/app/javascript/controllers/hello_controller.js new file mode 100644 index 0000000..5975c07 --- /dev/null +++ b/app/javascript/controllers/hello_controller.js @@ -0,0 +1,7 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + connect() { + this.element.textContent = "Hello World!" + } +} diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js new file mode 100644 index 0000000..54ad4ca --- /dev/null +++ b/app/javascript/controllers/index.js @@ -0,0 +1,11 @@ +// Import and register all your controllers from the importmap under controllers/* + +import { application } from "controllers/application" + +// Eager load all controllers defined in the import map under controllers/**/*_controller +import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading" +eagerLoadControllersFrom("controllers", application) + +// Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!) +// import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading" +// lazyLoadControllersFrom("controllers", application) diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000..d394c3d --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,7 @@ +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 0000000..3c34c81 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: "from@example.com" + layout "mailer" +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 0000000..b63caeb --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + primary_abstract_class +end diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000..1917378 --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,16 @@ + + + + Site + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + <%= javascript_importmap_tags %> + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000..cbd34d2 --- /dev/null +++ b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000..37f0bdd --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/assignments.html b/assignments.html deleted file mode 100644 index b11e3a3..0000000 --- a/assignments.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - Assignments - - - - - - - - - - - - - \ No newline at end of file diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000..981e650 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,114 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../Gemfile", __dir__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_requirement + @bundler_requirement ||= + env_var_version || cli_arg_version || + bundler_requirement_for(lockfile_version) + end + + def bundler_requirement_for(version) + return "#{Gem::Requirement.default}.a" unless version + + bundler_gem_version = Gem::Version.new(version) + + requirement = bundler_gem_version.approximate_recommendation + + return requirement unless Gem.rubygems_version < Gem::Version.new("2.7.0") + + requirement += ".a" if bundler_gem_version.prerelease? + + requirement + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + activate_bundler + end + + def activate_bundler + gem_error = activation_error_handling do + gem "bundler", bundler_requirement + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/bin/importmap b/bin/importmap new file mode 100755 index 0000000..36502ab --- /dev/null +++ b/bin/importmap @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby + +require_relative "../config/application" +require "importmap/commands" diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000..efc0377 --- /dev/null +++ b/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path("../config/application", __dir__) +require_relative "../config/boot" +require "rails/commands" diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000..4fbf10b --- /dev/null +++ b/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative "../config/boot" +require "rake" +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..ec47b79 --- /dev/null +++ b/bin/setup @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby +require "fileutils" + +# path to your application root. +APP_ROOT = File.expand_path("..", __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +FileUtils.chdir APP_ROOT do + # This script is a way to set up or update your development environment automatically. + # This script is idempotent, so that you can run it at any time and get an expectable outcome. + # Add necessary setup steps to this file. + + puts "== Installing dependencies ==" + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # FileUtils.cp "config/database.yml.sample", "config/database.yml" + # end + + puts "\n== Preparing database ==" + system! "bin/rails db:prepare" + + puts "\n== Removing old logs and tempfiles ==" + system! "bin/rails log:clear tmp:clear" + + puts "\n== Restarting application server ==" + system! "bin/rails restart" +end diff --git a/blog.html b/blog.html deleted file mode 100644 index a58f8fc..0000000 --- a/blog.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - Blog - - - - - - - - - - - - -
- × - -
- - -
- -
- About - Blog - Projects -
-
- - - - -
-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-

Work In Progress

-
-
-
- - - - - - - - - diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..4a3c09a --- /dev/null +++ b/config.ru @@ -0,0 +1,6 @@ +# This file is used by Rack-based servers to start the application. + +require_relative "config/environment" + +run Rails.application +Rails.application.load_server diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000..e05cb3e --- /dev/null +++ b/config/application.rb @@ -0,0 +1,22 @@ +require_relative "boot" + +require "rails/all" + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Site + class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 7.0 + + # Configuration for the application, engines, and railties goes here. + # + # These settings can be overridden in specific environments using the files + # in config/environments, which are processed later. + # + # config.time_zone = "Central Time (US & Canada)" + # config.eager_load_paths << Rails.root.join("extras") + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000..988a5dd --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,4 @@ +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "bundler/setup" # Set up gems listed in the Gemfile. +require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000..4b49f63 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: test + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: site_production diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc new file mode 100644 index 0000000..35e9f69 --- /dev/null +++ b/config/credentials.yml.enc @@ -0,0 +1 @@ +XM0Cfn0mGEehkF7BAjbqk6WKgSmJN415e7bSTDOlIimlmcuqAF9Op2Mk90rX8TQTBJ5pFrD9oGr8ZunGAEdKvqHaCo3MOQ6E4S0cov54ZjT4/4BczTk6QXFtZxw/rLtDz81JefcEEYjF5SexCQPVwN32R0azWo+guyxXmQPeaMY9PG9CMER77SNmRWq3PI4dJRcGlufb02e670/yeiHjG2IkwS1BcRL0xZXtjWYYot4E1IdqhWrnq3T4LJpnWF+41vGZfG61MpwqQevE63lJwmWeO+ziiSdCz5TRjZf5Lc08cTygzJ+vpkjoOS0byoS9rBRnREybu4hSALi4X9ZhY5bA5veiXhIHurUXkxOrPGftOg7RCT1o4gCetF6oEm8O79NLVNl5/sm7b8RztihSNudhAcT6c5IRpFAJ--SS8r5XNP/wB71jM2--s6JBAPa1mCsaZTkasH35xQ== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000..fcba57f --- /dev/null +++ b/config/database.yml @@ -0,0 +1,25 @@ +# SQLite. Versions 3.8.0 and up are supported. +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem "sqlite3" +# +default: &default + adapter: sqlite3 + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000..cac5315 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative "application" + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000..8500f45 --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,70 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded any time + # it changes. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable server timing + config.server_timing = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join("tmp/caching-dev.txt").exist? + config.action_controller.perform_caching = true + config.action_controller.enable_fragment_cache_logging = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true + + # Uncomment if you wish to allow Action Cable access from any origin. + # config.action_cable.disable_request_forgery_protection = true +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000..7392098 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,93 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? + + # Compress CSS using a preprocessor. + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.asset_host = "http://assets.example.com" + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache + # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain. + # config.action_cable.mount_path = nil + # config.action_cable.url = "wss://example.com/cable" + # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Include generic and useful information about system operation, but avoid logging too much + # information to avoid inadvertent exposure of personally identifiable information (PII). + config.log_level = :info + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment). + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "site_production" + + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Don't log any deprecations. + config.active_support.report_deprecations = false + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require "syslog/logger" + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name") + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000..6ea4d1e --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,60 @@ +require "active_support/core_ext/integer/time" + +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Turn false under Spring and add config.action_view.cache_template_loading = true. + config.cache_classes = true + + # Eager loading loads your whole application. When running a single test locally, + # this probably isn't necessary. It's a good idea to do in a continuous integration + # system, or in some way before deploying your code. + config.eager_load = ENV["CI"].present? + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{1.hour.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + config.cache_store = :null_store + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory. + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true +end diff --git a/config/importmap.rb b/config/importmap.rb new file mode 100644 index 0000000..8dce42d --- /dev/null +++ b/config/importmap.rb @@ -0,0 +1,7 @@ +# Pin npm packages by running ./bin/importmap + +pin "application", preload: true +pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true +pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true +pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true +pin_all_from "app/javascript/controllers", under: "controllers" diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000..2eeef96 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,12 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = "1.0" + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 0000000..3621f97 --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,26 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.configure do +# config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end +# +# # Generate session nonces for permitted importmap and inline scripts +# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s } +# config.content_security_policy_nonce_directives = %w(script-src) +# +# # Report CSP violations to a specified URI. See: +# # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# # config.content_security_policy_report_only = true +# end diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..adc6568 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# Configure parameters to be filtered from the log file. Use this to limit dissemination of +# sensitive information. See the ActiveSupport::ParameterFilter documentation for supported +# notations and behaviors. +Rails.application.config.filter_parameters += [ + :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn +] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000..3860f65 --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, "\\1en" +# inflect.singular /^(ox)en/i, "\\1" +# inflect.irregular "person", "people" +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym "RESTful" +# end diff --git a/config/initializers/permissions_policy.rb b/config/initializers/permissions_policy.rb new file mode 100644 index 0000000..00f64d7 --- /dev/null +++ b/config/initializers/permissions_policy.rb @@ -0,0 +1,11 @@ +# Define an application-wide HTTP permissions policy. For further +# information see https://developers.google.com/web/updates/2018/06/feature-policy +# +# Rails.application.config.permissions_policy do |f| +# f.camera :none +# f.gyroscope :none +# f.microphone :none +# f.usb :none +# f.fullscreen :self +# f.payment :self, "https://secure.example.com" +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..8ca56fc --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t "hello" +# +# In views, this is aliased to just `t`: +# +# <%= t("hello") %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# "true": "foo" +# +# To learn more, please read the Rails Internationalization guide +# available at https://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000..daaf036 --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,43 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies the `worker_timeout` threshold that Puma will use to wait before +# terminating a worker in development environments. +# +worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked web server processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +# preload_app! + +# Allow puma to be restarted by `bin/rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..262ffd5 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,6 @@ +Rails.application.routes.draw do + # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html + + # Defines the root path route ("/") + # root "articles#index" +end diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 0000000..4942ab6 --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket-<%= Rails.env %> + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket-<%= Rails.env %> + +# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name-<%= Rails.env %> + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/css/assignments.less b/css/assignments.less deleted file mode 100644 index b4c055a..0000000 --- a/css/assignments.less +++ /dev/null @@ -1,137 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"); -@prim: #333333; - -*{ - box-sizing: border-box; - margin: 0; - padding: 0; - - font-weight: 300; -} - -body{ - font-family: '', sans-serif; - color: white; - font-weight: 300; - - ::-webkit-input-placeholder { /* WebKit browsers */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - font-weight: 300; - } - :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - ::-moz-placeholder { /* Mozilla Firefox 19+ */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - :-ms-input-placeholder { /* Internet Explorer 10+ */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - font-weight: 300; - } -} - -.wrapper{ - background: #333333; -background: -webkit-linear-gradient(top left, #333333 0%, #333333 100%); -background: -moz-linear-gradient(top left, #333333 0%, #333333 100%); -background: -o-linear-gradient(top left, #333333 0%, #333333 100%); -background: linear-gradient(to bottom right, #333333 0%, #333333 100%); - position: relative; - height: 100vh; - // top: 50%; - // left: 0; - // width: 100%; - // height: 400px; - // margin-top: -200px; - overflow: visible; - - &.form-success{ - .container{ - h1{ - transform: translateY(85px); - } - } - } - - &.form-error{ - .container{ - .assignment{ - button{ - animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both; - @keyframes shake { - 10%, 90% { - transform: translate3d(-1px, 0, 0); - } - 20%, 80% { - transform: translate3d(2px, 0, 0); - } - 30%, 50%, 70% { - transform: translate3d(-4px, 0, 0); - } - 40%, 60% { - transform: translate3d(4px, 0, 0); - } - } - } - } - } - } -} - -.container{ - max-width: 600px; - margin: 0 auto; - padding: 80px 0; - height: 400px; - text-align: center; - - h1{ - font-size: 40px; - transition-duration: 1s; - transition-timing-function: ease-in-put; - font-weight: 200; - } -} - -.assignment{ - padding: 20px 0; - position: relative; - z-index: 2; - - button{ - appearance: none; - outline: 0; - // make backgournd color a gradient - background: #50a3a2; - background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); - background: -moz-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); - background: -o-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); - background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%); - - border: 0; - padding: 10px 15px; - color: @prim; - border-radius: 3px; - width: 600px; - cursor: pointer; - font-size: 18px; - transition-duration: 0.25s; - margin-bottom: 20px; - - &:hover{ - // add a shadow - box-shadow: 0px 5px 10px rgba(0,0,0,0.25); - - // change the background color - background: #53e3a6; - } - } -} \ No newline at end of file diff --git a/css/login.less b/css/login.less deleted file mode 100644 index dcb860e..0000000 --- a/css/login.less +++ /dev/null @@ -1,309 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"); -@prim: #333333; - -*{ - box-sizing: border-box; - margin: 0; - padding: 0; - - font-weight: 300; -} - -body{ - font-family: '', sans-serif; - color: white; - font-weight: 300; - - ::-webkit-input-placeholder { /* WebKit browsers */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - font-weight: 300; - } - :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - ::-moz-placeholder { /* Mozilla Firefox 19+ */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - :-ms-input-placeholder { /* Internet Explorer 10+ */ - font-family: 'Source Sans Pro', sans-serif; - color: white; - font-weight: 300; - } -} - -.wrapper{ - background: #333333; -background: -webkit-linear-gradient(top left, #333333 0%, #333333 100%); -background: -moz-linear-gradient(top left, #333333 0%, #333333 100%); -background: -o-linear-gradient(top left, #333333 0%, #333333 100%); -background: linear-gradient(to bottom right, #333333 0%, #333333 100%); - - position: relative; - height: 100vh; - // top: 50%; - // left: 0; - // width: 100%; - // height: 400px; - // margin-top: -200px; - overflow: hidden; - - &.form-success{ - .container{ - h1{ - transform: translateY(85px); - } - } - } - - // add shake - &.form-error{ - // add animation to container - .container{ - h1{ - animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both; - @keyframes shake { - 10%, 90% { - transform: translate3d(-1px, 0, 0); - } - 20%, 80% { - transform: translate3d(2px, 0, 0); - } - 30%, 50%, 70% { - transform: translate3d(-4px, 0, 0); - } - 40%, 60% { - transform: translate3d(4px, 0, 0); - } - } - } - } - } -} - -.container{ - max-width: 600px; - margin: 0 auto; - padding: 80px 0; - height: 400px; - text-align: center; - - h1{ - font-size: 40px; - transition-duration: 1s; - transition-timing-function: ease-in-put; - font-weight: 200; - } -} - -form{ - padding: 20px 0; - position: relative; - z-index: 2; - - input{ - display: block; - appearance: none; - outline: 0; - border: 1px solid fade(white, 40%); - background-color: fade(white, 20%); - width: 250px; - - border-radius: 3px; - padding: 10px 15px; - margin: 0 auto 10px auto; - display: block; - text-align: center; - font-size: 18px; - - color: white; - - transition-duration: 0.25s; - font-weight: 300; - - &:hover{ - background-color: fade(white, 40%); - } - - &:focus{ - background-color: white; - width: 300px; - - color: @prim; - } - } - - button{ - appearance: none; - outline: 0; - background-color: white; - border: 0; - padding: 10px 15px; - color: @prim; - border-radius: 3px; - width: 250px; - cursor: pointer; - font-size: 18px; - transition-duration: 0.25s; - - &:hover{ - background-color: rgb(245, 247, 249); - } - } -} - -// // fade the form on success -// .form-success{ -// .container{ -// h1{ -// transform: translateY(0px); -// } -// } -// } - -// // form error shake animation -// .form-error{ -// .container{ -// h1{ -// animation: formError 0.5s; -// } -// } -// } - -.bg-bubbles{ - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - - z-index: 1; - - li{ - position: absolute; - // list-style: none; - display: block; - width: 40px; - height: 40px; - background-color: fade(white, 15%); - // bottom: -160px; - // make the squares spawn from the bottom of the screen determined by the height of the screen - // bottom: calc(-100% + 100px); - bottom: calc(100% - 1100px); - - -webkit-animation: square 25s infinite; - animation: square 25s infinite; - - -webkit-transition-timing-function: linear; - transition-timing-function: linear; - - &:nth-child(1){ - left: 10%; - } - - &:nth-child(2){ - left: 20%; - - width: 80px; - height: 80px; - - animation-delay: 2s; - animation-duration: 17s; - } - - &:nth-child(3){ - left: 25%; - animation-delay: 4s; - } - - &:nth-child(4){ - left: 40%; - width: 60px; - height: 60px; - - animation-duration: 22s; - - background-color: fade(white, 25%); - } - - &:nth-child(5){ - left: 70%; - } - - &:nth-child(6){ - left: 80%; - width: 120px; - height: 120px; - - animation-delay: 3s; - background-color: fade(white, 20%); - } - - &:nth-child(7){ - left: 32%; - width: 160px; - height: 160px; - - animation-delay: 7s; - } - - &:nth-child(8){ - left: 55%; - width: 20px; - height: 20px; - - animation-delay: 15s; - animation-duration: 40s; - } - - &:nth-child(9){ - left: 25%; - width: 10px; - height: 10px; - - animation-delay: 2s; - animation-duration: 40s; - background-color: fade(white, 30%); - } - - &:nth-child(10){ - left: 90%; - width: 160px; - height: 160px; - - animation-delay: 11s; - } - } -} - -// add sqaure animation that moves from bottom up and rotates then fades with steps - - -@-webkit-keyframes square { - 0% { transform: translateY(0); } - 100% { transform: translateY(-700px) rotate(600deg); } - 100% { transform: translateY(-1100px) rotate(600deg); } -} -@keyframes square { - 0% { transform: translateY(0); } - 90% { transform: translateY(-1100px) rotate(600deg); } -} - -// form error shake animation -@-webkit-keyframes formError { - 0% { transform: translateY(0); } - 100% { transform: translateY(-10px) rotate(5deg); } - 100% { transform: translateY(0) rotate(-5deg); } -} -@keyframes formError { - 0% { transform: translateY(0); } - 100% { transform: translateY(-10px) rotate(5deg); } - 100% { transform: translateY(0) rotate(-5deg); } -} - diff --git a/css/styles.css b/css/styles.css deleted file mode 100644 index b1cc627..0000000 --- a/css/styles.css +++ /dev/null @@ -1,307 +0,0 @@ -* { - padding: 0; - margin: 0; - box-sizing: border-box; -} - -/* Navbar */ -.header { - overflow: hidden; - background-color: #333333; - padding: 20px 10px; - transition: all 0.2s ease-in-out; - } - - .header a { - float: left; - color: #BBBBBB; - text-shadow: 3px 2px 2px rgba(199, 130, 59, 0.15); - text-align: center; - padding: 12px; - text-decoration: none; - font-size: 18px; - line-height: 25px; - border-radius: 4px; - transition: all 0.2s ease-in-out; - } - - .header a.logo { - font-size: 25px; - font-weight: bold; - } - - .header a:hover { - transform: scale(1.1); - cursor: pointer; - } - - .header a.active { - background-color: #BBBBBB; - color: black; - } - - .header-right { - float: right; - } - -/* Overlay */ -.overlay { - height: 100%; - width: 0; - position: fixed; - z-index: 1; - top: 0; - left: 0; - background-color: rgb(0,0,0); - background-color: rgba(0,0,0, 0.9); - overflow-x: hidden; - transition: 0.5s; - } - - .overlay-content { - position: relative; - top: 25%; - width: 100%; - text-align: center; - margin-top: 30px; - } - - .overlay a { - padding: 8px; - text-decoration: none; - font-size: 36px; - color: #818181; - display: block; - transition: 0.3s; - } - - .overlay a:hover, .overlay a:focus { - color: #f1f1f1; - } - - .overlay .closebtn { - position: absolute; - top: 20px; - right: 45px; - font-size: 60px; - } - -/* Style */ -html { - background-color: #333333; - color: #BBBBBB; - font-family: 'Montserrat', sans-serif; - font-weight: 400; - font-size: 1vh; - text-shadow: 3px 2px 2px rgba(199, 130, 59, 0.15); - -ms-overflow-style: none; /* Hide scrollbar for Internet Explorer and Edge */ - scrollbar-width: none; /* Hide scrollbar for Firefox */ - scroll-behavior: smooth; - - overflow: scroll; - overflow-x: hidden; - } - - /* Hide scrollbar for Chrome, Safari and Opera */ - .html::-webkit-scrollbar { - width: 0; - background: transparent; /* Optional: just make scrollbar invisible */ - } - -#end__of__page { - margin-bottom: -30vh; -} - -.centered { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - min-height: 100vh; -} - -.row { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} - -.highlight { - background-color: #EEEEEE; - border-radius: 20px; - line-height: 1.5; - padding-right: 0.9vw; - padding-left: 0.9vw; - font-weight: 520; - text-shadow: none; - box-shadow: 3px 2px 2px rgba(199, 130, 59, 0.15); -} - -.hero__header { - font-size: 6vw; - font-weight: 400; -} - -.normal__header { - font-size: 1vw; - font-weight: 400; -} - -.divider__line { - height: 4vw; -} - -.about__header { - font-size: 3vw; - font-weight: 400; -} - -.logo { - transition: all 0.2s ease-in-out; -} - -.logo:hover { - transform: scale(1.1); - cursor: pointer; -} - -.logo__image { - margin-left: 2vw; - margin-right: 2vw; - width: 10vw; -} - -/* blog */ -.blog_row { - display: inline-flex; - flex-direction: row; - justify-content: center; - align-items: center; - margin-top: 2vw; - margin-bottom: 2vw; - gap: 12px; - flex-wrap: wrap; -} - -.blog { - background: grey; - width: 250px; - height: 250px; - border: 150px; - border-radius: 20px; - line-height: 1.5; - padding-right: 0.9vw; - padding-left: 0.9vw; - font-weight: 520; - text-shadow: none; - box-shadow: 3px 2px 2px rgba(199, 130, 59, 0.15); - transition: all 0.2s ease-in-out; - } - - .blog:hover { - transform: scale(1.1); - cursor: pointer; - } - - .blog__image { - margin-left: 2vw; - margin-right: 2vw; - width: 10vw; - } - -/* Login */ -#login-holder { - width: 50%; - height: 70%; - display: grid; - justify-items: center; - align-items: center; - background-color: grey; - border-radius: 7px; - box-shadow: 0px 0px 5px 2px black; -} - -#login-error-msg-holder { - width: 100%; - height: 100%; - display: grid; - justify-items: center; - align-items: center; -} - -#login-error-msg { - width: 23%; - text-align: center; - margin: 0; - padding: 5px; - font-size: 12px; - font-weight: bold; - color: #8a0000; - border: 1px solid #8a0000; - background-color: #e58f8f; - opacity: 0; -} - -#error-msg-second-line { - display: block; -} - -#login-form { - align-self: flex-start; - display: grid; - justify-items: center; - align-items: center; -} - -.login-form-field::placeholder { - color: #3a3a3a; -} - -.login-form-field { - border: none; - border-bottom: 1px solid #3a3a3a; - margin-bottom: 10px; - border-radius: 3px; - outline: none; - padding: 0px 0px 5px 5px; -} - -#login-form-submit { - width: 100%; - padding: 7px; - border: none; - border-radius: 5px; - color: white; - font-weight: bold; - background-color: #3a3a3a; - cursor: pointer; - outline: none; -} - -.login-form:hover { - background-color: #3a3a3a; -} - - -@media only screen and (max-width: 1024px) { - .hero__header { - font-size: 12vw; - font-weight: 400; - } - - .about__header { - font-size: 5vw; - font-weight: 400; - } - - .divider__line { - height: 8vw; - } - - .logo__image { - margin-left: 2vw; - margin-right: 2vw; - width: 14vw; - } -} diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000..bc25fce --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }]) +# Character.create(name: "Luke", movie: movies.first) diff --git a/download.html b/download.html deleted file mode 100644 index 2ed1996..0000000 --- a/download.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - Download YT - - - - - - - - - - - - -
- × - -
- - -
- -
- About - Blog - Projects -
-
- - - -
-
-

Work In Progress

-
- line -
- - - - - - - - - \ No newline at end of file diff --git a/images/colors/colors.png b/images/colors/colors.png deleted file mode 100644 index 87d9047b7a97b48da0c2ffc6510a4830ecaf7b69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3941 zcmeAS@N?(olHy`uVBq!ia0y~yU;#22893O0l&&g^3IhYbj;D)bNX4ADHw*=t7#WTn znEtKK;9vrysmP24F3fxy4sKnylU!AffB*N7akkxcb%R%>l?;o|eP-*idd0wKRocKX z*UF*6PgcRGEeS_U!l7Rh bKIdO=v*t`jft>}g`^@0!>gTe~DWM4fnKB)x diff --git a/images/elements/ai/line_long.ai b/images/elements/ai/line_long.ai deleted file mode 100644 index 66f4400..0000000 --- a/images/elements/ai/line_long.ai +++ /dev/null @@ -1,1412 +0,0 @@ -%PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - line_long - - - Adobe Illustrator 25.2 (Windows) - 2021-06-03T09:50:44-04:00 - 2021-06-03T09:50:45-04:00 - 2021-06-03T09:50:45-04:00 - - - - 256 - 8 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgACAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9IXGhX8s8kiavdRK7Flj UpxUE14j4egyo4zfMufDWQAAOOB+f61P/Dupf9Xu7+9P+acHhS/nFl+dh/qUPt/W7/Dupf8AV7u/ vT/mnHwpfziv52H+pQ+39bv8O6l/1e7v70/5px8KX84r+dh/qUPt/W7/AA7qX/V7u/vT/mnHwpfz iv52H+pQ+39bv8O6l/1e7v70/wCacfCl/OK/nYf6lD7f1u/w7qX/AFe7v70/5px8KX84r+dh/qUP t/W7/Dupf9Xu7+9P+acfCl/OK/nYf6lD7f1u/wAO6l/1e7v70/5px8KX84r+dh/qUPt/W7/Dupf9 Xu7+9P8AmnHwpfziv52H+pQ+39bv8O6l/wBXu7+9P+acfCl/OK/nYf6lD7f1u/w7qX/V7u/vT/mn Hwpfziv52H+pQ+39bv8ADupf9Xu7+9P+acfCl/OK/nYf6lD7f1u/w7qX/V7u/vT/AJpx8KX84r+d h/qUPt/W7/Dupf8AV7u/vT/mnHwpfziv52H+pQ+39bv8O6l/1e7v70/5px8KX84r+dh/qUPt/W7/ AA7qX/V7u/vT/mnHwpfziv52H+pQ+39bv8O6l/1e7v70/wCacfCl/OK/nYf6lD7f1u/w7qX/AFe7 v70/5px8KX84r+dh/qUPt/W7/Dupf9Xu7+9P+acfCl/OK/nYf6lD7f1u/wAO6l/1e7v70/5px8KX 84r+dh/qUPt/W7/Dupf9Xu7+9P8AmnHwpfziv52H+pQ+39bv8O6l/wBXu7+9P+acfCl/OK/nYf6l D7f1u/w7qX/V7u/vT/mnHwpfziv52H+pQ+39bv8ADupf9Xu7+9P+acfCl/OK/nYf6lD7f1u/w7qX /V7u/vT/AJpx8KX84r+dh/qUPt/W7/Dupf8AV7u/vT/mnHwpfziv52H+pQ+39bv8O6l/1e7v70/5 px8KX84r+dh/qUPt/W7/AA7qX/V7u/vT/mnHwpfziv52H+pQ+39bv8O6l/1e7v70/wCacfCl/OK/ nYf6lD7f1u/w7qX/AFe7v70/5px8KX84r+dh/qUPt/WitO0m8tJzLLqM92pUr6UvHiKkGuwG+2Sj Ag87ac+ojONCEY+5/9k= - - - - proof:pdf - uuid:65E6390686CF11DBA6E2D887CEACB407 - xmp.did:7b679679-76ea-e149-9c78-f08f125870af - uuid:120d8eb1-7bae-47ea-a507-d2e36c18b7e7 - - uuid:977b090f-124e-4650-b8e8-7ff4b2824aaf - xmp.did:4dde2ac8-f8f9-df49-be5f-86a697879804 - uuid:65E6390686CF11DBA6E2D887CEACB407 - proof:pdf - - - - - saved - xmp.iid:3e405b58-9478-2948-be8e-e8b65ff81f1e - 2021-06-01T13:28:44-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - saved - xmp.iid:7b679679-76ea-e149-9c78-f08f125870af - 2021-06-03T09:46:52-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - - Web - Document - AIRobin - 1 - True - False - - 784.000000 - 66.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 0 - 0 - 0 - - - RGB Red - RGB - PROCESS - 255 - 0 - 0 - - - RGB Yellow - RGB - PROCESS - 255 - 255 - 0 - - - RGB Green - RGB - PROCESS - 0 - 255 - 0 - - - RGB Cyan - RGB - PROCESS - 0 - 255 - 255 - - - RGB Blue - RGB - PROCESS - 0 - 0 - 255 - - - RGB Magenta - RGB - PROCESS - 255 - 0 - 255 - - - R=193 G=39 B=45 - RGB - PROCESS - 193 - 39 - 45 - - - R=237 G=28 B=36 - RGB - PROCESS - 237 - 28 - 36 - - - R=241 G=90 B=36 - RGB - PROCESS - 241 - 90 - 36 - - - R=247 G=147 B=30 - RGB - PROCESS - 247 - 147 - 30 - - - R=251 G=176 B=59 - RGB - PROCESS - 251 - 176 - 59 - - - R=252 G=238 B=33 - RGB - PROCESS - 252 - 238 - 33 - - - R=217 G=224 B=33 - RGB - PROCESS - 217 - 224 - 33 - - - R=140 G=198 B=63 - RGB - PROCESS - 140 - 198 - 63 - - - R=57 G=181 B=74 - RGB - PROCESS - 57 - 181 - 74 - - - R=0 G=146 B=69 - RGB - PROCESS - 0 - 146 - 69 - - - R=0 G=104 B=55 - RGB - PROCESS - 0 - 104 - 55 - - - R=34 G=181 B=115 - RGB - PROCESS - 34 - 181 - 115 - - - R=0 G=169 B=157 - RGB - PROCESS - 0 - 169 - 157 - - - R=41 G=171 B=226 - RGB - PROCESS - 41 - 171 - 226 - - - R=0 G=113 B=188 - RGB - PROCESS - 0 - 113 - 188 - - - R=46 G=49 B=146 - RGB - PROCESS - 46 - 49 - 146 - - - R=27 G=20 B=100 - RGB - PROCESS - 27 - 20 - 100 - - - R=102 G=45 B=145 - RGB - PROCESS - 102 - 45 - 145 - - - R=147 G=39 B=143 - RGB - PROCESS - 147 - 39 - 143 - - - R=158 G=0 B=93 - RGB - PROCESS - 158 - 0 - 93 - - - R=212 G=20 B=90 - RGB - PROCESS - 212 - 20 - 90 - - - R=237 G=30 B=121 - RGB - PROCESS - 237 - 30 - 121 - - - R=199 G=178 B=153 - RGB - PROCESS - 199 - 178 - 153 - - - R=153 G=134 B=117 - RGB - PROCESS - 153 - 134 - 117 - - - R=115 G=99 B=87 - RGB - PROCESS - 115 - 99 - 87 - - - R=83 G=71 B=65 - RGB - PROCESS - 83 - 71 - 65 - - - R=198 G=156 B=109 - RGB - PROCESS - 198 - 156 - 109 - - - R=166 G=124 B=82 - RGB - PROCESS - 166 - 124 - 82 - - - R=140 G=98 B=57 - RGB - PROCESS - 140 - 98 - 57 - - - R=117 G=76 B=36 - RGB - PROCESS - 117 - 76 - 36 - - - R=96 G=56 B=19 - RGB - PROCESS - 96 - 56 - 19 - - - R=66 G=33 B=11 - RGB - PROCESS - 66 - 33 - 11 - - - - - - Grays - 1 - - - - R=0 G=0 B=0 - RGB - PROCESS - 0 - 0 - 0 - - - R=26 G=26 B=26 - RGB - PROCESS - 26 - 26 - 26 - - - R=51 G=51 B=51 - RGB - PROCESS - 51 - 51 - 51 - - - R=77 G=77 B=77 - RGB - PROCESS - 77 - 77 - 77 - - - R=102 G=102 B=102 - RGB - PROCESS - 102 - 102 - 102 - - - R=128 G=128 B=128 - RGB - PROCESS - 128 - 128 - 128 - - - R=153 G=153 B=153 - RGB - PROCESS - 153 - 153 - 153 - - - R=179 G=179 B=179 - RGB - PROCESS - 179 - 179 - 179 - - - R=204 G=204 B=204 - RGB - PROCESS - 204 - 204 - 204 - - - R=230 G=230 B=230 - RGB - PROCESS - 230 - 230 - 230 - - - R=242 G=242 B=242 - RGB - PROCESS - 242 - 242 - 242 - - - - - - Web Color Group - 1 - - - - R=63 G=169 B=245 - RGB - PROCESS - 63 - 169 - 245 - - - R=122 G=201 B=67 - RGB - PROCESS - 122 - 201 - 67 - - - R=255 G=147 B=30 - RGB - PROCESS - 255 - 147 - 30 - - - R=255 G=29 B=37 - RGB - PROCESS - 255 - 29 - 37 - - - R=255 G=123 B=172 - RGB - PROCESS - 255 - 123 - 172 - - - R=189 G=204 B=212 - RGB - PROCESS - 189 - 204 - 212 - - - - - - - Adobe PDF library 15.00 - - - - - - - - - - - - - - - - - - - - - - - - - -endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/Thumb 32 0 R/TrimBox[0.0 0.0 784.0 66.0]/Type/Page>> endobj 26 0 obj <>stream -H‰,ŽA -Â0E÷sŠ›I›¦fëTÝXE"x7ÆR]x}@>ü7¼aÜÉà&SlFƒ,¢ˆÃ:`Åù¾Ë/R·ÏŠÇ‡ÛËÁíŠbœåÌ8#· mRŠì¿‘í(=¾¨®¯îe<º„®mzÜŠTPdPÊxJæÉíÄ?~ n¤7 -endstream endobj 27 0 obj <> endobj 32 0 obj <>stream -8;Xp,I2!)*E:ORBi'@0UkQ$,5!s!n^N+`~> -endstream endobj 34 0 obj [/Indexed/DeviceRGB 255 35 0 R] endobj 35 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 31 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC/ImageI]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -718 0 0 17 36 22 cm -/Im0 Do -Q - -endstream endobj 36 0 obj <> endobj 39 0 obj <>stream -H‰ìÒ1À0İÒ -¡C®> oràï¼L‰™ q3f&ÄÍt¸™7Óáf:ÜL‡›é˜©˜›É˜©Øëv|6HyüÍ)ä -endstream endobj 37 0 obj [/Indexed 28 0 R 1 41 0 R] endobj 40 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 299/Name/X/Subtype/Image/Type/XObject/Width 718>>stream -H‰ì×-ŽÂP†áû“Þ[n*šPnSdE)¦¢Et$ º†&e ;À‚` À £P̦¦%!A™ò=kxóåÆ> -ç€2Î_- éhw@•«)ž=s©Œ„Ñ€¦( |£dŸ³PžÓ,/fy–ÆÖS¢Ÿfc“²ª›v@QÛÔU™XÓ3wü¸\nv‡ãEÇÃn³,cßéjÖÃÉ|½?_oßÝ®çýz>j΄MÛÓåþø èq¿œ¶‹éH l3P÷¶Í¸›¸÷»Y›”UÝ´ÿýšüIÛÔU™X#9cBy6N³¼˜PTäY[O ƺqVÆÂh @S¾Qý4w9 éhw@•«)ž1÷=s@µ ð!~¯.Áñ -endstream endobj 28 0 obj [/ICCBased 42 0 R] endobj 41 0 obj <>stream -ÿÿÿÇ‚; -endstream endobj 42 0 obj <>stream -H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  - 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ -V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= -€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð -¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû -endstream endobj 38 0 obj <> endobj 43 0 obj <> endobj 44 0 obj [0.0 0.0 0.0] endobj 45 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -718 0 0 17 36 22 cm -/Im0 Do -Q - -endstream endobj 46 0 obj <> endobj 48 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 299/Name/X/Subtype/Image/Type/XObject/Width 718>>stream -H‰ì×-ŽÂP†áû“Þ[n*šPnSdE)¦¢Et$ º†&e ;À‚` À £P̦¦%!A™ò=kxóåÆ> -ç€2Î_- éhw@•«)ž=s©Œ„Ñ€¦( |£dŸ³PžÓ,/fy–ÆÖS¢Ÿfc“²ª›v@QÛÔU™XÓ3wü¸\nv‡ãEÇÃn³,cßéjÖÃÉ|½?_oßÝ®çýz>j΄MÛÓåþø èq¿œ¶‹éH l3P÷¶Í¸›¸÷»Y›”UÝ´ÿýšüIÛÔU™X#9cBy6N³¼˜PTäY[O ƺqVÆÂh @S¾Qý4w9 éhw@•«)ž1÷=s@µ ð!~¯.Áñ -endstream endobj 47 0 obj <> endobj 24 0 obj <> endobj 49 0 obj [/View/Design] endobj 50 0 obj <>>> endobj 29 0 obj <> endobj 30 0 obj <> endobj 8 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream -%!PS-Adobe-3.0 -%%Creator: Adobe Illustrator(R) 24.0 -%%AI8_CreatorVersion: 25.2.3 -%%For: (N8 Dev) () -%%Title: (line_long.ai) -%%CreationDate: 6/3/2021 9:50 AM -%%Canvassize: 16383 -%%BoundingBox: 604 -551 1322 -534 -%%HiResBoundingBox: 604 -551 1322 -534 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%AI5_FileFormat 14.0 -%AI12_BuildNumber: 259 -%AI3_ColorUsage: Color -%AI7_ImageSettings: 0 -%%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: 568 -573 1352 -507 -%AI3_TemplateBox: 960.5 -540.5 960.5 -540.5 -%AI3_TileBox: 572.519999504089 -837.480000495911 1347.47998046875 -242.52001953125 -%AI3_DocumentPreview: None -%AI5_ArtSize: 14400 14400 -%AI5_RulerUnits: 6 -%AI24_LargeCanvasScale: 1 -%AI9_ColorModel: 1 -%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 -%AI5_TargetResolution: 800 -%AI5_NumLayers: 1 -%AI9_OpenToView: 347.192170818506 -210.067615658363 0.975694444444444 2455 1869 18 0 0 111 288 0 0 0 1 1 0 1 1 0 1 -%AI5_OpenViewLayers: 7 -%%PageOrigin:560 -840 -%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 -%AI9_Flatten: 1 -%AI12_CMSettings: 00.MS -%%EndComments - -endstream endobj 20 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX<‘nôEŒ )И&Ãr©­òÙ’­•mÓ¶u²ÉÏE¹ˆˆ”® ¦£Íg«éù«A j çAM©¯Žé—­üjèä4ì²—ži$?›Æó.K·”ŸÇ«$çż¡W!Iam$èQ¬ö&“y›¤GÎMˆX9•„?ÿGnŸ…jÔÑwQåÒã2Q^=Sé]Béñ±Û¸Û£>ˆ‘ôŠÙ°¬¢o'I¦Gõ.hã–¥ó ï¤÷øüä6èNåç¡å/IÚ03W};iÉÁ†¡ëlò…ø_Ýœmcei2LKSǰ,XŒ^€Á0¸à€ @0x„ ` ‚JÐà@ H`d A‚£\p@`°@$@˜Ða1Aƒ„0¸à€ˆ .8 L0*€Át`D`L‡ -F Æ °`c6HŒÂà‚*Ø@âU¶Õ-rõ°<¢¤›>RåAw%‰£è8Ø`dÀ85 qŽÑ‘ø‚a¡pbHC-"¡ø¡° p@,®p@€&@ÐîoåÝø%caÚLÑΘš»¯Rú÷³ßÌú™™ñÞc<×=1Ñ|2=ƒÇ)—î¢EºÎp@क íÆ6C)Ìj¡_ÿ«¿ë•FŒªy¼;esãË'¡U -‡‘S±Òèljîl2‹\š¬›f‚‰Åq!q@0¨`U`PœÂ¥ðBb‘H¤ÿœ"ñ¬è®ð U…'ž‘'ˆß`¹î|A­DbÁêð€XCë~o_ +•§Àð±Ä•‚Êî‰(,æ°‰šì€8¼\`À™¬BÁiTP T S+hê £}Áæ|u§p 7Ø¡!Ý'¯ì€8w ¯œJÐ"4 Š«Â]W¤ù¬ðDn²ŠdRóSÄqÞXfP&vÑ4S«*C×2«&3¨öeM« '*q‰3$ª …)FÁtÇ?±`JRX8xÄ*è¿)n”I£æŒÚ2"}¦%™Ae7xTf5¿i2±0V¤-DÞ°hjA Š)ˆ(å€8 pÑEU`P ¹¶‘iò¸ÑÕæE«ÎeÆÏžæº{MeÕYÑõïªÆ× VxŠ'~^<ýaHs“!‘„´8Å%ÒˆÁÒc µP -•8 ^Y.+܈[8 |@0,ˆÄ†Å¡H{ Åñ€0SgEZHàqu´"´Ä(Rƒ&0 -ÆL~™á‘¹žÉ|YO²1Ê+ÿ•“½ÊYï™A'3ÄnË»»Ó,3ìW>K#;æÕä.+És¶ÿÅ—Ì ±=ÝÊ:^Š“J~“§!¢+ü\Õ±#3®Þ#£*B»Ñ\Ѥq†ðdˆ¾»ÌÑÅ¡°XL*»|Bq@Œé -5Ùá±X(™âˆ+æ€À¼â€˜šÊ.@$ -‹…Äay‹‚.A†‰BA±P,¯¤ ¸Ñh -‹Dâ€Àb­¨³°p@0,( -STˆDâX]Üè€PH/pñâ³` [äqfå+c †b‘ ŸyAÁXÈÖ˜‚¨°Á…S¸ÄÎ7ÇvVŠJ,pq´  p@$À¬È],f‘VM$Ò”h‚á _HC.žXYiTøÂ)5f`A ,0ΈäjÜèLÇØ¿“9 Jæ€h³NW:|lxX¤Þ‰ÇŒB €0‚ &‚ ű—-…rœ(ý³eF±ÊŒTªÄ94Ñe{?)qîè”UËòO”i•7J!4ËŒ“§9úfYìUbfþܱ=82£æÌræëÂ)wxäÇ -}yVWfdÚ`¡Ì°Ã¶n#gZËì5",×+3êæÈ®>Gx•+;iޱqÃdP`pÁð1…pà`Éä¸1ãs@t`aq@ ˆÄB≠]PX8 jA±  PP(‰+ˆDÅ)NaŠR”ž…'ò—0J8ÑÄQ†Å®Èã¯Ný(¤â™%¥³ ¸ ÀѰ°nq -? ðîìêêhAqK³²ÕFQŠJÔ¯¬ˆ**—HA? Šˆ…"‘.Ãb±PP$žx@ÔBq@$ž8 - ı8 Dây@àÙÁ°°P$ž¸p@`eXPPä¡0 -‹Õº–ˆ¨¨èè’’N§BA -R,¦¨Õ¢¢ª¬Db±P#£¢¬ìì, ¦`‹9kY^Bq - D O±0f*r‘ ó©xâ -_8a"(„‚bád¨…ÅÁ°0¾ ¶éAC„ æbá€X,¸DuËj—Š"S‘PX˜<DSÙø„¡0 - D‹‰b±è‸¼â X†…bX,,haN”Ü)ÃP‚Œ¡h¡ ^X´f˜¡&¬ ^XÁè#……b‘ _F¡ ÃÀ°XHÜÂÑ‚ga± °P,¼@Ã`†b@†3”\&ja³WT¡‹¡Žk›\6ŸÑé;a…¼ð‚‰&œ D%,q Ldâ‰DB‘PH, †Ä1Š*¬ E)Lq -T¤âŠ„B¡PP, -Å(TÁ -¤P -– -WPX(,(0( -ja‹[àâ€Èʼn…b¡°X, ‹Yè‚h¡láp!¾X Cl Ç€ ƒÂaa¦¦²S@…0ŸP(tq@˜Êó Å1¾âD1Ô) -‹bj*[8 ì0ŸP -‹†…éaSÙa2œá€xB¡°X††ƒƒ‚AÁ`H0œ!áŒÁŠÁ e`XXX8  - Š…/|!pl¡¼Ð†ÅÂBa¡X|‘ \ܶ¨.fÁ °PPPP($RPÁJˆ*ŒƒbA±P((Š+R -S”‚UŒ‚!±X$Š„"‘H<‘ LX¢”hb _¸Âÿów{~@øs†\ÈE*2‘OÌKËJgs’¨€ -<&"‹ƒ ·8…S\â—‡gWçëÍ ¶0S°„ÝÐÎÊÈÈj µP‹R¨D%* ËªŠª5µ@ R‚NIHGEÄp@(œ83tñfµ -Y5™† -N8q@$œp>ÑhEnE¢Ù÷x׳ª× Ã0Ó…Å,£8 “Å$&ñãääÇjˆ£¡Np@(w¢ÏÄù|å²Ñ˜aÑ….ô€X,ªP…‚¢‰Dß'׫ՊÜéà ³0‹YXŒÂ(FA‘8ÞØVäΑ€BŒê8 @ 8:ˆ „ -Œ@„``B„@à@ƒDPŒk -‚ ˜ LØ€xA„ 8 € 6€„˜€xØdÐ` $&hÁˆ0 <8ƒX`€  -$œÀL€€ € „Œ`‚ -d AÂ2 ác @Åh€0‚8Ð@2ÈÀÂ&<ˆà  -LˆÁ4pÁA|FÐ0Á -, „ @°0"hð`Â#&4<8Á< À $dð L „`H@@·‰Ž L †@`ÀÀ¸à€(Aƒƒ C2Èà†ƒ ˆÀAF,PØ@ HPØ`ƒ 4 À„L€‚ ‹ T.¸à€(² ›:jV€Qsã+ A ˆ€ Фë8Àƒ@Ø`)ˆà ‰1v€zl2À<˜à`A@p "ˆ ! D€AÆd0Â.¸à€@†Rð`1RÐ@Ã$ó8@ 6ÐàA0È$.¸à€)T H˜à@ƒ   ƒ 0Æ40ÁÁ .¸à€#T€‚D,@\å^Og9×=•ÒqCU%¹t±†B»‘ÔïlX“Ø‘XºÞi2¥We6¾ñ½ˆ•±ûŽdÑ”ýj—f©¦94sç°>RsŸÒ+UfÚ}†/¬²y¨.‰êþ«Ì›«²®th;Z^îEVk¸þU¯1¬­Žˆ–«V?r•ݨ…4é«gÖ]ïÊ”ÝÈjw•¶ÁæZyO/‘ŠÈÌóg,×ɲ[:N~ZW¶6ï®&Y>ËZÑ¿C2¾LéI÷egËÙ¬Û[1Ú_b‘Ñaá´Æl?Ë>í­Ñ©6åY{‰>²1š‘UM~°þ,‘í Ï”æ’ÌÛ^¶®g„¿¼¥Ý®¨°c7Shy9weGÄ1WÍ÷=Ó,Ë/ü±$'§/¢éêÔ+|ÞȪêü`¥dË#–Ã[ÿŒÄ9Ò·'µæC†FœôÝFfªU•õ<ð„ÈMªW¶Ä6¢‘UUwu9µñnèrN¦»9;œÂ2;<×­z9»aþŸ»$E•S'cçÊ|t2z•HêjG÷oé íHv’Wó8|ùìcÙšŠ•;ƒ6XÄN~Î|EõÒ$^éÖë¨bÕ‘z’­¤uô¬5“s§bÅ,ë^sd½Ëú-4•s¿þhóº½Wašùš¦<_Ú•mú“Cdæq½~v§;"eÒ!ÕX™½UY·?Rƒ®Ý©j¨Vƒ•E<;£ºÖœº»ºK³Tm6ec³^u²ow5Y½cM‚¾¡z¢‘˜í¿»ã›G;"Ò¥•®WÙ:yø¦0«w½Å‹Ùé»Ë©ëæ«Üþ'û» ½/Þ«îVŸLÕêq]+¯.é^­!·šx6:á%žÉ,m&«ÂÉÿ>¥”lß"“±ïçRfVšà–6yÏ÷zS(ETfÊ¢›Z™ø‡“ò[þ|(8½ž,Ë}ÒÞóY¹{çéîuGˆšå³R‡îXV¹ê!]ÕkOÜDbKí†ü‰ê®” =9SHv:Éx·3³']HXž"ÃS]g¿$›üñxÒX9þ¯¬¬6ß©.ɲïÕPþ ÞÑNA÷Ê -ï6”’®Q«xG:ê½°§RRùzEzo¬ãŠÐîŽYSø2ìMž‘ÝΤ™åÔå•Ó³Ž¿æ4ŽÝËf’¨Šäò®sö›æ½²,çjÝžgivyðÙ¼º”×V*ï{Ú&WÆç}2í¨2Ë»›ÇRê8•t|I=:÷d¾*ˆfµ-ÓMWê’¯átœ•–¹¯0Ï‹>Þ•›TgÏS‰±vÂ^ÎÌÙi° ãÛà§-¹¶Ò¶<•ý^nÖ=ïeK±k³½òN-YÕìƒf‚Ø·ŽìÎ1¡lbÌYB2—.Gš=–ö•…hxˆÇ<´¾SDgÕ¹{kKQ)Gê?Øš%“'}=(˜ø+™‘ø-¥Ø‹äî¼”ûkL|$ =}¡×;I&3=²ÙøLJù´Î罕(vo±;£}nÙw5©Þ›mã+¹ÐzIvÖúMšz*ò“÷2£Âš)º,,U§^ô³3c'IÂK— ¯p¦Nå“t¹åž 潆PÈï‰n©OI>Þɬø¢9ñاönP¬j†wc•¤­c?''‰&ét·]Ž Í$Y™ð&v4ß®%éÌK$Iç¹çÃ{ËþßÓˆ’¯9¹JÝ(ºùy­h†‰R5Êò~4¬ÿT£­úïsøªaû¯‡‡qfP²¥4šÁ£{U£5-V_ŸÖÇ2æÈ´ÞIrc—ê,ï³ËI#º£Ô4íèèv]nãn˜O­k]ÕMØ·vI×línÇ‘¤Ú+hÍZö8v‰Õª±KjÇÆ$vãÎYFöÞ˜KZã­ìs|ÇßÔdï—¯4müª~ uzRw£¦ŒÖ™2?í¦›ØF~þ—0óÆYfŠÏE™æËyñaâ9-/i?úÓ(oi6¥×-íÙùØø|uid#Et4®<˜ö9,ÿ•ÓÍgânÊÕ&i« Ñ(óÌëv¾5M­ùvš4ßú;”=ÙÐGjuu¥<ªtt›K9ªÏ®Lp´„×KÑ ×½—jB#æa4U=[ë¬2ir*%©s½ÒŠHÆE»£J}«GZ•e¥Ž:eiE•µ,›Ôþû¾J«Ã’zÔcÃçzÚ ²CC¼“’21Z³d¨Ö–îª^'Eê1?ÌR^%†Ô©™‹’|ÇšKV騺ާ‰#tÃ÷¡¾Ð¾WÉ+‰nξOOòÞÌQÝJŠ3‡†Ãä™´;“ãÀõþÑr`Î Z(ëüoðÄ7J•i§ë4GCóýP®F//åîh˜b ÖM¢áõj¤kv¯#X£±I5&¬¡½ð*i¼qÓ¢K1ÞˆqÐÓŽÊUßJ(ôÁa|Ú#;³™‰IxÂcÙ´ŽU¡Ù=×k&-t£îK¬O ÝxâåáØR®º¦]ľǑs«wÈ®u•Ãq7>ÖѬrtTceÎx†ðW¬Sºò¹”ßh=Ÿö)Ögü¬ãUɧT§’ÏIâxšÍ %ÝNgìvfs˜UÕÒ$Ž«¡³´üQ¡Xž¡IbYYÏJ¬†Ó²:Ó9Í“H—#qÎ|¿%™Ü¸eóGÞjŸßްä>¬jpì=ªØ«^ëÜ‘«^6”ûÀb³DnÍ,“·©âg\µÌ¸*øažÊZëé‡õªeÉÊü¸ºI²Âwe.mY$+Û­Æ’‰“';3¦ÍLf6CIÁ¬mÆ×%gΖµ<¢³½þ,2㌒sgtžít¢üÍjCöZeUQ³lZvž4ÏèÂc;j¬ä’›)³ÃÖx{j ï¬XU<'ºÙ©BWÚÌCñµê¹2Öí ?3–v&½â]s™Ž³‡(3u%Åã)ëdZßNs%5ã§ÙÛŒYó¤ˆ-ª-íxo¥Í8åI»#$*aÕæh·éäžHø4C¡é¨¥¿•姪&ugòË{}’ìjî.OêÙòmá}UâéÕWfâi §ðµžx{¯¦Ií(§NGØ›©:Ã’Ôš½:tÙ˜ØûØ™>êzì½vñçn¶ËY¾j½Ìçе‚e¡fù²ˆìX;¤ú}EA*¡ÎËÏ ѽ(M°Ê‘4æüÙ‰rql÷1£ UŽãž4%¹imKOaà\,*£åw+¦Åp”ï8i±Šá8š¥ÕêèíÙˆQ0ÓΨåÊiÎaMNÞz.Ã,:f/ï”Ū̚³¼½¹g>ÅeZ§×þü\Ç7ÖìT/èÒêÎ?t{ÉæÔv;šõec±5ÏêÕ15¤µJn¡¯Ó"›ÆnôÔ¤dCÊ,B1rC6ohk(Ùù™dûõ¼&yèìƒx±gÒî¬zöâMÈì8GRØ`‚œ[eÓš²6íÁ¬ÓLìœF(”m(+ÒÑF,Áß{$sR•“nÕ*g^¹ -kG x«™3ºÍ—2ßæèù©¹!­VWÚ·i®u£«”Läæ%ÉsIHe³éÌœEf£3Nˆ$e¾!aùT¿“—§G7²ôL5iM˜é¦‡Žé‘B»’‡3½‘ùu)©Ê¯)‘ËuÛA·ƒ5ú®Ø›&9çö/½zNc«_‘‰Õ¶+©:‘ÊvCâóubµ¡6*!O–$ ¬Uó|9úÙ…ô¢³Ð9(„dy¦"uÜ•©xêä¯Ww×Jš;oîÈTsGõÔsw²!*ÚížSWEIvUH%Ÿ’Fæ]ÕÑÝy7ô±J°šùº+,º4#r‡®,i’–X9’6îª6|µú¥Ì‘µä4ðEžC+Iœã[ΜN£Eìiä{ëQoé[¯ö¹¡I™_ß­ê>|Ò¸o hƒTµL˘FUåo1ÓA¬ËtIfÞÒìiöò8ãPÙ¤`ºlÒÆÒe“.{&‰©lÒ¦²;‹2i£B*›¤¢K1ÚuhCÅfå:ÌŽ:ÎFB#´<œ«Â¼»LÓ‰;s†8w£YÌJe¬žLÆ3Ñ|w©’Uv¿Ö•캛­2ƒ°Îx-“VH®«^Ù¸®E9§œ£+":+e4Gôá›–¯sßÕ¦à©nª#/êήŒHh¸Ô´{ÑÔȇ­Ê´¡aW4 ‰n—9ê Oæ#RøØ;òit'õäi`^MÚïTw94¬·NÞyÔ÷dŠ¥¹v–÷)UÞa³(•Xlk‚ì8c–Z Íe½°%5˜Wr¾üó–·ŸºOvõ$VÕ.¢ª!V\3Õ8]üýÌhMñÓßí®õ²^†¦Ut¥›âKdn}Z«U¯UªWK½“82ý]õ9¤š¢§ŒÈ=çÙª%šâ)Ɇ,ƒw©ïṮçžva¢ÝÉN<ªÔ”µ~Ÿúè‰ÆŸ;y¢goD34GuedK"+;©c%üõ҈쟫ª‘Ôí“5»¬~ñÍ‘ÏE~™¥tlC¢ÏÔ ¦©ÍhHx2WIä“J´ºÕQ1+ÇÕU›ND7ß ÏWš¢ždŽ¢9÷Ÿ…ö˼…C½¥É1ñÌ…§†61“~cÌ¡¤*šéªB2Ëö.‘’³Êr^SIïMJ%%QÍ)‰Ê>Júõ½)1Kè,Ʋ3¼òò©n–æ(úùr˜ç7›vŽÈªsD–ŸtÞ(íFdi%߈̒Ól#´cÇ$txã®^ -}È…tº³ç9gÈ•~ë(Es½øf‡È¬.§ˆ\9Ud9•S5“sƒò˜SEsSo‘{Xäe6Suô™d>*§Cf“íFêÒo­ÝðeÑŒhðmÐäcñ KËI³±3«c—ŠUë“å^}ð,Ç='Ô›#¬V ~`!V%VÎ?Љ—væDI3N窕g‰•ÉBÙí껲LãïêK³«¹«¢àÜUñì½û¤ñh:Á¹]uŒðægVoâI›É!¥Ü¾s'7µB¢Úì®ëî|_Tü´‰uc³™º0'Ç&ÓVN“2[X9.ºš2ÛÎtO)8×B´LM$@˜à`‚„ -˜ …"C h0Á [‚›šsæ¦:G,·4¬´Âà\Õo Ù”Ø–K4"¡™Šì£²«í¨î±²“òÈöQÙø^ZU}¿³£Ø²î ^ÍȽiN±ÕçÌ\7y5Ÿ›ºY¯›­Y6®l– ¯Ù,Cl™ÞÎ-³ùgYâen”ê?ãÝåÑîzwÆš¼3Bœ´«éÜ0¼¢<¼ÞG¼cš˜]’Þ†i­–n7ï=_oâ¥¯ŠÆ´Sû!4…«QʺýêUµ´º²a–öÜǨí¬æjîÌWsF7t±6wVβéPÚ\ƒ¥Í5³÷™§ŒÙX=­RŽFM-Œ˜u†ƒGi£ÙÂ4Zå¥xS4[;{â©*ÍTy#EHS4ÈæCEcd4Ed²§k(/v^ìñ,Y%Ye)M—Jœû²ãhD˜ -¿»ÙØÕHêa(3–ª³ù°ÒW‡Ci79ÆëËça”…7%¬™¬ZŠus5uNѱ>÷‰=Ȇœ5YCg}uÕzÍê÷.á)›®úŒÙg»jjè­²ÜUc $¼V’YN9¶ª‹ÈÆ©Û/¬¬1UfŹœ²“¬"œ’I‘m'cW«QfÅ,"!YLºjÕ‰ò×±i:õéÙÒØgJfÌ­ÎPÒTgаV¨`ä¡‘þ©jLÓÛ¦dªŠ±W*©Bž¢t«u²-¥Qf5S™_¯Ã”›JiäóÖ¶’„Nºró$ˆgÕò±hU6‚„VUú &šT=X½Ži“bÕä+ÿ"Iõ4†™–EgÇ׊$ßjó$4Îô#¡ayk~ªWÏÖî+! - Â_k—f–ìà±›ýó±PžLl8©lf:ÏÊê–#½lËÆÝ!B©aÄAK)©qÃìˆÎe­—g¼Ððéz–™B£&‡5 -›W†™)ÕqI5¬äUݤݧ¥±ÚÑè>ŽsùçùÙà ÍϨi±6wæY‰aÖÉ›=¢ž¸ÍÙªCcÄ:V–mXÇÚF‘òꎈR«’JÖ(~^%‰5üyY¢Íme¡$¶y…hUTÙœ²e¾FÚ!Ù>X“Lÿf9ÑòfSdË,Í‘-³¯qš“Í=•©ÐRª.SI);YŽ8ûD²öF×y{ï)IãêdÆX.¬“¥]ÃïþÓ{õ¬#³Û]o×C“»TÒæœÎØ6«ÚŽêj §Í‘¥Ð¥3tϡЩ’ˆªSV·Et›4¡#+žúW}Ì3¯vvÏ=èâíŒBm/ÅFmVú4$¬£+IÖj,ħ¯²T5 -ùá»åÔóÆWAŸªêÄ£1ÏÇCH„ô¹+÷?"ã‘L Ëj|ñˆ|meZõ±Q¦Äwµñ5yùX¾E'Zö5·`9éfŽF˜7;“ˬ*5a«et›»ç>'Éè×D±ÞÍßÉh’¯ñ&+`’>Än`WFP§ÕªÓ*ªB{ñ Ó+Ýhú²eÛ˜/F½m9Áç=ý”©±h™:G2IŒ<áOÒ0Í"DþN™† ©×vñ• ‰¢ãù@e•­aŠfŒŒ'ì…³ÓÉï9÷Nù’>F\’ ¾ö'µ7†«Zç¿OW‰Á&ƒ;ÅÐꂳk³l”A¹™ÀdGõÕÌŽÊBØÖ@̬ê´:e}oÕ4L#áä ´­Ðþݧ²WP‹Rðeö0^ŠÄÙ²²Ò&ýXL^êÛU—4y M×ñxW‹ea[©èò¯À5áÙo|¥m +*–’Å@g­rY^ßfŒÉŠ03tµÍ>—Æ ”œhǺ–ß±Ð_~Ñ'pyФ x*0ËÓûLqõ‹€Æu^|1Ü‘Ê8Çx˜5oHD—©“-±•*— ‘1ºŒHŸJ?¥ü¥ü®V¶¡È}O›pZI<œØ!|—ŽÌBá×TÅXÄ¥9€H0¢K&tgÕWbÔi¸ÑÒwC}ü{’hý) s+Œ «¡¸¯ÁŽ'8@%„P”Ÿ'‘Y]ùmiìX'½:g£kÖ㧺纅C¥tCaMÂK.#¼Fâ/Û9Ö+r¡ ½ŠBœÉw‘9°éÐ<§‰ m¸W=³Wâ&ý}¬‹M[œô†PÆa‹ìœŒœ±¨ô$´RÅùÈ/IU @=‡/¯îÅÚUÜ3U¼‡×‡Ï -’›5’pD†ºN³ý:¯ôgtÂÒÉ}) öT=e»JÀ¡s•\ê@Â9#M „Ðv0󴩃LoµÜÄÈŽê EZ ¬czW?¦¾Ýºbå§´¬¢Ê&ðÜŸ¾î5NíPEPqmrdcñªíèGìïiºÒš7€{ùVdÀ14_<‡3n) R@ªdvÕŒÚç#…˜Ù¶` -”ÚYûM’œ&Òò ½<`Õ4–äu¸’g1 ×¼Ùrû¡2Áý™0ryˆ}tÓpTâW à --œŽ—8…”ϧ‘ˆ ÎÑѾê©(³¬æw`Ö]DµOÛžoÚÛÌõÖÔmfËi¥ 7dê/9eŒàÃB§½íßoy)>þ¥C·f±x£çHaY™ñY~¯Äb(G®P‰„šº¾)`‰-øSãÀÊ„°o‹æ]þÖ=YÞf_müì= T x¼¯–ÐÅy@xu~òÆ(F¬²¼ìå"4£Ý\ @(ÁsžUàì—¨ákŠfž  c2©9*¤Í«ç¾ÕzˆÕ¼0ççeD¬ç³¿ø ¡¤i¥#ÔósHÈQUyõÛ®—Èø˜kë~ pLÛ èr«æÉ5G˜àÚ5f˜D)"k,ÙE±maÚAiÃSðT&ÞKæ§&§uýW»äÓöÛ|G~÷4êZŒŸƒ :„NÜkS½º'3ØØ 9q ’Ÿk Š¥AJEWXBïžR•—Èã=<„øfð½È9fÑ¡Ñ|ãµ¶~ÈV„¦@@va“~KúkýÜnØ” ¡R=®S¢¸z‹"­ÜL¶¯­K…›¹NmÖ€Š>²¢ %\ÁRRš±Æz¬†[o3l^áÆ† F~êIÌ€nÆb©ÅÇÿP¡¿ó^þhö8m™{€C”J°AáÇê ¤ârê×wЃþ”}йáâi/áª]Î/<Ϊ¶àhk5K×s¡pÁæƒíÖg}€ÚûÏÌhɬLÛÏí¿’7ýëÜèuÇ+:{œMá@€¸@;‰Šõö¹àvûb=Ã]ã@·"÷žXÊ_FM[¦•J‹ß9m9a£·¦YÌáØ¼d=+py/!·ÒÔeRF×P!_<žÔ¿y½êƒ/*þû§¥Ðà®Q‘ú-eû³¢íbÒ4èÒ6 ´Gýð:¿«Ã&ŸR—né]ÀÆä*¥}Žë¡áЫʬŒã;ÑK×àV†–û{ØÌWiÀ´x 3 å[åL´Ÿƒ¼ æøö.gQ|à%ÔkŒ›Ù-ÿŠé28©tŒ©Kh€Ä¤“Û:UçK#ÁZ]üŒq]»A¹*Âw»¡B@&4'%<ƒX¹G/\6íU|FÔÏ„@Z®½mæ#аâØW™îJ[9Ä+4ÌbôB ˺աݦptu›ƒ¿Õâ„Ä=~nijMÓuC€:AÃe¤s¬¤°æbÁDžº—º‡ÞÊ/¶~„êéÕr1ÂÔ#1_H·ˆ\nðÇ…²Ú—»,«Û.Vdd;T+(ž|m5} Ž®ÌñB{ÀZ/ÏŸÙž.FbTÉõœšåýZXXc±åÈlU–%Ôš©Á͈˜SWè7g­¢Hœ¢Ñ/R‰^¬—¾9ޱèñ¯è°f¸úd¥,ÎWÛK4à¬ý¹×JNè¸R—@™9qù&§x÷$uX8ÐnjµLt Ž«¯âwë #úc<äêÅé®V>BDžâfz|£—ÝMªä¤c?lÎɶ[&:òc}¨‰¬áY”{Eð¨$é#²3û±DX!ÂY;ËÒJ(RM‹0>´ˆqš{-4˜=ÀIpÆ‹#dOß$Í]ü ªüîR÷2 ¾ZùòÄV JÊdà/÷qxPO%³ëÙïàx™ªÁÏöÊô;B£.Cš;WÁ(c”‹#E‰¦.6!åÕ þ¸-Xï§1[`L\„ê@8ø#3£Ž.Øó ú1 a§sR3Z mH«Ö(‹ò^ŒØqCƒ%²²d9VãâÍ“]¿;oÌ‹ÜÂX9[FqÂiD|‘¹tšX»€Òÿ ‡+–Ýf¨K@²7U,bÔí"\R¥Ø;¡POD›i®ºŠhü@‡²}ÝÐWS\O7ïY=ÊŽ0è -fšV -=Bß&¯:ÒE˜±c½a;t4£á^æ³-¿¹Ÿ¡ãËDóð²³¾ÞëV®Ø«Ï³vê¦V5 —‚ SX;]ýð†( º÷®Ep¬ÖÍC£7x½V‹ ³”ê×÷ÔRN›røˆê&‡_Š¢&¬´äµž÷»äÒS¤ÄH‡«@bÌÔí5nƒÚ˜öYÑÉ]…Ù²{xCÒHÞ4¬;‚H¼»%EõIʸ7ŒŠ×B°…yøêz–ˆQV.ÀL®¿í¸.)d{pÙ{?¥…Ô½wÿðÜ;Ÿ­WJú?å²h¦~´• Ê®ÎÕn@€p *Å2Åǘ֞һÓA$M)§ šO§HJƒ!ã - ŸÍnø4â†4sÍ̇ê=bÕGã6ªcVÚ:aðí©ûpÍ -ƒ,€zmÄ¡:–†/#’+š@7|$&xöΫu_¹ r˜'Õ¢•£B9¼C#p¶úNnú@”n`Óñ6J|à¾Û¸½ -Qäxpé :ßÁüþ—ü7yÚ0“·Æ—-äªçpD à4J%–{Ñ-^Š;˜$Åtòš‹¥GW“¬}Š`cdP8"Ñ…ô1È1ô¢(Ö÷ÒæWBJe‚r”)=ÑBpŒ<Ѽ[E›2ï¶ï(e‘¸Ó¥Ï½`®§9$¨‰J0ן¤AcMÛQǺqËw•o:j:^”åÔS,¨N:£ÜéÌ$ìÃä’àOW_Zg;Ÿ8,1U -¾¨Ö,SªBN@Ûó¨eÕäÒ!“Ï^ÊŸ–¦C_:¿Œo‹jBƾȾ&ÁE П4X$¤½q0 tß@L§*ÒÑK¶‰õäÿ‚Î+;*jùöNué~Tjs»ZqO£s†ñ‹prÕं’Î3å³^ß¶åüÖ•Ek,o¨ŸM{îçÛUæöm*ŠÝ˜óñf“1m±{È,pp#¾ÛÁ!A„몄™/x¼•@©Î>ôå| -`nR‹z!ŽŠzHKFCò]Ž! AàÀë'(‰ãJÀ”eŽä99X¡ïŠÓúB+’¨!Šîס¤þd kŒ¦J<’F̳Rü×ì²cbTö|š=¡0†32ÈJiå£Ãs½#4õk{œ\[˜Dq1Û*LÔ–OxòLêu¸¡FbO ž*6œäU -•Ö²[jp?ItD Éf+~j|]B"> .ß·æ®ü–fé Då&/Y¨²æ€¶5•jQVÍ­$öƒ­DV}ì:¢C“TwÆÒt¶ÍOyãúùœÎÔž˜I¦ÕxA¿Þá*ä%eq¥‰H×Áá¢p1Veß>@4¡t^ðïªõ±ðk¤Âòʼ££¦ žE•û -¤5‹¶Mê”×ÌŹ ³[¼ˆP)c3„Ð K7ÿ– („í÷g"µ—è8ï- Âí!–©ô~Â8|GK2¥Ô½Ñœì°¢³îÙÃÖL*?9yôÕÛiÀª¨t äÍJ^ÒUC“<Þ&§üØä»#Ûƒ@\ (†Áƒ±x2ˆ IÙ/ ŽX¶rÕ¨±1-æíó Wˆ:tÆ_!Á1¬ÓÛÉ:¯1…l}bgÍ&½dØŸNHÞvœNBEÑUŽyóuF×Ñ·†ž¥èã”^Ô•µ\r}I­[ôrF«q¢2gaD\ -ꇫR*¤4; -‡9œ1²¿ZÅÑj„º­ð1à4àFû ïáÚóvk¤Mƒàèª([×#s5`"Ú:ãSÚÆ|Ð@ª³Ž…aUßS1É„uˆËºÉÔ…N¶Ð¸  -ç¿çn¦ ´¤–A‰V2B¾è_5¨Ñ¨à¡m^F{5ý Íå©\j€5µáŒÀ8p-¾¸X®j­ò$ª}õàØ Ö ¿ÂáH«‡årÙƒãt!<Á›Æ6RgP¹ºJ–+÷!jò)´6–Äí mó}‚Q=.sºƒ¼šüÜH¸’ W+»‰éGSÞV¬n§(£g®¾¶býħT–ˆ¸ùá_Ví–IÙ†:ëd‰È8K^¸°¸Ûq¸±×O(©YC^Û¡3zó¦ì'õGk…jÝþüH ”•aA/?¹B3¥.®\90®maÇ£ MЬ’!‘Fs«6–²Ôä×ëÐ…1ùïä>Ïç·:ÚD‰¦€£K:'ú¢ï¿µHvÍã¸=AM§m$>¹n«f;QÞ_ Wµ¶5Bb˜æ-ZG'u'ÍY˜sT5cãyG,F¬`ÚøWkY~F„ò¶ù÷:"cn·l£ÅÆæ°zs|Qr«„dz–ÈpL*jô50f»êå.Z¡¯Øñ¿ž -ßSU©R %9z€ÑûKÞµ'Pª$ºï<"„N=é¸0†¼4Êe¾(¦/bkžËäPÌŒûÂÞ¿O|»ïP;xæú»ÊŽu=êh4ì:%ͽZ²Yý þû¢{ù½‰Ò¥±œJ,IŒ_¤l<Æ)Ö*Âö-â²ÆN:iW»ÍŽ*8<Ïu\wsºÉ¡Êgš®€3§a±¾D}-®ºQg—Ü„ã‚5\ !Ðeó|fõ0þ¿Á|Ì.«søÌòF^¬¦“Òèf™g}þÑd«u[ù¾_»Î:‰˜‹¿ …EÜÄ=™7Ü“kº¾ÃÇRL• s\¼NpÉO³§ôý»t½nqnRë1ôe8Ñq3$ì8ƦˆØJ ˜¡8ÔîÂÛpûùñBKíoshìÌwÝóæwÍ ÙÛù53F¡äq‰™qÃ*âùìÉìÇ9z©Oи0®¹¯. æaW²MOÐýà…ƒ'ïôC¾Ô<ÞòèŽaOÃÝåÌ”F'ö<;µ5¼)´3TçRÆRáNÈÀõGît6½üÊÊA—¼CF „Ù!‡-™‡"U!$ô5½;ÔeL}rí6ß”‰…¯d‹mD1ˆT‹áž˜Æ¾€±¶pÝæÙª\ï‚TFq"‚r]€“ÖÔ03]’Rvkq";ØÄFÏò¼¢Ø\ÂUµ°H­ÈË‘üŒG[œçχG¿±Ïß–åÍI—Ñ&¹£‘ ))GF3¤B2ž!V`°Ài•Ã,¨Qe$(8°X!ôùþâàtFœÄïš¶hô&§Ý ¼jh[k ùEWJhè°»ß>5lFÃbÝW„ÄÓqŠÏ1AqDýÏ?“ÅÈñÖ8F6£$ë?‚H6X‹~oZé<1ñ‡M#ÚO -D¿Î‹Æo“£ÁðÑÜoƒdæÄÆÏ,Ê DÇ*ËÉņk¢`k1€ßBÕí¿CfðRoq&"ò›•%c[ É£ÜñÑjµ‡GUJ„²­&t‹Øî§ÞúÅmýáñÊúL]R”Û(7%]£Nf^Ám6ËÎë¤,ê»é!«éÃYŒ‘ö« Z €`m, ¥IÞɤPJ—õ¹7š_`5Š&û·ùî>R TšWcg.BÛe‘žºkPÕXÜ1™U%æmæ°éÈ´‚†¾ª-·‡/´xF‘ýhí^YaUœÞŒ’`g£iJ¨‹³:–h¢Ü×Rß1 -}h¢Úl&ÉJî’ño…&yhý£0)¦¡"¦Ã O¢a›ÉC“rŸ§Õ Ñ#¼ƒ¹¥ˆ("ˆ˜NONógT± tT„4{²µä„¥ó^dEÓ¾òÚôXkãüA››Ð_º’6+†¦¾gêT¯ãÞD=!AxVÅb¨[ÚBçè7ÈǸ8áßÌûPœŽOüdz•"ë$×¥`´ª™ñ–0=7½öBÍ?Ç ‹~ Ðbú–({Žè„‰JÊA +þÆnÈ †À,ÐÚʇô4”X¾01uÅmeëD¢ï2TåyúÝ/•F‹ά)Ó\ò ÃS’Œãeθ ' ÆýŸœÖ8;šË=ðçß³(¢=p.í¾N¸‘ÐÂæšÒ ¶Q…V˜{Ÿ~úÂ’U ð#2È^Qî‹ÊûAóú—„Áɤ¿­5è(€ÖHU½u0½ÕÿÕ–èfÙeÀ=ú;Éã<¦¡k†Ý•ˆÙÈÞÕ&³•!#œ Z³F ˜q¿|¼HÚ,5˜3Áà+‚ø ¨¼e›XÃ#¨ëuS €Ðæ Šfã ±.Rrgò“ªlqiF²œ±?íÚm²™ý=5¢‚Zգÿ£2°ì ¶Ž3Ì…ÙAÉÙ;'§Çî)å!áÆï^ùKòc{vZÜ›JܼáOžÍJf¼yÚ1:ŒÌ”uW0˜ #=³jØæ¥r=œBÍ«ÛMŒ$ÕQ…ÒRÊÆ0ƒ2ùÆÚÅXÍÚ¤-ûŸüÄØìyÑ h§¡· - :Ö`Ú¼ò¶¨¥²“¶Ò–5òè´ÆßFLJ0ržLî³BCßåI©®âD4HÓ©¼ë„¬N^zÛ팣CЊÚ8‹‹/¥Å‘Þp½€´q°fSÒ†ø9¤Æÿ–TÅ¡‡€ÛZN_¹ù³„)éÝðŽTÓœGjáã_ôc0U¢B÷*îÇB;å4F.]Šª¸ÉáÐ>l!ú{GM”ir%\ƒo^ŽQMÑÒË©•X@ªÛX'œ×xeD91,KŠv| =f†ydšÚ¨ë9[bàéÆε›vD‘WNAfCFp)§Àx ÒŽD9¶ 9•Imºß Ž;ÚªFR,Rå¬ÿ *Rôn­2NeØz®?¸¦ÑCd@V´’ŽLõÞ¶©ý[ 2{+¶ŽŸÙˆ¨j>T&Ë0üFÔ2 ƒ« JW“î0ì“?œK_òHCçÒˆưøZÜ£%Wì SV³>Œsâ,u§^“hHuï2ãþ2,Â0T†(ÕPÃ{PÉ„ÑvEðP»à¤0¢D%ë(ûg¦iD¼d#Ã!ÅoÖk¶Á‡ö!]R4©_)¯ðÕ<, ÓK½eME0¸Î†s‰žÔ”óóø~uçy¤'‡ œ­ѾîŒqN#ðÅñö«MJì§È¡C”­<Ì̱˜ÉX[þ ¤à~°dù$7üí'{¦‰µDyíÝ„†~Â]å ½`ëj§]m‹@ŽMKäÈDSsáŒåY¨&=¹Y1×§‚›S¯Sx˜¡Fö6~Å6ñ†Ó‡Å‡8þý$”$]JV“¥t°¡4Ù3Õ‡àHU~ÓÞ…€6ˆµVdVŒ(Ó5 e\Õ‘žžû¥¸`K'x“­G¾sGhnNj l -}–MSºá!2Zgxâ•8ÏOZˆ.Ž–b¶‰o÷øÓ’E#ËØ~Ö B¢k6>Š n³OŸ7þžtÂÑöˆl|}sÐëéu!ïÞtüGYßxl–¨· ò\¹#Ê9Úúõ%’¡ŽlÂ)ýc%H\âß–H^ªï^ù¾¿CO‡FoY®¥pNÃ#èÃSá'œ lË­{U‚Kœ°`a>%—®Û¤4ꥰ4?ä/å»}Q9y£7’ÿئ»z©[>> ¬Y4K¸’Ò¹é ©´7š„,Ô^EAP»äUdØP™ÄÅ]Ž`½ÐQðU\9×BV'¢Ô®Ó Æ:ñÌiæ^Vg€Åu¡¨çGî5ô ÊÉL2è1ýéá 4g1×ÜÐÿ·Mmd´_¼ÑršTì -þ€iÆ”‚ý&~x’@•‚1™ŠŽŸTÍJ¹B‹"1ް€®•ÀÙC¦ÌÚT—ý±ë×b¦+…8 ² -P~WyÞw^©Çè£Z`ÈÅ4Z :Ÿ¿2 üöb­}Q:AV( -f7+qc~RCD›¢k}V*ñ ­‘Û´Æ…§jØ2Þ=l½bü¿-QØd3ÊJ(¯ÄŒé»¯š´¡&ï2^²C$1ígûŠ@Ë*ùÄîîa/áW >‚ì&'ê‹Ð YIøTßT N${-0´‘I*Gb½Ÿ¡¼¿+C7ÆvŒ¾º"yÌUŒƒ½á2´pg5Ï$ˆÀoÂ)“ w'e¨=h -ì²a„8™ä\5»8¥í\‘µ·ôŠ:ÎH<ÛEÖ¾ù r¡¶ƒk3TŽÎY`Ø…`2Íñ_ñã[R×ç,NdULë©N– ß–ŒÃ¬™q0ÊEÎQS†«ÆpµSφ¾Ù͘«Å¿ò!¬+Å#exiÖJÉÀkWŽd¡=“àˆâé_Ÿ¿PMKx;P¥„YgF{3Œáñªæ˜•~{CÔx\3Ýù(yš°²uhn qɼùÏ¡Š Ð£Á8Å'ÀOð«K½Ì|Ö}l°ºë ©–ýÏBTÉìk„}g×:È}‚û-ÙÂEµŒÒÈÑsmÐ$”Ú×û/g¡7R °knØtC©Ôö[×Ê׺F¡Î2¤UæOÅa"€;GI†…iDÛ¤Ñ,"êú<„uEŸõW0 L0cB oÿ‹uL&•cªFž -¬©Š1mHG!±àdé+N·{å¶Þ -BháÆêÊK³æ[È'\‹þ ÿdg8‰Û^?éô&“ˆ¼ídòpê9N¿¯¦åb i[…E!ջ޶܆DDw9L–ì!4­Sx¿FeaÌà€6‚üƒrß“XÝ~ÁoæFÑ‹9S@Èø(ÔsÞïJ›]B€­ÓÅwBÇ_0I]o6MOωM2¥UÕLú†qâ¼?Ín/77h>< /~FѨ‡)’ˆ•’WØ^A¨…VüÚ0(Ɖ˜Âxc.ØrQm“ZÆí£ó9º†·ûóš--e¤¼ãkÙd•Eó>æÉ´•ùI¸ÂÁbÜ쮑)ž`»65áÚXµ*b—ÛAƒ>{!ü$ÿË‚õP'0ž]bÂìµåæ,Ç9ð¦ç!ç5ò{ýfNO{ã‚ Üá]º D@¹$Øû‚¸È)+Xºî‘x8Dƒ%~5Ç1î/ -æí×]Se,õÀ6qP\’þ;ÔcéÃ(æÌ›ØÈ¬W¹…^«®£Ça«|+r¨AÞQ‰>&NðDq nV[Ý lLÏRHv¶ Ø;W°–ͪá§q >å_øbɸ¿o~–¨QzæÀ‚æÏ†BjÐ[:\…€%¸qXorv“ÈÚÔTŠø:8‚2K(vHÕp(3Ð3½lÄ`J1ÁA#Ýõ0´èáúõ;¼ ¼íòoÛ:±¾˜‘—5˜q—ÏQ¤Â±¼4=Lúò­ók^s² ñœ̈„”7³šùò––öýë)[?¦ØËÌŸ÷¡¼¥2[+Ú—¼À[.Œ@þ(É7û¢‡=„ Þ´|"5¥LŒ–e*Ç9`_VÝŽ\:TþÚŒQr·š°¦ 9ØFý6M -G.ñ´™ÎP"Ì"쬸”ßi·HücÑ=üÞˆmS ÉÁì¦ùj¼@¢”d6Ú b˜ª.}*˜N| ÃM/òÄ` ]Q6û;Ï–ÝÛF¢>$ì¦!dóÀ‡ïÌ͵¼Ä¯}ír˘¹³CÕ¶"ÔŠ5‹t’4+KY.Í 32ëq—íX¾uyR¼¡Ÿ Ifü€êpùLX´Ùf|xÉT‚Tál(ž%%jAÆ ÂÒ6àÉÿ&·æ+ôì;$Hµø~S¶#Ôæo)&ˆÐ§P?4[:®ð4ø›l”AíôŽz!HO\òÚ²ÞRSÐÒ7˜¯áæ½6«ôb¹’DÈy£ôÀ–šR²4W•Ã=¤B9!Ñ8sÕK­jXÔ4i0a1’ηT© -gX˜áÄy£pï`Cå>€j‚˜•¢zå»”] bþÂj׃Ð/ T(Ù(¹¹»=3o²¥|ÆO!XP°_»“c̈AòÅŶ˶ÃÇiõÐJõkE½-@/@„Æ Þ·áu5(ufÓ_ˆ{1y4ñD6 (a¦ ´ ŽFñm$û.k, ž‡Bê‰"vf‹—¡X-¨­HaäÛ1ôk˜<\[ -+w‰“1ØÓƒgßqa Aêð“m£=©ä)ѫᘯ-­Ìà·¿©ýÕeæÙÚ»£犑ÜÅ xr8ýD¿ .ôÌ*00ÎèGH2S|Õ½ |T±[#P0A&+Åwص¶s—é•{©õR2!¬×Éxp‹Âì˜4ŒL'Ò½Jê SQû·L©ÜWP%Ë @‡ÈgèÑaáuÿ®ÿ ¾…†GHÍV˜xŠy¼xaÀ#PS+Z÷š” L•Dà]j-í‘wÚÁt*ñKЬ›Fq-§Þj4?î”]*„¦ª\Üòi©ž~œÚ£BÙë“×(›Ztò>‰!×è`a¯Ã7ú^òã©6l°ÓïjØ•¨'ªaj'€ç{ÉvÞȵ`Ó‹l²ir «ªÚR£Ûá9š¼ïlW®Òaz“}ð, ú¾g®ù…9 ½Ú}¬:*‹¡-È>­F „§Q“D–¥¨éx!Sß„k ®HFë¾Ðïí¡ülÆ­ð÷ª­rÔ°7…O@ý*á'öw8B@‘‘ÞN0[¯&TÝP¼Ì¦¡*fEX\À>h£ͧ~”*%ó‘"Ñݺ=gy4[t††uµªCfG8©(bfß“QÖH¾&^ËÒc DeGÀ$^Ž+j¢aƒ%4QRªÅ•ÂÊ®ÒËQßÁ,BŽÍŠ` Hƒʼœ˜£XE󺨌§¯x™e³ò|B\£²„D”tÍÁ0Ÿj‰©Yz%ƒ%cÁ€x,ƒöi"ÕÔK¨*üjÌÈ]«PÝE‰‹ßØ€ÉJŽºçD…Ÿœ¸@]e³—dÑÕY>V`™!àYå$X¨ÆÜ®(cy¿B3̰Už‘)x‹DX[> 9I"öLíÅ^ Yà/bâÒ ÖåN‰a÷_ö7!Lé«¢€¾8¶•jgm0,Ä×?BaºÐêÊ0‡ñ–‡¨"Fr¸ž˜„å²2DÝ„VŒyy -ê@û1 -„86 25ùC$s LLÒrUF~õCH#4¸/Ü·Ø 'eúМh†7lÎøóÎpgŠº?ñ†¦vÏñ0w²¢iTÑ)N‚à ¾µ8o„æš«1I„ ¬•5–§ðoM¤¼&Žy#ØdMU½Î&bŦCkïx\p,pØ`#ú̸ŠCŸœ´-¯ #Ï‘œYC«†—-¯aù`9t\9aP,gÇ‚WíglØ mq˜ A­žÏÑŸ¤p®hœ‡—¶ãª^œKGÎj Ññ×9==ŽÆiœPû®ÇiÓ2dkä¨U”…É?9ê@búäTû®XŽÃ€¿~É<è1Ùf•iêÈ7}Ú}Ê|~_1 Ãé|YøìN|#CeLXÁ&´P½&ÌLõP¥]õú;âæríôš8Q‘n.¯›ÅÌ÷™X´Í·œŒéÊ!ðNu2Z†P¬c¢¬#òïuN²ˆ“'1Cç¡ ¡ØÚ«tÚŸ¢#2œS&­„z’Yå’©BpýVÖâ½^¼EÈëÃGÐCÜÛØbô)´T=Tú°ªä:¡´‹´¹¥¯;cljø¦÷ýÿã­)©^)©´ä9ç+p_c7[1D°U#¹aUø¹T1È%EQh¬N>µYï…L{èî ý1À’ÉÖR2Ù žÜ? êÓQ„DèT…#™Lö”8¡¨"!𸍿œî »@D%YÏåiGò¼3ƒ}Â}M&ÑY®Ìì5\ÞM&“ ©kDR+®d+i2ñé%Û1±½^ɼ5%›*Ã3‘äùâÂÂɼEU¸Ø8¡É'Æ"ƒ§b<2,ª©A×c²ó0ÌG!]‰ .™¼ñÅ,9¯JÊ—”w)]RUJœ”+—¶µú~þ±Q(¥,ÝÛþK®&‡¸’™P¯’™¦Òeåàê”»9ˆ§”ôµšŠR[kÙÖ–%“™C„'i‚ -NŠÑÁ;“``r^RºÚ¡U%„ïÐ3IÙŽ‡¤z¨s¤Œ-#ubi)=|ÈíR¦>$QH%óC܂ԋ,z¤üƒ‚_È=?ÅG0¦‚Ñ£äýCîwWÝÃX‡È>¦/G&FÎ!va‚U <# -˜à•‘µŒÑ[ÚÁh-õÓ‹äêÆEëâ¢EqÀ?øyÁ9s¬¢;8š¢9Øúˆ"upv¢¸úƒ&a¼›e/'IJäÞÝãË!ßúZAmÔ]D·(´#–ždß*-<¼æ( }ŠŽÌ*á34؆:r(ËÔfb´ëHï¤ÏgÊúG*¥²Îç#+艢Åè‘Þã¿GrO°]Y^ˆpŠˆP¦È ¨ÒQs_ÑIîBC3bÒ]€$\­»²\…êЗå¤÷— Ñ9½@R‰sMOâAÂfâkJ™œNùµüÀ.t9Ì3¶äé.Æ‹A*s4ì±] "?Êéu!ve¤õž1þS§…rÀ í|+Ï0n† Jök †®Î…’NGmc`!J¢<…")à`­è 9>…æÕM4´\N!T …K936;¡ZöJBIšq°'D_L{l‰g<¡|Y˜Íˆó„ÌÐÃ>έ'$$3cbº™žÐ´†‡g&º¸Gñe£„ >ìí!s¬é¦9H«XšB£”3øŠ)tQ+<„¹DïS›Ž<]žÄJà׺κQ!ÎOÛ¥9>¡ª¢-¡ÈÜZ¥‰!ž+Ž2â•<3¨ðN™øV4E•¢E‰8Wš{¥A`Ò¶ØØ(®_A7Ò>ög= }NÃÂÓ/‚ÌÙw { T¼› •Ì@赸ë7a˜©ðBõ@ ¦°øÄPfˆ&óa@QŸXŠI€SîÒà¶ð»pð3œX)6E †ìô¦ÍUIÄàHL†h¾ƒ«½Yú!Û<”UNN¦ÕZ@h€<D£P—#SÑ/1¾|N÷u¾ÁV½eˆ³ÉÁpøÂ6Ú¤‘-óàôa\¬ÚÇéô¯476½(0úè⾘ͽµ* ^Þc}£äC9ñçìVo -Š7·P¥~¬+®Ë2Ú2›TSên)¼[4S½-&Û°4mÞzGÂmÀî”7[L2Ñõ%ĈáبL š ›0ÇÔ*_›IÜ-åØ)”®1ii*¶&E9FFèÆPW«)}pÏE58­°î¸£æQæ5Õ§‰ÎµÅ«¦IÂá‚ûåz]LT¤)®jp-ÜÛ‹NÒGùð‹Š’›Åñ·Á›@Ì´ç¹ã¬GYæ&¼É¬¾º°³B‚âW¢ÛªÀkÀ%Ê*$\š‘‡Ü(/‰;/½¨{!`$ïì#h`Ü!³¢´´2¾ûTðK„=«œéeÛ7T9‘Dw–•½è‘åò}Hw/âÆú¥ÎÀ‰‰E¸õ2¾üÊÌÔö~¹C Ñ “Bmx[s9 <—Ѳþý[T¿®âÆ êØÇ6]mR<"T Í=:Y8UZÙsðâsßP©ŠÜx mõfWpË(w_ôsµ7c±¸ªÁõ`+'Nd'&îðy„mµhþÀ¡çPÑ*,!ݰÊc”G!àØð=ï‚u#5l %Ï–n|úÆâ>žÀ…‰äH“ÁÑ#£ïZ‘Ϙš8^y”Ð$bc6±{4~µV…O=j#v#5§Ñ•ù¬¶N>Ó0ˆþ¬ö–¢¥às¬!|ßzˆBu§QåÔx/¬÷³Xæ¾pòÝÿAH{ \!ìàû‡;—ð&â? @œš —¿ø’ì;¾j@¤KCGÔ`€?œ.¬lãÐâ0”‰“aÁû›ä¤sTuÅoéV»<(+[w°£û¸‹œ¼w'"lº¿wl„?k²x9:ŽàÓ>`²Yé¢ÄÇñ¼Š°CLÄ|¸wUá@r²¿Ý[Œ¾ÿK—“Èo–Æ1ɱM>¿ÕGäåAæ× UŸ@%±Rö€¢Eµï¥ÀÎR>åsæê&=Û‰D»üƒí0£¶áÒ¢‹Øanoy4Xßb3l, ‚Ç©‡99\ -Å!KùåDìšÞ݉ìwé„‘¥2»à]!ÊâýG¹„ÝbÕ]Õ:žGÔçB'¦gß¾LrÇ&ÆhhYôŸìú˜ÛÄô¢›ò_%ÈeßC‰Êf†Hq -N©‘ -¶qaP!¯Ê¸î8gtõƒN5Òp4xì`©&XJKñ¡ÀÛùô×)tâq4 ãmÊW³¬˜A:´žŠ"AYf²P Ù¯†Èœ:ÍÐZÖÊ2¼R'vÊAˆ]˜êqŠä]6s–]½ï)µŒßcŠS´ÐB„¢¤€^FÒNº­1˪Ébhl:ŠÂÃF¼Á°3ñN%H™¼|¯…4>N*+Ãþ>õ‚~â¡ `0—¡Ó`†ÏLPX YÏ·|ê½<Ô™‡wý‰*,ýv¼™Y3Zñ’Äw R/\žvµu ñòAnøœ²?’ ½ÿ#Çe½bÞ3Žìbj>A^ñ-C]a0ÄÊßJ}?· -5u1Cãøî¹—õ.a²>ˆ—SࣉªµõíûGÖÉS#PÎá‰Æ¦N‡˜Ëáå;®ªZq”l±{ˆ8÷¨sˆŒ³°ÆÑ8ʼ,m¬©$Þ8¢¡ª.áJÕ´R PÇ3m SO¡+ŽìAqJl:( <Ͱƒ‹/sƒ¸BW ­Í=àІú{È©ý!ë2©{‘"6Ô4ü[øm÷UKŽD…¨’ô†•áÎBÃZÐ(ÙÆ'œùÉÜ«ð“tüØGŠFx­r4.¼T¸¨ÙÙÅ^¿Í’˜¬È+‹jð³s@,¯¿À©½¯ÜM5(ŽJdÕ Q±QÔ`Û­ÜdC‰AÁ$Yñ¦= bæ¦Dq âvPØZG…Ü>ú®­ô¬0û@IWdë.];Eð‘Pôg½´X·¯h|±‰›¹:MÀö6Ö©„]¬N# # ÏÚCsCåq0´–’eŠvÜÔ’· ÊÞÌÝ/Zn‡':VzÕË–ô¥ å˘£øáKn©MĸrÍÃráßBmê[n·k Ñ<ÐÜNAæXà[_.;•^BöÃÅ%ЀÁØ -ëðóWºa}©AtØLB -k|J-©ã-È:rl± ÅüùÆÐÿ³ï•xt!GŸ¦†:sÆñ—|ù'}0’#šñÈ·]’æ ¢öræ©7Šòâ‹!º ^A÷”óŠÞ;XÜ–å?´7.SÒUpŒ­¾òaÙš¦¿ -Ý„A¾ý˜VMë;\ñÎGÉœå«ÚÂlù¹‚PeXû*Ð!§ú‘ZÝP4‚âŽ_ - L4»2Þ—¹Y½ËÚŒ/KV ^ø¨„s¬=‹}þ˜X«),mü‘uëT3’ǸWG¨hR -Á]õU·ú¢\a´ž‚Ýê›L”jªËЦZÂJßÚztÀ:E®Ê¥çU‰jªÌ_ú÷tIÚ8Ô©rŸTæï©ŽÀÍ**t÷4º@ÕàxŠWdœZgžk€SU³…öLýÞhúI@Ìy)îC ƒÖj•ªª$žÄ˜TÒΩӌS>pÔ¥ŸX$B%ŒaÁí -æ:Ô Ô6j»Õ›ÆèOh‹ðʼB>zä'Ðð‰ò¥'<ëy²¹ÏÞ ÛLÀ”êÔå¼%Q­¦0>œnjÌuÓ@VöM¿O”@ß1Ôt÷™Îi_VÔ2ù,•’®(ðUà~ ÷Yš‘¦<.²hùÖly¨g6ÌI)•ùQM–é=$`ª(jm”ÔTêÊ$!à‘, -Ó~xû¤.* $Ĩs š"<ê–mÉ£€ÐUnÊÓJlzœ´¯¼éQʲœf炯Ô•þÍdY°è88~þ$9IQçt:ãkH+í¶·IèŒF:$İÛD•~1øùN`»ç{+H}z?¾Ÿ@‘hî ”I¨ÿÕm÷ôÜÁ(§è®ƒ„òvè'FÌÆè< DjQíØPF$Ë{Y6"s½2Ì,¶Rçºçñ¶,ΠEH½Ò.|Ÿyý ð,„œkY3Ñ_¼CŸ€Zo|0šV2o±ò†|í °°.«„y>Û˜n¸ô ùx}‰éÄßXü¾®5‹bŒfÕ -@­|Æ÷À¢¾Ò°9g·%^æ·xþ;ëœTOõ=à;?"“V9;Œ5à -̸h„Ç¢Eì¼ sÞJ[a¨Ó0¹Ñê%¢uÁ*â¿æÄöüŠU0†|i|0×lkæ4¾¤ c³% ©YÆÖÅ’5‡±_ -•¸OíJg×Ã.óQÀøÄW¤i\?$Ø×“…¾ÖJ¢Æ:µr‰†ž4òŠ +oи9ãíú­í3°3€øÆ8ÿ˜4CV8Ö‹d AŽ˜Yâ[5• õZ¥£X;쥤„1d=½'žÝ²Ç0Cœ9„ ß§ÔâY†_ôAùY´YýÙá ¤ÊLXP’ÍòÑ¥¸+曕¿42€?žUž®:W\´,ÄA°šø0}8¢—ÇVMñåßh“0x€œfEl alnNüéÿ–@í;ViIãCÕ3 îç’Ãq–QÀ`€ìÇpW›jGVÒÊÂàTX¯cÕןÁrdê I]F”ê¦nŠ:ÔÊ€lê`Óýµ…5JµNßVT÷ú“•Ø¿*ÝNcI‹“gä!&7?ØR¶¾5ÝGÃyÉd£XÈ.Æ\5Ge‘…MÐ8Ñ“–ZŸMÃ{‡ÌMÁ~Óq]£´ ²ª¡—šºS!4 Þ£kª™cçk€®N¯.Òa!{‡Àwl±¿¦É¾ ¯ÖèªÎê=È%òЇ¸h ÙFªM@4°2]4Ã91ùäÁy?©±ü;†ïAcü>S™dÛõk}`ÁæüïKÖYÔÒÔehuô%49´70Óðhà•:XåHTk~㢡 -qIwÉ·’‘øÔ~=8GeðWæk<‰ßɆhÿÔ†^­ÞèR2ãb£ŠÔ }€]Õ>¤RŒù1]Pk Ó=Ïi D÷þ¢–‹?aÀìâŽ!r7Ò‘`<>aÝçå*rŒý5R„F.ëð†É¥ÂãG¯·ãwÍ'ªŸSnÆ¾Š¬Ý\ø¯í™ãÚ QàG{­“ec?BFF>(˜%º@ã‘PZ*óX†³ú ÝÜ5@ IA–`¤éÔ¸pQ´&f ±ëÂ\Ê‹T²tRÌÿ„ ˜ë¾| ŒoN9÷ ;˜tü—˜³LKT -cR -#Š–™ç‚ÅŒØÂ…;aiÿ-Ts'"j.™y˜bTo’jðÏ‘» Gsˆ«Ö¶B|„S„†›àrcOý`¥|RUIëÀ[ Ãâã®b¢öB@#$Þ%„¥M.1.Y±†n-`EÌäj°7O¦xü“+ ¢Œ‡¼Ó5œ;¡>¹xÎ*lð%l³ç—0†ÖÖ<-ÒæÈg„»Z‘™Õù%*r¬ºl^&3F„諜‚7ŸjâÇmÐ@= )ÿ]fmJ×Å&^¬µ‚Ò{¤s½Ê2à$7r&ÿ¯â}=”‚Ä%ø¼ƒ -–jMí‡)÷áëû÷ò©¥?ñiÿ †yÄ ÊZÃźªò¬˜\ŒVá¯bn/Š ,QœH;2£úþœ þ-§^׺ÈoØ,"¡à¢zÈoíÂÏ$ØY3ý©¨ÊúP!ö?"Ýð'Ñ ~F§3b"Aöêê”j¦Lñ¾çTö(ö¦þ¦È¥»_ÆàHA($h" bšfÚK}jº’ -ÇÈ÷«}-ÃjæMØ·Ô©–ynžÔðjˆÐ¤øÑP¸z¡/Àëg¦¤Ìs*rÚµY,TcGÐUˆ›zKbš(ßXßT°¢xµ€¤ñõPéÃÞ½$Â…ØÉé”Ót`ØC4:>.²¾ã|nKÝ—ÁC÷ ¸Ü$#è¬L!ìÄG•ÕdÚü €†¶…óm8Ñ?ÎûÓ€žÛ‰^œÅL8  -Öˆ\Cÿ·Ê|‹i›§z|ôžR“ÿFÉÂ8U]oPƒ\@ÏEäUOinAgª³˜ò­l謌ðXœñoûŒ¡u gø\Àëæc®z5Ã_¦ -ð.öEL -#L, ®(ü‰G9XÆz¢\BA,4?*a„ltKD «ÄÍž»½ÑÚi3laÁ 7 Ád©|•,BhqìŠï (‡H C7†—¬Šy¼$¿âÅ¡6¶®:HÌPOÿ»Yÿ8@o@ˆ­úX`°V2z•ç+b8TܯŠ{è-ÎUc›ƒ»WÊ=+sÜy|DB’¶yf2õ‰ÉÙF{\—q¬?^¬Sƒ¡W¾[·OúP93ÑP›ÊºUÏb>øXtü”Gl²¼Ð;”Ÿµú… £õ^Ã#X’«BoCkÞÖ -Z„”æd¶Ÿnþ¥tF{ j]Qöz~†>:ãuþ^ŸÈLþ•JŒ|Ü„š0N€CÑc£ñÊ«u¶oËgËSÆx}½ÎȺqpJåÃÿ˜ðÿ޹§8 r„Í*'oæõDw-z‹íºôÇÝ­ºáÓÆKšÇ(ƱCu«¤‰ã@ÎqÉuÜÎ2dp¯ vaâ´¢ÇFÏJ%‘ã×UCÉb¦ß.E„Ä{wt³Óxmž‚²4NàÆr`ë?c1òZ­D†+ö1Êbw{(:ÃPZm¿}ì–O4}Xæ/ -=@l…ë#&í!æâÆøˆ¤÷!F?²ð53~чæÌò^i䄳ù˜©·u‡9Wk:šœ&ÁȘXŠóžTX¬ÿ19¡^§Ë®Áz:í¸âqøó4Å™ºBÙåi5x‰cÀ¥*[LD¦µÌ “ç¡BˆraìN \×¾NKŒZSžÀidùˆtjíh¥r´:LJ±ˆ‘ìˈ^ßc=ä‹§ÄãvÇ@Ö‡§1öâ ž;ðXm:ÍÒýFÏó¡YiYÁ¯ªxÇ]SôUÚ,°ÒwÁ÷7Õiÿ ëΟXOþRpž°Ž(— '3B{0‘ô_¾ás­¡±ï¬xà.ðc{u/µ5“JÔ;õ¸ÔöæÓG£ fUwœ$¬Þ1°^¸òE,Š6¾Š»„bp…ÄPô›RõÄ ¸µ\u[Ì[¬F©ð»Ãjˆx'ÖW¯UÂ\¡Ž—·éEÜÙ~¦³TÕ?=™A3˜(l¡ŒúO/àq,üÙs(ߟÚíÏœò™#¬”açŒðnoR¯lô“tù9=ê‡ü\N@‹ÀÖ‰èF†~.2RTËb/Í/uaðˆÍvt?<ù¡Bðhs-Ø?gv -fö±¸cÝäS Y˜ÿ/‘ÄRq ,Á–܆t!žEˆ‰Àáo ƒ1­E”êR,€©Õ¦’ÊÝý±á„õ²¸lóq³“ùù@¥Ø¬€¨J£˳,¦ÏÁÀϱ.Qt`ËÆ>aÉdÓózì„Àñêò”q”ïŠEüy‡2†Õî’ Ò$6!‰7%‚ö‡¦è: }¢PÈ“`aBÙ§ÜâÄA…Ú碌#[<Þ‚¡]™Å:´86¢Ï ó°Â -úØýÈl”u3‡ªÚb¶ï÷½ŒRHÓ ©¡Ž¨ÒËœ–_Ðã0â*Œs.B×ÄHçM‚â-£·éÓ†:šÌ…Í'°ÄòsO“¹„º˜Ñp:"N¼]ÚI‹ŒƒeIø¥'¦A.ª†dß•ä6?fôƒÏpЉ†æí„ôø3¯¾úþ5¾=oóSQY›ËûÏdÀ€B£®Î]l÷+¶mOhÚcx·®ìøó£}€½é+µI Mz4pòôNâjÑ<È~ë#zž(Ìn·`i7T ² -r ̯ =¶MˆÙ¿;rM!üxVM#ËCIÿž‡Bzø"EÊ’pã‚Þ¸G§ÇBç`Fg -Ñmju`£È'‡¤ÎY™‡çÉcó‹xjÅómHsúf©Þ‚£¥%{ÏúŒ6vh»¨ØŽÍpÅçÆ —„Î9"´(ý)ØÔ ÁÎ.gœq”®b¥£êg½‚1®Vú–d‡ !©.ðîýÃ|>´Yt_©Tm"›’ce -) -LŸ…¤XO_Ð.¦ÜÍ))œ&VŽÄümFVþßþÝžx2Ã+Ž×­‰Õ?¬N3ÈÀ ÕõuH =ž]ÿY»Š»aðnÁêïf¯É¿éûÿÝ)€iÏO„²[È"²©ºîèNýBQë(Ö6 -jcß…c2Ûà,æÁJhÿM'¶ý¾8•Ñ¥•n[ÍÕ±ðGÍmoõÚhˆîhªcÝòÚ~õ!d¤ ¹[ÄÝ`Å?€M΋½Vqæd?îeïôôþ×@γR³öô/8øLyÂ&¼©Æ#æ Ž5‘wT¥MV­RpméN-¸PKxt¼Y°ËØ„#p„´ÎK"{èæ#ÚAf9 A¸íÅ>Q"fæpC?à‡ö7 -ÊVžbbÕxo£¡„!}£† Ôº¾pÝ;¯«/kÀ!dÏ\¢ ú¦I׿¯um)hÿzL´`… üU°¢_e±“S#Þ‡g¹k³¸Ð,Óò¸]hÕΘ¶ºçvC‡ÅÍþ!&­iã¿ê´Ž›@Œ(Ržº–Øî`ÒËÚ½±Ž5Äj!PÄ3âÙâ…grÈe:·¨´ zsñüo¦Ypîs†¨¿à'fОJV.¨ÚAöÕ°oz)’ø¢%M:^ú€IúÊhd¨×ÁÁtC v'‹¶ÖE:zü“ž˜Ÿ5Œ­áÊw,þ+u…Ù|ã|Ý7°†´©µa/7z·ƒ—ûþïy»ZøiÑ,=ª©é½À²×‰b=p(*üZQ^¥„Zû“eŠÌù /jTп`Â=;ư5{³/Âj/ˆ{‹:â[qþjµÒêO=CÞ—…н‚ Rª*›…fçòù4è÷ÐÊs?¥ö)Û±K¯Æ07SÎq?Äq€Õ±’ÅàÞÊÆÉUr€ýÑZoCKœ§DkÖR -N:¬ØÐ#á­Õ 5¥aŸ‡a½Ö&¸6ýM þD±¼±o"íØ‰ªœ)œ`'hÍüÚMö,MåËìÖ Ð-Ç7W4íѶ:þp/+ý·Šëö už«Õ’¶Øn?:‡ÐÏ £,VTõ.AJ8*ë tXÓGqT§–"c?È8í 9áƒ>hpJ$™TEfK˜À¿4ç°?4óDY.ï^ ÁJ½u„X›âQÿ8ëûØÍ!ퟷ­ÆÈfË’Ô*æ:¨ea‚$œÕÊ]j²’©>”-ôÃÿ¿R½F34Û­JFl+D¹½ä<‰xÚη0—´NÃÝÑòãå&£Ü[ަå -¥ -"Þ`¹ÊVaú¸r¬œaï%&ñßÑs†‰éÓÓÔ‰l¦2uq7ìA N=˜ÔÚ…X«sïÉP‰O¢3Ëù$7Ÿ@ÕŠªxR«õ¦ M¸÷ôÕÏ«Òúºtsí__!)–Ž£OêŸg(›Ÿ,žDz¶~™wx¨¨‹Ê'Š húu5¾WPèÅ8ÛšгíÂÞ°{‡ît¼.…4à3’jâÁVh²†êÈl$Á¯½½Bx`¢¸-þªó¨r=€Ò|žO®×¦7ÁŠ6|Ú™Ugývõ0ÄЇ¿B™zu<ŒW ŸõüöcÈ>Rñsuâ‚3ædŒ„­ŠñÒYu÷‰ÆŸø¯ýdÔwK©¢Hô¬ uŠ Xpnþ/þ¥<òcu³Üt†ûœY=L®Îò`·viÄ` „% w|Á -Nï´ ø ÙE<ÄÝôk1´„{ù)ã«?(7w›’lßSAÙ›ÊúËÅûÑÄ`ºg6gw£½DÚ*(A'}vþS€U˜ü†•zñå'9éß Ý:ªÑÿÃ#c¢hî_'ŸÑ¶ÏémÞjd˜èïf[Ãߦ+³—S×;\xÉñü< FnNÇ 9Gò©£Iî·’n* TÑåý„X'›¡l­Øf„eVùôdÖcç»\›˜+ Ý0W†æ2I Òt®#@,ÐÕœ(bØW–ñ§'%{ƒSªwXuU˪,Λ…fŒ~UèÄŒ]QÑ"ÚPãU¹1ûäõs<¦Ïã‚û®dntŒöè£3µÑ g¨F6ð¶%7÷»ù ÊŠš¼òJÝ”ª•*𲇠âØB³’$Ç4U P©ªQD~ñ”T1µQÙèÉó …ùƒèÍI4-#[Y´¼¾ƒèòÌ"R–®ˆÈ/¢ùÔ8H±8tc”27iåD`G i¨âSÈýŽ}èîÄmEUœG šk°—¹©ªÙš {°±Jÿ–FÜv†DÔåäÞ=;P§×Ü£% ‹Y@@‘²u ŸqgÇ%¼•9‘ð 䊾í¢ìñ.àfÞîVC,sæ&¸®„‡Cb"%V²+E -þþhÁ CŸ»P ö Ö‚âH/. Ãüã,×PûŒš¦Žaj‚ c ƒBÆ5.Näß ¸ÞAÉø·™‡eKBbv‚˜ Î+ýòöÇg C2ýŽ$›c/ÔÆw=†=ç•ÊÆ aKÏáŽ!p` -iÒ1æß µ(hÀ,`:å"to?:ÄíîK­¦•W,×i¤¨ß¹Ïþý©eQÎIÅž+±§/‚Okø†è±qê)¼­Ìò5óœ ŸX/­\K¢÷8'-•¤?é¥sõ]Öé/¼¦“B:±1oEÝÃH¨<þ#À‹²‹ ”œ«½ü~—Íæ²ª7HFŸ‹Æçɽ« {垪•7ñær:p"GÐnS¼IE7ûm £RTa8•`¨îëôè†3Àýb{ø.Pe.È–ŠŠ§Â­Hy¸ÙÄ%¾­€p@I¨iŽ$è·j¿EãoV=àÍ›¼f삨8'3”–Ìk´rBøâàÏjÊñÛÙúÉì´l˜EU×¼ŠÇÎiœ%ãq£s1Çl㌵å:ܘ…“áoÿ=vo‚ð?8ý¨)¶«×4§¯U?ú«|^†=YBA,~ØËת¤ŸüûF .¹;aR<ªûâ°²¸7B:GŽ’ùþ\‡¿»úéÇèá’7íc¾‡$\åõœÜ\&–IÑ5À…‹eÿ隸3õÜóç@ÿIë=s#=c¿çêN}´s'˜J ã`í£ƒ‹ºE8?<ÜãN‹=0ñôc<»é˜¢¥øÃÛ JGÃâüj¾~ -Ûši³\ŒV~Kà¨+£¹W¼®VÝ$î]@µå -ÛØš,vQà·´¨æÎ-/¦À×pQ\ˆ­ »D&óŠ¶Æ( Ù[¢7C~Ž{‰àâü›^6r[¢Ïfù)@&£@ÜZg¾„×-°ýètO`òÝŽö›Øgà%vbDF½—HF$s…ôÍ|I}Ó‘¢Þc#_R-}~Xt·Sã‰U)þ‹2z&7î©èºCµxÍ ÓýK>ÏÑó”F·†ÊlúF#'øw×E¥õõ±#¶‚üÌÅT*ê -;òy|ôKeÆüê B{=ˆ{Õ·÷SlˆugTPF.S‰ ÄhØ!$øëî;#Å/Ó­š¥}ÈQJ\Ö$ª©·ÜCëúj²ªf¢Af»É² -x#DrLÖØ— »s‰=:gb¦qç—%vl€n8Äb×ÿpëRꇷ*Ž{µmÓ…ê´ŽáÄE@{ ?U ûõŽ]¹ÒÝÉ——ô~R2ÕŸÑë›{l\¢ŠË 2ù'Åøj<.Š™'Tx\5%Z¡å[•oÀÚ©ö좵O.Ù~&ù>Xñ££m†QéÓáeÝE¬Ûg¨¡“áPvgjÍ}ZmhÎõ¾“øg{,’ ÓlH5+HÖ3è‡ýL0Ôfý`M™ÝRX ¢Ûsžé„¥tg ÃWŸŽzGÒ8q@št†Î/)+}q>ía>;jôž 2—£w5âO]€õtÉÿÒetA €G—_è*×çšØ¹Ø\4e.R].'U®›N®éÈåñ¸º×jq‰õpQéIÃeW‰}ë„ð©ƒc‹[¬Ô@v•¶rΖ£¦”g"¸ÌKl~M}Žrì_Sþ6Ñà“ö! ³¼âú -ºWVŽK… âÁoÍð+€(„>ä,‰éC›°[NÚrn—=É  ßRÎ~EЦ‡¬ïU¤¡öà}f½W—ßèW^ò>­Y¸âæ/¸vˆ{íhç n‚+4Ö½kÇ$‹«ëÓ(jé܃ òŒ;¸ Î_z ÀSÇ÷áä NHO—ÊBÛ)¬ƒoÀ™L²2L¸æô´ JNìžÿuÿ.OIXãcyñw²Ž»R*Ÿ5 ò{•‡e‹ëÕþ ÛK®< -µÇHÊý÷r>ìàÃmÜN¨$kú?`¬´2U—¬ ¸#&X 츚v¡í4wœÆFz¼D÷x09I½r‡\ú÷Y²˜óÖS¾ýnć¯ß8Óc374íܸö°‘æ¶nÆdN¶ jÈKAAïSš£¸I9Ë¿1.k×ï« í¬1Û)wGQ"ú:‹ã:Ô’åU½á—¤^»D£§&L?Ok.¦žBŸŸÃË"ž«áA_rnÈÍ{¯æ<$sŒÌOÕò•S(åÐ8ùY1ËAäÆ?ÝPò >$-Å8Ž…Æ,ÞæSQ·°ƒºõyHª·ÆþÙÑÚµn¬à« -HÈ· K׉Ip (?t…=!kÒMq H ò}—¡yÙh·”÷ ÊŽÁÄß+X„cþë¤Óï$@¬â‚‡õºîn%^øgqöµ°£u»U•lÄ6àœ>Þ„…§ÅÔŒØÙ`ÆÇ<ÚS0…~.ß‚ùZW•Ñ£> ŽÕV••£2í¦js£õËÉDŒ Îâá[Xm‘/S0u¦0DLkP¸ö3û_Ug$õçç£CÑ?p˜·{Çns$Q«$š`t…\Í,.hZbšÔZ»V 2 &”^MËβb—7È·øF‹%HŽúó~JwiÉUáïŸS∸[ì½ÞÆ" ™þ°¨&õž_ozÉAÏè)p_%@1P8#üÆZnÜ@,.^”\ ɯ&*Û€â)–¼Íe/Çǘ¹,þÎpº -9 îdBúÍÓaq´ž…ÐrBm/ll— ÏÕ]pñ0xšVW50γáœeÂì÷Êñ(+ÿBèWø€WlÒ+ è8‚UʯŒò¤×/c ÙU£\H×úÊt ׃ä*)¸NÅ~ÿ‘.ØZÏGάz¢5+jy™µxÕ Ö&b\&8 ·ÄŠ–,ÞP›¬ZƒÑCV/ȱñ¥+¼ÄK•hÕ†³ÑåzÅ3hp£uFõ6Ä“²²î•*µwÊé‹/2ÖEq€jðc0!b‘‚jŠÆøq8eÝZ`Z U–¨³iïͨYAZÂ`%¬ô`„Çì@šbh˜[ÌÑ¿¡62¸Tû'#ÑÑ“wÙÙîUgÑþuf÷²][eh;z¹×äêYÓâ)%@ÿdúµOòº; ²6+P÷® -=0¼©ØøÂʨ¯]ûH¿,¶Õ#É*½ ÕæÈOXÀ“{e7r%$±Áø*ïY¬WœÝnO‘Z­åªZ›kÁµXß}¿§e¥Þ•­Öm_|¶µMp¡T‚>s—M¹pce\×(Ž%‡¤ÁeE¼>Åv@%PÈÛÓ×Ôgo›§ý+G&6ºÔ"Žo¸ck„ù¢/Ø ;˜É|g\:‘h]†&.@±Å$Z†ZÐa±pe€ü îó¡‘òæÚ€>ÛeŽc`…˾ ³%=B•ÖHò›œrÕLº[¡•0c@±QȧB— œà-*Â¥€ÄGøsJà' O©²ú=;©b2ÇcoèEÎúÓÒËâp†ïfßy¦cVß8‡ÔçV]+€Y­ôêȃçJ‚Ès—ïkÞc¢+>2’"rQþ¡ TœÓ&x A}€r,ã”B%h¯ÄY¬XELÜ„ìãÄfk-kí_¿Ì8\8ÁÉ”ˆŒÀL‡\DܪJ—„èT5UȼތvñwîµGùg,ðÂæ+š8ÑÆŽf.U¯­¢9¶{SÔV…Þ1·raà7Îd’ýì°ê a®ºÞÝÇ-ÈþÓj®‘ U‚é a{&òÍù$ÛXضvk†šoü×^׋גäÚPÀèsrB’Ú%èè7kAÊ‹ˆ+¥’ -¯D‚ÂL¸Î_Oô3þ ƒþk½ÉÓ(ôQ+Í%‰ôá¢jÞÖc¢&x¶¦~–ŸØ뵟$øAˆý^{GÔ©ãù]UGÈíóÆÙ Ö[oŒO´q¹`é{뿟¯ õIdøÉ÷‰__eÇÝ;e±â¹éðö¬’\3œ#†íàîRÓœùšàŸîÝRùÄ (&Œ†x”m€Ò.EÑ0èoâëÍ7I¶ ¬ÿ胔kp@Uc5ó$<–œ½üŸÅÑÇf)à Œ èŒw‡›[‚~7Ÿú˜{ß ëi%ªÂfº,M&]š[É+f¯›B–RçLA-ã8·9G§¡ò)=ÇÁMÛYC‘Þ˜+Óoñ81.1^½qÿ®9JËœ2LÓµ²ç¨Z±[ƒ+VwîpwÏ?[Ì–ÐÓŒ!oü—p<©ÁÆ÷’²l"óÚ ÿnÅæFvXHöA± íÂòrµ¶à$¹ˆª.Q09øLC¤„Ls4EºùäD®ÿçÍ ÿOL•h^~’¡Òó…;$é^DšîÛ…}ßÎ’møö×£` »²vzµÚÿNÁ´Ø‰RA Ræ1ôI=2J#·3,Ïhc$iÛWs¸Þ® -hST—˜0|L‡—³ÓÅ À·äYtgíí ׂ lÛ0$&1Îi9ª¼[ÜHoFxXÉaA›ôyÃ’èHÿ?h„-øamúgå&‹ÎþL‹ç§ùù££eøª*ê*UP €ÀBÇÑ}@3<_yŒ”2%™R ¢gîY¨ƒ±H2A"ô*ꌎj'¶ºH©B'F—©2D¬s‰q.íTiê¢ÉĨ6~3Ÿ aËåãº_RE£T•CUUÁ¤2¯ð,ÃScñ„ËÚf[ÔX³162ºE?/CóEÙq¬%5• CA2‹MIU½^â*Љ<õÉã‘Æe¾Æô‹Ä÷Dæb;Äá' -6‡¦ê•ÂÈȈT¨a¼Ï” œÞWôÒÇ„~Á‡ºÇ0gÂg3žÏD q I8Õ04J`½d%"ü&“a„ê7“a&LM­^sU”:hÃß7ܾoâ•\OÊM„ЊñVÓì ª˜ ZE]§Úíƪ·‰ø‰ñHm‘Yˆ TÉ9ë Ç,Q6ÝfÙBH<ª*'Nu`•¤js,Ê¡FgݰuJÈÕÇÚUf±ª†R”«e -&!Sò‹NT³àŽ81 õyÚ…¿%”ß?Œ‹³ïŸ3Èß™xÚì11Ÿ˜Íª"l65jˆñHˆ!ˆDcCÐÝ2á32¡¢[곑úÌ• ù#ȃœ¢ä|§´¢y , -ššV4A14 a¬^ÕûOL%QŽ™â<6±OÕætÂ4BñÚžô";uÿÙõ™cù1y½˜Ä¾XL<ì-›"™†G3ÖÐ#ýp8Ž'T‡dúðUÑè­ìã’Æ•¸ž><¯Óh#øpt—bð^ðá¨èætò9¯r}t^2cÝ)Jlºµ<ÑˉKÄ¿Ç1ßüšÃacfû¼Æ·"¥1ýÊßÔ6bTÅÈ625³¢óX(dø²&³7c&s¤b"ŸÆÌ”©ØBkBKúк<´Z-9…Ö…øqÉ<Ó@T’P„’P0”J «PåJ§&&1Š@U ®Y-¸ÈàšK‚ë"vŒøÛb¼IG«ÄêňWÔÐtDEÑVÞQUS1%'eCfÕ‹$ê«Õ?“9q´˜gE­’‘ùDu^\Ûûìļ¢-!b±~±£˜â¿ÿݦ~Ý󋸢?‘êFÞU ®UOÆžC9^Œ0LèmK% -,;e‰:”B5MŠ`Þl½`:°UN|X ©0¤RCÅÊÒLNˆÉBHR!J(I Á3*Žçá’·u:¬Œsp(¸ó ú• !oÆåeç_hœï -¿HE ‰_)‰¡V Y©i¢j0¹FÅägZ¤`r#ã6RˆŒÑPYD-NEµ"Ú0¡£Z$R0LH÷…²Ê×LÒØœ¬IuQ¡ÈÊm¾¸'+;Rc'—ª5BÖê¤ʨèà´BÉèkœÝT© ƒR$MD£)Ϩ¤2â²T!åä /C)“e§B² 2D9íÕI±9 -ÁuîÌÃ°ŠŠ8óÆÂCóšÏÂ𤓪sD"†îO…3‹ö™‡¦kÝŠÿίRñ—ÝA¢o“Ú2ZGãÈCu5$¾Ä²0²™Pœ1rq]¦»ØQÕ¹ær™$ØàüžÂ½( 9´„›Ø‘(yØõU4RDpD'z12¶yÃo?7ä×ÂRú]6ð+Í.vy6^ÄA ×\Ê­=ø­d­­)íÕuaÊÙúZvYgÓÉ£ª!)êMJ‰+fÑsùõ¥ï_£PÙ´/J=TFU¾&„Ér‘ˆ¹²^7~ÅLéäÞ_¯Wh÷·cÅãC´ÿ™ºDf¡¾BÙ¯™¿¨¦(Jô×DEXWŠ9ÍÐ_û -º©ë¡}Š‚²‹‡<¶W\«Ü›H\¿&Â9;s;F¬¨Ep E{ YëHp­ctÚ{P‡—ØË ‹*Ä£¹ô©s$­7ƒLËÿY|Á -œ™xwF~ˆÂiSêÑî ‘P³µ3ÕµµyŠ%¤¥ºÚ.ZVb,jaÓŒJ<ãÄjß|ò¶ÓO‰ƒåÁŠrÜ­¡x°3­øŒTMxf+ŽÜ;û™Ä;M/z5BƒD 4¾tef,2þ•Ž/ÕÒLá#U>²)û‚$GOMK2ÈÑœ¦²$ÕX©5Ðø±FJˆb¤'E¹—š¹MmõüÌ“KIY!*âèV=º©FN³¿„&B&°FvÑÍä]²G ‘XA -ÚxÔéD@E - -%P(JüëM ‰\&™ÿ‘#E14žúeFl(yˆŠ`AªÕ"—‰B&¸Æ -Sœ¶BB«EDDŸh5™Jw†žÏ”!(|†3¼…hE«° -«WX8ÈvÝ.Ó®’EhºX ,"B‚Âa„ÅP8ÃJVÊ!LÃV ‚Ö‡—Æœ Ã3ÐE V 4{ÂȪÁ# ^°‰³à¸J3H–D„ó4ÎN3œEV‚´ÕX¨†)k#´@m –+ ,$ó"Ô|•¡®CH_HÖê'\a/q)ì»XäÂ˱þw8ÂθJg8òpÓí—§†„¸ãñJ'”H­ÂEĬ Õ†„¶&Zh[–Ú–BÚ¨'¸5á%©‡jÙÔ^>”ÃðñN…“Uá®%QEš-Ñœ9Šé:—^9h$²r*61­ZˆLŒ"³QL 9[UoÔ*|VSü´õWG]³qŠh¦rv€€ -LœÀ>=ø¨žEâ€0 8À@…EX¯T'ÄÀi¶È©z‘yˆc‚TèæàgÓJÈí@ €"p€@ˆ0h@…Pa:›0u’NWP#È=D¨é¸>ÏN…»¢Xb êĪâI$žÏœv8†¨Jd*†eƪ1ÖŽ“RKT·!-;‘ÍínOKBHšeó¬ÔP7g´¨.ŬÈÝ*VCø/>¦…¼dÈK†TÐCŠŠ/ÝÅ‹ ¥HÂá$鋚D £6 ‘Å:,©QU*†çJSBu4²3Ò¨‚«…+F®‘˜b%ž«äšê—Ì5×h“Q6›†ß’n\M…TÇOi·4(83KÍgWŠis+“’MrU y†Ld×tä³6vóO=19Ñȼˆ¡!Ḛ́öܸ9ÅKÞ -ƒÖ=L]1¨ÊW>Ù)CÊÄ4C}cmFA -e†Ã‰æÂóÍgþ—?ÿü›˜œÕìͬ~;H¢c*ϸ¤«æsŒJ£”ò$!œ+¬xq/‚çx -«¤*ö\öyÜi²Ê°¾xLºñËâ¿‘?Á¸÷ÎãSsþôfHæ˜$sF)Ý”èŒn®HŘZ‡($¾Lñ8ƒ,ÄôòqÖ˜q ªª×”QçÈ*0¸ršeÂzt¬EQ¯ Dšõ µñŠ£˜’tV× ¤ÃSƒPHd) ±!k? -/‹äÔ2ß¶!½‘JïTK©TI‰K ‘*,""á,Ó¡F‘âx•)t¬Z9úUµ×DyAÆÉXZ<1U¡*r™¤&i°Žnüª)Ÿ€úËÆ+6v…+\ó.ÄU/aUƒš~(£EÉ<]£EÈWŒhR‹Ò:˜‡ÖNëÏJÄ5šW -v+kføµ1ª²{u:Â̼©O-§ÂžßʳyDD5GJ3E¸J»Õ®ÎÈ´U¤Ê%ÕÕ´‡k›‘`izÚ1‹$6±k&ñ·u!Ï -ËŒÛ,–½Hj$¼nøØSŠdw‹ÔCˆöɢò‹¸Æ².+šu阾’·¡m\QNã'*øw_ä’i•Xè Ö¢¤¯EÑŒ š!‘xÃ51 -Km¢6(´›¤Õ_¿dª±Ú%nÂÜô÷{~Ó}V!ÑQL‚\uÃ닼Ä7"ö,õX*¾8DÁJ?T©Ì§ˆDWd-¨I–Q>!‹ÄT.—ÏBbù;zŒXºµj&8¿©1‹©ËBòQy-²¿ÄPª(J‰° HÄ’9£:ÉÂ’©©¤@"AäØx!‰YTË‹âÃöôñFÕˆk1™ìlP>c'ò޵K*¯˜±º©š_s·æçIâç##…ç¡Rß±Å9½L‹ ÜÜKä©·e³)e‚£Ÿ«à„h8œó6ÝÜécœˆÑe„2¥·z^­ꨭÂâhÛCÑž’¸V)±+Yyß¾š”ª\Tc½³y›0^|ŠŸr=ÎP^Ô”Ë#©\­¨\–M‚Ø!¬ªµH!¤þJ>Vï3®»Š®øJdJþ°g6K˜/×h§‚}›LèŠØE3ãLìšÃg&i´@Fnš†Y².eªb#]¤Fžèï26$J¿g«E8B$ÿŽqá ó¯(ÊÈõ -<ÅQ–é£&Ñtmå… -ò$2­‚!±KåFlPhð/’º‘š I.ˆÎ×#÷ê¡ ìe¸dtpmî…éSR#-æâôµÒ6­«4ºh—T K·‘>¼ •"… e¨I¥4V¤&Å”!±9N<¡( #h!–ŽHC\­Ú®¶ZSáÕ j;0u O< ~ë29¼í *¸ nÇÒ´^BÛ®¯úÑR(VV|ðkL¶ƒèÏ`Y¾7ç0Ö£Èèy¬ 4$Ô*%L«'Кªk£—„Yå?\LÜWú^×þÚÁ= -ÝX¸Xʕ냷Æ*¼SˆubýÔ'xj± -m´¢„¡b]xÅMŒ¶2¦ŒN'ë£fx4ØQ»$HLT¢ßX"ü†3¼¨£›XøCÄ ª^µ¡‡ª( -U®âT0UyΩS¬fj‚ƒ_d?87•—4¸ÜßÕ3¸¨ìš±¥,õ²Ô.Q’j‰ç4«eV`±k™R¬Zh†fHŽÀjy~X™fpU­åÝQwUÝ!Š‹*Š -–Wpñ!ž1e(˜Èk " -“„µ$\xºÉaÈ9ñä÷Š Äˆp!òö(—L/õD";´iBP‹ÁA´,)5¡fÅWõÂ:} 9ÍO.ê‰ 4$*Pd ‚‡“†dø0b<ÜžaøŒâ!Oq‡dC#|èp’#Ÿ ›Ï*a ŸÃ͘¤2%,Ep²^—)‘BBÝl̓>‹3ȯti ¢øŒHîX±‘W -rDÀ»`)Ä̰¾d„3âÀ -ä:-…k:'td¤2lO![¬ÔÜ -g… ‘rØÁSz8ãNðTJ–¸ŽðᢄnòúO}>E™?|†ÃSfXN¨a#„œÀ†Çh MàHì Ä„è!áŒ'EAÂØ&ŽL?gN -}Ä÷C- ÙÕ`€3C$ - -CD<9ˆHÄN â)ˆÆBi¨µ/"MŠÈ Qì („= #[>lÂa1^÷¬x[WgXdTx+è–t2C‹­)J]¨>l-¸8.^^3+rïU+~Šì =TqÆTňETÌ&تǢ>¡ÑA"hf  -#dj £Ñ -ìð™è¤ÂÄ#P´€¢üœ°nÔ͵Y /POD¼´/Ø0óN®0+=ІþHˆvà’C°¤Œí`æ¢m(Œ d;@’¡ìÐ/¡,·ƒO G v`²¾@f;0Ë, ÉDÃ)d+L}Æ¥Œ’„©êCŠN=÷ -<#êŠdM(2;Åv ‹¢PœˆhqVÊ8Þ [V¤n 9°-yj;xƒ´%AÚ¶ƒyKïÞ͊·ZìjbÂt}[H¨~1Õ†!¢!E R%…§ M!Š ˆ‰Ëk ƒÈ?í€"-‘z‚HÅA8ÔF¡Glƒ¥ÐFóðhÍ=Xé;ïp S•0cW¥0Ä0!Áqe24ÒŠi2y\0жK£¼ )ét·b„p9 #JZ"Óí€(H0²šš+x§ÿL ‡’‘0Â×Eèì BÕf$B½"ÔKráH,%õ*Ã5 EBŠØÁ<˜&Ôgd¦ˆz2K´qk”A¼ÂsYºÔCN€¶3vFÿæ~ZžHŠÓÛ7‰¼ˆƒQk;45»E?ƒOE)JÞp{0Ù™žaÚ‡åÊöc‚ÏBnŒyö;üç±QtÂÿñ² ÌNc,Ó»‰EåÄ ù£¼lÊî¦DèO»ÆóJ9ˆ¤%Æà)ŽÐ&µ } M\UíÏøÈƒªy®û·(wªµ¶ÞÖ}갇NJ­Íe¶Î¸D¬.Y|±C‹ÏÊãô4YÍ×»¨;J›-Øüàùºè"fß°±;télŸ#bÛ‘¦¨GP”:¼&†äÛyéšÚ[ö×O…`{,<àh»JÞâG¾X°Ì–P1@Éñå¾Nüi„lb -Žþ{S ­ÎãÒ(a˜Œ—¤?´ïídCb[’çß›T±Y2ä`»«0ÞlY½žÓ$‚ýw‡Z,h²Hâ!hÂá/Œ7ŽFü´R¨½5ÞµG&΄P‘ì74§ª‰wzUd쀀XÈbI”eco(!OM/’ji | Ö4†©I.JdHn`õh20X¼`GÞô–.N„Ìv=g>´ zqÖa“Sâ‹©x†Û¶NËÔ½D³!œ‰9 ¶Œ‚Œ<"¬Tc{nx=\HÜþ—)1_ÆÔ¯¯CÊft¥XâBw$è ØWàÀ_R ÚÈ$¯Ðt&‡âÙ5úÉÔe‘ÍòÔ•RÐM¬*{4:Éõ»7qFäMÿ¦ÀÈ™ðs2`W—4e¹öû¾ÇyŽZk,¡[/8 lõAéÜãÃõê̈_áâg®`Ö€Æ<«WŸK±l›‡àK‚Éa¡Úž Ø¿µeï¥{e’’—Ú?ÌÖÍÚ±=á\ÑiÐGÙØé;¢u“E6Ï",4¾K3‘ݵH³ûé)™|t´TJJ–¦¢×¬¸â7ùE6T«ü·ûóc¯®æ-ŠÑE{mÜe¾ØÑ¿¨8H¢š±²u£û“³ÀMذ¢Þ\F(w“Û·˜°D®¡ášXO[œS$îM8§hù;?¬•¸ûwàXdˆ2ÿ6=A3³égÖ(eµ¤äsc^ñ<?’‰ÀÅ׎e¢Î±n5»¾õò½6p¼èîÀÃ?˜!½­geÉ !éxk{‹L‚Ü“Í0J“Î}9GXl½ 3Þ@jáÉ3†¹ ymñcÁÈ@›Ž¢Xa»–ƒßé‰g$­eÕ¹ÂT£7Jᣵ)7ˆ-’­8×-4¹ÓßbÀ^Üïf^®þMÕ˜²Â’¥Îœa¼: 0«¨‘óð‘§’4ž%2j¤ÉSq´Ï€Û±b[$_®Ê z˜Ý]7°H¹A_Ã9”hÙÔÖ(4ëÐrßTHç~"vƤ¦ÌèÂÝ™v½+¢Û´&s@ôšÄÄÔP>GÍÁ$›¬á¾—ÚâÈð‚ ZóAÐ$Ô-íºÍȇ8ÈI'„ÞBΨåy8÷ðîHe' .À2 -žë‹UBQ–Y`Ñ`âRÎA ¢¸Ù7¡É| öuk±¬0öÏÑÂë:Dgßd¡9/ùñ€È¡‘ƒ¯¨ µ³,‹JH•0gîÝPn $Yi»'öX3ñs -J…}ò…t²&{iÃŽêÌlÊ{˜yæ1gœ±&“àè xç†ÐáZàþ¦ª?U:ÎXsóCxscf.ÐüZ°<2 -ô/P/èÔ‡A½fZ^# Ï^)›†¯5ž2ÏóðÝO¦uh´]j®þ§pÎÝ\ËÆ! R‡)ð¶¢ \EŽÍN±€ùY WBó1Ø6ánÆ0I¥­çØ[¸¨q"~ ‰†O*Éðï¬ÝTùÐÿ¿ºA²^ÕìrÃÚ1"¡3ë"†JÁðu†fòŸPÏð†xX†ÅuÚæw¥leðšŽ^EVú€ØËX“·ˆPˆ7â:ÛèÍ܉€"Mìz$ûÜ“ìB¼è?5yÿDd¡B¶¼³â/;å…u:ÿ[Í®vªhü:d<x§¼,z2±„ˆénºz0”(™Vq™o¢ÌR˜Du8.µÒ$M`ŠËBÅuz} oVnÖT(:ÙD–v“#óÔk>Î4Ux–1`#öä0FèÈÑ ÔtìG×Ô_óm¾8 À®ð§¬¼5H(,Ľi A,xBLŽYøl:ÃŨ$ÿkßoÞ½Š -tM–ÈNxù ʘ…h$jÔd¹löÎÅfpomaã¼.{¼SÚBuŒ±»“N¾æjÑA-àø¸0S~Óv" ò¸v¦±ë0¦ýƒ´Øì¤+üŒj N‘8/@¸çÉ@ò¼ÿÍEÑtüËuø)ì&ÑæsAâ;5!WE2`²ùF“¢vÃB5}}7‰ðÁ‡L`"„>“%.”9Z*ÁÅÈxw(†s7«UßßA‰¥k êúÜ+H½5²ЍqÎb‰=¸äÛ ý^Ò¹;7jýåÜx¦ýRÈ[[ õ¡/öRL.÷oA÷zig°þeè‚·5m¡§;pÕ1•îÝVѹdËs|$ Íш ¦Ý°IFoÆü:æˆ4¾ÆY5³çûøµàÙâ6|2‡œùDm Řk;à -þ©,™$ lƒÖa:9)Ã+o>Nâ^ôƒR¿ÄUqÈqóñ~Þó¤àáe@-à:/¦ôK oX¦Œ’òïÚŽ¡0 %tø ºï[Ó‡³´àw'Š9EOHغžûUëêÚþ¡Ö¦óRø:E„NP ¤k>ßÒ7jb&fø½,µP°o®Øobïþ3†÷pnáš _ဎ€&ä*Çê!4Kqì4“ytëp³ZyÈ€^´aµË(’ÄaÓØE*edð@úÌì—?ÙìÀ‹~‹¸a„…93"¡}ãbhÖŒwú.ŽòL+ÎÆRøÕµZá>qABG˜è Q{á¹ðïfÐgO[Ãx@ÛŠÞò‹zï+¾,h -j:_—X†!y]%½-Dƒ4ÎÜFgÃ]k2€C˜ôwÙeH¥Râ[Ä%‹*ðYéˆÑ}h~Ô‰ùv šƒìö‰pV§*ÆU "µ3Í -ˆÏ©³A>Ô¥êýE¢»Ø‹7´ù½/Ïc†%Œ•Ë¿€œ>ÇÉÈŸÊ^…+­Z‡ÿÏZ?CQêßÜ > 8Š-ø03œÛCî5Õ§YÁwV(JpìDƒõú'¥ø<&á{5¥ó×°5Ê®‹£em~KFŒ³ùÅ*V°:þ>ópýúÛ–¼@¾¨]Q©›–>cêÏÀvXIìÉö÷$c2uDY$sË‹‚ð9×ôEùEô—Œƒ e*€XÌ Øw,ó[º@^8eŃÌÃuìe;“b©"ýU]DìwN¾ã¹Ó‘2j”r~\¬ 0¶~ìï•ØŸ&Ûkd¬N~¸Ü%†L¼á5[=fr•ÁnŸùFE¬î¦‚ ´ƒH¸ßjF˜e—®§1t“½7ì)‡F7Wë*³LvÑb9šJäð«[è!­áæwÄ<%\À:^=“¦ž/ûŠºyÖhûØ ’”¶D…#×_:*jn.ÞjgÌ¡©ÂáFËÍ.… v -¬°/‡FM§Î‡À3¯`ûžð¤G{.DÝVAo\ÌC`´±ÿmÿ>ƒÌØ®ÆT;™ýo±Íà4WÙ¤fˆ¥ª®)⩯qè"&aL¥çøZÚm;νß_\¶s_ïT²2Iб‚C¸µ‚Ѭæóÿ~¬”F¤`2Òˆ‹gõ¤Uª »Å•‘fh#þ…ð­áJ¶8£Ï2ä—ÉG+—¨J ÏÝŽAëôxFÍ‹{wDQµ›.Üpt¯ëN;ÏÃeÔ¡ì`O¢\¤ %ÝñF-eòáb¢é±×tR„T‹Z7}FXOÖG¬€ÖaQíi¶ž¯Í×±"<r~N³½˜sRÀËšÆxTa²æK ýq¡‚ yCÔ[PA}À,ïJˆC½¬^ª¡×ONþÕÍ?GÓa²Ú´ÍvOâQí+yÖ•‘m“øi¹Ö•*¢Ê•Ïù%ÃØ®uBm¥PÎ.P‹>!Ô¥‚ þíRq…œþe~CÎSÅ¿Þ^é.UÛñ‡rdtöԣ<WÄÁwù7æ×ú[¼P`zÔ Ì¥h¦‘ûpj„ìT8°ì|M¨Ð3Âúƒ Ùø½þÿùŠL¢í9hä^åuq¼É»tù±Rm˜\·l X_✄ ŸQ›«ÞŒÓ±VÜË0ϲ>·¸Sd!ó“#£õ5÷׺® Zz•Ƥ7ƒÄíK!B MÜj÷prS‡Rµ¤ÚâUŸÛNF[ .)(`Ï÷’Ö#õ&ƒ¡Zñ(÷KjÛ—ò&%,idE2‚1LßJ",,%¿s­‚šQ¬ Qoå­U¶Ù|9ẇ¹ëOX¹û”Tr ®êM"Ü“aEY -1W¢…Ôò„…L‹u÷}Šàíø‰v»£eö(ð\4†Ü®«ªlµ°ËyÄáwÀ‹¢e>ÙAnÀTí„ þÓ@ýn5t(¥’Í7kójPÄ÷ ¦Y®õîi/¯Ó Óþ—Av"ªã=¢›vaG—pŠß+TO˽½8Õ²±)Ãéò=t8â ªƒÀ^«”z)[KÆ÷9÷M”y!6­¸Q<ëxo´Þ+I%q:ž¤”ly%©{ 0hvm2вS¾jC ú·¶™]açשjÈQÑ6Éëî¤Ü`/üûS|êw %>=sÁRáVx¼£+|+CQÏFÐ_µ, }"°E’t‡Ø8›á$q5¡&\ )8  ´€*6qDr·iÈÍ >Ê$›ýHÛôcõ@›BrfŽT‘ ò¸!ÒöñeaÌ®Ha²¡' é#›´¶Y 7+ZÀ/‡zœp+;9;Ó®Cù Ý¡ä* -Ÿ`jbl8¼ó‹E7ÁfoäG -ÔÔTJÏÐÚšyÇ´rFÖàŽEôŠr¯X¶7¼>ý¯Ý„Ö^ëÐI‘ž!14äÂ#Üwè’ÍB‚S`‚€>ÂÉEõŠf‹EòÏR¹Õ9]ÝKJÅTtÚ€õó§f(\ŽŽpíʇˆ$Ø¡cnêÄ.u&¦…@¬6 µ‰P;óX¦B`Â)@… Ö^r{8®˜"ù¸Ÿ˜ êMñ.]úi»}²‡ì'ð"ßþªëñ8SYÛ°&/-Cho9ô†J`frK¦!©×!Öª4Ñ 9Mo3/m¨ý±ÒI_¦Hï†è -ѲBG3…$Á$ÔÒø² t>Ë«\°ÐµqhWáÏÃà·É·sA¬"^Úô¸E€ÚZ¬òt}!g­¨Üê4Éäk ¡êýÞT—e¹æê_—kýSËñê6R •O*1Ö~ÛŽËJî«D§L»‰TsìÕêƒlÙáèö -ª^³Ø>ÒXÅ9¡@ØUy$Ãe.ÕpÈ6ŽúÉé±@KcêH ÇnpSÙ*X«ûTÌ–‹·ƒÕu›Ø4¢LÒ~l³É´òÉUxS?L2=ƒMJn†c,îÝW›ùY@NÝÃ+¼Žm5…†>é?ÙTÓ„¨ý¥Ó’—9Ñ 2ö 2*Ò«('„ÚsÌjþý£pô¥9n9›Ê‚¢¢VýW¤[`Ñ{¾ò Gâ)ž«ÂÞ4ùäÃÊ 0ß-Z){UFcJíÏ(N”±p‚KûE4¡²V„`ÅH~Ñ6Â0šÜLó0 Å‹À6GºW0BÅ‹'¤oØÍßq)2oé [†ùèˬaµnÒòÔQ3¶? GØ.ë>?‚¹kèPz@¬ÊË&d3Í‘``ó ÒŽ-6õWîiâ®.å•ð“bqô>p˜ sŒýb¤Iˆ³Ëî‚/ö1Ü©ÓA)ÿ•*ö¹åôºa0B¸ -´Iš©ô]{¶fí3-kì -Âð0øÙ€Ãi­&J±Ër–éè±0–dHŒøNÒµc d€¶EûûóòDÝfæ ( §€ `ÎÓ| ¨#ÑUY1xp:ˆCk8’èæ‰YÕÀhÞìŽð3½]˜Õ³Å;`Ãìz^CÆØ0%‘¼Q¶2\cço‰“ÔØÝd•Ÿû2›ÿ0ÕÚ1¼qüܧÃOÞ¸Ùyú ÍÛU˜(;>-.wWýˆÒÙz3HÇ8Ñ÷è’eâ}ỦËáôˆ†kL´ÁIœfæ u$”X]*óx ¶˜®ËDvéøÆvíðjñ8GSV…mcN0kéÚRJ¤á*Ö´Œ¥`‡âá1Ö‹ÓçÖ{~ÐÓɧòËù!#‘1œ¯@RÅU÷LzÇT‚ô©íS„Eà~×ýƒ,P:Jº˜¥2rÁ˜B²¬×»©ÿ}QÁ¹ -)ï‡é«3T—e­µE-Â*žâïÓø=WL¸u‚¹EsÒ¡c[¦"ºãYÜdãSÞ}üÚËœï_Mȱ³oP‡*ÅxY[ "*C^ê~B(ðãúìÊs+ŒÔ ú{ä+á§`;ó-E¬ÊjY Ï'kãïœMŒ×ÕëîZ5‚@ÝΜ"á3½ü÷î÷§y%É%e|Ns{sýP4•øÃM)7e×Â¥ôB«äii© ™zAOÚ@/çL£døáTpãaÁߦ×QºñÊ÷[†(¶”ù†%šPÓé'ª¡+û¾ÀÅ!¼2d² •m¾âö÷­«s¾Ÿ¾Ò^êô -Est—™ŠÚð“KÑäò$ÍzÖóOlG> êÊ&sl.ÃT£áü¾,îüö¸R÷hR¾µeרvó:µ}jãF%Â:j!â¢f&G²ùÖùíéŒi'EÚ>•…· -»Š-Mê? -+Ì×»ѹ#ÊQoœ ÿÞv  àÜ4‚Dâ« ­äÔÝ.‹eb;SÀ‹ÂJuÁ{z¥¹|*ÝÆO¹™€9À¤-|úÏF$ä«©Kf{(dî³rZ3 dñ{Òíh@[)‰ÎÅs­…{D¢9(ÃÆŸ'm‹  ’h\v›¾ç5WÉ“ðe<ÁÌ25·ù³´SD,ôÞ¢$ƒg`4"Ûÿ¸Ejº‚TËGJx-€=?JÜ(6ø%䜩/²Ê瑞= üs–QÂx¤ó¹)AÐ\óvðŸvPÕL¸$åZüÁìQBûóz’ wX®üg IÒŠ ²ž—æÎ‘ÍWáLg˜"¿Ðd¦CŠÜVIþ1˜ ´„ýQI"Z •8 㺺›&k[ ã‰!¸F¥×›V#õ+öR+}Èà{O¿ƒßN¨›½IEBÁ5¨ò@>êUÝö¬*0Ã&øEh“ -áªâbe­¦ð¹ q³S†¾ÝF³“Hs>h"Ä)ýç± ÁR}@·Õ ¿ÞÛÔI˜±ÙYÑ“ñZ'“$ ¾Œ…d_ʆ°ðF ã:^ˆŸ³Šª.O*ŽÊœüŠûBérb#Üò`mûˆXrÔŸPð^ÈÀͪN;ë'†hXtzAî“æ—dþp¢~гaÞÔ°¡9\\åØÌTsp3JòôÁ ¤ò@ÆSðŠc °Á' µ](b¹a$/ÿ«JµB$³šg€ÜÍúdÒ˘¡Šdá0}ðèºF´Š_øÄðýØw®O¶ÑRø(°ŠåZ3œïŽå>β\f1ç`ãZ Ъªr)þf7OÚV¢{¸Ì/Ø…D6!Šž.„éúï®Sc) ;‚è3$™íc¡®ÿ¾×ù - –’­r™ dH´ze]àë#WCþ@0(Š>j†¥]h2`þ”|×à«*€ûKGÉ?Ä,} °ÃH„<2•¾¼¼‚Cž Ÿ›ïiÓUç2$"þ+{ƒK¯÷ò¡0œó+ˆ‡0²-°1ÇBôÑ´‹üJ«Ã'²ù, Á+¬2V -"!?«æóIhžôX5ïÚÒŠ´þÿJÉ9×µ`±¿ò0<Ê*8Ã,œBvGÝü±ØCV‹ ÷Û1.¢Îxï®et„GÚ=Yª„2ËvH‘kZÕIøL‡+­u¦ÀR LA$ʘ‹7*/I‡ŠeIô®>@îX¡ãØ.dLu˜ÿ¬ŒíóX:%¥Íù & 0ÅÙ¦Z’§¡?L@Csƒ?¥IØðï ²­ Ïê\l/Ôaö$lIß*¸°L -0‡Òp¤ vô"8ÀÐJkzbÜ Ø솬jùfз— CÀ¤“4okn2ý™vÄd®^†h§åÓ[Mª¸ÐG)9«½‰.±:Ç×k÷ÝÇ•9)~"‡Öqm.µM…£wÉ¸ÃÆÂ]0 -Òedýˆ e/<‹o‚YIdž³­”n·pJð¼¦y¶pH~Ò[LƒQM†´ÿAwa‡¸$RÄž9À°®ñx/ì—µŠš?ñ-é„a©'+oC\z‘ÇÀB-¾YëéÌ7¨“–ýTW«„½«ÃñÄoÒ5„ýãYŽœî'4ŠÜ¿XKIï 3ƒQìù”|Ùà³ðÐÂv9+ï܈oîP}9N¿N_é˜ÁÕ:<9“§äooÒ#÷®,ט,{w;¯ö™öANUÀlÆC˜6úþ?aí>r(’yeýtáCØB ÙOâ(A3¨‡FsK2ÒÑŒ1Q`< ÑIÛøZ¶¬b¯]¯<ß)ÌøóC0j9Lè«A›˜‘ÇL "¯w¿!Ã(Ð\ì;ìåo,P³W¼Ô\5õá­S©tD™í‹ ÷)¾U™s¦ŠÄþ0˹ÃQ·²Lþ«ÔcLS4¨ÓâSç¢ãÄ6¯QÿÓó­;‚²CV¨Z¯[-Ÿµ:dßJ™à–‰ˆH‰nb%’ÓÈ…®í€ZÈZûE!FàÆ -·ðwѨτ”½³SÎ>6û™w ÓëÏøïO0cÐ…c£!ýDlâIÞ!á¤#~0BŒ µÝ8U‡\Š>MQù!¬"€Ð‚Ã0át’»â¼#h³ë=jñ畱¿ŸF,¼î*Á˜oæ‚¿P7)øÉ‘¢“4ùyõ`°Ÿ9¥>ï±ñš§z:ól9ÙôÔ¾:ÀLʱ@0øµI[¥ˆm¹‡z8ÆÀË à\èôeNã <üÓ¬¶–ò-kwØ2¹ÄcÅdõÛ0‰*¶.܇ÜíêÓÛÎN¡ŒBرBôâ,Øùúé1²ôDá³à̵½†çqêÕ:èY7 R•Ì|8z ;œ3zšæãjøOSrá1kU€ö9°~ãûùUŽ¢²ŠÈãÙcÜÅ´X àÚrºqß§æ+ Éd¸ëü…ú7PWê]T¶0•®²ñ©p’…)aSe#@ǾévLDs€z‚íZ¿š½€ip~^µa­«­^¦°N”úñíãRÒã;”<òOíþÛ]Íÿ/®°Ô¢¬ŠNÐ!<“)—Á/‡ð«ÃåTèci† Xeñÿ³„ºýéIûË -ö¸qgÏå.`ãwó–*t÷¸õŠä0U課D…b«ßV#X.·TaùÐ q^l¸_Fò½ª³qÿÿñ>Ëa‘j@¹“@ŸÃ-í$ÃÑá¡\ª•vÒê D³8Aì E;yV;\_'æ3†áæºwà44äW'Nã!*qy€½€Ôiêaï—=€q»‡Yñâh>H|«Ðé$â}À ç¬|ñ‡9þl:± 8z˜;€Xg ÀPP§ãØL þ‚˜îœ4p™1‘ïœIˆ¦b':¹·¡xŒqqöôìdN2=jÀfäÄE"òg"pÂQ„zqògE j‹/BCFh/œ|@#nllÄR G@êAð<Qœ¤ùüÂÉ_ȉO-n¥øø&éCâõnbu‘øHÄØÜ$¦$tÝ&âe1µÉ–“8–MÝu¡Ä0r)Â&­¨Ã)š‡+‘4ÊЫIÚ-q–šôÞ%Nj`B€LLN“„%üI“‹`ч0h"Å™虈¥‰PꚀg%h&éì™X®W99[™ø—NÄ›Lf‘ɱxí˜Ð“'N“d{b§˜°Ú'„iý'–Fò¤ô„¾š„R®LX>ÿ’Dñ'‹b65Šåoɧzúv *M¡# ©(Tr‰ßXŠ.ÃPÂpý0ú¶ä+ý]Kxs -qiI"£ŸQŒr–膊—d }TKÊc*°„-TqA†ê9â*Tàë±+ÁV¬øÛJ~gE&½VÐd%eàŠµ­¬ºH•ç)¤’;¿"üS’,d›‹Ã"k)™»X!ƒ$~ó1€AxàÍà‚lü¹ ^;,ˆ{ëc=iž ü¶Y%Hþû`q’ÈÒ~$hÙáØ~ÆtÈ -4£ý‘LYkÿøbŠ/îW œ¯WªÈP# ‹@B¢æÙH¤6F†@ZU@þ¦@~V=…d e ˜È÷’AY @˜MYÿ‚ ÿ¸õ$ i?žŽö†ñ:cÌ“IŠÙ?ÀàA àÙŒ£"ÇÎðÔ~ˆLÿÈ)†ÚÍäÀŠþ€VyY–BoBvm¦'d¬3·ú#dÛ ˜ü?Jž¥ŒÓb)!hïGW’ö#kÐËa’¨uå,BQAÈVõc] $SöOýðÉA?ZâAô—Ïdð4Ñ­Œwüh!ÂÅ;H ôÙûpKä>² §}ÐnI°PÈêcLEÔùiú¸À‡>ˆÝ ÎGí;ˆ\k&µò;÷åC®©ÉGëÀña >¼ºAÖÁ„.ÂBôlï±Ói÷XÈ=f°œËz"í±ƒ6\ÿA s!B¤ÇÝê§«–ôJ|“RÕ‘Ó£Œ_P>T'þ”MyÄŽkõäy´ MœÇòÞ™G8rf#xy@$!Ò*â&DdòèyjB^äxˆÖ¥ÆCé&DÿÄC_òð(rB¾ -Ým Ý&äsÀ£­êwx)ŽïÈB¢w€d½;ÄK«;NHsÇ–²a¸#ËìSÎ%¿äÛoB~ÔŽê¼ÏÇØ²##kìàN -‘›°£™B4Ê6½Ž -O!>®c”'$¡}»|=³ûÕ±ÛfÕÑë5uN!‹DS!‹;ˆ*„—éÎB²¥t|‚pšËw¢£C¹ûÐÍoÐ1dös4xé9|ÛýÕuŽ”Ÿ¬†8€¢esJÐ3”«UÈwÌñ¡…d¾ϽèµÅ¢ËÊ¡µ#åHS ùÝäñ–ä¨9Ü2*Žâ3㢱ãðn ‰ÂüÜZˆ0Aø¯çÇÈrr¡äç7lë8Dˆ:Ç@/e£Êùõ!30‚Oa""²C@©¢ŒâùØ8¾ƒH& Ák­2"óÖT‘‚ØðÄÜžYÎ%GR¬#PÁ‡C£«áØÐÀ‘Ùpl±y ÞŽš‘ˆ‚ÀqÀ Œ¿¡«}ßTÌ7b˜uo¬-ÔÑJä(F%²TÞg"IðÆŠ'rÆÝðEN¯ˆSä,sªWWçFF±"låÆ 7îj‘ÈàF͹ˆ*oÃîEòp?ÂÈ•RcdAÛ˜,#ɯ¨°OϲÚFˆ¦6m\É„;Q–à+³Â£lô0Gd$°Ø(zGÔ êe‚äyäîkXà#Ÿ¼\~ä™®ÑhÉazõFbÉwê¬Ám›îbJ!ðj¬wHò³yEUc²Õ¨ºDrËÔÐ]$¤òFò:ÔˆIf? J’d×i ’’€6©-ILc™$èK¥Íum’OJƒÕNòLÒ(ü$w(ùn4 †”pS’(ÑXB%1‡FªË;UIžAct4îx%ï~†™X’ÊgÌ6KÒ´–§Ö’èwÆù- ·Î¥KDs†myIHœ±º/9x3t–ÙŒ¤““6£Ï0™®fðXLžÑ 8¦™qB™¤Efœ1“ø0£*s&‚¥óŸ3éŒB“Ë.}iµe,PM²²Œ«káÊh›M„SâÛ$¢”qãM~“UPÆ7u“!PzÉøt'ñŠŒ!³"£.C†fr2˜ ƒÿ¨àÑ“yö1b á‘ÇÈ''B:ÆQÎI£“NÖŠÖIlÆXÅŒcåÇ‹ÙN³]UU Ÿ`(FªÈÀÄd;É?bä‹ 1•ÈjÄ_…Q ªa„ÜN´¼ð¶×F¨uB8aܦa`+ô`¸¤9 †Ëè$cÁXi*‚±:f`Ĭ“Fõ†O6©Ïè«¿Ð;:™ì¬Fã)ëDœöÅG˾@#_(4¿ßD'q†;ãŒNþ‚Ÿ±èDn½(4‘^¶o^x2'_±Pò"Ü*ñbãx‘~99å]s²Ç]06h]ìbs’¸º(B'§ ½²è"‰Ž.6X'§ú\;#kt2®¹Ý)ËEÜf‘‹É´•qQsB\X¬“ÿà‚bíäó·ÀùNH½ÅÂãI®‡¸ 'ƒ™pöéká‰ON¶•ë“/´ ~B-þþ“Ì×âI[ ó€¢mµÐ (¢¢…}ú‰ü³XQBr³=QB³í‹‚­,NÃ(‘&‹Oj”Ð,r:ÊlÇâÓGù˜R–2ó)ö*ŸKŠ¿Z#”²^X¨RÒž¼h)©‹z/Eä_¡Ð˜¾¯˜>SÎîò`SÞøDésÛœ•¥ˆ§âÛ€m»í‚® ÌS¦ã -’ŸrøV@QPá´¿C%Y­X\TbÑŠTF+J¢Y1e®>ø¥TΈȘÊý«¨êTž]9†*ç|m’¦ŠCV¡í®³ªLmU”«hVàd‚;gi•qRÅ|\%ªH®Å©Øz•ÈKÅÓÁÊ7©°3V.¬²r§¨è÷¬ì ´Òʨ@äZaõ)v·•,<Å9p%;§È’+ -š”® †ƒí -Kae€³L±„™ÂKk%•K1c_9Šð§e&Xà<Š› 2嵇¯± Ärû£è¥Xž·e,¯: £ MdÙÐ蚢JË3Šâ»²¤(n0KÐCQ.Í¢ÓPØp–¨ -Ѱå|‚{Å'E'dy‘¿>ñé´dØCJËõyÂÞi¹¾ñöð‡N‹‡í §´HÐNÄE‹¾ê„T´ÄC'vZÐ0LÅœÃÎzrJZÄ3øË‰\F~üùljNKL§±6 5µp0'ÎÄLÑ á§–{†µ<8Êä¿xÖÊÅ®0ÝÔ¢ ¸Ó²ºý£©e.™Ph\ANȈ¬¦ÈÁÕ"œBN¤€~ [-úº‰ xmb±›èFj¹³&<£–/Ô i¹p4±i™úLð–i&²1,Ø50odÂoª1‘cJê¡Ø˜kø3†ý4ÇpÏóÚ1yã‡e=&áûüÈÏUËOE~ÌÌöF¼…  õ¡5Eææç³™ióáÑ$NyÉÈ'8Ùƒ|XOI’áîr¤2J)ƒÐ[Sa"d™ÅòH[FfêáÄ.søg»VzÐõ—‘=8‡™0Îþ4;_™¹ÉƒÒ«ã¡!¤™wŠÝ­™Ë…NíÛÌ”ïÀúofÁ;À”Îxȱ·CµtFZí Ž;“Äìðå™û)Zî™W×Á^÷™à9|!€¦ ÕAOЦ:l,Ÿ'¡y·tÀš¿F‡J8B‡õ™áŒ=“’s¸}4›#ÍŒæð†Ò„_u–FZåਘ&)››&JNÙ·ˆ,ºâàsþi4¡¨±RØ‘š“¦†]8Ü£šˆƒÃcVMпZão`òÕ\ó `Ç:üqÛ& o8[kBì†ù[qnh=×èÅ ê*oC¯¹güåkîª X`s m(raóVוÙp@a#‡lðPlB‡ ¿cóôkP0Ù|u ì[ƒó²¹‘޳QŽ5̃6÷Vƒ²Yª!Ris›H4àÈÇÔÆ -ÔÀénüƵù¦•mHEÃÏm“m4ÌÝm àF›Ðà7ù^Onn¨{ÎÛv†zp#gXÇußfÈo7Š4ƒx“&3Ì$of>a$z³lì* ­ àKf_‚”á€t“Ýd8ÙoŽ$tÿ›g"ñ#pÎXFp´;†œÌaáe GNz‹!]¬°°†Ã]ï}8ôqf"»ÖÂ@ÅÑ’0ä,ŽJ“‡Û`}ƒÌ ­qË¥ãÀÿtg°_àXÛê 9¢æÂò‘o/TaräÔ bC9ùòÂ.2….³œ»`…—¾.¬ÅœÜt!èÌÑt.8¿ædmØ£ÀšS?ïVçÅæ¾/p½ÏAð‚NÌÛºC'Úl¡Áèص †R㵈J‡V-Ü3<ÓÂÏÓ -Äu´tœ§Nfa’Õ¹ž,(Å:Ž‚ïâQ,°t½Â‚"_'`aXØy÷ ->ÇÎç®Ùy–+A;gEYµ3¦f¶ƒ¥'KìvÜ4™3܉ƒú1wTÂU·I‘«`UHvª€¢ *Èk}*ì–;!– -«c£ÂÈ!Th+Üùë)ôåΧÀ2£)dœûR@Š­„b&…£PwÂ?Ò&é—焺sÔQ0E“Q€NQPAÕðBá×»srPPÎ;wÕ½óñ'Äqß9阞W=†ìMx°*‡rPPâ™Î xð4ºØl<$oôã¹Ì&´ŽäyëHy¤´–07æÑYjÙ<@eBêÎóÆÚy–“?lEôhá"=G4á éÉm£œ"X=b¼ÖƒÐýz$™"{>3á¶hOþg&´Úž7ï¸g»²{ð¨ö2¡í¿ŽÌ„â8¥ˆ¢@㣧G>gå&ô§ù¼ÛžÏŠ5Á}¢á5§§ÏÊšàÂú¤DnØç‰Ví³1îsŸÆ÷ù/üÈ— ?·§‡=³nå‡a®çÏKˆO?€cÂö“2¸îs?¥½„Dø³áXËŸ÷,õ‡è•°x‚U ëù'Í”P ÿцLùŸ”NÂLtTè ?‚GEI85:†mq€6 n% £"ìº2$´þ@‚Ÿ7 û-}hÝÏ]& -ýM¢®(eÌiÚ=ˆÅw„…‹é²‚ظw­¤-Œj\ž—½.8ÊnÚò{Â2Ïk„4íMiû­Sµ¶ô5¬ÜeŒgœ%ßkk5²›g¬HʹJ2k„È)êKq| ýf}5¡»reK1Bï:Òq‡&øì"´Èæò­‰íYCPPVÛ’Á!¥T×gÒÍxh^„#uÙ8R]ýsî¼WÆSž©¶0/ÿÕÊC^„î,8Dþi¯ȶ΋0ÃW…Ž£ý—ËâE€¥//y¦²‘2©”`:žZm@° ž]„ª±-=ZŽ[Gï"àÈž¨ áˆØdþ.‚º ”៪»‹ èõÝãnÐ,|̉Ӯ rÍ^…6SDN¢›ŠPE?ÐþT^°ZŸ”ÂCJ*/"}\Ux©&@µšÊ -,6¡^§”˔ڛ  "\<˜Š€Á‹Úd¤},ȱ.ª ‹Ö Ü7^ݵ‚‰¯@ÇXž§"@+¦ò T\r˜H-!LbœÂõ|q¶:$bëDQr5×Y,ä¸Þ>Xˆà¦­c<5d¨N.D vQÀB„§i$Ad=SóÄÁù#|(h²¥þœ‡P.yk`Ÿ@bWÈœL‘š‡ÂS3 "ÄX%ÎÊD¨vjäÈ47S -"ˆ&]YªNbåZ:a½4† ¯./ŽïÍC(}¢:¹Uû‡p*’Wj€ƒ#fgZYIÞ…0Æ/šW¹ãƱӔ`¦BÈ\tÑlº«”ZKLÏ\=j<·ä&);ádzf©1“¡–ƒ@,_µÇÕÆÆ¼¯ßå4\7¢ƒ°'V8ºÐép‰—0ɃŘ´ºccÖxÏáeyî@("ØÊUyv PI¤4r¢? m²ÑdOV*ÓhŽL@¯J®xaFq´'B¡CužE†B›—ÀÂÛ蘦]ãè º?ÇãÐ[‚kÂè¢E.N6ˆª¡ß`€†ø’œõááA5¸ÝEâ2žp2«˜YK¨šø@é\¶o³{ 8šÉ" “ôµ~©éo!(·Ôƒ¤“¡Î6a^2ÐOÐý;OÝèHçò/ç HuøÕ[ëÑH7aþ1<ýê %õÎïàÀ©xP¨ÕÈ¢,Ùàôc;2«Ž×#¡©yÀŽ)Õ.äC4®+ÿºÛ’dš¯¾äУ0’V(ŸfªèîAÿkÞИ6S.}or"ŸLPr@ãå8`—l’Ó)L×V1q`eë·ú_qMá MçZ†²~ì ÀADŸCCo÷{ƒd†CÕjü&Ùèîø^Kʪ¬q ‡Ñ§ÃTrƒ …Yw Påä"H• õ¼! Ù6óqW0ˆ´Á7\×øƒ:i÷b ø5C_0٠ų#D `tzþâH>­ØÚ¨óÉ´˜n5ÈøPæ~ˆ'5Ȉ^ê-4¢°i€Æ ÿÀ¾TÒ๰Ødáùn %ш٦ƒôPâ Áû׫¼¤ ïÕÎØÌ -^lO«l­pe¨™‡¡nœïžšF®ü¶€æ%ÍÈeP5MJH\x‰Š¹‹:$J!W2hÿòŒ%îd°”¯OíòÖܨÞ~½guÚ¸¬$Fbn$F O××Ä@DNk0v+^ð00ùþk•–­0hQ4½¯3¯0 ²dæîòZc aµ¦±œ0 Œc¹p ´ÞUÈ+¶Ã§_ ¢{¨¾!¾ÀB°Õ™êçÆ˜’^@µUÎT^p÷$[tJúuÓ”¬i‘˹àk<Þ£s•Tbg©7¿¸ÀÇ=Òôú7|´ò¼/ðƒÒŒ·iÈ«éþÓ’1àÄ ¢âgx*=áëlZtÃùôtºä{,X%Á(oek† †§Ï‹`ft}ÖsVyš<Úd×ã”;p°»m‹¬Êþ·Æd›üZs6*ú&A{…ã±+œá«„ŒTÁ‡¶+ôŠ»ÒAdÍs+$ìýçkz|–PA0™Àà³ûMD`\ -0û›ìæ)Kù’Ö_×ÃóêÀÓêÜ"ÈAÖ®~MÌákö¢üa•ô -þ”þg³hx¤  4·õú~m{÷O­Hhrä—Ji‘î ù©õ€‹~s™Ýiµæ£ÑƒÀz8.‡n‚Ä =ÓP8ÏÚhð0*ØË»¼$Æhs@¦yBJ@‹.®¶¶WÔ {ຠ<©šqwÀµpCê)âX‘,lÕл½ -rZrÑ–L;PÓ¡'iõ_ÒÑ6ë(:¢º¤ÐdŸwS\3b ±©(* 9 Ëzñ°¸éóp ¬fŠ%\èä7 ‡‘Ä0¼£³aÉÐ ¤–&Â%wq¥³ 8ªÛ¥¸v!B§*u¡~­Ô›Á¤å•཯'Ì¡\£ï} -Ñ é‹0^h4Ýr -7MôpvC'+jþÐÃ@(tÑY9azs`×Ëúu8qàá——1êØSŠ–²’„7€jGfx-™¤ù8÷ªÙæ{¯ù—"¡.´:ÜIžCÐ=:˜\Âßµƒn/þcÀ­£ð„Íœa$AæUðdÐâ‘äõ¸óµëG0’åð¥ `âíZÎï¼ÀÃsã´ÍlîÅxt®iÖ¬OVb˜›\OU©¶£T‰¥Ýƒ´üPV*Qâh"H]QK¤ª…VÀœ%û^a©Q(*U’bŽÇmž¦ÑýœÞ¤Åã¢j¡?u–W–3 C`ˆªOÀ$)‹¿É–O@£ñ\ˆYˆO€œ!ºP ¡‹Ó' R𬢣>èÃñÂå¹h^+$âuÉÃíðσ|Á4s¶ùB[°+~•KM€pÿY!ݤxM@‹w Ü…Ï×X…“Â?_°ò19,ôÎ…Z ¸!Uö$‚)[ ðÀ-¼uöËSÄ @™¤B`ááÀà&æ -dÚºH#`0œ˜+¨º°Äà¡HllOã+Œ€Ý¡¨œöÿY§l]·8ÖÚ -cX϶÷y*æ]ä×<¿@ü>â¡/.Ÿfùé:8Ð7“õJÉ?À*FCó_Ê >'Ä$ÅHICYðŒc]ÐÚüƒZ~¬¼,9'ÀÝ©»ãã¶ wŸŒénv&§(Þ˜2—•%E`p¥–ãÓ‡)Þ5@„Bóé@ˆ›²Ù>1Àó±YaÚ}>vbé"HX)Ë]H•_€XißÓa–ëœ2öxMS€(ö“ËšÓÀºuAá=Ì8íxÍ¿#·‘GŒ(%@<ç0ø¢W“*„ ’~Í;–GÉúL&4y€i Ø Áu”Yü…6CФÌöÖ~%àÄ4~FTȦ=¶nøêÇHRxx¢Rv²C‹mT%“àZ`åék@«”wAÞäìùÕü -A1ÚëÛ.»r•e»ÿ¹VÔ÷½HKx€Ë÷™ìœÅSدÿÌ_kZÑZ¦H"®aLÍà=ºñüæÃàý«‰e¬œ»Púù‹=MëXœÏÑØYÞÿ›n^) -ÒÊ`x•¨þ/Y¢sÔÄ—±âŽ3ÿ1•œù¿£ñ^QL͆þWÁÜ<—¸Á¡ûo_KÚ”ç*gìßUÞ¿œº‰Ó¿µj.ýÊóŸï/YTçŸ<ÖÝ®ÇÊÿúJ=ã_¼Q/щ…Þšÿæ?èžãJ﯒#êÊR¼¸ÿDõÒ G5…ö_¾P0ºƒÀ×hüV¦ìqmÊVÿŠmf:iºtLzÂ)z#à¥i4ôO÷¨B …œuþÍBù˜ÿàår·‡çÙû©j~üÿÑ–OªÅ¿¨£^¦ÖôTšiø—呱¢c&øË}ŒØݺ˜÷ý"=ažÿ‚9Kyÿ -M²Ì1)NÑýÖöslè~deeBEpá®Û´¦Æ¡aÊ­ýÛ×ñ4eO5û7DÆ?®˜©:Ä~¦´û °¥z9Áx×Ü (ë—Üq¥p‰íK§úm»AsŒÙi&PÿõþE±ë‡|ƒ Ü -”ß»I -›êniþ£ßÝcèWŽa̤è,‡tŸß—Œ¥„d'†Ì=B%K5ÿðKâYêp1KÆ@Òݳ%dùaŒ#(Ëò[Ü[Í:¡üº2rXýr|P~Þíɾ¦Žüœ».ó»'æ>~‚¿˜…Ä_ÀqÖø«nù©ñ§Tùh  Î,þp–ÆK·‘]Gü„'Ãq®ˆ~EªŠàõ¯†«šÃ%üïÊéÙ}ˆ”àwÀ{ëŠ$Î<€¿Œ{ÜW¿ï9dBßhß÷¯;ã4QX¯îóYE]=ò>Y•ižöñ±÷c}ûe§½qݱ÷ã>ž'Ä퟽®*Æ+Š{ÿ P 9ÞG¨aª³+`Î>Þ7–LsIYÞß¿T‚ÅvÕ¹"úiCŽ÷ Ba¦éÃJ¤´ 'HÕªÛ(å¢Ê´ûƒ¡!´ “À+WDti÷“=}ÑîoËë’§—nð0¬v¿‡Ë³CÓî³ä~gó¨ò&éë -íþ„¨ßÉPRÔµÐî/†Oe²Ô³ûƒ^|Ân :PvŸ¥„-„µ>½xKvŸÂ´ˆ_ŃžØy„(k¾…Ùã~™ ·Á·!™}ûµcul`­¶ÏNóóè+ÔÀk_vAWêÍhp¤G -ªšýöåÛQ¾ÖNdè’q·â ´’Ó;\ÙzüõÓìÛ%&g×_™kuSõTô­?ý2›s›dRŸ¿TÄË¢‚ võ¥ }¯Ä\¶ˆNÕ'¤ŒƒoÆ‹2,õ3ÃF•„úANªòÅÉ ›púœÛôRe,Ðá ¦÷¥¿–™Á{€Eá4é7®‡: ûlwô]OlÐaQb•ê§’ƒ]Zè.6ö­{%c Âp4W~ÑçOºt\ÏgKHÕÕuDâçüóK®nq´'QlYo> XPÃÒö“5?$Á‹eÍo^ä,ˆ¹fþÏ!¸S -óÖøiªí…U‰˜_ÂgvÝ :лüÇ!PD7#ËoVz¼y¹I-RùkP0aP~#¹&”d ´dRËNõ f©6ò·QU•„‘]D ùOKoö#ì=~J:›Š35¤±¬ëúchvTíÒøŒve6#dã+åô<¯7rêŠOÓŒ†Ý|¦EG¹F±‘ßú3XÄ7茉èhwÂhàÚý$ìƒ ,7WÑX´”p™½|¼‡Ö©ìßeŠ1ZjN”郚þ—Eöµ<‰-À_5%cï„9hµŠ²ogGì?X_ì|ÏúÔ2,„}4¡×ÑN°(ä¿þ˜]å€M½~}æ¶õúΑ`^ʙ߮ßò - 3îäúqô^õðT¶õ¦‚6XÊß›\Óú›Zu ss”õ>2¨ß¬7ìãåJüKâêÎX+U>kòª_€“S»yÕC -ï™ [©žŸ‘4BgÆ}íNýÍv3ƒASêyK1ïjÊÔˆQO!?ñ7LÑ’¯xPOêÕy³n—F;èé©XÃ#€UNo®]éRq  4ý’ã 7Mµâ–Ûñ¨Kè7G8š„kuTyö•ž}H2×zîhœôŸ¥(œ72‰ôµ!$aÔKvô—²Ê££½ÞFiy·²Tô×¼´ˆQ#UL!úˆU\Ð92b¢‚lÝúé3Ï}óSíA‹ïé l1Ð'’ñûy0ADËAÑŸÇÙ@Iê{Fú¼±Q6úê~9>Hµq¹±áp^¯ÍÒsÿ ÊØù?o²ÑÚ½%ÿàˆ,E  !.0ùGàå²P@hqi¿0ŒJKç ƒß镌ˆý6ñbÑ4rˆïÒõÌÚ½ÇÀ:û3T¯~¡ÍDZv2×2šzÒŠÛÁ> w¾>–ЗL ÷ ÷Ò³H–ëòt0ÊV¦‡Ž÷y˜Ø`ÉVõh©ÑÂ{M6.»ßùõ4ñF¤¨»z¹ýaaR°Bh¶ûGs»è fÙ]râ»·cS›ë®òf™ v/¦î4Éæ¬°XYßéNÁÚá`‘î«ò +æïKQ>åË ¶™éž¢«š;[E×XîEX*ˆ—ꎋÜqûò1ƒ"#K”q·ÆVYB)Ä îªÄŸ!⎥óÈ;÷’Ø…]œ¢ö«¬ïбü®;B ÖzÈíí[ _Á™l·o ôNÝÉí›7ði5¾ºmϪ‰|¨+Û+*Òv7´JÞÛüoz÷d» O#Út °ÝÔ#F‡PÆToíK»×ÔFÂÕnTvˆ%<ÂzÝpkÅ ~åDT³mTç/mEõ"+• êYmrø@ÔåÛðþåLwõ–ì NT,I[³D9¨[§Fýº9æ þÌ;åì §õÿr9¨¯8(syh¹œƒz»(EœÔûàà”4¹õ:£Üu“lf‘9¨â†u`‘4¾;×bÄê²ñ>½t›õp†ƒºvÚžÊ<¨;${ˆ›?Æ=tª§G è·×ÓÝw' -`dèëék‰>(POWÚyfñט~øÉä!öqz#ARM®¢Ȧ3…U…¦OGt+á&ãô?¦?[àw%=†î|ƒi2rð –~ Ž -X’±ì…!+ý}ä—V¢t›ç(ý¹T˜£tüf¥IÿfHÊ5†²ô%¯È"éÙiÑ(%"}¨sy?ü*é?:Oºúç!dGxI¼OˆBƒ|ewè®~î§8ŽäŒ £s¬lZtîø&êï2É0ŠÞ ÚÓÅ’îê ‰î&™¸„’]ƒèkV÷?êÛDÊ5úýV;®xMaY¡ŸP¡½Ê¥ i"tÅÐ@}e ïfз·T¥3z@Ð%A#Fu@¯,ú°Y5å?@Ža¿ÚǬŸ[RÊŒ§íÓ™}ÎÙ#îÞ$-­~Èç -r(ç±3[Ïö|³Q^È©|*CzþFÑWjXHž¯²w.o¯”Às‰;¦ÛNsC‚™í|ý•rÀ¿cë¼…à.å3Ú÷ãÆ{”5çêú[YµÝoDÎ3Ãöš/3ˆó -0ûæ@û}sX/Ê<èj7GÅZ»š©˜·Í7ØYé¼î=¸ÙœN*ÿž»HñoÍÿ¨xk®C³ÞTŠj¤F©9Ú£¯R±(5˜¤y¿AÆæŸÈ»] ¹©V‘peJ£}åH½2ëwáA7QÞÌçÊHÔè<¥Fs—¹¸^‘Mؼ0H‡3(Õ 0Ç0)W%sÇ!{ÞB9¢ÖÆÜ4º3ÆIÌ_¿† F6õ Ìwã7{2u] ÌÿreiëEÿËKýOéKðô/×·fœ¿ÿòHŒOÈó:gÿËa¬šHªò¿üUÖ¤”ëù4&'ýX9í_.Y÷¥yÿåÿÙXuûÕnüË1zª}fÚô‹Ÿù+ÖRú—o—¶-Ò!Ì]+’"q2a>c“0©¦M¥kaޏÁøG¤æóƒÊÖˆJh%Ñí;bói*ÇÉ2QY`1Ÿ/‡ AÌÅ@ zZ¾‹ïLbî?…çöˆyˆ|iý†ÃBÌ;É$2æ7»h…_Í2æXv„¸ïÉóœy¯ìœxÂ×CÆ|”©ìí>×%Ÿ1×p«Þ~c3‰cÆügö[¥7ªs.¸~ò¢ê{ÒYAÌ}ýgÆ -Üaƒ?ÌÏú6ÙŽówê¿Ô (Ä`N{̈èa,,Îá憶Öò$’r$± æõLËOoáÙ æ ‹èa¾ó+¬SO0Ÿ6FÈ$†2MÒæã+ ÿù†ùažaGBe†ç¾îa>Æ•Zöó™±‹ÌØ±ŸÁ<î.‰U$Ò æQŸT3˜‡y®QŸ‹sjŒøu»v5˜ÿH}âm¤1 -<ê$ Ãyú!ærdʘ“§ß¬†sŸ1ÏçO -ßyÎOãXSH1æ9±IS0æøÙ›}x3Ô„˜›ªG À 1áíØ[íFz0¿eúЇ°b‚óÁ OLêó,"†ÂÐËéØùH¶0“OdþDŠÐ -ƒÓò¬«"61ð(`¹’ê-_$‰,¿>æ%@_ê¾r¬k’ âÀsÐ,éV+O -]Šu¬rQ²5íqþç¨\“ÊjK¨!Ū,aMyŸ(w³KÜîÀŒ”g ¤žìj#Êi y©Œ•rÿäå’é›ÚÉI¯n¤½{ÂæÔ&o‘rºRÈäÕ~ 5žùWn¶äÀ?ûL³V2V)dÍÁ¤²ÿ$9C¥æÊN[þ@ò‡‚0⇰ëF®õéƒ ÐµDm‘–òrô½¢/ÚÀ$ò®€$ríéa= åøëÜ·< Ö+rØ›™j¦:ü“*ù`uÁ”’ăÿãrØ›t­}Üç¥^•°—VÙWÂIÏkÔH€&3Í~ñ›ÊåŽÕ„µv¼k&ºþÄ+è©t¼ŒÂºEE{ {irœ$nQQ1CLÀñhÂ>#p[~Ó¾Ób4d|™çç¡Øg䔯O]¯®–€‡3¾8R¨S•嘌OPá+Œñ5 ŠA Æ‹œñùoD˜†éÅÊ Üµºî4²]ü¼]× .ÎbQ×ÐâÌwó‰.c¢_qÙzz.ºAla+N–?«(W£-Oñ!ûp¶h -endstream endobj 21 0 obj <>stream -ËâGËêõpÓß;ÒÈ!Œ=:ˆ@߉°t¤î[~d‰z\Öç4åžî­L‚H’øÁ:FÏWwy®7â^H´¯ÖLäöÈÚIO‰¾ðŽA¯tB<.»Ôk}ºþá…{Ú–ײ”b÷½À ®{xhIË>fý¢†r9|Ëý,e%Ë…ÐÌ WŠÀªFð¬ $Ôco®»]*à $—RHØ¡¯—.åû†?ôÞëfJéÛ½x’Uœj^ì+ÜF÷)m ÛsÃ3…KçôF'm-–¾RÂ+Ãöø6æc›´ÙgAA8ûks òçÁëLoï&$µ< çT«xyO¬Yælgp3ó" ÐD§‚\v¯«Êž˜è;ÒRÅ/…ø´7œ»ñž‡rÅ%Áo6Žda@ÏÛ¡ïÜ¢sx'#ã½bà…#Ê7B™<ï™ó3wv?à”¨HZÚåà¼~-àÅŒ®º€Ùb3uªr„;ò<>‹Û;æŸuŸ…oö Ýý·\Å-ÿÞ¬|y±iÀ&@â^.c«°ÌðºÎ—XÆ7ÖïÑ\R¥—ŠJTó;]¸é•møÝV’‚rÉ{rtßß5Ž„îm±oúK1O}}õšo?¸ƒ¾ñ°¼Ã‚NÉhËå7u&8¾ ˆ…ãº@Wø6–iq|øÞ íÎ?:`“èÆeso¤’*Èc­Q©½'dÀZ \Ø[ÚSÎHîÕ²&FÌ`½1£Ÿ{¡Hmî§÷AîÈÅ?žòÞËþð¶ ‚TÁÉó&Sâµ²æ¹PfÞ @Ò4â\åM7¿e'ä QDr-Ä«’†,ÆûA\Œ6€Ñë œÞqt|ãÀìþO˜nO›ú»£’º±JŽWÕ»Q.×&Ìî^G4êuPãîS¢óY(?Y•„«6Ñ¥‘Fùh÷ÆÈäɉh7V -ò_s”ìžj«F€Ý‘­œ¼f‡[wˉRD\ÝnL¦ÔÜ]ꆗë -?0nª<è€!ƒ•toCÎÖ%XÖ%º/ÑJY7 ®õt¯¸sgR ]¦£ws_}$‰ò IeîÅ£då[î5`bé5ÊMtm•ÎAÑ,’äö¾ÊcóŽ:ÉL÷X69[ ?÷£ÃYÔé¥ÿ…ÍB*: -aLØKùŸ°ç1dâ4„=ØÀ"ŸFœp©Öc¿*ØòYNÀ,Øw ¢;Jì4°!Ú"s—‚Ï4Y§‡êÝÓçhœor} d#ç³òÔ‘üºQËñ‰b…MèkØÆMy™ïu¢ËàŒ½à¿k½NhŽDh4)ÈÜL¾yÝA]mØxñ:Ðû•Jw½ìcÉ+É ±ë¦0 åºvôÙtËæ' ë¶‚ ì#¼\ï]âö–F¼Žk¨{’A%cázFLŽ‚S×Ì·~¤áÌsk½~™‘'F]US['ƒB’ÿ‹­…‡¼\9¿ldXkȶø³ÙiÒ 3œ§ÅË:'›ñ>0Fþ©yÁÚ­,OtH€ñ«åÚqófÏB©U×å+kJÈG’ÊNW·p‚’ bã­ÞÏ=‡âmP­ße]Ìê ôP¦0{øauy­Ü:™š–ÕU7óü‚sÇ´`¬ºK\XþaÙ UmÅ]Ú»ŽÆìS֖͂¹ðÿ–ê"KÜ_ÉzóÑÅj2½è5ªE \Ö~5Úð{PÍV,÷ÒS¿ ¸Qm+ø[XðWã¹{K¡©§¡â·2ASs„Þf ú$úKmhë© i)‰:®M—¹H¹¯‚zŒŠK.¨ÎôQô +:ä‹W‡t(³Ô¢—YW…Öe@ÒÅ1ª,kfA£NÚ^ܰÑj4 @oâBLóOGÔ‡Ë!"Ýs“_¶÷Q÷rKN -RùZäjÒ²#3î"e(š ’bØÔÛÂzdJÊú-Ì™‚âóvR<‘øsœ¥R~‡â ûÏ”Þ pªÒäñy_©»æÀê»Å ¥/Ä&ãÒ/ó½4uLøÔGLÇϲoS|K{ejšiûØ™¾Ç4­(„ñ½¦J®¿+”ýݦ@£à”æl:ý4ºï—÷¼¡sè%^$GJe¹ÙL!_‘6_ iì[=ñQ„d·W¹¡CɇþSBªb»*Ð<1BýÄL¶EÀ<¢þ8Ù2YÔ&ß vÙ¨ø¡eú¨N˜1RÛ/éÒ<©|­fŽ¥Z9Û -S…ÞÇ¿%žËysjô}ê—°Ãj­{lHØT¨ÊtDGõKÑ„2•yU_‘:ü©Š<üµ€`|ÏÊVÕ™1¹êðÂZVdؤÊjy´nZå¨c=·J)}ÊU<§ ïjüb´{µ=ÃÕ[V+ó¶Â:"ôµM¿Pa-#„O¬¢ª]ͱƜ³´¡›Û »GV¬ñ…jífE¥86Ð4ßIä™´>M«Ð–Z(ŽØÖÊJ~û $[Q¢…¶ÕxóÛ­aæ…ëeÏø¶Ñn% ­1ð¡p'D®|ÈžæúçÈÑÕì BÔF’ŒÄ8¯Y<ÅÕáJÄR ã•ëyuf°c¯+ÀG_Çáî”á¾²Å;Cô+éÏãþàà4`]`U‡ÎT˜ ]‡vMXaf~UMÿͳìH†joϰA›ºyØ¡š5+Elr™ãÄ‚ )4Àbñ‘ω0–Fh5*56á¡ͱ+t­0ùز²*)‘¦#ëáÛV¹dØÄ%P5|¤²Y­6αî2D/ÃÆk.üÉnrÛÚl2ƒËÞ_Ž<Тfû3‡ê/k\5ûY®“3žYë MW±ÙÈ@8[ö©³Oyvû íÌÏš7Ëð‚–£áá+âNjeGh/ÚÑiH+âéŒ)-mJ« ™Ø×½ÓÖÕÀeýëšµ ãÔVbú«6 &6ðzµ†Ÿµx ñ·Tb£Öíyí…%Ø -¸•±e(9Ù[Ù®Î;\êÀdwíG¥m0``M¯­j›Q¨¥·…ƒªd·¹ÀIÚ+·•©ókº=ˆ!öCÜ­ß0ª±ò@÷Ö¹oÇÄ&е,R.á!õ÷Øç-%\¦l¯é¼áÂJâš.Ã-. ðظÈ}?ÑÛþÈ<Þ0ÙF)×þéÙråRïšÌÕ³ÆÀÙ6—ì-Avîm}8 ãÏ=P%©D—ùt u¤;„,FÓE°]DfÔe‰Äfua¨éк/¡Æh½®÷ªØH‰³oÍ{fZó›ò¤m`»Ü8† Üý¿Å¶ÙܵéÚ>ýîzú„·Äw‡*५¡›Sxv ‰7£ŸjÆñ¾s%?%¯p:Ž[ÞY+èÝ6ï4AÓøyïFʪŽÞFÔA½Þ ˆ,Y/¬ÈØ‚Øke×^Bmûád›.ÛÙËû^†/ù·ôø2“Qöå ¾îÑ0Z^ ±úÙRöuPÝ——ûÉ𷄢̯ÙêÞøùßïŒgZ>ÝôqŽU^#nÿMŠöÊ ô´Àüt€ò˜jE'à´¯ÂìÄê—>a?`&Âr< -lI‰‰@ÅÀEHgk0%×Ì#¶ æÑHïI¥±(f× æ®hýŸÁ3èÜ!îè€y0„ýZ„ýÅ>=£„Ís–‘•Ÿ–Ây­p«Qàb [ô/<ú‹ªEËÊ·¹FÃ䄿•ÃÐL³p‡grœM}Ć·p5!¦bÆX:$ Àãs#>¢å1ÑFÜU™Ç\ÑDöÁIbÆ\ìm‰ýÌM\Ð@±—€—K:xÔ¼ùQ±•©¸ç·/÷;r áøË ‹;Å«îXSxÜðÅzuq,„®÷˜.rü8E©ÃF€XÂëyíïÁžŽž]sþæ“Z‚Œ#ëo9lØL W´sæ“:aö¸^™•OU AÎ08„5¹H0cå#î´­ ‹`ªóy i^A6’»—) 䳎2.äüðlAÆÝ/ŠØ5›õ&·âYÅIcæÙqÎÈ"…°ñœ8Ë+ Ïà°EÎQÙxŸ²‹KÙö‰Ëä4`9ócòÁ®@ã4¥ ž 俾WqCUÉ-ñU\SÓä¡üX²ì½ŒÑCaž ü¯á<èË>fOÍsdÄÛ{ ’r ñóQm3U®#|X)­æqS5îÉr`»'U£Õnõj3Žú9ºSós,ý4÷•Ä'³Ýca£d@,‘-ˆ•Ú(8[éŒà©—ÇÒáA&¸ãÏæ>4ÊxÉÑ¥ûÕªðš8U -îXsà­sÇ%FñáÄ »+ÚO/þ—~Ó¡0átœ€,¶ã‡9¡z¹ã©¿ŸÆ®w(àðô#ظ~yÓ>FÙ)ª”Ðè^Õ<)(Iüÿ¸_S¾›#$ÿãÉuB:§ùdGF¢UFŠUÿcß _>ðÔIç@&ZŒôèá)€\ÝzÊü¾dbhdNM‡K›t²zWüîÊ -¨ù[ã°“=«â,AæNœ¯áÙa%È¥›yR¯ˆ7’ð‹P[ÏuÈ ò}öx!ÂHu rë›®"«‰1V¨œad­¤ ×õ=úöH©ÂÌ{Æz¯#ÍQ‡m'S !`M­‚L[ßQz#ã=8B -‹¹•³®Çy/ԀǬÈpNo:E°"!ïòF" Ù /ðŸQvn°ƒÞTàC%d‚:½Dj -ù€aƒ&!Œi+ä·¶û°@)gµB–2åg–vÐ1ÈöIØJÖ™²ÇøÜZ~VÈœýþ«+dÕ£­©Ewã‡E…lªX¾JãBn9™ž+^¹C¶€²aßyU Ž”™z†¼—»Ê$¥ ¹È -NiÈ„Ñ(=Q8jÈ6²u4ä`üäŘ¿ÓGËLÂê ˜,¬äÛ€¼J®äÒ3² q?iÈÿ¡„”4dF|Ç;£!»ÖÔ¯ÁK!sÜ8Ę!k‚½›1¡MŒ™†L(" özEV)6Ä -óʺ£”l.ùˆŒø«™„9FdŠ«¶X"ö×yqRàì?§»r—Q×ýÙLX¶Df#…öJN¸íÐ$ò1ŸÁøÁ‚fD>³™aÎ*jîgDΑÝñ`‘oƒ ßmÁŒE­Å¥H¿Ç"‹ŽG 2žU9æÞ¶ù6¯Àù&ˆ5ò˜³Têö&£,f:pª‘S$Ï&UW «Ûåsô@oÇ(kdzI+ÖúÜŽñH^_x”üØ\”´äòdYcòµ²€g“†ÄŠêäl&ó´i€ŸÜHk6eCO"³Ålí?ù¸Ž”©á…"êˆ)ƒY -h””yŒ¼d'ì”åkõJ’á‘2,üÛO¸ŒŽ”ù¹<Ùl7R†™xÛ” ?»Ä ŽçÍz~H¤üÖ‘>œ3å* ¤¥³ I¦\4MÅ Æ.‚÷*ÂÚ/uéë½µd3åáþÖmAü -–îk@Õðì'SÆ.’pTLÙÅn -•7¹iU•Ïš•‡¨* -^Y—©½Å2ÇÊx“¹ÕX6´æ|–ÇÜ2 [N*º“.Cűž.c”«HÜÏÉËÊþ™^û²ß s›'¼“ýqBg˜áñ®\1[¦äXäÆ#+ªŸÌ$#³ÌoüŠø±1gC&Cg¾dcCó—·!¦YýèIþ³j¶•U¯»õ€³™±l®Íþ- 7³Õý¿oâ]ÁÃð#¬Úg=}ìöÅÙϼB¢Ù`›YkÓœ8g{“3«—y㜕'bJg“N®;—ëŒng†lˆú ->Mt|RëáYeãÓO°‹0F Ÿæõòí»ÈÔa!ÕhÞWÔêðÛ–-M¹ ¨Ó ‚ªd¬ºiýfŠ BY@màpâ-¢J–ÔÞØ³ßR.cL uêšîK ŸDí)®t§R$u¦G2æÜ˜¶ˆ©¼èP¾ÊÇŸ¤*8DºÕ0åš‘Z0Wó;‹±c¤^gËÌí6Rs.~±•¾þ"©ÙB {Šåø÷kKj¬˜}8|w’a¨’ƒ[§fµ²l -%µi5ð°§Jjvï[ç‘Ôéß• äÚ×%knÙ•¨¡^¥ž‘¨=éçÕ<$ Åñ.¨â*wT­ˆš„¦Q³í¿†­™²iÔ8\5êtFÐi~ÇÚ EÔ¬ “Ì7÷´ ¿Ž8¼‘p@O¡†¿µ#"A£¶›¦/߬SS4“=’¤ÂXTHŒ´/OHÇ5{qÒƒIml5 ,ïÀÚQ\ðOÑÁ‰¨ýj=yú Qφ4wPS£,ÒA­ÛÙ·i ->Ô]èº4RPPãmiM0jÔË£`¿çpL êi.îÉâÆÏ"IHòÔª“Cô!Â-™ê§‡·~tõÓ!Ê ŽFošµ_´±uJJz4jðI (Ъ¦D£vmQãLšÕöãÇ"IDý§‡òkÔ"ýT¬Q{ו¸5–ûAZÆ»ùШéДsaW5ê /g¤¾ÅTY³Ô5Œ^MÍí‘äSÿ喝ÔW€ ªî»êíYõ›Ãcµ¾\«ÅVÇ -ZZ¯«ý’³€v*2E¹z=ºýjºÁÒÀa©—>d]Y¸ÞÖv^E{‰Ö G"|ºÚ²ˆD9÷ÖCøv$±ÓÏuM¶ù výƒcX¼v0”Y¯qa³v¾nD¦?÷ëƒÉ²S`¿?íÁ¦JµG { -¼`[ÄN¤F»bÓkßKcs“î?C=ŠÙeÑ|”E‘˜æÊö|E †ÙEVÒí$±%Ÿ®6)Óé óíe„|>;~¡M‡–hÉÑÖQ4é\ç)ëä8zi#í¯K—vJzéû´©XÒj Ú ñ¶n¬ #H»6æm (hØ~iY[s¶-¦Çkû5Ôè}ÛºISG·i´ìºmdbó¥x›'±õmr#×Z ãPœC 7®àûÌ&îýw‰ˆ?Rro‹L»¹Ë-º¹ë¹+Ý%C‚%Ý¿"ŽF* u{™ÐrsÖšìÎàhg»Ót·E89ò݇¢½VáÝcð?ÛÝ×p_Þå3•3ÐÛ®­97õfü½ÿ¿voøEDšÅwˆKÍùf[è;/®o„Þ7 -8ªŒœAJþÖ{1Ì ð­?&Zp]mÔ]gd=ÿN:AMÕê”î ¹€‹_ ¢ ¸U/à‰~t8í -à9 ²+¸\ “Xp-º€£ Ñ#Ð2V )´ÎŽX|Ë¿§-Å3þm‡}Lû<_xŸ=›¥@e~`‰LßRím^ ×%üe45$áQÀÝ×V°  Á0Äp­ÓÊj¦7/TÀËÏdmQìî>'Vi)ðB%’GND§ÀÙ­91¼hºµ9„ O\øA(”¾‡§VVyàhw(ܳÁsàpì†ÊÅE’Ñ4nY³¦BØ68p_È(Fã -\xyÄl„/ã‹rÍ©†\pàÜèà))pè­’JALÝ÷Šñð(U(î 5¸Ô¢ÜìÉeÅ8×Lkc0Ť 7Nw;>¶qßø?J/a®¸´ íáÀ=ËþƸ: 7pAùFíêE7ð$©€æ~ÑÆP­¸îÿEŠdIË»qZØ] Q€;m…Ž<_9@øF{Ž©±Ã¿í¾í ®V xš&…’9üÙÄ-(àŽR;slLXo=ŸBë~PuÚ·Ã쪹ñB!(©†„AgTò‹@.'^Dµ1‚+L·N§*ÊÜLäµZùãMPaAOu€ÝïE0Ωû{…¤²¤I€BÏœ‹»øw®™] U†¨heÊ™"–ñoœW¤‡  Õçx©ö]ýŠfƒóÖŸ¥¤ëUü Úõ/þýÁ€i®„¡ïw!ûk`÷[¹îµj~wð²7îWóû߸b~„& Á}Â5¿9÷mT~ó£ûˆœºå÷uÊv¢>¿ò{|ÕD¹ÊïÛð;¶e̶ü^¸([Ð+¿W\ -§ôÍ/’å7ÆEXëÄ}3ºÂ'»ï›Î J—“©kÝÖœ»D®ûÞ¼EÈþ| VWTã>öˆÜ·«7•±e2s‹û~Ø~q&û†èR%ì꾬6ÖòQßË_© -6ü›ÃzÔw[.»©oпç;„ó¾FE}k^@–oÁ{ÉõmYÐÜ£ºï•«ù‡¿hÕ2ù·8Å4Ë›ãtª\´ÔïÈk§|pášs£B§7þCCÃk(øbÀµMpÝ øÃ@ˆRoøÚgÚzÙE Έøì‚3§ ΂žúÁ—ÌÀ„„/ïÕaRøÂÈ·-|ªGo2œé’¢ÙYÙ!ó!úffãqdx[ñ± §ŒOdÄìpL @ÜÙ"Ô"êÖ†ÛV–V—gÑ¥ q¬QL÷LÜ«gë{^è€*¦‰™÷™@Áª4ñœU‡±p÷Hÿi]’z§œtØiâ 3}ëwûgâ†MG·|¾¸¤rnÄxÊým&nÞà!ˆVdâÇó¿t2u›‰O¿]C{ÎÄŸ Çh&ž\ŽƒZCý™¸_ÀjˆDqÖp—ò‚‡(n±1Ür_KÖĻƲ?U¨œM|H÷ã»É`ÚĹ -n“ây»:¹nâîL>Û6q¸|q¶‚è´‰óß÷^©"Ó„MÜ~˜nöo9¥‹!1oâ|Œ’vÀ:À¹‰²ª -3•ú'ñ*t˜ÁUq«âŠwQþSâ²Yä„I2•%^¹˜»)Jb¹D÷½@ÙJ<мâ +pOÀàÝ‘1FÜ›¼ôCF<©d+‡; ’'ìÆ.í•J~Fœù³ÄpɈ‹š3t©bZ#Îoå=×¢&Fèm´ßð&Ê,⧬v¥§Pâ€ÑY+Òê$^sâb¶G¸’5'.¢…8¥8<âU¤ôðWŠ?@íÇE-|‰"—âý ÑvŠ8ÕÀYW S‚¹âÇoñÒáã?€jl-¡ÿCªãÚ>kp¸°I‡qüü¸B!;ÞÂ|†zó·aÁÃïì’  >잘ùF:¹†Ã”Jh§š†Œj6w¸K:oNÒ# Þúœ*ç\EÃÁsr[$¤çòêzÈ/ŸÃõs½<;zèÍÐ -Ð7—/"ø<´¯Sú Ã‰í9¢_²¢«¦¿—FWÐn×ztØCд»ôµ$ØØ'±;»Æ9@$ÉžEo-{KÛŠ ¬×жÙÛ6@;¯´;9µk;mÀͱ¸C†¯²Ýnã¶³¦ €o ýÜCÐˈ»§+Öæº/”\¤; ‚oWþTlÏ3²îâÖî!Šà§ûî“þx/~CïÏjïSã‹|w½M2¶ïY¢!„ý^¨~C\ -!ðkL½•#x±t½`X„ŒðuXøO†£©áõŠÓ:ÆÃçv÷‰ø«Mü” yYÅçLŒ(;&.´ÞÀ׋Gé5@áŒOÁñˆžÇqwàñl*ç¯ò?ú"¯%OÌÜ$ëäÿç§¢“.çÒF¦¼@ÿÊÓC1¸|ò ?˜Ç×ÝA]š”yŒ%â4ÿ%ø˜›gD-¥Êùi,ÔÂG$Ç{~|³ŠÐµ!Eú€Àª²ÏÛh› ÌуbœŒ’Þ³R•¥Kÿ gØ(dñÖDëø#’»ô¶ -õIG¨UÚ"oûpéš EH€|) -€ÿfµ´a…2@yEáiÀèä;À¶º:?€Twè«/""I¯Û‘€ -Þn™‡:¼°' -È›ïÆ«Ý'ÊÐJшOIûÒ ˆR¾Œ¹ŠÙ{xÃÏ86€{mˆ‰ÂæÁ/9uÀa”3Ræ7]¦Œðòg‰ž%Ï’p’16ÛtÔ+Õ#ÚíA>O*».gaqN †¡@b÷™…›:.Â5©Üà±Þ+ߟüÁœŠ¼@le8-øÇ⊽¤a½“ËÏÈsr”c5;(–Àc}k $ŠÛ´iÁ°¿d¼µn@¸00>ÕRd¸ì@ Bÿ!Èw&üSMl|Ò&GÕ‹Cikd˜êÐ3ÎX¦Üàç$uB²’¬ì}•‡ZXŽHõìá¤Y­!ì 6F‰\Åñ_k}>²›w1³[ΚaoÀfnÍÏÎt|»%Ms–øP2{¿ ØVT´)ûå|¶3?µæ¢(tcsg¸‡q#ñ‚¶¦Úí¤•ë[Å2¤ÄÌÇ.‰|£ÎOÛÈAÛƒDMð*Xp*Û÷rLÀÙ¤,}LNN£Û¯/‚ÓѵM÷÷\ ã½íšùÊ#nÿKT§‰#ѹ”e€8D´¯ð óhh}ÍÉÜÚ.ˆ¥åF|‘5jÓ,h)¯[#2uL@:*\Þa|Š«¢Q㮼@û&×5Ü—šË³²\áûjÂqè3v”'Mé§ J lÑkº.쵎QѶHÞ1v³X¯/oBõƬc9_šÒºº¥ö3Éf hóÎ_)æÞ×lZ€ÊÞI^Á)©*¼/¤ë¾‰Ç"?`qàðÿÿ ƒžuV~éïì ƒ?3b:é!’÷½wï½O 8aGpW $Ñ»!o#[#B”‚ö‹œí’VoaìÐæÉ¿Ž`Äc-äØcðà¶/u6—׸†x˜ƒ œÎ ! ÷ËnÀsµ$ÞL3G¿Üu¹4…q² b\í’Vo91>F6–}›e™?5óóP®ŽžBÔ™ ìwýj™À¶/m¦é“«iß<¢ž=„iÛÖ}A»:çË×”ô¦¬Î;Š|}(“°WѸ¤½¤˜Ò¨˜ÊU/*½O$ß×q´s -!Fú{ªŠ‡Æåªx/•~eòØjA·?„ ØíiÌ»aêÎf˜¼³ÇÐÎÖ ßÝE“…gM¡à³£K¯ äxï|ùn£LÂ;Hrðï,â½ìu¹.k\±,M6ä9Ho(‚ú-1­‹, m¼¿ƒ¨gã€ïºLßZ s·&ûDþÑ^Å>+'ÍÅãs†ò ø} ù:Ž÷® UlgÉଜ˜¬‹2 uín›@:ãµû>ŽžITl+(ñHÓ7Tùg;*ÞPª‹7’ü³—BÅ6ׯ;Ákä7°*ö@”€ç{×s÷þM¡Ý¯ „û3}ouŽøN²ÏÖëù¾¶qÞͳ¨geü“ùc£•P½žI4|ÇØ©u—³yëbw.#ã2ˆqn™O£ß‡„tŽ‹ºí*{1Q•ü¥•H»E›…ö” ÈAh¢ñ#…*‘"zžE=[†O†Ñ3£sÄtß(³°ËŠØr¼cøÔè,\wûR×eüØh<´íœ­„›sóæ¬œçrú Ì¥m;óÇÆÝyÌ«…4síj!MÁþcé×kçz Ý[ÏÛÙEœƒ÷Õð`£UC³öŠr:oP¢ê¹p€Î7†t>F -=ü R@ç -DLëFHg&&ýRiøû@ò}¿¶ZæO¾Aœ«V¿…XRïe$ô/™Þ1}i5ÌÞÙ„ù÷•P½þkâOýþÁ»Ÿs¸÷‡*ïžF¾Ÿ£8ƒ‡Fsyl,'—)­z»^·[:Be$Ïï'Â$ü4q=ËÖ•o¼söh¡}cH÷eüØf Ë¿.Å‚’žÀ¤tþŠ=킌Î" k$P°²üGž‡¿0IôÐvbeôS.*i¬œtƒ–µUDðŒŸ[äŸ õÊè'?'ØNâñK±ôM¨bïÝÿ‰ôû?“L÷uí>Oãž×ßý°Íã˜÷"ÿ¾ãžÍ£¨gׯù—<{~¹ûr _›󷯽Ãu¨t—ŽQî†)¬µ;“qý_BLý“+£÷qô;°ºè£^½NážMçÔªøTm È?›ο¼¡Õ:â;©ÓkHýšuÞ<Žy=b¾ûæPîÓÖÎõ¢ÐAß´*öI£`¿ÀäŸ:QÙí>×[¶Ci׳xXv HFé©&»Òê·ÿPúù¡L¾@…dmU“fÐB²¾š‘Ih Û ÖõžÆ½Ä öRÿR)Øf" ª–~AŠG4égÛÒý@¹_#(çs¼u]H½.Ф߽“˜Šª¶‚«Ü PPå,œóVÅ>ô)¨€D¤×²±YkÕð¤¯b`ÖJ¡`pœ±;ãÂäÍ;â=ŸàÄâ·€dôWj/¡‚}LßÚü‚gsoÄsuQ¦áWP‚’æÂJ;±.ÚF^ï´ªø™T½6“¯oòö9⺓—Æ•d“u$ïh&ë.ØPY+Gçl€Ñl¦Ï­Çä¹ÍM¨bûiµñϾÕ1yi3OxÏ^2 ÷,"ë4*ë­Ÿ3Ï™AŠHßtšø„€Dbñ'’ïû<úu$PÃõaÑN@"²?¹2ú$ÐïŠüû<Žy?gèrð3•"ÚM¦áÛg1ðëìù£Ïÿ$ -¶‘>} õî¢KC»Éñf*E¼2 oŸÆ>›'¼gEÞE˜„÷¥ }ÔIxÿLþyJ=¯Ãh÷aôÔ¸2€h4Ía[Ÿù¶qk -çh$ÑoÏ`¥uî*Añ9@AS½Ðœ‰2»Ï£ŸÇ9Äó;ˆ{_çpïÏð¹õCºOtIø´*v(WE›(3ðÆ9¬³oSo%Po·FÐíÇà­ÕÙ6› 3wV×¾ù0©ëraìÒ¸A—€^¨³Ïö‘äëC—„ÿèS°‹úýD‚ÞÆ+×gþÚj!N?¯ …£Ÿ‚QI# ±è4ûê›pmã•ë6„sDZïSðï<âÕ2~nôÌ_ÝÃØç"ÿ>Ñå`Ð%à!Ý‘3£_äÌæA9™À´fÏŒŽ±K£m å> \kÊÅúÁÉz1Ù§`H"~;P¥ßW:û%$ý” -ËzŠ„¥'ª<ü9‰wý\×6 í-š=‚Ò‚QÚKèÏÒ¡I3¡&öF>šÆ7ûLöÕM©Š]k(wBS™ŠEf]:è.ÿº’*bÍ5d³¦¥”^ ²ûHòu¼4¹Æ G™ -z¦VÄzje -Ѹdî Lh2ÐŽ -ÑøŒp´‰. wñl£LÂ;Qï†É;›aèÌf»îLc¸öyó|!\ϪÕÛº{Ë#‰çmãj<3†/‹¦û5…stN¯æ‰¼ó˜|]hÐmúE½.#¨FÃà¥É2jtM ¿×Ñ7à8¯Ãx×oÀv5  \d ˜ó½û6†qç°îÛÎy¿¸ƒ·VÃÌÍ2|k5M \ýrgsy—CÎ ëð2÷å¼µšsÅÀ´vlÖS/&û‚¿A K¦Ô°7=LPâÑ_½Ð¬Œ`´‘@¿‡6–ŒÌîDÔ[0Bê) í]°œµ‚£…õ©aWBû-,k KL箞4Ó*â§„£côØf"OÂŽuòoñ褜€ìCœ†Nž„›o¾sGQÎX{«•‹Ççì5e•[!ŠêlÁIꜥC“FÀêø›>o!JA›0®îyôë\=@çAH稌E–…öeàMtx M -ÚD–†ÿhÓk/‰"ÚI¡‡?)ôû£>8þ"¿’¨×öQô»o éþŒŸ[½£ˆ$ùgë„ó>ηnG¬÷s¾xöŒ^›—Á{ë7‡uÿ§Ð^ -õv‘: o¦RDÊUñf2ýÞGš‡=Œ}>Fom~±;Ûî,îÕ XPÒŠ˜ÊH¡ßžuûZÞÝŽ½Üu¹8a»šÓ°cÁœ9@„¼ÍB¢îàä}ƒ“Îñæ}G¿ï¤Êø³ddö¬™]‰Q)l+~o8_Sç} ÷ì1Œ]wžl«gúàê¿5½3. ž™,Ø6Çä­Í/s_~ÉûröíÖfázYÌš,3È&×¾Õ8b»š¦ð­†É»e5_ÆÍ¶dÜæ–½ÜÙ2Má=SÈFÏÆÑBœ€~ ÑúF½ìÛç¾¼ue?¶®ãx×m¼r=ÛÖ¹Ù´z›¥»·1}Y;Ï}É»·1€gÜì[ßò0 ‚*•J¿6Rèa% ÷‰ìó6ß:z'q¯.2ì<{~§iTÑHÛLª^;i´Ðþ™üó Go¡Éê\æÄC×0EµÆšq‰cx÷wÄ{þk¢o ¢²;µ6v É?¯#¾³q¾u@’}öÐ%aæß‚ ü=‹}6ФŸ-T hEÚ@“~7Ρ¹k£eöÞ:`\ßu›Cºz'Üç{ÿþ£ íÃèwÛüÙÙ8„ww¥_7iÜEê<¼4í¢KÃ;l÷q ñ‘~èÒÏï4òÑ;Œz=ª£wà#”ÎÚY+PÁ¨³h÷còÒê—:3îKÍ}©»µYº^–«µÙ8[ëÒfeãj­K[]v UÑöqäû;‹x¾H“ðYú¿6î‹ÝÙ¶Æ Gß|çzøÎã€ëºO$_ÂüH¡^Æó3q´ŒŸ­ãx׸Ší¨Ž>èr°Öi´ë:‹yݦpÎ×¾yC·®Ã˜W#‰~*&û)â¯!”ë1xm²Ìß›\S8G]úù­‹ÝÀ«xGÏç€ñ¼Ž8¯÷HöÕH¤àúic€Äc/Ú<ì>}°ÿ@vH¿O¤Iø+m"ÍBÏTŠx?µ6v((é,0é'$ë¥Òïíãøçq¾vÞ¦pÎÇè±Ñ2zmHòÏFà¡ñ;­*~!JAûçÐ'u‚í(^jE$PäŸã½ûë7ß9¯³hç{ù¾Žøîç„í>cÞ¢ü³‰4 ¿O£ßÏùÞÙ7Þ:ƒH×uñ<é©~È2ðÎùæõļã½ë7†tè’ð;µ.ú/$½“ë¢ßIÌû5rÞ&îÛÊýo]·ç1ïþ‘ì³wóþNbÞŸÑ“£_âÐæ93:'l÷…(mG¾_”iø‘>Ážçq¯ŽÑc›eþÔhšÂ89q¯îaìó>Ž~ß'²Ïë$æõG¿º‡±Ïç€ï|Ž8¯æaÜóC›‚ÞÉuÑxUìC™„='œWׯÕ:Šxþ'’ïQþÙD™ƒêâm#“V@"²/™‚íŸÉ?Ÿ“x×{"õ|Òé·?½2þ¨Ž~éTì‰8 ûÑçá'â$ìE „=ÊÄcÝ …e­àdáØ£B8ú&Ôð/ê,ô@”Éóû¡B,z«ß›H“ðm -~"ÍBoäiø•BÁvÓiâoBÛG^ùgû<úùF<ƒhçwó¾å g"E´›JoŸEÀŸƒˆçyõ|Ñf¡Ô ¶6 íH¿ïó˜wmzm'ÕDÛ@ªØ.Â$¼ûl1ßýÓh YÚC“…6æàã½ë5„r}gÏ¢üûEwåŸó½ë8ß:[HÓÏ üF›…¶‘§á üB™ö§¡ä鵋* o È¿Ï£¨'„ùãègßÒÙsväßý„ÊhyÞ3|mÆ~a»ç¼³ú÷o¾s>ËVo³m¶¨Òï uò} K?ôyh3‘~ÍšPÃß(´Ðׯõ˜=5:ÓïG™PüJ4ö¥ÔïÇY¬£cþØä>5™F®÷8úÕDš…¾Èsðã(ÞÑY·nÍ \]3(WÏì½õA9_3×oïúLŸ\…³å,Ü=ÓÂyšÀ6/˜ÖaöÌh;´ÙÆ0ÎÓÂÕ.h´Ö¥[ogßè K@?Ã׿sñ|Ðd ™üòfË0wh2ø®ûDòýžÆ=_C8WÛÚÕ5ƒut"žÒÔIÔë;‹zýgòÏÿLþuÄ;/ãçFÓÊÕC˜¿éÜM"%¼Ÿ\ï,(»“*ã7€ªøZ}QæáÇñÞuœ/^4 -öR*&ë§WÅŸ$zh3†¿Òç÷&º4üL§áOÕ"“¾šÙˆô L@~©b›H“ðM~ŸÇ>/„XÄ9hë(ÞõñžŸüûFž†Ÿiñ~zUüP­Œv‘&áÿyü:â;›§qÏ eþÙA–€¾çQï= -Ú9ß¼>£çqëlE½OÓ7×cîÚj›@:ïÃèw+zí(Œö” ÉÏ ¤ý”Êh'yzí¤Ïï픪h/‘qÚG …6ˆDŠ5±{äiø*ýlš¿¸N3èÖ}ù~’ç×>ò<üG^ÿ#ÙgÛÊù ÉÀåªh'Áh(]´"ÿ~ a\]3ç"ýîpÞ§áƒó6rvbŸ}Äih'u‚m›Á¹ŸeûÜ:[†Á;“m¾n¶Î¢ÝÏÎÙ2Ïpa·¹c>’{§ÏËü±Ñ6ß8ÿÙ÷qÄv5N¯Þ¼ë8ˆv^¨óï]úùžÆ=¦ë1gó‹Ý-¿Üu¹7†tÇq¯®9„£eÙèìZ]ƹca/tg\:¶ù%+÷VÓ¶ù™?·S§FgÝnn¶íæÆä©Í2mõ‹çò.‡|ÖÐ!WsaìÐh®åÆÇ0€eÛ¾6GœW…ú:·z¦ÏÍãÒÝ@•ÿÆîÃÌÕ/vÝç[÷}ý>Îá]ÇñÞõA¹¿æûC–…~èrð'…~?Òç¡}¶«m çjœ0“x׃,}Q¦áoB 'ÖÅoUñ?±.~'Öðêõ8‡xßF°îÚXÁ]$PÂ)ôÐ^:û­á 5ü™FÃwÔ‡Æï¤šhiÚO¯âûiµñ;±2z%Q°$9ø ýþdŸƒˆçq¾u?Ç›÷{÷ìȾ;ˆòÏîIüû=Š|Ÿè’ðÚTíí§ÖD›(3ðî ûÝ7†t>o­¦ ”«yùz"ž·)œó8_;¯£ˆçwõl0ž-£×æeðÜjïÝ'²$¼¡T黎v‚·Õ -Ê;êƒâ­ä‰hmÚA“ÿðAÞJžˆw• I»A IO¤Iø…2í Ì¾?ÓGÏìÁÕ>Ž{6äß½“˜÷yõþÍ mcHç‘: »P«AG/DIØmçºLàÚ,ã§Ö…$»A’w  œ}CHgû@æÝA•ö 8îÃØ™ÑY7{ûrgsoÄqŸP®~±³¹.iÜ1—´-Ù‹Ý-ׯÕ6‡rŸ¦°Íß|å¾Ì^…ëeÙ8¯}É»·5`·þƒÙ×k -ã|ö­o]Ø|™‹]æ²&“Áìu¹6b9G‘ŽŽT“g ×j˜¼4nîÞfÛ¾–we2µy+ãÇ6×ÒÕ/u]® ·Œ×abÜ‹uÈÆy-Ì^W†Ùër³ržûrçµ0}÷6ÛFk9† 8 Y6OvƒH×J {Ì\Û‡™;£qéîŸGÀÿé÷iüâ:Ï"__ýÞ>âÀ_HWÛÖuqŸOòôÞP¿Ré÷÷4îyšÂ·:ûÖ·Y¸{‹ƒˆGûDò}"MÃŽd öÓsÝØìXÿ’©×îqäû8á9Ï£¨÷…2m(WEûI•ñ+zm%Q°Íèçm -íêC:/´éwO™ü B8ÞC–wbŸÝ“ø÷uÄvw [ Sç6ó4îyÆ=O#×eôÞh›Â9$ùg+‘ÞG›^[Gñî×¶}Ä=_„Ix#qv‡*mÃ¼ÚæPî×Òù˜:5úÎl~yëÊ1wkrŒ c§&ë€õ<#à-9x=þÝ7yw!^·è2ÐŒ Ü]w›DÅݦ‰wÓ(bwgϦé›ë5u]Ï­×øÍõ"IÃË…åïš¡i#uÞ5‚rÿHóÐ6´eüàæ¿¹¾ƒ˜w9ÞGž„·Pdà éwqÚL¦ßûH´ÐªüûÙ¸.7ëvsqÀu]Èrð/‚»F–†f<Š|çî¾ñÆÙ2m4ÌÝMÃô™m³p^~¡û[™Á¶ÙåL&ãc6pßaÃË^·,;÷˲v5GLW÷PîõÉ:/ˆV»¤i;ð± ¸ïö‚§VÖ3©Wgãì-ߊeåºÚ—¸.—£¹´qDzs^󗯵Y„“máh/œì’¶%ã.|ñNÆ!ûÖ·2js Ÿ÷…îo³oŒs5„q¬ÿ:¸¨ÉdÙ¹.¿èÝ[={æ6Y˜ š–Ì¥­lŒÛeb.lõXÖí&˶}²ìYŸ_äÌfœoã½û;‰x¶ ßZÍó¸Wuz=‘¥aO¢ßÿyôFš‡vQg¡Òì8‡wýÅMûRw—ÑxÝh KÀþcÉ÷{&÷jE>ÚÔ°7±"þ¤QûǑï÷4æÝ8ߺž³kߌ\ZUû²Kw溬Í[™@6ZGÏßÞÑ<{Þç‘ÏÞAÌ»uÄu]½6Oó÷fQþÙE•‡Ÿ“Ð^*ýÞC—„ÿÆðîׯ}›B:_#8×m -é¼Ïf"ýÞT&&í¢ÊC›ðÍÛ Îý"ÏA¿ƒ¨÷aðÒfðœMt9h/}†o&Pp×h³ÐVúüÞI`»RÏÆ9¬³wõì›ïœŸéƒ«güàê¢ÍîêíI -vƒ"oœo-Ø6»Àõ²3^ônî ¡uëe\‹Aß0á‹o1hàw˜YYÌß™v&ÌÆ…ÙSÛfãþOëÀÍ´a1lc6‰q\0ür‡V£Ç¦Í¾Ýd¼màd4ð2¯ ¼ÕãŠeñºb.r³ï6p &ð1¯¯,žMÓ·¦•!lãʶqg Ûf™C¶­ËWË×^ÀÀ}˜—¶±.jeb.hòX6ÍwȺÑdY7šÌemÛÓ6ð¾8½AƒÍ†Ú&‡KK« -‹ÉÚÚ…*&®*¦*&,&.*&ª·š‰ŠÉJ‹‰K«Šé¦º²Ú¢’b¢b¢bú69b5SXï`M ®íB›œ 5SS‚(›œ<¶==4­ƒ»©¬+ª,­-ª,­-&«¬¬­;/¦ª=42¦µº/›ùªK«k+‹ªª -‹ŠÎŠêJ+KK‹Ëª -+‹ëjêŠK‹«Šn+k+‹ëjë -K«J‹jËjÊj«ŠÊŠËJ‹kŠjKë -KkkkK‹Ã–Ö–VWÖ•—…-.*«­-..*«­©-®­©«­©-ºª«««-¬- ZVYY]Wt¬¬®¶´º¬¦¨®èÚ´¬¬¦®°¬²®°°¸®¨dUYVYWXX´²¦²®°®°¬°ºè°¶°®¦¶¶ª°°¨¶¶è®Ô¸´èú–—¬.®«,.¬®ª­­ª+«,®¬«-*,®­,.«¬,®)«¬+®)«¬«+©­­-¬¬+®®),¬¬+¬¬­¬¬¬¬«+­+..«)­¬.¬-­,­­)­,®,ª-­¬+ZYWZ[YU[Y]YU\S[XS[Y\\S\YWWWY\YZVVVZ\Y[WWVY]X]XUS[ZYW[\YZZYZYYSYYW[Y[SXYTTWSZXYWWY]WYWY[XUYTYYXS]X]XW]S\[X\SYZX]]SZZ[][SYX|jFÊÐ ïÀâŒI\ÈBÎø·¢â r”8Çá0<†¿p.Ãg¸ ¿á8¼†ÃðÃax–»ðþÂkx ‡á0†ÇðNÃu8gZzz„ûb ƒ ½&nÈâ¡}ñ()œ -·à Ê%ÐŽðSCl!kœã‚Üxb˜¦Ræ"õ°€4ðI–wTÆ’}L˜€* -ÙäDrŠiè¦G MoŽ4{ÀØD챊Y裆æaœ‰8X7Å;R5Ã9>hŠo n*ê•$²è)" -\$”*¶b•ØÞ²ÄCR¹ò+cd1 @[7N€,Ã8CÒ–P/œþ(¼\žIàe[ 8Ózaâ@|ˆçð^Ãmx Çá7<‡Áq'!&~€ÈoÀäÄá´ x‚9¯ËB@Š T xcâ!&dâ°j ˜C Sð al¬ KäÐðKJ¿&I*ÿbx^.!_ÁBÿ@ЬùâJZ'£LÏE šˆ;Bh‚uŒðTÔA*Z9q4rã§"lg'bÒLC/.ao`öÐi¨‡§X‡«&)gwèðkc3Ÿ¦pý˜H‡ã‚„4VàwdY|B‚ ÉŸúaâP4Hœ †ˆey¸ÐK/â?¼ˆq¤(NCpð‚ØÍ%´7ð_¡2jÀhp!ÎĸÿáH\ˆ/q!œ iÿax4DzðСQI:& –€NH\.aˆdçWHê¥ Ìä°d;{€ý™¤sóûÃ'¢ÔOE§¢Ž°–¡£Iø>Kfh~s˜,"-îPÊ’î¶GÍvZÐJ’.Ö’¥Î!¥-S5–.3VQqGͰTMĨžB'‡à×-0Eë5î±Éeѧ%‡®-'ÂÄÆ;ÄÔÆG´ƒ -H™  2?29À‹B"QüDLâùùɤÔõ §Š*m˜A¶˜).©â ¥H¡©  öl}27Šiä{úˆò””IŸg -*m8ª¨aÉÒý,€JÛ(hÀL¯œa!D?‡Žfñ’ª*É£TråAò¡ éß%I|ä*÷éçÁOD ¬£ŒA6M7‹ŽšhçH¤È™ “öZtÌÆ(ÈÄnr°ÇM:&€œHdžHDÎ7.@YÞejã-êq0?Æv³„Ùc+ÌÆS:ìP¦)‚J'bÐÏðËÏ×)r†S®ÌŸAʪbKÅ€H Ç|HÅ–\@Še)Ð*6¦1¶h‰Ùkfðç )nƒE¢Ðn[˜”É¡”i²À¢Æ9BŠÛ$>b•+u ¬ÈP ð0¬¬mƸ’æY"Š›¨+»ÓÖØ¼MØX5¶àÃb^ ÿè„É-¹$Ê]¹ÄÊ­ £Še+]MW&q¦Iò6K“àun!Üï`Ý ÿõlù™IÄÒE–3ï È~ã´t ÀR7¶B®€Ù³D·NC%§—€Jvd1‘ù ’šiX$Dæà–€JpX*ÁÁjy$¼$ˆ ¢¤w¦˜Ò¦*ÂɇÉ"’$‰Tž’XB' +¥‹·n‡q±c¼[´Ì¡%¤Ä‘6 -±$%åÝDRÈ)Þ‘Ú©¸ã3ÔȤ§ˆ'oqã%Úí¸FÙ×Êz2H¤§¸é§%‘ï§epçcGNH‘œ‹=4%a¥t ‹±•øø€G~ØtOnøE"EºŠ±P|dþ¦(q›bØOÍÃ%8{Àøôö¡IdF¦!l‹ÌÂ!%0 ‰„À,$Bó{ô2‰XT26ZB -‰”^é#Ë]ÚÚän4|Äóó{Dt”3V3E•µÊ$°3{`9ë´qe-sÇ•3RNæLK—ð!.‰õÿŠ‹C¯Ü­$£[°€åœØðš;œ jñžB -‰LM -‹ÿ¯¬¨· -¨· @1kÇ.¶x@"kº ¢iD˯¤‘ÅÌUÉݧ#ìä&–5ÓV&á—C‚\ -­,2¤ÐÈËA!8.‰ì ô[k xÄFfášß ¬™ŠC&3)“nBQüÔ\2˜ŠË7ŠâIܦ (k $žÀ=ÖPr–„‡ïAñ9DñP“ŪÚpL`ØxP~ÔuSzÔ„VšÔœ2ª¬qö°’Öç„Çw`À*YÔ1 cÈÆ:Æâ0D†+€î}€Z9zÐE¤Ü¥"˜Ð‘¾2¹+]e’ê ãôÀñ–íã~fb¢Ã)aûÉqß)™qÏ)q£i) ¶Ëòƒ[±Ò3WXIëôLòÇÙ($róÑG$çcÆÍ°ÑÌC!!0 ¸jz‰°v"*ÁìlLÂhj©¬É# ÚÞ$4c&÷©äÅO0‘ÒQÉ#bRÉ#‰££Kú2a·˜)‰ò%a¥tC  â& -#Ê[öÈ-oy!7ð¡©•ÊA)7è‘É­ €V.šþPì+ÄŒÎÉ ;ƒ¯³ÎY‚Ñö¤ôæ"a5“›|ø²þnrâ§MQñê¸Ö[°žòՎʾ`…£Ï %µ>s’ÂKDm$ÈÞ -Pd‹Ù §'q¡¦Kô6WTY‹t¢À|r€Ÿt‚€})$Û•¶QS&{£”F¢F"AÃBD=ƒœ~²6¡‹#@¬6llClBNˆuii%»*¢:–A)Êa‹|NSÖ:e\Yû"¡R¿)`„ËçDH=ç„G=WÁ%#@‹­Ù8¸tRzÔ‘D¦Ü›<ª¤5&™b#*iâ1‰\1 uå ´)mDœtk -àNÉÔNù ”/€U†“ââÞ3òâLC«4” qý€Ê(7î3‡± -m %5çŒ)k‘L²Ø”C²Üž"žÀm¦ ÂF «åî4erÇö‘ºéýabóûÃÕs&¨&BÍVÔ*sp_ÞØb¶i¢ -'*»NÈœ‰>D=%ƒ(zº>™C\¥Ó)‘qÿ&#n²Ø]Oî£ $g}>jtÍ”¤øeK^ÿÌdDwCòâ;öHb6º¢ \jê>ÒOè8iHQSC’Ân -qø³m4ÍÍÀ:È ®i ¸õ£C[`w0–ˆï¤!e­†6HGÐ4m¡!v›“½OQQkµ¬;,PBVƒÒâÃ9qa×!‘aÛ)¹ñÛšÌè - ¹ÅE·Ÿ°¨Ñˆ”0S#‚¢k¦¤ÄÍ&$E÷ˆŒn_fmJ -øcW@Ôa|˜µŽlÎ hTÒT:.å±+ ên•t^!ôdì¶ç -*m–D¸•lñ„D¡áÂm ÀùÌ?¶hø±Œâ„Ž\RÅnd‚Å7.¡ò+‰`éV¡ÒULòä»aÙ1—_h¿@BkeäSû„r뀊j™YoïÇ›NˆŒ;.‰ ;mJ ºMÊŒž·Ä†}wDÇ¿;2ãæcâã/Þ rfHäÇ8dÇ­ç¤Ç§cRÃ2µ'{49\âö©¼¨ç-(h7+4|\“ÝC 8Îî–ȸ)hA•+,ÐÊeÛ2£·m©QßQñQûI9BCÆB¹%›X±5}T9ûDÅ2‹ý€–™S„”7ÏE ˜ ’A9Q™Øiº:‰£„Õb‹±h©± ?*9À;R @Œr€—ü±Å–ôq€íEà -­¦@™,*¸[F@¹I«„¶VMzC–Ôþ…•¾P%uÎpe•kÂêË ¸þ;âž3Ãüaã,œÃGx¬YàŽÝ8"&Ðä&­Ý [J¿F·ZW<¹^pÝÒZ\È53¸a -Œ3, bË€eáHèí'£E›_÷-%…·€€Z©"—Ú É@ÛiUñcáØœ·x|Î VLÒA›4Qç §‚qIo8ÀÃÌv¥F-(%I݇€’¹mlD{7fÂT²ÅÆô‘ÅL1vŠçk’¤^‹½A{&'< ™åÄü¯Ä˜m),ꚊŠÚÖcΓ2¤Þ‹"¤¶£â£Ö“¤ßUáÑÙ`ƒîb‘1ÏTXÈ[()fù‰ˆÞÁ€2BÌhO`x´%(lú ßAʺŒÊºnBÂËyÑÕë!ãÌM‹î˜“VoA -«æÄµîJNt´X¶ eE§¥œ¨û“ýªr„'¥ò†-®4×J -J5!!ßÑ”»öÉ}GHvŽÙ'0ƒk¦@™8f8tÔwW|ÔxU~ÔnYrÐlبãžÜèjP -ð º{FGņÇ{’Ãw³¼ ¹ °9 —N‰Œ;›ÂÖ6!Ag¢Zƒ9Qí_PPi RVén‘flCF q‹¬vÉb]¿X“VVeµCXJwùœå+"ú›Ýí”Þ“QîW­r·È ¯ 4@3Ò耨@;3B¢{7)ñó”Ìè -&éaÇU±áÓPƒ¶ ˆ1'Ar‹Êxò¦ dÊe)]È(Uþ$-¶gˆ'qš'¬¬QöØrƒÀB‡ ÀR&Àd¶KÀˆÜ8%‹—<’Åþ3€®Ü8V+sM(€«6‚©Ú®,¡\¯\·ªœÒ¢ ~0(©?«‡eOP‚ñWÍôY60;!¢´VM‰Æ.Ä)X/hñØÁª°v±*­Œ ª§“¼Þ³×ûCaw¯¤ðfULü» tsÜ0ûBà•«y'Ã𩕽Хi-¤I8Ú1d9íw•þ6@ÆLµ¢ÒkÙØ¬¯d\ÖX60;…ØÓyƒ•Öº“׺;¤Ä]ÇãÅYg„C`m>'°Þ †|†€\7lt²Rp;Åv\í´ÝdEOc²Âî&Qáç'%ºo2â§MQñ߬Ðè·1æ^EvFïfiQ@bî`€ˆ™ƒr*!è X^é [2é UP?Ôn×OZÊ…ãçúÁ)•òkí¸ìI©†_&ÍëF3hÑ8‰h=aI)=UÀãJ‘ø©rTÒ J³)a¶6ä„Ù&¥´%Óˆ7SéÐäVhRZCµ.ÚC–·ƒ!Ÿ5· -‰î ð„ˆÚ];8ë%S°}$jø¡H0Ö^NZ¹¬°Ò²÷¼d„W+¢â–3ãîSTÐpÕr)ñ”©xXÎU?,çz -Š~¶$Å—˜¨},‰Ï%ÑÍŒ”¸½¾v"Â×NPÔnL`ØtRrt½(;¾Y5†\eNB¹® nå(&j¯…×2QƒYy¥+DQ)@9·x|Î\>ÿ„Ÿ_ {Š&AMûA\Ñf$¯] KL;ŒI€£G@’V*ýþ¡KÂÏ#λoéºO¤‹fxxö UTk[ -‹ºnI  Û-ö…½¥2¢ia/Ð*‡ðJ÷,*è4lÌf -ИŠ-‚û€[1,!h |¯`5å%`šˆ´pî¹ä“…>¯tpÊ RDÖB„;D*’žAŠÉÞÄŠ8ÅBÒ mzÉ=¿”zhñý8á9o~«}(õ<Ó*¢ -Ñt èuó¼Ï#ß"£s‡XÕ_áÉ)}àƒb'¬6ÿè+—u”‰Çº‰ñ?yPüY?.k -UNç -SPg«‰1uq3LÞÙŒ®ëXiADg2%º'§ V\ö'm¥Òïgjý~§×Ä/C²Æò‘I'0ñØŸB4ÒZ<<åAFg-ôÔ -JJFg UXi±&¬¾‹H¨L…ãr®ÂQIoíøœ!0!åzE9˜¬›Xë KT¹¤°& ñèŸ^’h8IÿÔÚØ˜àº:S©ÀìT)2ë-ž´ŽÏùj'½Åãs¾’qYCZ70Aù—B½]!KÀ[GÑ.+†'-ˆéœàƒä’ibG0¢±A ˧ÔHÿäºhå"“~àctö:bJoÝଜˆüQ#í'Š]9>é+–݉uÑV"ý.‘"þ£ÏÃ("}jx3ðajáÈìR*í¨WÇï´Š@£_ ¢ñ‹zm$PÃ¥a³#OÂ['œ÷‰2m! óVMzêEdQg¡?5ôE›U2*;“½èÓ° QŽ"Þ9ß»ÿBw¶ÍÖÙ\>3y¨s°ÞÒI[Ù°¬“L¿lWËðµÉ2n²a,ãÇ6¿Ø™mcþظ0vjqf\¿¶š'R¯Û|áºLàÚœ×oÂrH¡ ^mªŠ ôû.ÿ. Ÿ\}‚Œ6Q¦ í¹÷F  Fÿæ_ìº3œÚÜ#¹ç»ŒŒr7Tq¥±plÒI¤ßÿų}ýúh¡ ‚Ñ3Xé‹@ {Ïä^ ”é×¥VPö.¢óƒ!¥òU N:*DdÕ‹J5±3©Š«fHú. ¢rWÐYjE¤gJ ÷¥Uq½¥#T¶Ð¤U¾ÐD•ÖªÑI/ŠýÕEŸ`dg€b²gáàœ±b`ö*”=jd?òôbÕЬ' 1•'()³ppÎT+,½ë¢-” hiYöý©“~ÃUAˆ(íÓØgßÚÕ>“}ªÄbŸ‹*ƒEq­+A—@¥PHú*—Ë…egØ>p*¾•DÁZmª•^A‰GÈ¿žÅ¿~äiø°&~%wÄ{>ˆòÏkøG²Ï>-ÄÓù ÌÁúɃâ?Àšè¡@$ÚR) •ŠI[Á‡G›“ðû4ö9µ6v¨WƯ4 -öMªb¿ …$Œ>|ÿ´p'ÜÃØçƒ"í›Áº—¹;Ñ µÐ#ñXcõ ôL­ß?'gÝÌ´Y¸_öRw¦ÍYÄËïÍ1xpÛÁ·©Ôæo޾ùÎyA·:FomÖq¼ëG¢‡~ŠÈ«—CƒõPç`-¤)ø3ùw5#“κ‘Ù·phbÉÈìL¦‰¿ÊÅeýäʘ¶û9a»E¢ï€…Õ_¨’:?`¬ƒ.’ç÷>â4TÂñ~p#´f€ÒÿPöùšÂ9Z§Ñ®;¹.VÉà”³fxÎ JêCã§RÙ¡X¿ä ½óÅ;ªü3k:w‹0 oF<ûHÔÐ{ )­5$íjÕð¤{cŸGýþ)"‹6 mžD¾O„YhC½2þ+•ßé¢ ”É÷k ß|Maœß ãÙB“ݨŠ?‡Gû‰uñiî$êùE¾.¤)؃2{“ê÷^ âñ/@éxhÄùÖQz$ÌðÌ»kãþ Ÿ\-³Wï„ïº7…u6Œí’öµüæŽqÀødà·Ð䔿²!*'zy$õŒhìH `ŸÖ«‡Hë)”4“´—Ú5",n;.Ðf#"þ…#¥êÃâP&! `Ü΢^_Rû*–t†%§ŸBÏ?•bÒ@ªø/Êð­ÕœÖŠeÙ>÷k -jµ£SNRõÖH¦†] ǺËèÌ@æ E‚±¦*À²ŽpD”öŠ5ý2rÚ½†”v®œu K駱h/•†?“)Øöi仃&m'UFÏuƒ³ÖbÁù£>8B¹:ú¥Ð° ÕÊhG±FþHv-½‚k Í?š‡RoNJ]B×Q (i?L¹^OVåY “ÓžÅÃSnÀ“²ô8à»®£ˆçméêo]/Ò$$êôKª`¯µC“ÎËZSPr:sÙ •ÁЬz1#ª÷…§ýkâç¶–ŒsÈ–…c—ƒuÑ]#Ãw0ò¡Nàa²÷(ö ÈÀÛÒï†ÏQúuŸRo$í"MÁ{G¼¡‡çÿ"z{ ýX3.½#àNâÞïqä[ÛFœ…=Œ}È’/©4 -£Ý Eäý„ºx7yŠ»Jžˆ¶¨·ÛhG‰`´«ZdÖY7Œwe£Ò[2ú!¥< Ï£ÞÓjbw -…ã}:hÛÊ}—³ºŒÏ`cÙ8¯ÝYÔëP }V ÍÚÀÄÿcéWÇðµÉY8»Ìå¬.ƒ¹SÛæ$æÑ:y²%=$H/x!I{&!n´"&î°'®µ#¥Ÿ+§’ ‚ ü¡ôó3€otÌßWˆS¶ªIS"Ú!Àzv'Öðýé—ó½² ¼¡><ÖU1,ë' À˜¤¡R,ÖT8.çIDe(‰‰Ôð7¹†»Õ L‘RyB‘RšSÚ¬i· dÔCØ!J?±.Ú8^»/³×F×ÂýCº#m,—žAˆJÏŠˆd‰xO‰˜´ŸNoE= ÔІ°$”†€¤T†JÁHׄãdÀ7îŒáÛœÆóN­‹Â’U9C×yÌI룢ê%!­bdÖN"k&Vq­@Ed½@d¿š‘I'ððhIÚ9ˆx>QF²ƒ!q­)Aµdpö BJ½6ˆë=†­ªôûa±«~Œ ˆšÊ…'Wêe7@ªh#}‚½‘æá§ ”«eøÜj&Óow˦ï’Ñù¡^¿\¾ëNªâ;êCãoB ÛA•~6Ì\ZÍoYûòÖ•gþÜ:Päß_ßGž…·ŽøîÃØ™ÍY¸¿Í¶unãžmÕâÒO‰¨´“B oš½¸{æÎͶ¤³cîÖ|6ÍË7†tŸAŠÊ:ÔVz”ÔH©Ì„šØ:½žH“H20)ôkgÝÀ¬3ÀšÚ`?éžH½.Ã÷Fÿ@úý'ÖEÛjŤÝd¾eðÜjnÏÛìÛçiþu@Fç EJé¦U±ëc¼,ÞÁ‚ûÊ…³µ7๚§roö¹ô£oéd¤UÞå#“6°šèoïº  ßa´»iþÚlšA·ŽÔ鵩T\v¥Q±¿ÛÕ3€qô ¸Žº üB™€68ïŒû5q<‰{”œÎ¤´ÒG¢…þÀÄï ˆ¨ì¥åt«²Ú/@1­ŒH´‡6£B4þ(W10{׎Îþö“vZUü@•~Ù¸?¿ÀÑ2|m^†Ï­Þ ß™)}~ï"ÉÂ.OxÏŠ$¼•8Á]§SÅÛ€i¢ÝšxG½6Þ H8úTÖIªÞ:k÷Ÿ™XLß½5=쎄Ö]?>i¬›µ– P -„c¢ôK­aškH¨ŒAŠ*=eÕÞ*a½5AýN¦Œ¶Ð$`׿Pîó,òu KLe°$¬½JfZmüN©Š6Sh˜ˆ²Ðª'MµÂÒ/•~?Pä`‡ú°hkÍଭ^`v¢KÂÄ<4>V Ì>·ù†ÐÎãÚÝ5€sŸ¦O®Ž¹k‹©S£_âÐf™¾µšæïÍÛÊ}ŸÆ>[èò¯KCøÖùÆÓ`h -Û<ԇů4ú½aêÔfÞé­‹YM»˜Õ4Û0Æ-@ÐðBgÏY54ë XDp-4Q•©\\ÖT»é÷/‰"ÚR($ýÍõÊè‘@½ÿªâwRe”á[«³o~[3× ýˆ;`!!_åðä"¡~i&Vq½€%í•…uÛ›° o'-jn“u'­=ƒ”WÙsN@ÂÑ[ÕÀ¤-¿}ÂÖí—¯\,šó”‹ÊºÁ‹Ì9ÉSìoï:ØÏG€E•3@i¥¥J`Ö>~>omžñ›£YcŸÏ²u·.h]ËííÖÖr»LŒsˆ€cMmq1/¯Ï?®‹Û¢ÑÃùÉÄ#‹Çæ<K*WB–SÙ'ÓOîÁôÛZéÔr0@ ®]¥Å†-"¸ -LXÊD™Þú@+cMA‰ëvŒ -ˆú-6Ư[‚ãÓXZÌ¡õºâºÕÆ’ ·F@|¯%¨3•‹Ë:êCd¿ÐD•kâZS0bJKP‚*puœ‡< ç&U±oÀ“~ Z@wkÝîìZÿ5nf4€n¶¦_AǾ E¤gà²eÎ1~kY¹®&ÏMk3x7ã€ïzL7«foù¼ãZ¸†x< BÀ³2#ÔÃy눩ö -ö3»fqnYXLž×IÄb]!×m-­ÜªšÜ -Y^·hÝ"¥"ry0÷¶C¤†[/xЪA©A£=á¿xå&`AÉ= -ýÖW><¹eVJÌoHjx;!2º·’~mˆŠÛŒÈˆîWßõ£”+ŲK‰(÷€q“˜7ÓÎÉ6^ºYÇoމ̣•RÁõ(¨²×”U®Ö‘N9*…c}TjXÓ€ßf¶zŒ×Âb϶Bžý&|'gç¼6Kg—Ý8ÊÉ0gÚì=ö’×Õæ8ÚÍL0ÊP•ɪ” Å¬”%HYÝ:pœ›<(ÒS/0gª›r‚U92e)&i£OCŸH¿'lW -ÒC ‚µ ˃ä°-!汤ܤÑ0=¤iH+™†;Të¢ ¥úè¡XTˆÈ^„éåôXïrµ1xkõѦ׮r!iKâù1ð ½£>0Ú>{vv­+ómXÎaB^!ë‡RjÀ·ªºdã´:•w2Ì_™Ë,‹çÉb -×È–@(n`9-ÛºrJÆV’5CR›a"¶kO^ø²+#h,¢Û«s‘%Ø?‘pœ»Š€Î_ ´Êp•¿ h•Ǭˆ í&)üDÅçá#)•>½ý@«cM¦äÕ!"n±Øµ“+$}󽓙RÃÞ‹ ê|!ö´kÕè̲ɲ˙VΪÍuŒZ¯ù›û:á¼¶«wójL@î‹'ÓÀÇ0hà´ïe`¼Ø^AÃ.Æa¿pá·¢zÀ8mq@Rœ -ÁGËàóé·°2UPµT<4¹O'e(‘²VOn…-«²—–V.tM¡w'pvÀÄtû¨Z)™Ú[T·Ý,ÐxP~ÔsLvô™ - ™BZ©™\±¦Ü±+ êm•´•³×”UîW×y,Jˆ:L -ºSúRyAŠIÍ@Zˆ“P~"á8~iqž\s8'#(áX‡iy¥¿° ÒS7&i¥Ö0­Ôú¥{0õæl]]æGͶÍ<•{³QjáÌS™7Ó|áäì[ãc0pC†¬Ü÷¶dD’±‚µ>›ƒe zpj)$ðªM bRN@b’¦šq93.Ö PHÒ[F4i#ûÒ+"!Ë*½ã ó8ð‹jm<\ܤÒC•…¾'ò^ B²Î@e•v€$uë# 8#*ÊeSJж6™’W_õâ²×øÑy;µ^÷oílŸÅ>ÛÆÏÎËø­ÍÙ64í÷ŽÖÜ“9WCw %?è’À¿*P€áëneþØd<µ2Á¸­Œ œ–×0p¤!|)gwbÀݶœtHމYl1$ Ù}Emë£ ÖÄ,É‹{®sRë—~Á;#sAënéä -¡ýY^Ì -0B»Í¢Bvƒb£Ÿ]™1ßT - »ThÈdYPp)dùPÆU„tKA‹ë¶ -Ç&HSpî™ü›*ÿj$Ò/ýô!rΚá9[`Ò*{-Y• ¥ ù¬1dÁcKô PLk#ÐÃnäiè)0 ­$‘P¿ô‹ßçò{ ŒŸiÃdß¶CƒµŠò¨à¬É'C©pœ…Dç>¶-ÿdaÜ ËÆÍd7ŠvÜ PÂmR±ÖÀÈ­„<”]XÀDÙJ”}@ÅXY–²^·NëŸÊÀ9 ‘n`SöšÒÊý:`u¾›”°Óž¨øU=4åìœM–ûeF$β´j«thÊB¤ƒÜ©—r· [MˆŠ›C‘Ö® -¶q -ñ¼8ïÞçÝ:Šu]>8ïbÖç˜9¶ÏÈg߀íê¹[v9ãŽeݾ–…uàXàXàJ> 8â?3¸Ø/K=­g×eŒC¶o{´Ã\êd Ù¿î†VÀ1<.Ç–H8’‘j‰>½2eጠ„äÜ¡J 9!¸œœn½”´—–U9AŒFšA‘µÖh£G)ë¼ÐW%u…1r¨%aíTû’i¸# I/¥Šk¢ÎCšÉuq¶PÅÃö&2¢;+akh¢ZK ‚Ê¥{:k‚ê¯`LÚ@‘}]˜»´:›Vo]Îê2³.VÄù¥½¦´ryûfÞå`o  ‹{9ðÊÆÍd0gܘA5mσz!¹Í0NQÆCú'–Å£Á8œX…!‡`áûÃË #™ÒEWL[$ÂäîZ‰Ao%Õ"©~eD>Zçq[aÛ9'6<ž“¶²‚®Àëv‚­[ -|ÐjX!ÛÉñϤÜ-dù =àR^Je”‹B i¢PBúÈÔ°aö£Ð/-µSހŕÞ.ái&%º?‚Â#'þ*æ10娎þÇÑïÖßÙC™„ænæ÷–×¢ŠÀ£ž¶x—6OÖcéÇ äþx’]9ù,›³¨˜»P%ûáôŽ­&Ž= -õv”ÝR66Þ!FaœB¬ ¯bZZTǨ`AË&àC™…” ÃBbJv „#É<‰"Ê@4ÊI©àzHT¾R¢Þcbã¦`€U.N¤Ýö§ÓO®ê¡É¥`@*WiU< ur- 𺵣˜øoCJ qxòÚ“8Ã6Ò%âýDºh–àUŒætŠx¦3˜‡ö¢Öý|Ûr±¯ ¼/.–CÖÎó 2p,ø -ø­!Œ[ØŠÀØÏfŸöåïã7Y>6aB ¢§$”®Æ#6t'CKKC“ÇC:ÈÀQÆAÛ,0¹ -\TÊž j1 `„vï_©ÊÙ×ÔRn„'¡4XÖž†$Å}/QñÝ€À¸Ç–xèŒÎbJNï -QTe)&iÊ@Y§qo~ú)cÝÝNˆUå2HQY3†¿„%¦²Ý#„Ù$«õTŠÉŸSh×å~ÖrZ+Æ»[2/—BlêL¦Äƒ{ò¡®¼ãò]ø„. ük«ï@á‹›…ijýŠ©‡h#(ðÿÆh³Æ(6à¸îaØIá—ÁÆõî«ÇE!ã  …k˜ÀY;ÆAU@$ד6B‘îbbºÝf!AòàÑ…Äq 1È{­‰ Û EâìS9¸5@b‘kO‰1+Æø‘6DÆõã“[Äù¥‹@½4Óª"¡I©üàˆ)7¨°ÆA´«‡ o(TG‡Æß¤ê8™"ÊG§…õäÞ ³—¦}±³¹0vfôŒ ÜŒãÍ«eüÖf.6Æ·¶*ð%]<ð»´²—;51¯]¦”ÂÆ2Æú¸GYØx†Xؘã$`Æ[2Øã€‰³dp0¾küƒ@pè*€± cdÆ*È´ª Ž%¨q©ÍBªÅ ÅƒÌA ú’ÓmPæ ]CX'‘ -ÎUB:µbÞ2”{õÄS‹A\ú ?&E}À¤œ„ºÈ•@ÅU›²Š -ù,I ›Â~ƒt&šìòxñÒ~÷Ú|ûÖ^Ôì3îUAŒ_)Àå SZe­Þ†’Â׉ÑMÜ{ø#G—FÒjö³C¡>ÚJ¥‰ô›UÄ“»Åb‚ÆÅU¶²áÉeBMì:ÚÔ”„ÒI¦ßÎ#î{™ëÊœ[ö’g¶ýñô“7 €· Ë ¹†cÖPdP/0ɬ¤œŠ‰iŒQ³èTÃ1lÊV0?2ÖbÀÌ©âÊZég,àik\‚¦W½ Æ1ÂÒ°1§Eqá¿ X-Hi•¿øÀ• ÅµÌÖ‡=ÇdGW{"£ÓÅÒ°ÿž f3˜ÆÕ™¼ãn(ÀYÂ>Á¦‰ñ¯Ý Tb‘¬°É’ž¸„Šïàp@'Dï˜ ŸÞÌ›ÝØÐæãØØ‡˜à,Üð-5å-ÝPQäƒÄÖÆ48 ¡ør°9¥Ó0#QC„ñ cc$`ÆC,(!@œ Œ[0"æ¶x`‡<‰†‡#½ìpn3?¨ªÇ°c’@ªÜ‘3bÑêXuƒ’õ–ÌúÂÒŽ6Å…¼‘pÛæ¡â—1Akɕݔ«~xnû´^ç¬#¢Z¦ŽdZðÀAnüD 86`ûµ‚…f#€-V•Ó±¤b2©'šdÆ1ÄúÈØÜxJÙàX Wmœ„¬ÃØy DLáÀ+ c v7Ýx²4.DaLøy2 !Kj†Å}–Úâ;‡¿ð§œ#NfÅ`F²-l¨upÛ$"Lg@ u6Ӣ‡À•> Âë{.ël$ÕÁ_E“¦°UæòáIÏü¹uþ…Œs]yeåÌÄ(ŒWt`Œ’@Ÿ,¢€Mh-\¼1-Ú8v ȬñŠ [ãü¸ -˜ádÄ[~æd‘¯&¢ÏL/š™G߯èð5®òu5âå`[Á/Æ6.‡µ±8Ìc4p‡T›:ÐòÈCƒn‹3jð­ßRâ<\'†Ïð œnFù0d€Jf_yQÏI<ØU1.ë¹µšw %E®uÉÞ' )n  žÈ}³H¡ËÆ+¶D¼d\ð ¶6²ãà 3Ù–¡&“. 醤†³1•b*Ôkcp¸Ç „iÇd/€!nL1ÀXh‹€«€” -€ü}qÀ×Û2&ÓŽ €AÁ8Ç„˜]0£sxáÜÅÅò§Ë`ÅË®ž¸ÖÑwºùáM4@Ühæ‡÷ðžÕb2д…ÔBç¤q¥ ¬ÑJ"a±“)=®C¸÷؇PË:ŠŸsµNWÖÀE¢ôÂ#Kº%\´±-=þ1F6†í€5Æ€J)´jèã&aƒ@€ ¨€ÛEüËPÚH@F_éP6FfaLƒ V°Ù!Ø5ÓbË%RÖâ^‹ÇÅ¿ à3ÖaŠói`ÀµR<ŸÛ:ÀÏ4q-“·òâM4>0Üèè%Ò¦P6Þ!fx@“:¯É ®H‹î}%…GCàEG[`Å/K€‡îu€T®˜FÌo -ð÷ªüðd01Gí¨$‹ŠÝäô#RƒW ïH ÷m)€öl€0 ã(_VãàéõÓÄQ‚ì7B̺.—Í.‡ü ^Zá´zD>00!¡k<¤BÖxˆWÔXÆ„¤ñ+#“[/䮸åoÀe\Qžâxp²¨!þµ$Ä) q®¡ Þàf(Ëc" 8àâç'qH1ûX7Qæaç:làdô˜çåïfX‡«¦WG NE¡™žEüþÆ[¶~ËáŸpàŽ“„eÉ€`ìÁ‚“I -Æ!&@© 5nQ!GˆØÁŒ @-†Y8I³p˜@fÙQÌŠ‘aØÆÅ_â«V2:¥`T2à—mxàÅñ2Hñ°øT?šâ>ü¦†æçLJ×Bal2è¡#¤^!Z6 }Äbþ€Í4äQçG M¯Ž™‡9^dæ`ÑéK©º$’4Å x»ñdyãʼÆG.$«ðê ò¦Å_oW•J®Ÿ+šŠP -Á¸Å„ã^Qc–Æ"a±ŒïŠûM8ÀÃšŠ¸”gŠñáC1>|æ‡#Áñ¤ ®ss3Äyrdð8TÍc,6Å=B-…`©ä4óÈw³‡4ÑרºÏƤŸŒ4N?]—Ðe¢˜²ÖÙŠ„îR·D,VºÜøÊXÛx‹X…q ÆY¼ŒÆ,¸p¤XZ½ÀxÃâŸô—›ây^PüS5qšACÐĹŒøÕÏŸò9âR>G|Ê'‰GX2Àµ ž¸ÚÖÄ €·U=ñ HGœÁŽWzéáF722/<Æ@ÎÐÏF -Æ?0Ð¥”!:ÒÓÀ1k£(0–¶ì–±†‹N/Ž©‰6‚hNÊ ÄĬ‘¨¸â‰Ù ¸cc*¬Æ8*‚Ò¸…&–U4@­²*ÞpSîEq8+œFÄÇ q -CI\‚чP„ÄµŠŠ¸Ñß"*â]DB|·°TÄ)8ñ LMÜK‰‰'À9â>Ù®Ãwø Ó±q“ ša!D …H1õ©BJˆÒB$WH L5$¤ӻÃG'ø Ï/Žœ‹7B1!w86¾.i›3ȶÆB¼¬ÆB&_ä(©Ìz)!gÅ%Ëp:KüŒjˆchâ^FCÌ鈋)8â5•¿­”¸˜“s*â’†ì q¥ ¢ìâ>ü†ëð~“üR}U -P–þA:ZXHé “,¡ƒG° $%³ðÇ L¯œ_I8Á4„hŠcŒØ”¤aI‰ZÄ.1”›nŒ…ŒÂX‰ãnŽ(neG´IñH°&ž)æÄ½œø\Uo›bâhRL쀿â -x€xoºùánˆxSÍÊñþÄ{øÒ 73ÄÐ q¦› NóÃsxƒ¢¢§1 -‹3 øšß ¬™„@’`Ââø ]Â÷é„Ró{#ç׆ÔÄHJ 2Ú¸Æe¦°di½ÃTüÛ8ËX‚± -;N»²ªfT¼(ë“ݰà)Âøˆ…KÇ!ŒŸ‡°:J “<1=$òÕðÓC#WBaŸlÂÙôæHâ ¾QäS,£€MÈ>_‘¸¹ Ó÷¨5NA¡‡ -e׋‰5,î–€Ó50ÀíHü, -I‡ð3Ä!øñ® !.Õ#Ääñ)Ÿ!®§ˆ?Ýñ"!ÞÃ}xßÉò—.³Ãy¸ßqáÙ²¬÷¸`›â©¢‡?ŒŒÑò9h$‹g¡-ž‡?¢hî¨ñ‰Hƒ†(â¢áI@ÅüØ„„!*yänÑÄ5¶1± ã(_9G!ðNm FFük(ˆ-qŠˆÏŽøWpÄå° ð6,¼Ž ¿¥ž¸¢#Þ §ˆGÙq¢lß±¡áÙ,Mwpu K)ו6V€ƒæ!›‡;rlzsÙ4ôáCÓ›#Æ&â šˆ=P;ujŠ{xr*êÕüâh±Ù˜£sÓñFçæd ÌÃQìcrš>à–aR¼F€Ä74ñ¯£!NæTÄ·Š8Ù$þõtÄ% q,!$ŽõsħnŒ¸˜!ÞÃyjh¸ÍŒ Ÿá4^ xŸXÐLôÁùyø#ç!^76¿5q`Þ¸ÒŒoxÅÔxsÀ¿p BDœAM?ð¢Ã`vøSÌ_Êòð#îÃxrÙáI/AœÈ¥‡ßð.Ãmø ‡y±B° l V9‚ÊšfxH§&¢ÔÍI!ˆ›™A 73ƒj&â0ÝüâPñ ÆQ©·¬)â ¢à:>kÈèL”1‚Ó1)£%lmc:$Y#¸ŒÚWÜBÎEÐı|ˆ¸ßá;4\†ËÔðó“Äï U÷xK§âQN0œ^/:¿:ht1"êõ[Š˜#Vô»# ¨w’Î/¢ˆ6Œlž*±kÔ¡Ù™:$ÏòD6Àq®Ô8†˜q¸\—nÅ#TóÂcpø Ïá8œ‡ïpnÃq¸L–¿¸ðlö…¨(iÆòÏËg ÓLEí|dÔðÐH’KA"A2¿><|Z kzx×¹iD°ò‡ã¦âŽÏNÈŸ–Aœ§Jî8]Èm²6™ã|ì1™ ÞáA’E4Ã)ÈÆI0dQÑ´¸Üƒ(~aèˆ;Åôp"žÃø §á40æ…¿Ìð.“å/1|†¿ðÎy ¯á8|'Kĵ¦dÛ¼€F(~ii`à@Ë)†%Íô†Ð4 bbó+„•“1Èd§#,¥§¥°¦#ÊM° ˆ3rt‚oÈèôò@êÝáÂц Îïâ$8gˆR’þàrÀ¬aLåk‡XÿÃ0ÅÅ àO3B1œs—,ÏòÞÃÛÄ`ûØ8^`;7ÆBÖÇR8´µˆAö0ÀÎ,"¥ó°‡’Íïš^/6½;PhzqÌàÓH±)¾±Êɘãs3G*g"ÖND4<9~~ùãôÐ.³€&j“C t­Héoc-b -Æ!¾‚œfl"òpÝ ë`ÅôÞÀ±)¶áúù¡‰\$,6Ûøˆöp¼EökÑ -Q¼Àײ¦8ƒ"Äs¸NV†ëðÞã2Ãsø §á0\&Ë9çœgù çœsÎ9çÜ…Ãp^Ãox Çá1|†gù Ÿá7‡ópnģТxœY±1 ÞØNK?'6,™Ððìlâ> ²c¼£ôÐÈ!˜„°:6½;Ph~{Ðüæ(‘ ¦Ñ"ó{C…æ÷FŒMD&6Å7V7q¤r2âøÜ\äѹéx£SÓñ†æ&d[Le69u69´MÎÕœV••ÖSUÕ–”V[WWU—VššÔ—šT–šÕÚ–[וՕ•ÖÚVZ[ÛU•W›Õ—TWW–TÕV•šT[–ÕWUÕÖ–.-­-¦ª+«,&´·»9¯ª¬4ª5¬4.4*5+)«¶®.)+«,,©*µ«4©­¬5´*´,5¦94,«)*m킚–Í n–Õ/¶5;5¸:¹S‚6®,ª¬ªª,*««,)-,5.©+66,)6,,*©54«5.´«¬(³'›L .l÷ò¼Ì¨ª6xE1=`J`†eFeÅä€é™C‡ºØZÝ—†Ú&míÂZÝ×ÓÓ¸ -ÿCé— äÏ’±Y?…X”ñ[›eüÜh!&ç°&­½C”×.åW”W-Pä`¹s#Ò$´0•FýeþÕ VDÎ \PÎX ”6v¢KÃ`uÑK•ˆTõÞB”‚öè¡(â¢ü:v'\W÷TöÍN   ¤:½!¥DHÚ@ƒ¿’/‡GÊCãwjUü’ôƒ#¦ÜHTÿU N:‰ÔÛ³ø§ä‰hI~ JÀ!&=“^«Pš«ÆgMÕ"“®* “¾Š‘I£ˆìX`òˆý>Žá]#ßÕ‹ÍºŠ…åŠÊþôÊø‰. ÿQ§·ŠÅ£ çQÔËùÞB½2þ¡MA/”Ø™JÃAŠGÿ´Úø(ÿìÐCŸG¾OÓ7×q¾vžé4,Ôù÷$…* ýèa?šh?¥:eÚ BLú¬™ÁˆHÛ†°Îç$Þu%RÄïÔº(÷V×Öõ°Päß -áè™HÅvNØîÃÀ¥Ñ\Þ–qmØXÌ]}Zh/YäIøoÀsiÔë—PýO¤ß×YÔ«oï¾é÷3•~o1ßã¥û?~ˆÈ¥Ù—JÃH¢†ˆоÓyÃ8oÀŒ%#³?©2þ@º¹Z©4±cÙ蔵p|ÊxÊQ!*g¦ÔÄ~ÔùýG£ÞNÄYHÕ"“ÞÒ*3©Š½Ìß›ì×Çd -ÕèE½¾EC³KèAZW©Ð<ÒÛO®ŽÉ4ÑYú!MAT9X7¥"ÚK¥bß©çeÛä½›¨&;µ.zª™4—ŽQ™*Ef­.Ú$<¼;-´xhüI¡ßŸÊ?«š3—Qn"§Dš„¾ 5ÌTª¸dŠèãØ×¥ã³CÒú·D\m¯%§³T Êß„^PòC2:? ":Kˆ%³l`ö$(»(â÷‰äc€BÒ{1¥ô%Â$üM§‰?Æf}@5ÑšüS5¼¥HXz($< }&û:Qç /Ò$Ê$ìR($}V˜Þ‰5|ßÚù±žQh¡çaÜ£ü6†tõL`[„ ؘX´pôO¯Š?*Dã׊‘ù¼*âÞ}E<ļ?ÓWï(âù#QßäŸbñCùGuz}XÏó?kù°0qm4–ŒÌ^Õ‚òoáÈìDœƒfÚmŒÞY¶«sÄwýDz¯Ž±c£…,ý¤ßÑSë/lhppz¯£? Gó«,ô>}öѦ×~ze¼z¡YWbÕ¸¬é$!l’Òú@êc} -öW44kADé«3— QYÖ:”V:ÁˆÈ>CèF»¬ÍeY¶®ÝïEèZG…¬  &:±.¦˜ü@@v¦QÅ(2lt–îoeÙè¤Q°g`‚²7h±)gÍøœ¡^™F÷Ñfað]ÚR$&½‚7â9ÎÁ:Kǧl!vu¾z±YHÛGß/d)è£BDö#"¨Šm!JA®Œ¶¡=‚Ñš*ÅÍ7îÏz,ÉêÿIFÜbO@]úý˜¼´ºfÎç|óú -IfÕORJ+"þ"ÎÁ›èrÐÎZêä Õ:C³#±h3•~ï¤Ðïú ¶¬XüFž†ž‡QϨÓðcɰô`?;ƒ’Þ¨Óë—BÅ6”O¯ŒÁÅOôøcÑh¼[®1„«‰6½§×/8!Y7`1ù¬†cæÜ꘽6ºF®ÆA´«sÂz5Së÷gùàœ§\D`MüRí¨Œ¿ -J—[ÞÎìÁÕK¦ˆ?+G'%#³3†ÿL`Í»Ú-ß‚‰q3.7 Wso¾sžçq¯öôûL©`ÛÇ‘ïÃÌÑÙ¸îV3ð;˜ñ騈üP"?Í¡[¯r!i?¡2Ú TPþ©”=iÔÐN=¼«ZP~¯$¥u… ©t™Ön›Žjw.T´ÅíX¶-"Âïx§V@Ú\=@g­´XR9,Šˆy&"âO r:?±JÖDš„GQ/‰GhC¹*ÚNªŒ^jDeOð™@„c× ÑykÆg-e²#p ¢ü³‹<¿ÒéÕ°ó–QÙ›RÁv©¸/y"ÞH ßÅ¿¤ -öB µŒàW&°«´úí]DF¹€ŒÎU+,=Ò'øJFf¦3ò44ÂôÎðµyîµ\˜:³^aÈiÝRâ¶“”°/8A­˜ ì9J¥ßO”x'Á²f2MüDš…Fš‡v‘?‹Æ¥ßšÑÙ›Nƒ ïE<(‰vŽKU‚ÑPE´‘:ƒ&ýÍ^õâ²vJuôGœ`o5ñK ìxtÖJ(þŸJ¾OCÈæeþÖêpTÅ¿`Dä‡j]Ìãy/ž·1´«y÷¼"ÚX:.k+—µÖD_ôiØ“H½þ‰uцú°ø‘> o¹~ã­#Ê< Òüë/tg\~Óe¼æ–ñNV–eû3LÞ- Y -’95³ð£´=úÝ6€r6Ï¢ž­Ƴ‡*m™?´Ó×9švÌ‹Èhw€ƒÓKàê x¼ùÎiÝ•)ĦÊŒ¬þ±%ú\„]„õ^bÒÇеÑEž÷ÔŠG»éÜmZ{ û‚“4× Ñ9¬éü5ÄÔ{Á’ö¨WG%ÐÃnâ^÷ÇÑÏ~Zmü\4:{–‹Lû©5Ñ^2õM¦‹ž*…¥ÇzÑIwåø¤¹npÖ D8&}Þ:ˆw<4~®Ÿu‹MõÁÊÕÑ+…†¿ê¢ýd - ù— ­y'#v®‰ 5±'AY;øaÊ¥àD•K+ñpc`rÚµzxÎU`ÒC—ƒß¦ÐŽ®”«oÀsõ΢ž_*gÛjšu³¤³+Àšv?¤-̪½AIj×@µ?ð1:Sê¡¿Ré·ÁŠËZjD¥'º4ü<á>_téõR$&}ŽMO•B³æIäû2xnµÌ^óµóB–€7Siø;±2z¨ÖE{A IâÑ Q -Іo«—ËÅåÍ¡¤’é¡Í…¤Gðañ7@iƒ*š)y"ÞI ‡÷¤ß'Ú ¼£D0ÚT-2i®¡ò–ŽNzªE%} u±eúõÉ>z¨s°6ð*îL¤‰:â;¥QÃ|×iáj>39ûÖÉ\Ò¶d/v·œƒˆçuóúL š§)|«‰8 ;Aµ ìE˜„7Ô+£'ª¼cðÖjEº[FP­vIÓ–ñCdà/ g×̸Y¶z[3(W3*ÖŠ˜Êr’þ‚TºÊÅe?pêè™FÁ]ðåžM¤xY~=”«#OšÂÒzëÅgGê4¼eöÚh¸4š†îãÚ) ÑxS¥´ŸN§·Kdiø™B± -°Z±Y3‘~ïšÁ¸S§FÓðÁyûOdiø”p¼± -Àü @Tv&Pp—ȲÐ>ªÛR"$í'SFÐB‚’ЙNŽùsÓζÍ8ß»îäºè)(Y•3hy˘¼þ0)ª^‚:kf¯À䔆Ðó#uvmãº0sjõO¢ŸY M/fdÕ¾b‘Ù p´%,1•ø­``öŸG@ÏT®zq)¡ˆ©¬Eãs–Àc”þRê!ð­±bX~'áT)è‰2“8ÃvªXóÐÁP¢ÍAÄ=3'S±ƒ“3}p5 Ùìâ6k]и[žÅ=ë…åŸ -Ñ­áûÛÖÎu&$90Yõ^±ª2´@OÔ)è£F0~'"½h¸èÒÐŽr}´‹. í?¸Úm.ãÜ aœ‹!ìeîËH †_Á É^ÔYèaòÖälœ½•l“‹< ?O$“·6çˆój IAŸMën¹L&ö2וg -Ùh·YËÿ/jh3  á›™ëÎ/s]ùÅíLÞiÄó–”rèx¨¯nlÎEž„Ÿ0®žáƒ»ñÒ9±.b.H餈ŒéK«³oŸë²6Ë/qgôLŸ›—ákCòôÚG™Þ®Ï¢ßMDYhPÛQ }>IÔ+óÇÖ_èl9ûVË/pfôLŸÝ=Ix+q"vN黎wShâåÚHU€e´êíY;[ŒwÅÂ^> üø¬o€ÊP–ZÃôÖPî—Õ™¬ ëÿF>t¹AZï¨ÖGûè’Ь(ðìÆ+w#iv+ÀšÖ_AP;kã÷yüëH¢ßbÑ'áø³hpÒ^BLi£[78묜=ÔNF¤Õþbê«ZP~¦SoW(óï3•"Þz„v BB;;ˆzvÐdàwJuôQ =¨÷ßÖý»µZænÍ×Êýœ0ÜÙ àœbŸýÉw϶yNoàÀé ’§÷†©S£y§¹.f55ë5ï&Æ-@Ð}³å«˜}ƒ²Wlª\õâ²/@ÙŸB,†ú(‹ÿk⣠OÚ‚¼_ܺ4׊qà4‡¬,gÑÎc鸬«lXÖD„=fMæöVÌoMëÒÖÉøßvȲù1îå;S‡6ß ÎÕ0yP« Æ'mõB³~zeÌ ßýp]J‘øÇ¬´z XVi¨ŒGœ†v&á-$Iø|X4³PƒôéÉg 4Ñf: ÿ—¹›–é[óB”~f:b»™@5äxYÞE•…Ý"MÁnÑf¡­ä‰x+…‚m¡Ë¿ÛGRÏžásë0tÝZ¦oÍMöuuÄv7ÌÜÙÃ×Eüv"ýO%߇á3“…<g EP}"¥9`£ž72ôQ# ;KàCøÇà­q]Îæ1—4Y,;gkoÂv³Ï$_ŸŒãfãÎÊdþܸK©ß$ZhÏüÅ}'&þÛÝ -I´±f"¨bDDÑÀ`IÍ RïžÅ?óµ«4m«˜=é´ð»óx÷¡< vµdXÚK¦‡÷Mîç(Öu$PÂ[IÔk'i~oŸÇ>ô8h:hÓÂupÏã 屋Ãò+•viÙˆlþèl›Áº~X÷güÜjn‘ñ®_×`Å•CâZ'aÞÚÙ1toÇ+× ¬¤«‹4 ¿ÔŠÈÞ•ã“–"1é‹<…4…ó7â:š¨“ŽÐduë• ðcEXm+š5‚×ÇÎe#ÓG½6ÚF–„f=b¾›gÑÎ ¨ÒϪô³ƒ(ÿ²dpuz}à\‡‰ƒ“w÷Œ2 }"óî›oœ C×­aèÐê:µþ’fF¿¼Ýuv­Ïœ{¡ƒKW{“8Wû£ÐÁÛI•Ñ#u‚íœïÝš„T -Mì\9J¹˜°~. 3ÐäßÇùÒ}™½5oH—¶³eðÞÖìm¶Í¦_äÌhš@¸3m™SkcC‚zSXRJaöù¬›™†M;*XgÑतô¹ì›—Xŵ“ˆÅ"$ë1$¬¶w55&)n SR.åÊzÂ’Qº“S:ƒÔ¾a‰ªÿ"Bú±^dö$qó:”«£—Zé²Vo³sµvfÐm~b]´181õŒ€ÞV¿÷ ![¯9tëFŸ„Éñ/•†Ф 7Ò<´°&~D;Ÿ…óÜ,]­l›/0)õ’„Ú1|ht¦ßWJõ*…‚m@;Ÿs¸÷…(íD™ƒX6n&SZýv xàÚk7×è“ðÇø­¹¬¿¢œöm’U3²%|&ªÝ‚“S"ëªbéÓkyr² `/vg\Ú ŠnH£Ç™Ý N^e(VÇï„Úøoú³ È>3'ÖðMtiˆiÝáHiÒYiÔkó(úužÄ½O„YèZq¾u6 Z—ñKëiÌ»o¾p·ŽØîÎÊÕÜ—¹ÎÙcãÂô©mmÂo`M¹`QZëyɯ5òú39ýO¯N¬‹žA I¿óݳcôÔz !Ü&âgÛ=‘xvm´âÝÙ/ã]+Æ7|eà`_|ÿü'¨5׎PùHÔð߀ëèÈ<:‰\GpôH ß>*X7ÀAIOŰœ-l¡}ƒ}q÷ň¡Öë⦠dUN`ⱎ*ñX3˜1IC¡P¤«t\ΜŒÎO"ýi!V͙’T¹Óú«Hj F$õ‹ 15Û`„ôÎzÁ¹Þ³cðÐê,œ—ù\Ö!›VosÀx~Ê…£¶DÔ ƒ‘Q›iñË ¶Í0|f²åžOqIK ìD—„1|h´ Ú\æÂÖ¹9ˆxž -G{Ã’ÑîWQ[ ìaøÒ¸Ùº¾µAŒ«‰2»”N«Šÿ¨Óû|XlúðýMŽ˜î¿ØqcüÔ¶8t3”‰Fú‘Ñ™‹èì„*¾eøÜ꘻µ¹ 5,óÇF¿Ä¥É:_=[iì¥bHÖV;4ç ±¦ò†)­vœÊŒ¬þ² ¬7XÔ™ƒóÚ`×CFNOvDDOðZYÞ>~5tHrÏ ÊUÑžJñxmvuñ<Òç¡Möóƒ 5Ã`DÔÞÒé{oï:Ρ]#ߺü»“: »Gœ†÷Ðåß­Djxu -ú!P@Ÿ#¾ë/t].Œž=Ï ¶ÍI¥à5$+l²'#è«rÇ9Ìë:`=¹´¡ÊAKÇe­ˆ©=ÁÈh]ôIøyï~$_‡ZMìR¥ˆ¼< oÁ¸¾ÕÀ!ëVkuñj(@ˆý&_—ák“]Þú·¹c/tie7a»‡ñNæ±Ì£‰B é)•³Ù’6[Ý1'º'§ô×ÅÚô°?‘PìžœÊ_¨ÒdQ^}ؔԟàÄâ'êô@ˆûÔ -Ê.eâ²gíÀ¬»|€Î_CH?]¤ÕŒŒH«í%ä”®JQi×üÍý—·®£§Ö‡$»„ˆv LNë QNé IJo LFékžH>!NÁZJEeáH*wRÉóûi -ßjÂ7o”IxKZW`rZWxrJc82zw›ZëÇ(ö®  ³WljØ•WìJkýà)wÁ+å7 ªxÿ<~˜¹4®Î¢aJë¬-âjwá˜ô J@Þ -Ž~?Ëö¹ÜÖ’eáºÛÉ>Ú)D#ísé7¿Ì¡‘¹¤qÇ8¯/®%Õų ¶¸…¬¼mˆñ[ãÞ(ÎÉ2€mr¶î—Õ|ãä›D9š×dbÃ… HŸá~zè›^ç.&¤Û [\i ¸Ê]JF¹ -N@v L¾oZØ',A•Åœ´þ±(!j¯¥5— Oúìè\ã²–:Aé¥NPv«š5†"¥ŸÌ«Aªo "³f: G‰X´“H¿ÈòÏÿ`þÑ;z4d^—|ÛúLúÕP¿Ñ§·ï0æav¤ÏpW*ýþ¯ˆ¶’é¡ýcéÇS™Gã(ÞÑ6ˆqõËÝ™VGQf2ËÆÉ.i ¦.m«ÃˆWuz ̾Ó·6Çð­qoéh Ì@:'1~¡3“_êºrŽb_B{. sdÄ#â¢û•øŽˆÒGÞ_Hçw÷~˜´…!¨µƒ£sÓi⊠¼yólœC#Íÿ „¤ïÒñY/•†¿Œ\M#(7 eÚR#$í)&=Ž÷®ÇÜ¥Õ>{ÿªâ—*Aù©RdÖS.*é#ÐþØWóˆû<Îaž‡‘K£¹ßŽeã̸?‘7Þº3Ç6Ïðµy›C»9È’°>úüöq^mûd\»!ƒÌ ›öQùB•ÔyÇq¯æZ21{o2Ñç`]Jø„‚qÆ0&QÖðb6sÒ‡Iù0/…ŠmžD¾Ïà„¤§™|¸ý‘wVÍ)Ôë£D@v" i I@£—6gÝæmÌžÚ ùg3…"výì—ºîì‚Æ%ƒûe¼[ÆÉ4Xà÷؆—»{ó·¦å&|q.]œ -.j\4_8YÈspÖiÜ›w$óh¤RoýƒéG¿Ä™q_ÐÎh ÉÀΠ€Èú_qQÛ5ÙáÓ˜àǨ€¨±j|r‘B¿ýŠF&!–µî - a#_Ò¸F>ØW24ë,(»Ô ʪ˜BSZÃÕú+ö´O€=Vû¦aÇùÚu;5nV®ogÝèI>Zfpë²feå<ÙŒ Ü\CH7gÛ¾6+×ÕÞ|ïè¢K¯ª,ô:Œxu ^ÚÌ=™¯;„Í ¶ÍI§ˆÙ¸³2—·šŒnmKgF¶ãØ7}ÖDœ„}&°­va£µÙ·º,K÷Ç€:ýj.!¢Ü&U±¯ ¤ósgò Üœ771ÑǬˆ ¯fdÒ9‰w=Ïsá¥%$Aå‚ ¤$ûzûl"ÌBÛÀª—SÚkHi„£7œ«wõúOäßÿqô;ˆ~}èrð#~£>Dö.¢²…+¬rבP -D£ÌÍ;wŒs;tˆñsã}~$RCïóè×oéêD»¹æ°nË3É'iþÑ9Œz2L^¦.mÛcéÇJáX¡X×ÎÉ.lvÙe_M“Ž"I+­~û‰´ƒVɶ ˜ µZJÐW4>åpŸŸá“«©Z\v9(ÒºANÜI£az¦/n²¬—PÁ~ˆ3ðÿPöù›°Ü f`5>טH¿  ZÍÕÊĸÚXÌ^YÖîsiãrÀã=`¬ù™vçZ“yY IŒÓ"( ’Á -êvˇ(·J‡&w -†&Wk(÷ÂۺȻ‹H¨|§dÆmiã ã'÷]6‹¢wÁ†Ê ZPö JR;›h{1V´ÁÝ8¡&ag¢Z%cSF@âq‰Hÿ”êè¡^›PÃR*&k$Ðï‡ÉC›mãj#ë¤RÄîWwà=,CL_Û6gñŽž|£³q¶öæ[G+‚}ƒ–µ’hØÇô©ÉÜ—qà$|q521&;…)¬[%à™æPŽ+ãÇ}±;ãfѺ–ßZ±Ã:ùÀÅÉ)׫c»·üÞrÈâÙe4^8ù€ˆÄúB•UùR9)±ãxóºÍ!]ßQäëI©àúA“Óm†-ä Z<ÌR+0g¤Ðo?Àšè­hhÎ FDv¦ÒÅ: -dÐ% ‡ÑØ54Q­·GBô;‰ Û^²Âs€‚f°"ÒïˆûêšÂ9ZðM~±CÓfÛ̸@”€‹ÇçÜ Æ¤R)boв¦ð$UöÊ’*/X1I]ÖÙ:{ëÂæËÚ>YÍáÜœ“ˆ7ã ÖùK>Ú§²î¡ì›D¿²Ð&! DØ…4 é MÁš(”VjE¤J¿´Î"^]38G aö(ݪ&½…ÄSî2:{]aÝ‚aù0wÁ†Ê<ŠýÅ-.Ê4ü[#"¼Ý -LLéŸÉ¿Þå -i -òDâù™B6(WÅ›ïœçf2«€ÁeŒƒOg×)…#×èô+cíè”7Li­+L1¥q é¸|–>gø*z5܆ Ä|7)ñ9\AcùðäqÒZë¯DE”aMŽb¢ë8Ò…ìѤ;X„ˆ7ƒâ¢‹M1k°âJ Q¥3IíÛ#¯7XUÿvtæºñYWµà¤ü(åBX‚º½Âº]bʃâ_BýÒº} m+–]Ákä—Jù• ƒ.ë—:5- ŸÙ–¦pn d)Heþu!ÎÁz)5Ü‘@½ß@*cçyÜë܇qà(|qŸŒ&ì&_íМ# -(»Xññi^Q_Ĥ?½Ð°/qÏptrѯ^«ÞÃæé²@çÄ#q÷üûª|t¡e¯"Ñ¥ÒwlCs®úV¯^ó<{z¿Û“J?\$^i—zÓ/Iù=¼š}GÂä;Mó%JsyžùN2u–Tz+«­,ê%ÊÖûYß¹?ë$ìãënü¬[S ³íùJ’S³¯û-ç£.›‡9z‚´Qã¼e༧x`i³ ·Ã`ø/‡ó=™-o”¹Œ§À:Q>nß„r®:~¢Z>îÍŸ• qg™³ 'öQ^/ŸúðÔ¼%Eª¨,ªÉËžá]»Ï÷“p!óÌçþ áóîÏ=΃þîWö}âØ1ëÝÑñÄc©Tv£þ³’öc²pÔcaô ùbäNvfòzŒë 䢧íí¹O~Vä?Ùº%·Âñ.{s~Ǹ‡õþéÉüøe4CùYÿ©úÅàýgM= ÷;? -wúŸ³XVàù`òMþ2`^دö^½¿×céê»éb3=]2€kƒgð³Vþ -ff“¸ÿ¬Ø{2åÿÍw+ˆoÛÃQÏÜy±GuÊ3¸ƒV•2Ûs»ˆ_‹u}¾aT?d—òïyx½SzÑ cG±¬‹Y7Kaƒ<›Cüò‡Ë?kw>>¸ VZ× kVDY£S?„›¿}íò"Ô8ò.Ã÷pÿY™gÍý¹åô=0‹ïë;ÕÚ"lÝ¡ -&­Ñžw´a2Ã%;Ü VD¹:ýiâ%Tq ÜN£¥çg=yb'\VS*xÜpýßú7î|•iá••)jügqsƒ<wgU¾$ÌÛHˆŸÕò¡N'ïóÊÜ«P—€?çò·ÿâ):ƲÈ|ÜÜ¿°ß<¼€ÃÝHú³þûª©-VÞ¼†Æ‡Œ yln¶$Iú ö¶ùuîðE Öa6œ}VâI´±NBÙþ¾ÌÔ#0¿Ó줗÷%¼Þ’¹œRì8äöO:Ÿ£­ï¦”_×y|þÇ~BGùÆáµaV–™Ûs\1¸¿¿÷­µ¦«?Ò‹="‘õ"à·ˆÍå¶,]|Ü ¹– ŽÎZèÿi6­;3_‘•/Eå鼎ЄìÁ+êý×gº•¶¿‡ã“1ÈgG‚{Úî™^óúX#€%ÏžOÒtuX̓º­¥*Ëã—¯ïyáò]-º=ù¹-í_ÞÉéÄ,úrkT{RéîyUïòŠŸ^¹g§1ü8\i^èöåV:}¾/½/šÚ„AgÝÐæ˜¿‰ö‘ âÓ•2+‰ŽÍ­L×rï›AΖv¦Ði÷ñAô>èUm’¬Q6ÚMo«y0½¿Šß†B;÷¤žùS·†ÑþŒ7i&›M~?é!ä>'?%Æç‰’¶{é+çÞ³ ¹¡èØ^«úÜ%…{róÀ_EÉÌYÂŇSŠ ©Êí“skòkoiÞ‹Æ!È‹T·ú2¥ò àiV£û>•ù_‚'®ëõ/s8+Ñïã“lÍùúH$9ü}Ð^/ÚÁÈwF*øû™×¿Æ=ÁîîDÖŠûõ¡Bg#23ÌH9¼ª°ÚÈ8ÅE§*m®Ÿ^i7ÊQS9W%R Ó_»lvÐÖDŠé¿?ÿýÚå¬ÞÔ¾p¢—±ë…xñ÷¤#4n×ÃÖN¾ËÐsôá#ªúùCxÊà¿XúßçÊúŠåÄŠ7>L¦.ºÏ÷Éd3<ôrÑI²‚Ía¾#5O`¢r­…eþž*ɯãw΄æl÷[¹¹C›ÉžNìþÍÚž×áTfŸ?ÿ/z-m›w;ì*Š¡,¸Ç|.H’2›ariƒò ñûÙw«I4Kø'Øô3 @‡¤t;˜fRX©Jþê™<f,ƒ”ö¿ôÿ—vdGì&1ø0jóKR%×Pöº¢,›¦‹¯¿à÷¦ÛÙ¼L]Λ±T£Ï²!&Önæ¥.%ÕçªIË,™ ¶˜µ“Od¯©ñ Sç[ýÓþ¥wÕïú9^ù¶ÿ6w›i÷×çì;¡ûûpq¯lÿ(ä~B¼x¤=R{ -ÔøfÛv -ònÙÞ–“ø¹a•iVA?¸öj®Þ'o–xÉ<+¬aE×–ßÇj®(å†NßÃVL­ ÅݺwØB<–*KËíD·ãc@ø‚Ï<Ô¡Ðæ…ÖªAfn ${Fò -ßYªwn?“Øs*xúáóäz ZÏ.ëïÊ^®‘ö‡ Ú÷ù4ø~†Öî©ÊFzÌOçç¾YN¹²0mãËÅo‘¸0M²ð -âï´œ–]v›il¿wê;_õ¯æ5z¬¸ýíi½S€µ_°ž¯=Õ`êˆn<ì³|Ñ}Zäã(Xú…—?_xC7Ymœ°Ä»ë1͆D›”mT):ÇÀµAƒPs§ü3D2\T¶WäÒ­»µ`À'îÌLüÛ· @ã§ÊfÓçžs»ÑÃÆçèŒÌT)zU "nÀñcˆà7MúލÿüõÌ»Ý6JŠ_³Ã9ï* -3¾ibXA¼¾vßQ­S¬óëü4{}ç”H[“¼Ÿù¸í16ûI~6Fþé ŽËÇ«íÝo„3˜¯oæÙ“—¼rгçl¡ˆ[ôV6ú8®4ÔÎÝ1£&ÒŸƒÓëƒÀ¶~Yó„dxVìkZ.Ÿ³,úM9^mùCÁ ’þÌn8ÊÅï/Ó¶«[ôŠÿ_ŸÌýÏ«ek‡¦„•ê³úíîÿ´G‹Èù—àÙþš=É–hœoUšõT,7šçC/4Vg®F }ªjð -hî{ïÿòäëÅ0w,˜ ø¢ßA.\[µÃ€É›ýàS~&8utföË'‡œŠö‹YŽ~j—š!½dä/² ÏÞ} &}?‰aA¾¶wTwÌë8ד]úª‡‚æFÝ@¢· ªHôÿóŸíþÇÞó‚wºŽ¿Xn~jrE"ŽðqÝj7ˆ+hp÷˜Zù.R|7p&<µIíÿpéðÑœfsÇåŽ4ËnAL@O5kž37}„RKœß>ÒH¡vád*<3ÈòÚ4:!ã—dƒV”,F—b\,Û‹·Jó{qá}ÅÛƒ"ÔÄV?«^&w½XüÀûmÓ¢à7úú!1€Æ¾p¨êuB±¥WŒÊW³§}Sä·µÇnT!WŠÊ¯V^hÜ{NvÌO…Œ[„”ª–—xN›ä-oœŒ*)¹.²ká^´lßX•nR?«·ïêú:wŸ u½_¶Ø°æ»ËeWc3ˆ™LˆlÊÔâêE—=Ÿ­;íÀóòI¿—K÷:?¾vFŽÝ›a'£Çúc鑨ѮÈ!QA‹œO!º>Î*¬ß;ra3l>0ŒœÌãk~IPçrKØ¥É6Átæ~ûõÄqêåÝG:nb'j"gàïÞ§;ƒð…¨­î«(á0 c± }ÄŽíýNM̈£“NK†+©ÀN4@BbßhÿûèÌ GFK†ò<9æf¶ðk}¥$vq"f'X( Û%šcïIeWƒÍÒùˆ!ÍËúŒ Ü»Ü[Á±«)˜”Ø0ÓW ? þæÚç³b—Dûžüþߤ³Æ„-\£s›ËßÈ ´%‡%J—®>³há"KÃ;+ðÇªç“Æ‘1³¤T9ÑE^¬sÑ6úX>ùõ£• `ñJeŸñC"ŽO¦—T5uì`#´ÂúiÑx±$¦ -´U-Ñí°@ÜÔ*ä¹mzóÛÀÉ–Ñ£]|n€£vÌ6õKCR†Òe Ó?¦ 2¦ ]á{½”Ùß8Êú÷§ ýŸ,†H7ÚŽ — º9ú‡ŸÒê@$S`ºÙV~wÃy&.ûò]ßK÷`Dc±;±Bô]ÁòÝ£Ø+fdÿ“Q[e€z'p`²J¥»¬½uŠL<ÂÄÈxÓ[D÷Ð6^$»ýôä7zÛ)V-wR¸I€ZMTœ.›ß¢öç?gÏG´ûQd_0ÇéNc…(nŒxXã”´bõ­²Ö{? TH7Èv¡3HiËà(kU®ÛŽ€íõ`¡®2«¸üܸH¤B@ƒ±+„Ü ‚÷‚Eê‹PfÁJ ^ñ¤ö oƒ‰8`­¼kÚOoGÍzO"&P#vò¢>¼¹nƒjÒmú[ŗÞ ™›QÙÔHÁT2nLü -‹‰œ‘ $I6ŸE ÅñÝÿUÄ›–ø[´­Â†„»ÂÊxzù8@~Èß2XÀõ–I†Þ:²ÁrÒByÐ¥ù˺tm˜¬eÅvÿö }–•aA^‚¬Ì# `+-›°D‘J›¨ß¥FšÂte‘;vuÛy?÷\´Þ§GJ¥F¾ašáiñ ZaHUfj{_)Íöí}®ãçmÕRÖe2ØIe¥8àc8A lVÿf_DÕÜÀC­=³Ðb˜xæÛ¤›"QÇr;Š„ƒ\ûSá½”Øo2NÖ¨Žu«ûñÕaŠ4´›<$‚ÀzS(èºý;ÈaõÖǸ_î÷¼®3í™ é=ÔF+ç–j¬ºèæâNßÙ—13V·vò¦5™¦¬ßù7ºtGžÝˆ« s’ƒvK³@ÐÅ;.ò1«¾-PÛññÃZoZgý(`¥ˆ©ÂÉ isŒDïa¹ø/Ä8z=Ù n¬Ô¶ŒzmPˆïñ.ÔOŽc•þ¶ZÜe¨"´nVe&âOQoú­c‰ÚMú1W3ug㮌@{Ûy&l Æj#G–QÕPx$Fl¸•Ñ7\Ö´~fû;õž‡„(ÅÈÝ'TÔ†knáÂ^IæÖzß×ˈL )òX…/GÔý4€Ë~MSùC—½/Ø[ð'ı‚¤ùR®K&}˜À„h ÍÇÊúìDC…&Ü‹3â×=ïvOú6‡KÝ{£Žë£Å›Ñ„ðvÇ®ÿÖ/+M4Pƒ¡çb=¨‚x)³p„ÁøøQN§!`XX™”|=§ävlM˜¨8Úv ÀF<0¡§#Xùü˜TÕÜ'ÖäΪµ¾=Q÷¼[`•U'ÞÞºfÖùÈù€Ù -ÀÉ–é—ò-R´´8!MD¥Ðó ,!Ç# G˜‰TšA¡Ø»£¾À‹‡¡&A -Þ<ï¥áïâÒü‡L)ìƒu7;bJøiPd§„‡l>-l`Pa8ò/áᘽlß|ÄÐÎ*¬Y+"5³ÞY¢˜ŠFãøÐ¸)Vý5Pò]‰Áüdêº2nvFsF @MAñmf‹m2:*„€ƒ·¾" ò”ûÖõ^¿#iMÿ'xÚêÖ¿ÄÚ-¶÷"õçþGƒã×í!\’ÕºÓ‡"ÈÉIë¾p÷CÈZp1šÔ=²…=ï’:Œ0ð¨o<¾ù›Jz=ŒÔb39å$T“#ƒ|±Ð–âðˆºq¡ $P½rª¥U§úm[d­Ž­í;Ì·R2í"_SD¤ïíb Òm[HÿaÑ)›Tj2Ž(„+‡Î‡‚ɃÛáˆYØÛôèxÞT‚ÝýÕ`]eÇ8”³®5u-õË\q] -´ -j9336d1063-e4b3-4c2c-bf11-1cab41a000d9172551d9-9ef3-4ed2-bbc1-3f2ea79f1f8450 623884f846b4-97b6-42d5-897a-4f6e51d87d643fe3bec4-4b95-4332-9b12-a4179f8af2da034638.25212523713- 1 !#<ïø:* §ê0 @oM ­éþX,\›“mkœhé‰g4pƒ°$Ö wu’‡¸ó6Ûp ›Œ3á#/L}DÓ¿ÜýRâ™õ à0ñtÖe>‚nX<µ¡r -@–é…|ºF4<œ÷a3 ]X$`ã¬òpz@¥081¿ôˆLïá|¹I‚n± Ž”;ÿ5dd9630ac-5672-464b-bdb9-a8e30fa3debe287865f-b4ad-42d4-ac77-1898149a59cml10SVGFilter -/ : -/XMLNodeArray; (xmlnode-childrenodevalu(feTurbulencenam/(turbresultattribute2typ; ,noStitchsTiles0.05baseFrequency2numOctav,1Compositin(SourceGraphicinoperator0%xx10whAI_Alpha_id)idyo/Def ;fractalNois4GaussianBlubstdDeviOffseddxx1PointL(-5000-20zz1yyeSpecularspecOu2l-color:whstyl1sExponentConsta5urfacekkkk1litPaik3344arithmetMergeNod11-2xx144BevelShadowyy1Morphology1.radiu(dndilabbnn-bnnbDisplacementMapsb2RxChannelSelecAyyMatri1m3animto2freezfillalwayrestarfrom0beg5dlineacalcMNnonccumureddit418ccccc8cccc1ccccccnn1b1521CoolB-y2AI_D_163erAI_Erod6_(271 1;20 15;200 200; 15 20;1 1 remo1spliRindefinrepeatDddc1AI_PixelPlay(50 5;20 20;yellow;green;blue;indigo;violet;red;oran5Di18azimu6elevDiffusednn51lular15re13344102(redxx1688-1432yy0..5cc5nnta8xx445ddonnFloo(floodblack; opacity:sCnn135105k(210Gray1-OxxCompBlurT1Func(tab2VFuncG.7 0B1nentTransfCompXferFir12…¨ó{!c (<0ʆ£IÓ¼@B`((€0( …€0"’¨@ -îÕB€nM_*‚†vÐÚÊ#‚á&ŸÕo)Ñ4U‘ ÛÁc/•09Bs×<5'ZH ãýôƒ8qšOx?U‘V…'³"I=ù+²›w¢¸Ûÿ²L©²7*éO”×öùR)í.¿á—4”*Ì/¸L’-”öhe>X'L&æ i·<®óîÒ\‘ÅC—©7“Ä3<›É_ê -oâFŽº¹ñŠ"GÒ”¸4$½°FJ8 -·kBÐ@¦!æòC®mh¶XÍÆ²™6.¨yS¸†¨ß_ª™{|‰Å¶s*¿.dŸ:#¾A]žµ‰^ZÇ~Ñ ¨'E¿&»3VØu1G ²Ôqs-¸ÀÅGSOk¢†ÖFû¬W¢êºi^¥à$é{>“wÕßô«Om¯ [‚÷ÝSã}ѴŠ ÕL‹6»DÏ«&/nâ&€»‚°%p:­ZsÃSÁîãÞBDʶK¨ÀV]w¸DÛ5èidà…7ýöÝ1iúŽÝqtÜ·~®oúäHÍ\u:‘›ü*)ÄlÄcœ“_vÏC:Êg?Û¦J¦Ô4âôwz]Þýw¶~Û:XRê°‘-­ !d"0ÆnKÆ»œ€ïXO¼Ã=?0ÁJð(?&•Úûöo„KD •ÛX¢h–AØ(;SrÀfਪ©¡ªÙº‰êù9ëKÆ´8«ÌÇàŸ»ZRl"!µ”¤¨§+ªøÅ„©Y@à-ÞÒ R¸Ëc54¥8ésAÑ@—W›"kw ŽÙHÉnažýµ½õ—0]¾á KÛE˜Ý.³ââ0×£…hƒã'C¸Ę j\BäÖ1%«TÖI-ñ¶·Ëš˜È'­G³½±PLAtQK>ŸlÏ“bÛ¶`dsEßÑðŒu5q*ÌW5ÙØ[P4Z³Ç¯Xa•O–öNØ¡âs+D¹¸Ù u¸[xbã!¿Íb˜åƲ0Ô_Ÿ¶4ìÜlb•´c¬ª„#&s˜:µµ_MÕTæšÜO"OØ¡1qUC¡+rßX¨z™åÕÁõz}|uÉlœæö—øÏ%3b‘蟩ñAäGQ;ЮäøÎQ½êeÞW#tPÚÛ¨KHiM\¨Æ#+Vß“gbì‡èÅø@¥N1óµ˜\mÖ¼=÷ð«WÁNÜábfß 7Š©s¿a÷n§7)žcØ |_¦»óÂv‡¶mw”„! -R'ÿjǃ˜|tX€XØÕ„¶øõV‹39·¿LdVŸžlr!Ø))ú°yU,ÅÄêFÙ¼ö ¼Æ#~>Ì4øUýÚD(ÌÐ>…dîC¡ŒºEÖ<±™ »÷E„–oÍYØË&ôI¨;86ϼC¬|Ö¦É,¥O˜ßuKëá ,˜VœEÈ^Ø;ðÉ -,e„µý÷b‚ 뿖ϪwÎ%ë3àXDP+¯l IÒa  ,„†’aõ‹{Boaò·`ØÔr¢æÈ*çëdîöÙMÁ»üŸP·ÑôpvuG‘œfóãÙ‡€V\”2Áfl˜ô;Få?¡…·–ȽAÆ‚ XÎ àáŠîŒõß™R¬~†Åø4¨v£Õ€¼p¾Ý{ÁbÈIkT®wrj*8Å>FebÃÛþúKçM‚¨8žÏx}V"ø›õH;ú8×Ò#ƒ],X‰«²ª?ˆã=0ûë@öqß—»Óû:eb„ï‹Gs@¢ZŠ6w·¡Ø>Ë6•ö¼½s75ZoPŽ•­±°v.Œ•ÞÖ<6Ò&©/\¡³J­½VNK[¬ Š´nô„à×DÊýa¿g›ÏTÁ¬cq¥/N±j4/»”š“QZŸž7….ý -Dœm8§)¸é¨i4¯ w¨ö—L#¢¦˜R›!b[f¿&ÿ…XeDXdÿ_`€ºª‹´lª—èûìÚGÝq† )g:l»Å­ZDS$çZù°g<¿\¥”Ñ:’6#»âvVÅéŸÑ«Wjlü%bã`z÷ØUòw‹3t!˜ùüFàÉ9nr»!uývê¬^"g›\r‹#ûÝýðŽ˜:Ü·æ“61s‹÷Ô:íû›»BZH:ÍP¨nÖ™ö m@è&Cˆ‡Ë¬qÕ#±È0Z»7¬×æ ÿØÝÌpù·›„öÏÔ&cmÀš/ш²á„´+¸´;ÑAÚyÌÿDÑŽ>Ù9V”ýõ…à6á 'æzaÞöìH[ú³Mº'G›”7`Γ/ ³p'¨izùÔšÞžã­|í†çqUSÏMrÂD©-¹!˜;úq.{wjêÖLqaÐi‘}˜ ~|Ã~ÉݦP#4ñCbÒÒ2x{ž‘Å™îâú<æ´;aS¬-œ£èÿ/ÿâR4´™iÐèæ&¨åûáW7¡³ÎãTCyZ¨ žÓ lu·÷!à鬿iœÚoÀ51÷r¥ØvÔ•éÈçuÞ°P²„@¸a÷Æxíº Ñ 5èrÙ’…ò«EÞF!V·LCiÇU˜bèίʋ.XY…ÑeðFwDJ:63¡ÜÔ±J¢ã•·*töMXYfi­Öæ³€H˜©òiHkÚ]nÒ‹sj[÷]ÄÅñâSuÆ@E´'Ñûciw‘Ú Pî`dÆî;°S›séÈ Áz! L=î¾[ï§8ù1áF±e6Ò‘Ów…•a”`¾E¤iXêÉøf(V.ïÛH´Ýô¤h½»½gqVÆŠV.´ÅÔr4k„2Sm¢í´Yòtø²%§ËP…àP$ÈJ¨)îÍ„0ÕEŸ‹9¦ïžœ¦h vdûÈT.ÏöY”â~œ%K"—y[V¨(¤žT|×íÊ2–¨ýÝ#È …ZŒb½ß! -lÍ©ÿI,à6)–SSCÑe…˜Ü|ODÑvæBb]½¤€aE€â½5çaÁÑ%ü4µ‹x»2¦×œ&©-ø¯gí`„¾FÂÇß`@¼,§²_\{šZ>¶·A0¨úˆñ3A‡ênP F¤`¤L´Ó)lwÿýMÓŠ· ãJåbΡFäÄUx±~P§ˆŒh@#³égÆg^‘ j 5çþÌvò'ò£þõCvl· di)º‘˜‡uÕ£ Éc-úAäwJbûš5„h=v3÷5AlƒJ¿/Ö¡ òUS‡ÜÞCÜ–ÿ¬C‡šg~ÿŸ÷g.Õè}&žûîôñ¼½Óûµs+ýMûìÜ|N{æfÎkÚ9K5Çiå4§Õv—jN{îhjgç¿5µœÞ•^n_ZçÅS_LŸ«ž>µSŒés“×\-Ýwúòç—Ö­iŸ8?¯ôÊ6õ…ªT©(Þ4«:§kÕãï}æËiÊ÷ÄZçL1g2=ôËûw²ãfº·å2ÕÜÌôõÖ–õßÁf¦›Û¯a¹ÛWzõ庞¿û¹y3Ìú÷ëÅøëä½>ͼ^Üq®üæœoÎcŒíÍc¼ñ½Ùñ€Õ\­­¶Z[9ææ¶_­u<`wßzïÿ­µâZë½ÿ·~Ýܬ÷þ_]·¾ùÞœ9[ß œés³ÒµÕÛ‰5æ`]_ÍMÎMÜõ½ÜÄÜÄ75—uÕ7gnj¦3'Ó×™bnî¬77??7Ÿ›YgnjŽ›ùÁ0±ÞÜÜÜÔ››Zs›Óªo¶½òÿß8ïÚuÅwsnyå¹ê¾­ÕŸWႾÒóLާþÊêçxt\®wËuý§ýÙmgZËMkíÔ–›ÖÎÙï½ô¹yŸ÷niï8Ǧ­]^g–àê;wòŸUOü1®57«UÍú7ñÖá¬ßájÍœÖٟÙÕñ`UÌQqææÙrÓÂ&æÖÜ´–›O«ãÑâÌŸµs•›â8žõ9Ž«ÏeM97¹ù—Ã[÷ÞiŸvgM{­³þ¼šÏ¿óoíuãîxtÓÞ™çÿìÕÒz»É-7{ï”V^-ísr³ój9Îñè¸}Ž[Ç£5k}Çcf¿"*&–匓QÛ·°ÇP+‚¡©£6ÇÃbK3×ÚZKõ·g¡/Ly±ŠÚ ÊQ” ð‰•î[Ô†ÚxÞ÷;Nÿ®SÌÁžê™í½ô­ãáMüæ¸n|§¶}ÆÄ؆2ßñˆ¡6Ô†ÚPjCm¨ µ¡6Ô†ÚPjCm¨ µ¡6Ô†ÚPjCm¨ µiÇc51ë¬KkµßiÍôo½´:ií̧zê^)žÚ¥ÖñèàŸ˜×z*±#=£ñ+c#•è)=Qø™(Ó€óóQ[8“}¡—ÃÐCÉú:™±ú¾SŠ2’‚²Õ^y2}a¢ - =œã'ód³ŸJÖ×­¾/äÈÄÒüZÞ¬óº)›•Ÿi–`¦¼\}f9À1¿±ô°)ý®¨¡ÁÆD°I±ô B„ßÃÝ™›6ßñ g{“£ G¹üjï72qì¸ÈaöÑf–3Y9#Í>ÚÜÖ,gâK%Æ^_˜š_é…" Îù?ÚsŽ­I@ûFOFƼ±œ}´IYn±Íãü9W£'¦ÊÑ›ýæ¬QÛ§ò@¥«> VàÂ}ñJoå•L)‹,Y_ËRL 3gÿ÷¨­j’±6@ù™FoÀ·bà*¦Tbh‚‰%9SÙ$j3 GoŠŒI(ågòJÏó…2˜G ¶”ŽÞ -jCmÔÖ±m6År\ÅB•$ØqJö;ÿº-·½×º7Ïÿøjl·}Z+œ­Ýöo†3»å_­íûsÞÕ>Þ·ó|¹Íøf«÷ÕºÖüý-½¸öúõ±½z¦> Ê|l3œi1¶™ -'4ëµ½Sž?gþ™[­yÕ·¾®ß7þ¼mï˜×jm&4qí¸òç¶ï¯ùqí¯{Æ[ãþ}÷Ý÷Þµo½sÕœ¿æ¸æ®ëÍ7g›ùó‹ùÝ7¾;÷›_[lß~æbm}ü¹Û¯ûÞß»æ}såÿ—ïÍ3þÿ½{Þ;Ù{gBsïÎoµ6g}u½ö+Ïûö¯­»_noæœ[[ïÞzÛ»s®¹âœñ®õ3œYm¯ߎy­ý1Îöv^_Û›5Æ™ÐÔx?­¸æŠïw¼µÝõ-¾õÚý|÷}3ÖýûÝý{çü3œyßÚ gþþÌeçÏpf×úZ­ñ¶µÖ[ûÖcœ«Õ½ëÚ«¾ãÿÇ—k­¹Ö¶ÚŽ7ÍöZ½sÎp&®•÷ŠiÛâ\µ½[w­æùökëóŠïÍ•ãz9··ö®1æ;Ï7ëš_slï½zW«í®Xs¼3œùü3¡¹óµÛR^kÖ»_\ßöïWk¼uÿLhVüoy­ç|ÿëí]×ýúóóÌó­5c»ÿrm+¯Y÷üýqÅysþô^›oïkkóÛkÿ>î9Ùz&4?ÛÌåjZg§vë¾µÕ:g»yßëLë¬7Ù?î¶ÓýµòúÛÚªy§uö·|×:¯¶ú¾­µÒÚ3¡ùXóŒ?ï·»Zûý;ÿ]uúf8“ÛLhîkóµ¯ùwÞµ½¶fŽùæöó½¶ÿî´ÎßzsZmͶfœáÌ~3¡yûgpåÖv;±}-ß6o«÷þÝ¿sý¯s×[Wý\[ýؾ®¿í7 9±¾=W›¹¾5óÍ/çÖÿüÖís{s畎}ß²¶ÿó¬­¦˜œÐƒÝÙâ¼q½g½sÖuõ=LNèBñ&T%ÇÃñ(0Q¹¨ ¤Jó+Ë/ôJ«ØÕG›íëEÎ<Öç©°˜\KÙÌS1 Íñ+g¤k·Îú+·yc¬³æÖöz¯ígÞ»þÚkÝwÖ¹1¥?«Â7Tøý;ïl­µš[}iÝÈʘFI²Äm󥕃!ÌUz¥É7ϘÖ]õÛŽwÅ¿y×]?¯oL«®ãÞñÍ]ßLëèªñ K/ü>˜z¾°‹‘ÈUì“}’übý±­´>P¦Áœ“õ=h¤H¡VlÓ]-P4?˜8º:v÷Lç[﮸r¼­ý·öu¶c­+îõêšßÖÞoݽê˯ΗÖÛùç¯Ü¾ÝõvþvgûΚ뫱µñ®·~Æwóß{g®ïæ–^ÛïþûýZŽõÆÖZLëÜ|g›7~žqæ›ÚŽóÎ×bý_-þÚs¾õêzïž·ÖŸq½6÷ݯýlßêÚ÷çm³Ýöþ½¿kÖ˜?æs¾5ß÷ƶö·ú>þ·÷k˜ß,äãwšß(²>Î\Å<ÙŸ©ŸÓ™J9S¤ªª<™˜ŸÖX˜Cɯ¥uöMëÜÚþ½ßZíëÏóÜíÖ¶î®í?®ýbû 'û8¯Ñ[ÕE×”‰£ç³æ•÷ïö«ÅÛÖ»·µë‡ 6ir@‘ûBW[Þ'ñJŸ¿Ø(væŽPV YÎH”„ÀÌJ©úX¬Ïü€Ý¤|!ÂÌÊ7ÀG)?cb,&‚åLõ ðÁ8އÁ*ö…œÕŠû|>2B6/°þÌMÌí¦u߬7ýŠY!…! -CT‚³UL씣WÂLÇÃ`NÊt\X&0äB¡€%û ƒ/ƒ7Ç£’$ ˜·:›0Ð/®g—nDFîÜŒ -Ö7fòTî$ÒmØmúV6D-–£³`è±—IÆÚ ¸±ÙSI{±ó©·[Œx†êÞU1eSiøßŽ2ÚþÅ1Äj¾©*áij¤T*T—ê+qëÁ†B©)ŒÒ&OX …˜[0¢Y“#+ŽI=ΤYà”]9!¥“)¬(*Ï‚"1Å (Ï…2aúPJ®‘¡è®)E)ZF3¡lŽB«œ Flr¡Ð¬ ƒk†1‘Q@‰ ‚Æ¢4Y™H£ 8 ƒ ½8áÉæã&œ)™HT¸™„Jxb’Šüµ$¬ž$r ÉH $±×ƒdá¤C’Íñ lÀIÅ— -$%2˜„JV¯‰{+MS±d[)¥±iPcµm¼BŒm¢„Pl t›¶Jfas9¸B›‰U9›FÒp°]6¥Þb^Ão“Ùeë&$ÛæxdfÚFC¥l`Ff¼\ ¬ŠH7P:a,BTb C< d‰ ÷¹¢É{:šlA3°²è°-h,ÔWã2ÐêLX$È@k#!#®ÎC,²9 V#3µ¾È蕼DÖ/"“J„"Âe4 "ØÁ¢ɼ$º¨šD’Bƒ'"@ã!!Â2È8ˆŒG.W’#œâ~D¤M\D"V".,‰ Œ&HDGLJÈæxŒxI¹E` ŠbG,ˆÈÂR”fBA áÆbàU -Ä©Œ€ÄÂfX‘ $‘E G#^ÀAL®dƒbL€x Ä"V`¡L8D¡@#C6ÇÆðbà1THÆFrŠÐ¹@"&\ˆ$‘@8²dæ4ˆÈ”Ú†„jC Q’¨mPÀ4Q•¼´Ò]Z§Y±´ÙÄJ3=œRA†ÈÐ,B mGLXh›ãáÊ hqBƒhÌNZÄDÐ0ÃȤ›”ƒ6Ò’’V¹ 4h¨Íë´ÍŒ[Ð"2ÒH³m"-a£ÒFÉGCE*:šÇRÀÑ.KÐZ™‚FRÐh´-!Éh›ãQªT†Q ‰0¨k—!k#ê·†!КÂ$k:bvµ2rµo“¯9”`UË€-ŒVáRTÓøXpÚ ãD q ,X4Ñô©h!E Õ‚‰¶9™”‘hškoZêb´AD+¸@4‰¦iÚÆišV€·*dÂ%ä$tÊE -(¢išvAÑ -@4ÍÒ ,ÚÆDCEƒ\X*MÓ´RAÓ:ãGÓ°„GÓ4D+ˆSa"÷•ˆV €†ã¹Ë¡ߤ&„ 7þ&IJÎÅ¥ÍL±#0m šV ÀE]~¤7—EböNm9äÜ0!älŽÇd´y*:ǹhl@lXŠ…ÍŒ ¦>$92`ˆø -ØÆÖæ¥ÑPÀ±|6ùy¨Æ¶7Ç£\µÀN,À´)Pˆí±Ô\´…¦@ÕlàêP÷¹lÂFÂw ŸK(vNª­I#ÐhÖa›—dµ9¤ -p@Š‚UÁ‹“¡-8!Ë„(ùd^Ïc£E)›ãQ Ž`> Âêaó €‚zÚ`q9‚ɳFMC‘4M3(€€/MÓ0&š6* hZÍñ@]4M#A"švÇ/ +¢¢i -(P`s<.˜ Ãá´@ÁA訠uÂ8 “(ðð§ŒZP1à± wä±.-²¹lŽÇŸ³Ï&š°<©Ï…T`-œh#7 6%ù„îÒÍÌs‚TˆÔÇ%ÓtÌ«‚e ‘û˜rYNy” MƇ‹Ø¿èóœ¦i$÷@=yÄ@`ç£išÖ@ iÚmxm¡ˆ¦i2‹¦i: mŽD¦¢iK£Ä7MÓ MÓd×oT* $~9 -#UÆg2Ñ4­²qqJÈš¦i.IèKà„8DÓ4‡MÓ´°u±7š¦i〦i?r¬¦iZÒ§Ë|s< -MƒL,šæÉ¨hZd]HrÍ(H¼€ìe© áA„%Z•5­Áàv–‰“7dÐE$Œçj4Š£P곦iÛJT}žÌG£Žiƒ™“ƒ)U Gf²ãWíhód}´™sÚmð_Ô&@tÕ˜é e`ξž©ò”(­ïS!>2ÂŽ¾–Wz,G Æ^±Ù$A–8?r6C/æ‰&éM—jFNÊdÞ,g"/œ8§XÎÕ÷ÅæL$0Š“œ1Ðk}3&ΘÊæL$ð‘dĤ O)æMÒ›_²fÌ›­8À#gìs 0ÉV ,Ëœós•ó½ù‘Ÿ ‚"“y#„­ÿ… D¶BЋ¥`3ÄWzãûB/1z«˜Wšì?»×è1Œ_} !øÀSê“(Iô`I~žRŒ‰ ødeì[V1±Ã*c#+¦6_˃,o •^JU› zxc¨›…ªØèÁìXpA%ÆDÎk(Ç LA Ìë´b` ®>(§ô?ÚÌ -JI‚Ý|ÅF*Z’á+V-²b£”¨†¢Š¦Dó” |‘õkyâGŽß€o¤)Q# ½0ôb3Á2¶Ñ?7³Œ®Q&{Ù©IËë ½Šªš5ÆPS…`IW£ŠÂT^ë‹QrüVž‹¤¤ŒÊU&C•  ŠÍX–ë|F“z )±˜§ú’²ÙŠ€*”©HºU}e ¤0U#e"• ¦()ŽžI 5W_ d}Š«5Št5Ž2:†20dÅ>p´›¦D Q”¡JæÁJ0Ez%X¦D ‘¿–'£/XËõÅÀõ­è Ö²Td²pEËK«DÏGξôBVù‘””©() AÖè¥ÆTæ…ã7@¤«QEWãêû‹%’¯ÑƒÑ¬%Ó#• @RÙ`*‘ÂT¢ -,c^ì#)9®Æ±Ee„ßJ„­d2 K’ÂúBè(“©øŽµ@ò[Ñ”¨!–\ö­hX’_Šª‹/S"FüVà “ú$&jé×ò` e²[uЦD ¦$½nÆÀ)Æf7•>£Í´)ÃŽ‰Ä9a¾Ø­bÞœ¦Ògþc¦9;aøuÀÒ“ÁÄÈSú`­d}Ý¢–¨%ÊÀ°ö1lä5ÁqMp¬ˆ£˜àØ‘¿lh‚ô—fÆC«PDfbeüµaS ï!7¥y6%ûÏã±ø<Á#ẅÿœ,>O@¡¹„8 -ÍåóÁ¨l,o`¡¤2žR„µ€&%ÍÅ#2x*(3ec±±<Ç•IŒl†[ èTúÇ0›ãñò@p ZDkšrœt Õ\›òMN!L‚ ö0Ñ µƒªÍdÌFŠ -† lhîÃçŠH$+§“+Já%mj`êk€ ¤ -\Ê""-{pá¨rÐ ,Û“£d w—J¯ - °`¥¬2M”™ Qíl"œ!ª Êû*¬z0aL…•Bš½E Ü«9 \d [½ ²‚„»9‡„Ë‚,r‰@¸wAêÌLáP -X!ÍEánô{g -pQ€QpÁÀݘ¥`à*Àf²>pI…Ç¥‡Ò™Ø˜°ªx -i.#ya Nw¤!¡”„‘Feƒ¼°œo¤Q¶È Û©˜¬êè¡ <àK*¤¹ˆP»9ŽÇoŽj‚c#PÞW%e9Á@(E- ¡Ô\f« Žýx“Uµ®ýz:2ËúKsqx …H‘“ù,3Th†‘™Ø’¿4 ŽåC«Pæ"ZˆW¹)LDùÕ„ÍñQ!ÍôAA¼çŧ‚vXÕS1¢j"/>/J¼È¯ZNŸÆWa¥&•1ÉöÑt ws<<Þ‡‚pñ*>‚à >‚à$2lF4ð~s<<¡®q°D<Ÿ ³y>†CŠœ‹ÝHØXbE‘i¶-+Ô“LRÒXf(QÝ$¢ZŠuÒ\<¤È©äå:®Cð!Ð\® cê¨"Llg"Ô5‹)2ŸR,¸lŽÇ¦À’QkçÎFLÆ2ãJ™‰° ˆÏç´ÐÀ(°Ç’6qU=‚ (2< x‹èÒÁ¨z ¹9V P*®|GÉžD$6—ø€ W´ƒ0Ô¢©Ñ$¢#DBus<® !-(.*{ ¢,T¿ c6°ºK'*xgLÄ8†¢¢S Ù'1tr#šÅ)Br¥ÌÄBÆ„N~ ËWR™D2DÕÑLì -d1êLJLB)tAðÌ$Ç!LIá‹x$0œÎ¿<‘§bP0`+àfâ í†w:¡ÐŠín^dÀp±M'”«Q–`™PpýæxPòÂv¶SÊUQ×È*-c<“ „¡6ãˆqH#ŽÍŒ#¥P®*3Ž å´rØ #‰ë¢²>¤5L| MÉØ os"c6b2"ƒKD+”vBm´ˆ&øPºhAŽd‚dUA:b¡Ñá" --r¤"Šfbªds<\ÙÒ_–Œ1#YUl†Q1ˆøWHÌFí TB¼®6Hh"®9O‡ÜTŒ•ÒÁ†ªnŽhBr)Áhya9ðLh´H rs<*¤‹Š-$Ê -eI!Hl2$0N›ãQAH¸²S]C˜P„øÝ©nŽ_¥Z¦Y¤ã“SípD ›ãa€€2•ßjÁ‚[ ¿S­Tl:¨WBDƒ£…A;D^›ÜAHKþTt5A½,>†òéÕ™tDS8 - -ÎîªlKV•AKØ'-%9b´RBë›4ÌB¦æµ ¹9¢ P½ 0O¦ˆÖ|:¨z‰K%“1;JT7Ç£!"4¸PT°€Yˆ#‹ 3½±|& -endstream endobj 22 0 obj <>stream -žcŒªˆAmÐ -"ÙÅæxp´Ä8ÄÉJéä¹+>©å]˜Óx'“Rl"bɪn)ˆŽØq’b …êŠ(°•D4‰¡›ã!R±@µdpc\!Išª(ðæxä§HD{:{p±xHQhÆl”‰R9ÇÍñxm¶ŽE/ÁIËy:Õ qrs<"Ê‹1c|]‡ìѤ—¬ª¥ÀB°€Kˆ“›ãÑùPÆTOåbœ Æ‘ì<’U CYsIePÌlˆ3–Ä-¤¹Ìxw)®ð,F—~È\l)r.›ãa ð~M`*èÁãHvLÕžƒØ¦$J=E{ýg -B_‘Z’B¢zB ¹£Œl7cLc7&m!sÑœOT5$ STdš[º,\çr7wT*Öö†ÍMð -ê‡9K$CTa -YsáTBÂÂ6Ù† N…ë‚àÙ -²h#Ê žO*Ì›ãáð‘ %tÝ’a!èFB·€1aœf +ºb(»8ØÜ‡I)A[‘@W _âÀ%ñæx8T:ZŽíå½KFÅÇŽ.:& ¬Â¡ü \žÎPº(8h‘˜„‡#ñÉ„ 2º(“úòdÍA!CT(:ÅÒÔ¶›S¡PG5ã3ƒh6W” îæxltµ0°Á\ m«(9MRjÕPT–ÇË0b„„ÎU €zšn+.(RŠ=q¡P1¼Z” iBãB¤'>Ö(Ù¸‰Vk#±9ØÄ©Hh|$¬ƒÆÅpú F>½ Ƈ“€ˆ‚… -ND䤲D¤Xe ‚D)(A @pˆ‹DƒUH¦Ô&dŠ|“BDìÃO[ã"<Ô†òPÑ–Ãæxl”Nr€ˆ î0c]h%F‰*Í,F¥ˆç²¥Éë³A"˜A*H¶bxH JòXÀ"Y¢¡â£7 ®Ö¾4h  F@0t8 †á¤}…A£âäê,›‰©ÛŽEe:Š‘Sºp-tï{X8aÈ,$Ê‚æ;¹.\&…KäÓ(4ØYEa uQGU1Ò¨T6#ÍA›­¨ÔR T‘ $¡bˆhDHã0x$‘ɤrQÎ:d¸€jT.„T@0—C‘@Ž1 -£(‚d1Ê ¤Œ Ur©fÁ/Šä˜hÕ¼«óÖÄ3B¿òÛ 0–<ap@ëÐÃJÝ’cÖqÚ0 }4AÅû  þBÆÈtœÚì–âŒu –ÇNÀ«/Ð ùº8R_9Tϸ=¬´ÁúìƒÄÕ×û€:‘&Gk(ÁsRë½ø{œ²» }©+èsŸxÂ┄ R€É¢VäÿV,k†¢Çùدªí¦¨ÑëLq4Up†æK2¸äª³vB¾osz8›PÍÔi–TVý¶”…gIÕx6Ÿ}P—Œÿ<±GJã³Õ·dÜÿTŒÝþÊ'œ| “èÇ_ﬦÙßz88"ô-)êÌ»T˜°L>®.7 9Š•f[n©qm<´O‚%öi–ÆVEmaç÷i_ Ü‹hmèÉŽs¢–Í'ðóÜ@¹6J¢XL¬¼ÄA¦kRËÃD(t%ÈË[×'ŸT+DáXõ˜›Ðœfs‚MQ膺³¸\vbËEï3<(¨vÉë.Ië±ËÀ¢ƒ.^„%G…Gè—: öN9šè’2iQ×8{[j뉼£Eâéðÿò{ÁЫMêµ} ¢…ì’>WE}) -çf|Eà©Ç<‹²Ï´ TÙ2»„¿OôýM­¶Æ™ŽhÒwnzÐìÒªƒ-å{ó£‚T|g(@üèQ^ç)´ör¦2ÈÍÃ)GÕ»nœøê[&®ƒÒFÕ{á‰÷Fµ Ò¼1¤¯Ú ø ^ãƒrµÝ: =n¯ùdí|LtëW5Š”×Ê€dÓ ¹çÑmƒf`daÐça:šG¿“ º–GaXoU".¢ Œa8¤¾ðc¨Œ—áà.øI4ù ‚®»ìnÝ4DÛÙÓMÐ\/š\M,èaØÖK±@ÁMòÍïAq֝І9JTq!LV¹çf-y!@rãø»Sd¹!3ùÖÎ :õ³†uÙæ‹†|œžy@vôÓ\­b‡Ê…Þ©SD/º?k‡aÎpÔ¸‘Ë*7ÐêÝð$àñ«Nâ Š¸<¡ ¥Ÿ“ËÆ-Ñ¡‘rD¬Ç‰3ÔéÐï)wHÏ®}z[à£4TÕ386b󉱑N²†´{Kic‡]ŠÑsŸM£‹‡™Ý¯§Æñ…7Œ×~8ÄÅØd ùQ2þEgZàÂ^XÝ1`OÈ‘}»R†ÇØRTkmçpˆ¨M댠|z©ºŒ¬¥š^/ÕÌhÀï$xäÄïŸz¯'‚\}f=¯œxN d’ú¨–G†õ׋ñèOP†][•@.ö?¾¶#Gí #ÊYS´³;€é6gý擆{!€6¡j]9Z]õœ“‘Çué¨ùÅlÔ22®¢Ê~Ôˆw_Eì^’s;øÌ°cÕWcÑ5ùº-.$Y¾ïªþ]‡ØXhHYá£X£0Pò¦`^I$¸tF_¦pSjÀ}Þ«ÑHuh3œË#á`8Ò9^k¢E»ŠºŒ5ª„3¹ÏÆyñ#Ü'‚°CjË­-·‘Ig -zÁ¬Ó'¦î>2ì6Ö°¤KŠì^ƒîË9f¶ÏÄl£ì/‡3h*¹ ?-oF°T„Ó Q†£¸>ç•·p*&ŽÃAð -†ì ¢íƒAj0F‘¬¡òĹØÜbÙ«‡C¼Ni·Ë§ö/¢p±=‘,4p>I’b”1pM¶]z,Ùd-x‚ŠyÂÄÑŠ-(Áˆ$Öå ÞÒE³žiCuèmØáN£ikDsapýHv¹@)¾(¼åmñ©¼Žiq‡¢¸/&qQR'}RêÊä+ F¬´Y¾äNÇ*,êOÄ(’×eìÒDÎM—ßß…¤h43†á.»æÒ@Û` ±°µ†1~8 óg%50|þ \?(p‹•ÁLœD]óõË^ã^îôåÀIʨÀ£Q† !l6;xÂÈ›ô­‡›.AmÓòø~›Bm©´2«·ÖÇ:)ÃÐâ_º3­6®‚†•Òc8j¥P”q9¢U$˜›!×ã_çÅ‹vž‡\‚¤_Ëc@Ú6K´¯Ü†c_µMl æ,OQP±Íb{Ðé2³ -ߌ™úYµ‹SN“÷É3‘®4ÒÚæò¾?@?yê¬'@‹µ½¹6²¹eÏÔ ë´¯<¥ë#˜Ú3õÂ/øtMJË¡3\{߀?ç)·ŸmãÓxæ .yô€¯;Å :;ÿ<äÇþ0tÄJJ„ø·\dt=4ž?«Œ™̘z¢”¥ÒÂ=& -+EœÆ÷¨…A~lÝ7î€&˜hræch`妇‹µÎ` jäH 6™ hTƒzÝ„×Éá@h&,i¸\#ϰÌuE’åHö 1¬*µv±‘h– -è7ËS¹{Š:«QÖi‰v+ø.—øÙýȹÓ{Ÿ"¶‚²jt•èç3E¬-Í>ÚS†Û· þºÒÈXëO.ê™áøµWs'V–¥qÏÍ -Æ`]kˆ‡:œÔÚ ÔιqœZõ‚*s…6³Æ¨ ‡ì Ʊï \pžù÷Ð~€ ؉D›Ì¡ÙôžDcµÙ¹m^¬h÷’,¡Àü¼¬¦FÞÓ¶ Pè™Þ'RNºÓƒ«Q·qQ°‘ŒÈ¢Q¥û(DJÀºeh¾¶ðƒ¸@n/Â…Ígð~‘=u¾Þô6ÈMËö»ËÿµðþÙÊ ×¢‡$ÞQ¿ç÷ïÖHIQ¥«¡i5Šu¾@ì#e;Ðv2Q8|<øÇ/íê”q{ %ýÓ!v‡™l ™m¯*تft—J$®NTÍbµq4=°›¿"˜éœ7¤áH2¡ÿEÉV´ûՋˈXUtèoÐ錠Žvïa?•H) 5#qÊ›wÊ%[½3@þ[I5$P~U&µ¤ÇHi¯;~ÕÁ½¼öQøh‹†œ5jæß”#pRÔ·UNÿ[ÊʨkÜ9ù1ö“ªú(#G£…Àýë?“¼L=ßjǼ݌›xÃV+2jt/ù í -ÁºJI¦ƒH.‰WÀÌi­ÉÜô© í3=¤JbâVËø¶N0M™ãvÛç•+p,ƒ|`²òKú²æL–ßÿ -˜i ¶%®æ©ó€€(‘K 4…äqáfsàØa’¥)Ýc@5;(÷•òäöS"otT´Dä–•Þã²ùWÁ)ê,±‚šlëÌü™l-+ WœCߊ''a”÷M~É|ÍfËS<™aíáî&~0‰Ó“‡Ù…pÞ -"’q7<ùë;(»ooÙL¿¾È ËP•n1) -†EÙ@5à2J÷Ãñ™4»§ipÁ’W¢ÎBŽo-íT.»±¨!Ç̶xn+8Ü>L1´ˆB^³ÒѼuc5§ 'ÚE±1•ÁæV¼•éh;wÙƒ%K=ì“nW6KˆÊà`øÁJŒ•DßVvxÙ -Û®¼ Óœ*¢îN`6×NlÍOì¿'P±¶Z†ç UeÝ~M ØÍÊþ§í( »¢,Ö ^¨ƒ«qŸË Êô En_™Ðh5£2wm]V‘I´;ÙµŠÎïÙAØ™óÿ”7GšòÌÈìߥtuŽþ«ÞËÌȪ½PRW,’¾h¤ çǘ@iŠ!ÿÃÔkÊse‘|cøüYÓRr‘ª©Q&$$_R%ÎàFˇ©È©}W”œís}‚ïÞž›œ×b£‘ÚHç2™ÿ-—ì,>NçGßÒ-¹´ígù‚-©Ú 6“S¯r½¤'ñ‡˜»°X«GKõHæòCp]èÅX!?§‹¨SÕs'§þÕŸÛ€¿u€Y2±+Ó«ªM3Ä -3É9&.¬æ"EC0'°³ëxp¡'=ÒÚ‚–VuÖíTn…ï{‚Ì);˜»ƒ†´’"öYÀÁKGûé´ÿ™ØÁöaLÊÙkiçÂÌ”êØ9{p6ºÚ¿VŠ'ˆVƒþ’²¨ßΆtòŠ´Bè…ŠÍç÷øߎRišÄDë•>Ç%Oõ¼±­yd5étÃ~£yJy™‚‰µå0öôê—FkPXF£¯ã8úQ§´e‡PM»ÚÖ06x —|„A›û¼¶ÈÔx‰,ÿò3f^§÷C¡lDtr„d"H$ðß`e~sÕ?ÕkN±^‹Â¨/÷¼uWüT,æK3€t*<ŒFˆyо‰Üò ê.!9ÌìõÅ+¶µúòÒ‡oõ—+ðґȼ]’^†3ÆT|gõM¯[”IC(6S;ßÕµqÛÿîÔU¾‰i¿ÉáF¦/ªx’8=/±5y–~°­ÁS¨2R7d¹ík£˜¬%vfO!¥LB Œëwð˜#Þ¼¢ÒW ñ©™kaƒÍ™bø×Ç9KS³->†ñc–{†#ž†zÏ_ñO¬tjõB_& ×¯ÈLÄË -A)AmMQtÌcÍ]ȇ0×uj3 -¦Q½åïèådNhؤ\ÆŒ7J¹=Bxú9˜A -x.$_Äþ.£ Þ—{»3Gm0tsD•Ðÿ·¿àk9NÏ’wíUmüóÿ¾«¹f1¾/À(úòÁÃö5zRXÝ(™˜Û¦*Òt6ÃÀ­Îë%9Èw¯(Vþ•ŒDI˜BG^Èù{ÀÀª©±­?ù µ—ÖRŽ>^'ÒŠ‰) 6 ¬)â&X3Î7¬d b×dó¹ÖNA„ -Œ_¡›`3´Z$p©h/Ìs3sbñµ4x¾QhÁ\ñÀIâ-–aº–¼õmr°—ì²cp|‰Ôá'=Bhžíu^Î d+!z{ƒùßzïcM@üƒ]§¤5SÔ g-yÑG^i,wå{Ñ,6PR…}Á« bG£\¤>š^·hÚ¦x8Ï¿LM ³Š (@AësÞ˃\—•õbзw?È‚Àu‰ðªKþ‡þMQöÃÁLܟ×ê°=v á«=2Ý9ÒÑŸKyÔl!þ¢…Þ‹wkךäÓU—3³ˆ mh/2MzæWtX£H(ñij×€†n"Mˆ—B¯Õ„½1¥¤Ø±faÙp „œï”#I,ÇWQµŒ¨P1i>“«{bî\+W2u¡Øº«‰YxWC|g˜D¨4áòG!ûu|.Ü-+aÃÞ]XÊÄùnŠi÷ÑôMªÿ ­©Ÿ%!¾‘}åe2+–÷EIGS†t9þE§q—ÆQFpœyæ Ôñ¿¸ŒcGã;Ìû¨&|hÁ:…¸(N·fáh¸¦¯ˆØgŸŠŠ¬d{p”BºäÔø?§ÚÐv(€×Ò×Þ •O~ƒGŠA»îË6‹¸[ ê‚þ J93;R'Z$Ä ëAbîåâÂñysùá_Ô$<Ó$ -U¥(‚ÖÑû#õÒ‰NB›”ëýQ‡þíÒópÆê`²T^GaÖ†ãS¦ï¶¨6Blvm¿¹ÉË,E?ÛñÞ0Ëì`=¨±öZ‚éoË– !mÚ·ÉFü?Jèá‹™Ëm18Âðù#ôβimynˆFùì’Ûb&ýEq™ÜÔø!Ï]úáÙ¿ß‘yÁ-™ñ€s¿vÎí§ •êgìi‚<­žìD+"@ÞT f‡,p‚ŒcG¤AÇIqp•öÿù­Êcœ½è<™Se&`¡Ïg¼!@aGm¬?&€êv²ògEù‘=Fø‚£ÝšpÔS€a/¦»ï¡âã‡qí|vçWýÝrÖÖ°¼Ö-xÞ(*~~<¹†òŒ¾ ¦SÅj0t&ZfÒ Kl-Èû†¨@-"v&æ]!È„™Ã‹ÎV>k>ØD7fÍÞ" ªÎ¾îldI;æpC"V•Ú«-p#ÀþwBŠœZ£oEO{Ûþ“¾@]V[‹Åj#¡Îš%qKØÃ¾5€r¤›”èI ˆ™2© P\ þÎ0YhKÏÔÐðL%wï‡×dóü”4Ý 96»@:9ZaM & Náb‡r«KGˇ KÕ4X +^»ÑkZÛ³¯Ÿç²¦â$íá7õÐn$G²×pO¯¡z ƒ;Ø^wDœÐóèæ,Nl¿.„@Ã-b70vaGÛâ.Õµ9’qj&ƒ$ m…q6“ÜYYpÅŸ€³º ¡ß\-ÚJÂk? oÆ—g§ü™+­éìaJAª‹ýKã‡^d´^fm%4 ^Ïù€)uª!ÆŽF# g8Ê÷K‹ËBãv£õ³ûrõC.ô×1DFIhÂ܉DéÝo•/Þ‘£5J-×f$Ì„ñ7I­lÅ\Ü–!g»•mÁzŒ\X}Ç·ë&6×+Ó€²Áá³ðl:ÓÐÌwb‡ ¤ ß›C¯}F“L¿“‡§áøGÆäëä·r`*¦ú#¶ît¾¦å2t4²Û…4"zG§ `2G_ÈÑ&0¼Ä±¦\åhƒ¾ Å2 *|@#]/§hŠÑ¡ËhBÊ)#HÚe£œÛ0Tà›˜ ÿ 6§0ÿË8ýÒ”p‚ˆ”Ä9åx?? |Íýgkã¦À>Ýb0P^Jg Ýáÿ*òÎ{ ÍEý2}…æ²ÞÁ 䦊;Žß-ì¸Vw¯úu=·m¹£¸yVT…ðp³6?0í t}2!Ÿ}“qü0·š@¬e·:·Ó^©„9× 9’Êr&Žªrùš:Há5|1 sÅÑÈTÏ©‘NÔ»hÌnÁŸÍ1;žFZºä{òqÁÎ3싈B‹˜m¹’8_)ô–_K”J{å",€Äh!D…c•v¢ÕR¹ù9aÑ«K3APÄ'µÚù7ì€g+œÂ‡õ7òqÓ¤ažXR"f}¥š0W²Pß±‰“ж€ø­{fnÕFëÊ/qb.PQ)t‘'/‚>”dÎA¡µ%ÖCœôžRµŠù¥Ð8VãŽ`¯BHBUõõÀ‚Ye¾Ì€ŒAr±ü`“Õî ÃÚ•Ù¸¦ˆyís£»v´ª… -aáßÌ0̇ÊJv>¼ZtÛ5H—)ÊávBšºVнÃÞx|JC0Õy«XhðÖº#ÆÆþQ/N½Ó5ZåÕ0ŠM Š"åKu*.ZÍW-6¡Žb$¢ÍPÕŽ 7)b7ˆŠ0J+!Ò¶Qh³úy)4¬º¼¾ßV(+®gg#šALÄ^=ñÉ -,ÂÍøyf6lR3!­—†ˆÉ…0`dðÁPø~‡ãÁîh»U+‰Ã@(Cž©&Tç¬z4¥X@¶CCê䱿½¤+˜H§–霦…¬¤^ÇM”^D •…Žá;ꙭܬá‘y‡¯Åq•ñUf¾xÚ[IaÙøø-ë.±pâýb.ç:òŒô+ªà5Þ1nEܹižè7}„%û8 ˆ:OÖRÅE‡DÕ”³bT~M ΓŽü‡CšCDÄ8`ä-ˆRA–›*ØBOð»7zö Ì°í„Ç €Ìnèw |K÷²” 8v š¯[à>—‰?Ã|6qåXLl]T)c“¼­§ëÉp!*íÌ?£¼·xo;²4u¤|·äÝݵždB,†E:ÐêãˆÚû„(Íýô±Ð·µŸÚ]xÞ%ÜhÀç}b‚“¾&^5“¯9Vxv‹ZFl<¿ €A%ð–7‡S81ôL&F,™¿?œ4LYdˆ[ï åºý4mÑ&=@©¢Ê5(áBSì9°ŠL*éÃðZ¶s¦Udfe’9XUXây÷ÉÙÏþ— „ÂÝm€Ä£g7XjAöeŸ¨¥¼gƒÃŠP"ý¦Ç)‡=ýÅjE]Ü;&÷\ú÷ÅÁó;Êv02ÿÖ(Lg͵ƒâþí¹nø2K  ĹR³XU™«üau2{¶AA Æ0!â -"Ì“¦èXpV6R¶d©"³`Œ’Rr«ÈšÇèrn)ê¶—Cùd‘—»ºgªáU(‰LÏÖ°T›%+ãò¡²òÔ€ƒe¡|;ÆÞƒiüæ’ÉTI^"€ ävPäÉŒ’•P='=àkÁ–`—0†Û,«ôʨ:ÐŽ¸pÉ7,4 -H›ÔFŒ˜Vmà(ZÇ|)† k:ë@]°<ôËꫤ ä·s9C8¤rJnúÞêºÐ—DŽe?.{› íÃć#.Ô9â®0 ®Ú,*¾/Ÿñ¹7ÇJ8» \©À—…éÝ\ÑæÝÑæEÉó:nØÎtä­>üÎtGžJëuå‚*i[æDMn¬ažØ¶“ÍoóãµO㋉ªß8Ôg¤Ìñ’¹¦WÎs£BÕ2¸ê }s¦*S:¹¾¼i|9w“óá]J–ßãÆi[!°ó`¦WÓPãÇr«½yÙ¦¯8ÝaF¨4zS›u3»õÿ"J¤Ì˜|àð‚Ž3Äa‚àe¾+»C‘'·£ 8:™6®+ß‹Ƚ9ÂŽ¥•µ#ßì¤^ Õ—Å?¹éDk~‚¬M¸©1æœ8#$à;T&–$ÒÒ®!¸”ýHh f%ÈŸDI“œ¯ÿ‚ 0‚(&­Î³Ú|‚§ bÚÜÑ+ª‹ëTr‰/1ѱ‹Où}é\¢‚Òu« ô~Ï^ªIÂÉ=¨Þ"¦¾ë‚(ÞZZ–Œ,vq1bµ77BÔú¶áVå5}1;zKø³½Å_)æÐ܆ùÙEcGy_:ª ý Qx¼çÔ.iõeNp™dO²Üõø‹f: >BT'_Ô˜5ÂæUp@.$1èñ˜4wC% ‡u…žFI#±µIQ0d£‹Òa…dò?¼Úœ:¤o FæëjøÀû$†[-³ ´iÿ'µþ»f'¼1‰Ì¥UX˜˜^` -€™TšàyUF§ðbô]¶»CUt¨ºé*BMuGôFÜ“t’éé|Êbìä–Z¹*¤¢0I-l¥²êâ½ãwúÏuÓ&2¿^ñ’®’¿U"Äþ”hÜF¶Á²©”ä£1BèLƒº—95Ý·ìæS ª~ïé÷ÝR¸  -àØ÷ÕÄÀ4éy¬ ®çúU=4­§àK!GƒÉöiúæ9úöbL<»‡ôJKâäÏ© jcEµÛåÞüœ+Yâ2O}'2fÝÕoó°åi=y»•']0zó>´ Æ‚²ƒå åE¤öyð_|éh -õt±Õä½>`²· N`Vð‚Œ’JqU²âiÜÚ]AŽe†3ôÔ ·¬Ÿò‡ç)9& -€ZÎVÿIOÀYd9WÇ1PÞ ¿|‡ºûMË/ÄëZé-zM¹µÒüà•-X6Ò–/h·ö´Jðñÿ"#R¤(L{­@Žw›(Wh““+>îΊÿhIR1‹¾J“&ôóEÑÐ%Všd~n#4cÄüã"HüGýÂŒasÓ¶B¢²&‹õríjVBŠ`ȘYJYe ùIg…„F¾L§+µöʼn/—{ú F9ã ö{šy9Éï1 -®ÅþûL&þú© 5/%XòíjòùùuŽ˜ ØØ¿T³Ãƽòl$묊™s’†Ç—:!=¸;]Ͼë*¦“BÎV÷“Å:Ó¶t*z•ÕÕ8²4—lFö9Çfj1תþê©«¹mT’[Jã.U~¨àTÚ"±I¥õ}XRRÅ {”ç§‹k(îE¯uå.†5£W \ž =¯òCåÖÂäíæGVJЦø”;P9Ù°ô#¡‰`ÅËA™Q:ýéØÕüó‡“ óTMÁjx´°ûÄ8ðÅIûBSs{_rÔ -ßîüÐ%@¸¹'x±C ¦âô°t£>Â÷ë\ÿ†?.ûW—Ë·êúfoÖ'Nðÿ¡Ö«ÆÆt#­-À;Z³º&Ò"¶â+Ü¿p<æù¿õØ5›Sµ cÐ{/µ¿¥Õ"çÎv¦¸119ØE5˜ m,Q_¿ñÆøã·@ÏÁ¢wªunû9¼p?hfµ ¥ã"Æ–ÒY/$p;ü6•†w/vUZÂàw•E‘^:qúôApšD­cåðF»q•%†]Ù+L`<O~ôÊRJ6½Ó8 -)]žx`’ìFgm¯^ ¦BÎ+6vu!.Êd!˜ºyLø:礂}ED§n#É 2/˜b–·~7PĬ[pHcA€1¢*&×EElù5]?€“t“³X#k Vf¥«I*&ν´}v&*Êÿhweü)L1òÕ`¤ØBƒGr h6È¡ŒãÙæà裚åb'3kîPyê<\"«Ê‹à0hÔÃ(R‰¼ëû×Pª<D3©•½©íר»Tûv‰¾ôÄh¹ã]:©Ê߬\(V ËÌ@+-1©¯K©zï·>OÓš'ñkÍPü~»{ÄíôU7ê èÂ< -ý‘ûµÅLJª‹­¶…‰PS¦„!†—³É¬§/Õî†rÇæz_Ž,{þHT—jᆘ¼{Ö…¯c>K¤—“¢Ç»(@Ì}ÆcòðYé\a/4ÀˆR’!ŽÀêËLb]ÍëJ,òÑP)ùªÉÁYFYÊ=ŠÝð…Q¯wz´ Õ_P£ IúaÙU€3îªÈá/oDª•ÞO§ ‘eÃ\ÑIàÕ2à„=`*L^?S†,WÝE“»/œ Âª°CVÌî%=ç…ÇC@ÓˆB3f¡ ñ_ˆhD·K²«­î³©1Ï^¸‹ŸÖ²é Û8æºT”•>ÂÀstØ‚´±4"ÚŠÕ'²æù7Y-Ï¡Xq÷‚1¦ÿ&Ú‰ÂE(ÜÙ±7I>Î&ÜËt}2¡ìÛÄOØm¤az["ñ1s2ùX/`,Kpš 9£h®"»Qqõà!æž‹é°U¿Ús¾»T@n¯!ÐnËV¨¼OO€á3e E0Òg­à;äÛ­9!ï¯qç‘’gÃJz‚ò‘z=ç¿ÂÖÈ‘_ÒZ&dYÛ²Ü+x ‰*Qd‘t óÆ~Ž5‘9½¢¦K3õ‡tãyÃIUœ#Ï|.˜D4´ŸÖ„;âqWÌãß§€›Ýido ©ŸÌNûß „EÒ–ë±Ä”J‰F -…™1}bԥܭ:jì—}¶ß>?}é­šNœN‚¿}WÚx.Ä@«Q‹5&w˜”ÚS¤Ÿ­ùxE!®ÐÔ]۔ߖ~¯Ûw¿é6ong} nã{gØC’3ÑV ‰ÔAç–hÒØ¥B¯÷ÅžqYy˜´§R„[Ä-4â@Afƒ•·&ôðN¢…?L¼Î+áÚ,ÜŒCÕÐD솾ø9@ß?-R/§`¼aœãÆ_ßøR0” ®ï¥áÒ©R \¼Î™íÏ Ð|mÝvŒ“º*¤çú3wT¬.ƒ‘|¿Á’§–ì{äØ -^…#G¿ï*­tŒ­´,ƒà°ö­ãJ½ˆÎ¶ÝÖͨ£F»‰•u¯ÄZö¨lÝm0~c•Cf`ê LÖ¢ {êÄ»Ku|þ]€‡®ìaÖJ¸“²f,]ãb1¯ë¡áIíìqLrÖkx–µnTsøx1ãùÿÑ›´ÍÑ|ÜB\UŒ"ƒJ Å *L¬.¹âCsÜV¸öŒjPM©«݃BµˆóïÖQ. /#èocÕâÓ -Ó7ïså¤åE|ÞÎc«%BܾÄ»ÚIär‹^ŸƒÓØ&¥©ÁºGÑ[–¡_Œ#ébÍn}JÂñV".Âë‚ÒÞ ÏÂ\  "§.Tó)ÁªÇQ³(}Ò—Íø¦6†zšÆfÖ“rerdå÷Qå4ãlâ”íL3ì£H©|ïè2@~Z5k€mC{ÐBš Dh§nŽa'à›GÀL•7& 8é@ÆVŠP¿ÒÕ¿Gûç_˜ÜX™ï!øèå¹p>¡kÕI±”ï-—ëƒ_›ñ3‹ö¾\ö-¢ -ðS1Ï®FEݤ·¥¡oPø˜Ivã²Nhmþ]e¦S‚ÙÖ\§ý[ÓÙ×lƃ…\Ð ô]!‰4Ñþ©WvLåfê1ZKök˜$fÉlÑSh<LÌxÒfXrôñ‰p4Ýéú(n°„kÝ9¨ß¹íÕÿwXt¤Ï]øãd2«À´Ð®&_'ËBû^ts/IÎwØ>;8šIJA$4™h¤f-­c'_Ì\´9(«Å¡wó_Â'âÑn„¿a9 ßYE%'=dxÿxÉ; -'VåË(x‚€â†%Ýð‹×¬7±È"á¼êöøƒÍïE·Î bÄ â‰J¸j·nóW{ì™™Ë3(GH ¬ÈpÇꟓ ÃHGÞKÓáCÏF#•;„((KÄȽã•,:_Rªk ˜œ¶†ÄÑ0Å 8ño|Ëš.Y|T:&éŽÎ‹ÇR|Ì"+WW×n ÙcvVÏ“E©YɵuÚŠi5"fM©,R̘f/þ÷üã3 hÏôFÔ)PV¿àΑï¡çÄvÀjŒ¶š–žZ—©^1§®&¦Â/¤Q&ºl(À”â8\Ãi K¥Ÿör…Îø¯ÙTœR$È3Õ]ùb1ªj¡‡‡ «™™j7ê°G#--4C(‘®fÊWbl–A«0m”†³ñ|tàÙÒò™n¶b˜ Ë–d*­Æ`u -Ñ„UßVÜD¤zçWÜ¥eÃ%v-0I¨Ë˜cª:.oT[Hδ3N\“\1&3¢bQêèê(ÙUª2©n,ÊH2 %ÐËÂ@[_©µ¤{³®Vá[1å‘ñ̶Jq‘Ý­ŸMƒ›¢/gyy¦2¹ÒÔÜr‚T6Nÿ&;Q 5…¯#{(n”uqgÙŒ‡Mדq;yˆqfajI³Xä'%’»Í‹w¥³J|+K£2˜9RŠ›mçZæŒö¹nè<"™ap‰ª´)ºêÄA¤ÜÃeò»Ê)9ë8‡óJ~Ö›„Æ5qyݨ&èif Y'Õ0UÒ¤x_ó tÌ»úÒ•í‚ ŒøÞrIÑ3 “X1ä+4’í–{ˆ¤vÈÃGå¢Y‡²•þn˜?‹f"š8g$Ý(…÷Ý'™âd57ë³pØ -'í»93(0¹‰ncƒ´ Û´Y×ÙŽ"oÜã’ÀFiAþ2äôMR# h¼nû×V9 -cMÃMÂ{JQJg§E²ÛiH÷è÷H_œhˆºÆ$â:¤‰æÝi$\Ý6̬tÏÎuV•ÒÅ8ëR{ÄØùü ˜Ç¥Ñ$ò=¸-ÒæÊ ´”™f>cä"ËþÅ¢ ½€µ=fÒø‰n×|è®ÞI‹Ç|• )Ò$ÐX(/™!>ÌéÐg \-AùìDÚ/YƧŸ^)—–¢’´pšÎþmUù+E[Ę¡…iî,h¡U¦ðZ<Ð2N_–»ßÆOT†›5Ç=ŒaHd);}ÀƆǂ;Œ¡ãe®à¦\º~|³Í  c…‹íššø8v}£~P=¸ÒÞ¹öäxä¢'*[žÀJB<|DDoï:ÁD9ŠQ@&|Õ5¥d¯#ú=‡^™¨P03Ü|x‹NÍao(9áý:PgôíS ûÄz†Uø‹E—‰™|ø@Öö Üó¦mé–›£ä-œ ›ÞÜ×$ÉO¶l'p«é_båò¤¦C€@ØEΈø]°¸• EÔFßCdjc:ÌZ–ÍŠ«÷¢UOד¡miÒĈaægë™Y›Mä=£©ÆÇ%^¨”¬$Ÿ¬Y¯Á4[ -¦±†g<Äo1“‹¾Ë2ªMp_höQÄ„;Éa°ÄéZPÒ¼âQÆfØŠÃzÉcRß‚Íògp£[FйQ`J;å|7 — pŽ—3 ПÙçïœÔ 7¢DƒŠ þ˜Í#ZÜQ¤»ˆ²#?ÕÌÈ~ ‚lÚT$4Z%o¬–x”FQÌ­šqYå ßY‡ôfµǸC©S|Ë8p)gë Ò{,›‡`ëCÚMl“|¸]l¯šDÈŠ‡ÉÓÑ4DZÓÒ€‚ì{¦{6’ÌÙ˜f"Ô¢ñè*ƒ´C0ƒ¤ £sJÄ™…#!£6)9œÓ„¹FËYöP²)‘›!¸Ü€"Ü=戎þÎâÀ ÞQUY¨e>s‡Ú†då:ãœQp¢œVTƒc"ígEZ–±1‚t` ÃJ+£Ö.ƒÐÂIª=°Jº›©%Åt`Ý¥mºI©@#4øq¥NUÙq^ÆH]A@4‚¶ëÔ%²´—ÒRm¹†¥å!ÀÄ Þ³€0Iïx[~0 öRÓ]/Š­@9 -¤2¹fr›DÆÊ€éÇ5gzÕ†^iréó}Á„Qª¸•ÕŽÝ4CÐø¸?7o` E Ó=—VR]F< ®H¡€Z\©Ãl©gÉ~¦µOÊšÁQŸC¼Äa ‡X1DœïÁl+a.9Ñ€*˜ðÁl—µ½§ü »ÔB¹$·åÚ¼ptîèЬb,Š×JFÛ¯rCóJÏlèŸC#¢FÚq¸Î“Ф7FU¶$!¨7¤“N -"iÞ#”æN´¥IïA-õŸänÖ=ò“³€D|D÷¿RV9e¢Sð·%=Q;oµ^ÅC‚š–t|×kwY™Ðª"B6î‚âZO´OaG+Ê`xö¯fc‘Å[ÝK‡ª?.È^N±NMp’ü'¶úcžZ¥9X3CnóWaucCÑÇÿ5¶Š UF+¨l#¤!°øJêáÀt(ˆSÚ?î½xa¹;üÙh´}±ÐB ³/ŸJø°´Ú`ãKöLa2лR,âL麕ö4E”îµ:µ·Jêi˜ØzböY&¦Sõ¤Át°Ä*‚‹¸-ÂlÿˆlÀ†³9Ù¿ã†ÏÙ&v |LØ÷+ÓË/@Jæ±ðò -"™Ð·ÞÚ¤ŒS_#€’á÷õ#´ˆ´­iG yDéÿî1ÿì ZÜ%tVÅÄÞý]Öû«-”»¸‘K‘&ÌÅ6žjâ{, ÉXÂbb ˆ49%­vïÊ,A¢ÔÏß‘®Ý2ôßÝ6Y`TÚ{¥À+öÇC=܈>+KÜáMq]-Gà‹Z7gG·úEšLÌ;Ê®<ÀLÈŽ­H˜Ø¸ñi \yß퉄²Ð÷^pçñyŤ¥Ç¡ßMY^1Œâ±i®`ò ¤a¡¿}Ÿ´õª()…ÌS…R7­Aqu n釓Îìõ'Ý63„˜B—¬hž(=„á‘ïô)·‰Ä*™y.#„/µ ýÀš2Š`Z¢=ÁÀèiX -AMž ½‹Þ5µ¥TüŠhîµ>Êasb9ļò.Eòæ;†QM n0Øe¬9cÑf^.ã¨}´¦íê?Aœ¼Ä  :ÿ¡a"§üHÿ9¬ù&ÂÆî°Æ|–òÔt‚XÒ± Ú @¦@,> V‹šu›%+f oI™°ÿÏv”1v›5–ý‹$2Öš‡#k\ŠÁ­\ŠuàR̓“† ì"÷Rlv{yÈ×b6–+êhG˜b5 ¦(S„‘QlÕO"¤ñ£†—ÖòªeŒk¹xÇ#u¹‰««¼"IKlªLÆY3Ô“‰ ,EÉùjŨ¢ÂKÕ!añ’_¾¼£ÍêØâD+®ì(mŽ\ñ¦F¥>øE øNq;R¬‚C¾›/K‹ƒzÜ‹y¶­üª -¢žZ`ò×!C /ÁìÇ*©lÆá¥Ò¢ÈAœÂþ-ò‚æŽRޞ䛈N“y!º=0am­äâd¼–Q„‹…dƒˆtx{Wú"•ÐÌ‹H Ãã´S§QðoJàfR-lÇ€µèÒÞÇq]§ê3©7¦úõ7ϰ)é"«~{:ÁŸ-…"QMªqJ¯V`¢þŒ:§¢ÂE¾ÙNØv@+Ÿ“ób°\8E°o©À¾ošWRwS4—)Ñ‘À,¯Ø‚Ésݺ_â<ðd‚(ÀT³bx{Á FAð>L©æn}‡Ä}žF¿Í—¢Ýúžh~?6¡«´„)ên‚†cŸº¦7¦Ó†cÿ®9œï3Z•Ù ØNI^TNv-²9a£æ&Ô(Ö‚ÝG­öH?A?†àä®Êš†e[Ú_xM¹”¯Ên<ÆbHð¥õ+@ ½)´úUœ´ ‚í†@`•Ïh0k œ½ÊiE%ôìÑê†hèwÂLˆ¥„5»PþUimˆïשÑXRŠ_ÑAóÉEÌ.Ò^éCZ];mƒÌD„­Pº"…yN=2nŸÎbã0@fÄŠ_n€D¡“ íC!¨‡¯¨ÏoìŒð^ÐÒxTM‹ï½Fø×d /òîñÃ6³¸È„µ7L:ibÎ<tÂ˳âðÙ\fqÖ½}œ9\Øï} -+5é1sØŸ¯&gî -—YY,ÇIoXšµ#Ý'¯‘a ð°„V0ZÁcB“ÔHعNô‚AácbšÍ;i}bA‰éë¢ÄxÒ/’ mÆ -—ˆâ=>L¥ˆIXóø¸>œÕ …„g4-ƒòL[¾R€Â+`¥Š0JµXUž±‰Ÿé¯,ç Çš“¨ë*lqEÝf"]쯑ÂEõ°ÝˆqË -Ñ,›3° 0c-ÓÞâ°ë¹6„PÆ mTNÉî¼ÒMÙSÕIø5¾£%$Ûy©¬ñ?P`²)Ž3øH«ý,å¶{£¸õª~ÝÖpÎ4¬0Ƭç¾åÀ†mȘĈÉOØ£@™±“䉣>WÊÃXÃãLúãTÚæ# ÷wðëDOy]VBÀù$»¥pÜ{ÆÄ[fEû>E='”K¥ð e—ÿ†1g |ààçYY1Ʊ‘±ñ륙œè | ¹TÎõi®Bìx”,ö0=eñXŸDn—üˆ69 Ì¥ S~Š}#Ô’aáóýÛ7>8+Ñ5bÖ˜X˜ŠŸ™ƒÆ“ÞC ;|æ´ç.yZDÑÀ46ЙhÞ6æY4–f´‹b8?Û! ‘R´Z6X%zŽ¥ÆRHdf½p \u†ó³Ó=4UŒÕ€ý‰tPÔ-:cÞdß“´gí% ,•ðT-ÀÎÙ"=Å(íðŠ[Â&”× -ùÙ5TëÉ‚ËCf´ B%:$ã3Dð_!÷…j]62–Â@›C¨~Þ2C€ õG?U†>>‘ÁÄý2{¶QzŠËã½aÝðìΨ æØáSÇ•`tbGsÈ’cÝF#IqF)‡ µ7~7qlm¸‘Ch-Ûýôgõ PômˆDJ(ŠAŠ©È=&fØ<­R‰å¹B«ÿÞÀ%;Ê$®šk jjâG¥ÁWëqQ:غPÅqghÉê¯Ó,¿•Ñ] ¼ß¥… íåé_$%SòGÿ÷Ëj€ÃÈR¸´$n‡®[ÊÅ <-6zJ.‡‰É´™Wꃨ¤®T°ÈvbÃ* ¤«Œ÷»rVÅs'ê—ªàÒHl}[l–ÄÎüVx‚Á‚pVeNýTèî_óãæ!ax¯Ärçþ_ ™0 —sP¤ì½\^+&÷¼ÕDzüõÎŽèÿ*WÆJ) ¦IÈàÞÛ%¡[S=çÃɈ®iœã2›®M%+…X›Aûf½ú"Ûl ¶ x _ºæ„w‡†ÃÉÊèxìÁöâvé©pô}ȑʉJA€t•¹bj·¯•ð0”­:øÞš#ÞŠ‚Pp lvh(2…v¥ö›¿B¥2ðæ6‘¬@Ês-º;ÁÃÁu*o<È2—uàh{I…Èêîõw¼NwþÀ¨"X žma’­Z¡ýªëOûëqBÞÇË.‚8礿´³ì3–B(þ1Ô’|ݦܤkˆéM†{Œ‡¶Z‘ìÇyŽ‘€œ0íÚRcXô #Ö°í{—ÿ -ÑýoÍ¢–Æ»““p7XVÿ:SÓw×Ò£­­¨Q+(¦µ%7 öÏ¿° -wþy†‰ÍjÎÒ~숆%ZL´!Ž cšu;BÀL@Ò8´ß ,+GÑ8_MÉUV:¨ý0¢[‹ƒÄPÒxç2«"¤ !vKðM7ß(ŠX|H0Íàÿ?ššŒ2M¦Éœ|Â|–%mo‚¢~ÊB­,$ µ¡eåzv®ý\{Õ\ÇK“[šÜšý„E¤É(Å#ˆö˜'¶½Ö‚ ÅícWn49·:áÐ8g7šl•óQ''ñQ'[7šœ¹GlRû¡¨mþ&¶y(61響“óÏMlÁ©ŠsSŠó…£Ìî€p]ýøº˜ä“Üu}×uÅÓüžìöËÍ3“Ƥ04Q^;&Õ'&…éœ0“eò„¾-1A:¤þo”/¦ÚÂs1Ýj%ü±…§ƒ©j÷&épu¢Ãª$þ…&É#Õ·³L“JXç]2J (á+E5@:åãÀ1j‹œj ;q¦[›’US¦H0ÆT†;( ¤ ¿WJ›)<_z¾-»Àf’µ§*އ¥7FEn"–JÜB)’¸%€.âö!œpSŽq{akßB /qk(@ß–;ޓĤTñb®6ÇPͬtÄÌÛ`>Ær/¦Œ„ú›a •”8¯=ÇEé-,§¨Ê”§[™“-&ɶR’my’mu„\’lk$Ù–'?•üÔ[DZªõŸÚò#Øß“—ærÂ|ÖkyšL“å–$Ú^+´½Viv^ŽJøCH%ü, ?g¤vFjg¤v‡0¼ö ¯}βŸ¸`yî¥Us}ž j®}ÌÓ®¡PŠÉ•ëÙžà,8>MÎMlƒÚŹù8²ÁgRUœ -ΟlÎMŒ„;úÒ0€ ƒ&×ä—o‚«øšÏ`|ͽJj×îú˜HfäÉ\ê"2——±ÄX»c•º™Ñä¤ÓꚌJ“6g˜„UÌ_å„ùcbåzÏQ ÿo¹ù“#Xéº1uÑšH eʬ¶ºgÉb†!‰gŽ$nþâå„ùbbåzD—>F.X~_º; V œŠ“0ý-Ä - ™ -Móñš8š «ˆ*4NãÅ® ‹Q…U%#†• Ù‘p4X:Æ‹m©â8–“ìÈ=±r½¨‘K’ -Д‰&gì)=ÎÂQæ§=ÈSz<–x&ùzJ_5žÒ‹i%üõ<òÙõæ¨-{Z ¿ï´eù¶c&¢¦0?Õ)ê÷±<˜X¹T[ 49ßµôÉú#‘îXñk4î—©u⥇œ•Ì‹ŸcU™XC»•À©àï,VñšôaÃ0¹:j¡ï8~jwÓµwÛknºö°føTsíKòó>='ÉÁJo“Òµ¯.—ø°‰ÉÜÛ ¡¨T™Òÿr^`!Ÿ ¿âR¿JØL²:ì¹ôwÂ77†ÅuVÆmâ¸(6Rûômã•ãF¡€âV:.Ší[ûFòÊqC"à¶È¬Úò°†ä¡td¡b¯‹‹¹°hʈRø”š9§“9E7«|N¯¤3VÜgžtí¬Zá;‘(SÙdpºöJk󮀻+kc5$j®WŠ—¤ZŸf¨)ñª©Õ1ÚïTlŠó¾yCe¿pdwàEw@¸GÚQV5;q²æÓ¶y)•°û«ZGû(Tª·q¤Þö¿õè†* ê'~š†îÿB™ÁeW™|(ö§øPº"Fâx(ýåæ‚:]‰Z¸·Q“áðL?a>æT»Þ+eÔ‘Ïêy2¢>*lDœC ­<Ô\dÊ[¦XE%RÂS{ó×0;ËÞ<Æê™¹ÂíÅIZZ7åjíÖ,føÍ@UðÛîLEV¾…+/5*“9Ês`”¿Ð“ߊ äm™Gò,šaä-Uȧ$äI<„½BÉôz“¥ñzPMl½‹Be<óÈø“†€ñÞ‹3ê”[²v‹ÚépH5·Ohn¯zÚu[w@|2j´ZLÉ–`IÀ°í&«ˆ4…kÉTf†Vº˜.yQ¶v—è¤1ñ/]™çJcSL0Ž2!¦#ö­@"Š£Ÿ®Ê”žE_}[¾Ëä­Š;™Ä3ÙOmyôS[ŸÚòàI:qŠŸÚò07ÃÜ ssÊý–}jíSBr¿Õ¹O“i:õþ]YØŠuIµ—œtíäqì5_ûÇY°né¦k/‘©ö“öCqRð™Å“âÓÊ pWÓÒÏ('ÌGÓÒ“øÂÃ-à©‹Ë™ôd0•®=ííÆ7pÕâ|tð*s#©YÁ0CÊÓî€@òÒÛ ‰g*°þœ—þ£üöûT^z…8_Œ¬³á•êÜR&}²Ö—NÁ¼ ÃJ?‚`(ëœéÒÏLÍc5Sô7Ñ¥5/ý»ÂÇtYŽè±CÏè,'T  iŠ~,—ž¥¹t„¨ö(™Öñø86 +ãæÿX½r"’X{¥k?a!¸a~˜ñ”^R<¥¯m£ÉùAmék 8ÊO±Å ÅË“š6ŶÝJÚß©¸ ŠU7R#GaþЕ$Ù–ÈýVè¦0¼þ\ÏM×Q[ÌT–x§˜bN9(yíI—d[^;âæ’ -}+Žq+=6ãöÂÍûÆ_ÑM×^Ö µ(н÷÷Þáw¸w˜ÃªŠ3„5_¶˜!ÜKßa†a -7?§‹·@î Ÿ@<ÉžLFéÐÅõÜ¿.”ÁÔÉ÷}^w@x2ÜQø5Öiœ›ÏE#ŽDq@ËÝ9¨3™k·wLµS¿Dú‹’”èê¤$ïIÆ›*Sú… G·íñžäVëˆåæ2É–Sζ˜«;¥ç#¹ªÝ¬ÎÁB{aqé½+Õþ¯î”¾a‰¦§Ê¤!“æÌÌR<ÂÍûÎAhéc²dÛ˜¥…í¡k7[w+”±¦›À‰(Hîû"ëXž… Iº›â%é™iG“¬á']û š¸!]3£Ë ÇÔ´¥§i¸ùƒl[ú—áþNiKßMãÅ$¹·ýÝRá¥QŒ?#ã`ʼn"3kéý,²¹”—øÇþvNºöž?@Nºöò剟=QR-“:jEžú&‰k/¡o˃´d¡)iéíOmy4ÄÍßk¤¥¤þï§§2±r=~J×þqÚµ“â‚åmRÚ7ÜüAU¦ŒmÒ7±A±,â‘™HÒGïxæÚe[0^R6‘¼¤DÐôÑ/a^RH¶%ƒš³…ê58{ÔòßG*³Ûº–Ó½ñ÷Oâ‘øi!ÏCQàx椤 ÝŠ]t ‹óÓ®=E¥kOø˜SAãI„"»֥Á•˜.[ÌÓ•÷Í óÉDX©„ŸL¬\_šòÈk.>qË€D¦ƒéº®; j×L«`öÂê{–ãõí:¨]3­Îçƒ:3î: îºaa¾Eµkötï‘«:UÇ@Tpð!±|×¹¬fÉÿø—¬~UÕ7îº%›]U­ðªêÂü…ˆ÷üç? b Ï@Tp‚èF«Nk–‰¦cË3£ƒÁ@ǹE›ãL›§w8ŽÏ¨½B ý5::Z5=Î:6Z3:š´I?Òók AÆ(` p Ѐ(À€ÎX ,` ÁÂM -\ÀÀ*|@ @0I)àÀ$( á&€€Á(XD`YE+Ð*Ž,(8<À`Á‚€N4 GƒaŠˆ Á‚ <Áaà8€0Á!‚4x HÁ 0`РlÀ4Œ³ñþÁyàðþÀñ¨ôL--(ý*Lå=ÿÁA¿þÀ§þ ýÆ]/`~– £êÖœfž”ö1]v„*%iK Š]Q]²‚}[¾ÃâöÒlq‹Y*qCCÓ·=>µåÝ<Ïq;¿eyW6(İaѰ%jynÃV ³_0¨°Pà -k7k´Mç2‡Ñ©ûE×t‰¦C/’·p3‘(­)®¶Ý)™¼Âdü%—Rw}¢åµÇ[Ц’k°ø”¿<¥›öÌdikˆOy- yäÙIVa×Çdîö¬Ý”·ÙÌf'аŽUžDê䩽ڵ£èöVµñÉ”Q¤ã7˜N„Èl¯y)e£)V‰e0}Þ¦°; ByûLɪD~þþòÒÛ!qí~-Éõ„ùÝ×>®'Ì7ĵƒ^un탛˜Nã#L¨­/Rß`~™QŠ…2ƒKÒµP9?S^œ¡Mù$¼pÇÔ,w}I„ݱ€ÍRfC* ö\™ O¡G˜Å¹x‘*Ý¡À6ßLÝù¥ž•yƒÆº¾33–l9 ăbm@eK»ý_†ëÊ·3mã#Ìd„tí×'‚2lKËI×> ‹¤¨´5æá¤gÈÌ€0b#ŠÆ„’1‰–[C6&JDV H(0”ÆâP@ Ä‚GA æSбÑú’;t߉ÒU…Q …žWÝ:!Ôbÿ§Ób?.ÎN¥\››o(½» —Òî -™lçòø {Í W2"x55‚‹[ä·¢@gµ]µ¤Ÿ»1pòð’ÑÁDz94ó…ÛÑ%¥Ããï‘—À€nИú¦ËrVƒÎ²kBwU¯t‘ùË_Ûz–=ãÒwß™,ò…Îæ-ŒMº»`&3Í9Y^h*M¥™Ô¾šû»ÑA€Ïw­:°‚!tÍVðÄÄ4Nªk±‡<•«R‡¬Çfvtr[¶BÇì{Ùœõ¦ìJÏlg;Äì³oÔžZÇÒS‹7zjA§_ )Öí>MX•‹§]'ˆ±š’û†öuÕ5Cß¿šOPJûabzÁzÛлTO¢5´½‚aðÉu¼¼¶¨A½R`k4€ƒìáRè±?}Â'& ê†ûI‚ÿ½ÛÐß…lô¢ioè7|ÔM -â£.æ½¥<}ɳ¹à›á:bl -ÝïcÂrÁÏÆG:}|D?‘ºA÷¦«e~í:q¢ºH‹œøï^žð¸­‘¡³DÛ úP:Žâ^]„ÒþúýCÍùá«je´ ´Ï¨Ì[Œn(‚Ú©‘Îe—y Êîô%ˆƒrŒwFz§7è6ïßôžÕe¢ê⽘uõñ¾W*úz…xÿ޹À¦ŸÁB³n»Ž÷ÞJ±ÉÀy{ñn”áA>ÜôžYã} ’ŒÞk}ï«/Þ_è]iTv!Þç&¸r:€ñ.Y}½Œá)íŒ÷žX?¡Î¬î€˜ÊÛ9ùN{È/‘©ë¦íN‹FiÙMS<8H±0¨Vn¶$ZÔ_ŒkCÜþÇ=†ƒÚDéâ+ˆ¾Ÿ-Ã!óh绎!ý<3¯‡sÜ‚çÕШ„d2à@0¦Å<ÒOˆvCݵÓõW6Íb¦Ë™Âµ§A†Þ¨Ï ‘nƒ(“ ~á»ÖÑ'·Á§a-ìûÌ‹wdŽ0[zk dÂØ¬“˜AYi|D¢Q*ÚÇiÌŸ»ùJL#rê#‡S[Ë/»§eèÉš ªšnÑ®‘\PÚfކ7âÙÝVY,«Ç:m ð«¶ ±¾XI<“»‡Uæpì=özIQÛFÔPo *IoQT«„ʈS”˜>"¦{RC*˜2‡~`>Ám)÷嫧üuX¿£ŠpAÄÑ€én¾Â Ày†ÃɈÖÅ®Òl¼f_ø=^ ,ÌÑ©¨¨ö -GKEè)ùlBh¨ío8?î{ºÀ Ó±žæ·M\¦„Lç‚\ÀæiÐý!ÛèÝDòÒ%fY« -6Ÿ <V àIÔ?qy¸Ö©E-uI÷ÚŒ]&(µŸÈº‘ÆÂ\B`¸FÛ@TšÃ6—…,#I»1Ð1·"±l–Nºg‰jb>«¹ÍF¸kX;ÒÍ2}dÓÒ‹^ÎÎNm¨¢ç{AÉSÒ&ª;$ÞÃpö(©°ÆËr6œ=›‚8φxFÏžhÇo^>7»8N+­½cùþɧêkïÎnÌ÷aŸ Ø{\¾“~¾.q!ß{lïXƒÂnøG‘½óó݇¶ÄÞƒò½aç]jï®%‘çû€(cÅÞÃ|‡Çh2ïòô‰†„Ùû“Þ•b+öî騥Jjê/ù®ÕS%ÄÞ‹óý½1Jgbïl¾ÿk‰ÌÞÿfMzåÊY{r Ÿ&‰sÏ« -B>JÄoA ¢¡£© $gVxˆ}PÔ§„kl™8wWƒTÔØ¯ …q Eamk%d–Î|5ÀsŸL˜‰xKÉ`ã§×ÊÉå?Îvi°ìÅP„kE Iò0¼ôÆõˆè·ãÑûcŠ:©W4$ã+ß ªCFæqYÕQÒσ5;N»b‡¡œ‚¼{ói¡dü–ö@ïLe)ˆg$´&Î'P;ýiõé½ò&ü)‚UDt]m.K ~û# ³°«Ó–rËD·€þ2\±†;‰ãA¤¤îÿpd¡`$ÁŒKÉpªÎÖÉÕû1-½¸í+¨Z P”BøKöÎ…‚®¨ Áîy7ÉZŒÆÊ@íåä ñ0*È -‚ð™Û>‡(ÌX¼ɾ½±„U÷… ÈÆsôGl“ÝâíCäý}üŠæ hœ(a§¦ŸÅ €{ „kÞÞn5YÕSgÒ¬ôL¨G!ÞOhÄt!“ÑBÛVAQ®üEß>ų)65Ȩ/oè§ ô•—ª8ÍŸ€a°¦įE-ãÅòì°naP NÔsŽâ\d* “;C-f[o/N,2É@âÆÑב|±8C8%“_%edEÅà þÔë?‡ôR âLô`¥¡ÐVêdF¼[,ÝG³X»â¤[x c$[‚Xz.œWÊq­ Xóì ×Ã4Æ6éjh”7‰šÊ,ãO,±Sè*"ã %áFe%k&„@‡xyA\P>’d.ʧÎ!c•o䯉¢½·Û[3r[e¢¿°fsnÔ¦Ôtlÿ„&á¾Â‚ã³ àh¥—N%„ÒüyiÃÅGB÷­• ÏŸúl»AqÑbÁSøâQ)!@=)ÍÉ+¨a°~ê ÷K"Ké—íEç'wwL¸¸,9•Ý€œq¬äUÁï+ûh2ÚFÍÄžx7özhá-’„îó'Ç÷ÛêÛ" ¬8>{ÔtÇßÄ¿H-"Ëü`¤fyPþí·Ø úж¯–l§ãÄÞEØØÞ…¬†Ï¦×PT{¬N„ j§;£mö>^…gAµ¥€G~þà ’›¢Dáº}• }Ùžšæ`êP—Vrvc¦Æ½}·Oô…~";(\w» Mâf‚~Ø$ȤLšÏú*Bøÿn24…õî}Å Š–úÍ6²éoAëè†Zô(jY›²r—çóÜNæˆÆèVb¢Ô¥ðs/‹Æ-s¦ŸD, É€8qœ®öý44£T±h7ÍaBr¨?Ãà'ûÔµùœg¹9÷B< œ1ô`Î3ƒÅÚ+©"b;A³Qt“¦€‚ƒ=Hõ/n?ÿìêC·y]Ý÷™GÔ¯–ur›Š`Ë`b3÷ú"+î;ô"iOÐö9:ºÔ,)¾FÈÛ,ÌÇ’Z¡Í~!Ù£BÅià# -p ø/)¡œÙw#XRi; -ëøÓ)K -øõL/µá%e õiX×7F1€Ž5>ñã%ÅSÖ-xVWÞ°¸ŸQ¬ãÚÊ@õZµ5EKñ²iy}»ò ÷+ü³ cŒÃýÇBwß©mœè ßk²ùL<üêžú|Ú…rD…Ä  |-ye.j;HÓéšg²Þ—½Zð™˜Më3²œÔ¶°–¢’ËìT¤ÔV˜ÂI¢o8Ž|ûdÏ$šÛÑ'äþô,½Ö4àÀ~)Á‚ -ÊŹÒõ#|AUí‰ç¢‰ÊòB—‚ßÁÿÙ•ï8+@8öŠÌ+¨`8nÕ²\-‹e»j‚©ëA#ƒƒ‚4pøe,øþN$˜<¨¶¿N„L¾ö1L1<– X¢D««¬•nî×=È?®l²å»® xé ^>[¹„[‡¼¬&ÏèZÑk¹(1s5¡ /)þZì>(+?AhŸhL$‹†Ép!Áp4©< MóóÊvË?À '<’ tbR4q<Ö ½Öã€ò-•´¯ói+‘œ‰x<ƒ%\iR zÑ|~~LJ1JŠÿóh„&U³*䞈þÃæ7rÛ‘':“ÚR üÑk$ŤHqEI“rn²†HjÖ0Ù^}7½Ý2·`òºqzÜ2ßýÍ÷`õ±I€>Qò¯+=ªVpÖÃco¨š­(mÎ)6 n¢ \H Œ"i *nLJ½tŸ¿/×Sö¶A$Æ7©×©µM>‚¡ 1¥"ø—Ë &ÿœNf¿ .*çmêð" -øª"üª”^½Ê™k£¨&­¶Åh—ˆ]¼¶xx 4†,Òõ€c«¹ø‡‰ò5Œ§>!&hE#±7Q¯>B|Ò¬LÝ`÷b*­ºÔ±o”í¿àr=xb8À%Ä×$?¿Ô¦n–*xÅ?új6bx™ô7‡V¦6Fˆkób²A…ô%w ñc¾ÄZßO`® - Ãé'.Hí”-ÔARE'Sj¦Þ—$OCC©¸z9qßµSåc½¾LA8¢Áò= øª%é átÉœù ìÈ®§õ8^‚µœ|õ”ê}ŽÌÿ"âÙEëL Aað†MÒ(ÈE´ØÚ -nee9Rܲ:µV+þ-Ê÷\#"0m_B@À òôë”ûœ ÏBå7ó¤O^ÛwàŒqÊ`(œXZ”•Íä•yÐŒiï“.ùb£Ù²`¼æaµ‚›¥€L¦d…­ åñ¯q”ä$eB4 Ñ>]'(µ´n‚>%¡)]E¸¸‘Çý·«0tàOb\³â³ÂJñä³Ë.ÌÆ¦‚]ܮɾ -c‡sƒð{Î2õOa¸ŠJqî*ÛLò¾ŸÑ['@…x]ÝÔž X§ÖÞèü@¬Ý™SÊV»/Š4J†E5ĈV/j¶ËÁJTDè(—|¾4*ÎmÛÛßòdKÓŠ8—šãUÕJVŸ¢ÅŠé&ž¨¦ $ÉJ>Ã:Ì}WÎG^ ­3nÚêõtªÂ’øŸÁåù„¥Š#ŠÑˆ©oɬt<€£ 5ÆuË·ï5x4Ñ}à -GsœÁsºX ˜Å‘ÔÍ&ì& z|jðr¡|FWÐL“áuÉAmOç ®FPEI”ü’·š;²›l6üë= äáNÕ7ÛŽ† j„HxÙýFçrâ“ÏÎR¯K…þ‘êL Jøj†'­¿Ÿg–‹à°YxÉýæN¡¬Ûk”I«´®Âœ³6/‚¹IÔͺëš©£ 8üý<Å…#…K[+ÃF[LòQ¡þí°â­¾`—ì©î«˜°¦u. 5 ÒÁª'Š ,%ëWzC“ÿ*=¹.=°±1¹²6¢/JÄ0š¤ô?˜XÿÑ`rE‰%éCZc>ú!Ÿ«Þ%;+HÿØ`чU_‡ñˆ.,r ÆÚ¸Ê^~iÂÓαÁ* 5þl¶ÃÃ$ çþ@Èd¡õ™§öZ+J#®^¥z €×‘’pÌߨ‚õÚ9eE õ·HpOEbð§»yN‹ÿþg‘†sL›Ê'„$hgZÀU~ôǘh#dxû…õÌ|ÿXCHJêeƒÙù'±çËùqBiØàsçQ½Ám¤Baƒ¤;ŸP ëóó%0Ýêkç¬Tžðz=6XsÂc|’"É„(bH›µ§7˜#ÏâàÉBjm޳ÁÑýþ†¸ïo0lÛk56X¿û; 6ÊÞVÙà¯X¶Xm™N¬.ý†y @y%0˜h®þòF9»1¢,‘fÎFÐ -²äb&I½Há||óÝEQw´p5ÝgJ‚ڎĹfxëê¹ØCd¨¨þQÜ®st°‘ËC¶˜!2½•1f‡ö£ŸCËBããÏ’pzЄ­•³'OéžV¡Œ©ÀH® ÿÁЏï¡S1ˆR6]H•™¸ fÙ¤Kv±´åWØïÄ”“ƒœ­¼t‘tbGrp"8½Ô·•¥–jº5v„ÆL)“v#E®pŠ|Œmí­M9{ïF.b!XÙ乜™{}uù˜R7/¶ìZÎ[ª„zÂïµ®õtüýeŸÂÍAI–aiB¶i*¿§šé¤Ïö V“˜0FÉ·fP‰oa‰4±¶4 -_‡ˆÍ¡ã2€—•è ¿hŸºh4R)€K$ëmQDö¶H€&Gˆ°^X<9šÄù }ü\ÀZB¾Þªa-€EòÒ„Ì#À¼‹¡•ŠiËݰ#0}± p(Û¥¨ªˆÖÓ¬V]‡° W&¶Gð¢ä¬!ôF€Á„’­Ù l‡Â«¢ÌÁøú˘íŠ-› É;q—©=Ù Wõ)3ìëÿ£ÁÚ<ÇRe±d¸¼Efk§#Dq18Çi^°Á²öwÁ¼ÍÔ…18æ5*‚`‡8*û0ãNÂ.ÈÅi«~PB"-&'|…ˆ•-õþD!—–.\Fý7óBˆy`N>¢n¨ÿPa:Kú¢¾,Ù „išësô…Ì”X¦6[ÁKÆØ"ôÑí–¾9¢½I·ØP„ô½($Ú,ÔÛ÷“Œ Y£ÍšRéžoÎ< ZT¦Ò·Õçó^Æ;&Í¥ïÝJºe ¦ææêù¼6¯¥/> endobj xref -0 52 -0000000004 65535 f -0000000016 00000 n -0000000147 00000 n -0000035244 00000 n -0000000000 00000 f -0000035295 00000 n -0000000000 00000 f -0000000000 00000 f -0000042320 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000042393 00000 n -0000042589 00000 n -0000043819 00000 n -0000109408 00000 n -0000174997 00000 n -0000000000 00000 f -0000041896 00000 n -0000205322 00000 n -0000035718 00000 n -0000035918 00000 n -0000037959 00000 n -0000042083 00000 n -0000042207 00000 n -0000036717 00000 n -0000035980 00000 n -0000205287 00000 n -0000036155 00000 n -0000036203 00000 n -0000037008 00000 n -0000037368 00000 n -0000040698 00000 n -0000037071 00000 n -0000037411 00000 n -0000037994 00000 n -0000038049 00000 n -0000040812 00000 n -0000040875 00000 n -0000040905 00000 n -0000041163 00000 n -0000041784 00000 n -0000041236 00000 n -0000041967 00000 n -0000041998 00000 n -0000205347 00000 n -trailer -<<86FADC8015EFD144A83CFEF8A3A53C38>]>> -startxref -205534 -%%EOF diff --git a/images/elements/ai/line_medium.ai b/images/elements/ai/line_medium.ai deleted file mode 100644 index c55034f..0000000 --- a/images/elements/ai/line_medium.ai +++ /dev/null @@ -1,1423 +0,0 @@ -%PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - line_medium - - - Adobe Illustrator 25.2 (Windows) - 2021-06-03T11:12:50-04:00 - 2021-06-03T11:12:50-04:00 - 2021-06-03T11:12:50-04:00 - - - - 256 - 8 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgACAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9FalYebpL2V7HVI4LViP SiMSMVFB3Kk9conGd7HZ2WDNpRACeMmXfZ/Whv0Z57/6vMX/ACJj/wCaMjw5e9u/MaL/AFI/6Y/r d+jPPf8A1eYv+RMf/NGPDl71/MaL/Uj/AKY/rd+jPPf/AFeYv+RMf/NGPDl71/MaL/Uj/pj+t36M 89/9XmL/AJEx/wDNGPDl71/MaL/Uj/pj+t36M89/9XmL/kTH/wA0Y8OXvX8xov8AUj/pj+t36M89 /wDV5i/5Ex/80Y8OXvX8xov9SP8Apj+t36M89/8AV5i/5Ex/80Y8OXvX8xov9SP+mP63fozz3/1e Yv8AkTH/AM0Y8OXvX8xov9SP+mP63fozz3/1eYv+RMf/ADRjw5e9fzGi/wBSP+mP63fozz3/ANXm L/kTH/zRjw5e9fzGi/1I/wCmP63fozz3/wBXmL/kTH/zRjw5e9fzGi/1I/6Y/rd+jPPf/V5i/wCR Mf8AzRjw5e9fzGi/1I/6Y/rd+jPPf/V5i/5Ex/8ANGPDl71/MaL/AFI/6Y/rd+jPPf8A1eYv+RMf /NGPDl71/MaL/Uj/AKY/rd+jPPf/AFeYv+RMf/NGPDl71/MaL/Uj/pj+t36M89/9XmL/AJEx/wDN GPDl71/MaL/Uj/pj+t36M89/9XmL/kTH/wA0Y8OXvX8xov8AUj/pj+t36M89/wDV5i/5Ex/80Y8O XvX8xov9SP8Apj+t36M89/8AV5i/5Ex/80Y8OXvX8xov9SP+mP63fozz3/1eYv8AkTH/AM0Y8OXv X8xov9SP+mP63fozz3/1eYv+RMf/ADRjw5e9fzGi/wBSP+mP63fozz3/ANXmL/kTH/zRjw5e9fzG i/1I/wCmP63fozz3/wBXmL/kTH/zRjw5e9fzGi/1I/6Y/rd+jPPf/V5i/wCRMf8AzRjw5e9fzGi/ 1I/6Y/rd+jPPf/V5i/5Ex/8ANGPDl71/MaL/AFI/6Y/rd+jPPf8A1eYv+RMf/NGPDl71/MaL/Uj/ AKY/rd+jPPf/AFeYv+RMf/NGPDl71/MaL/Uj/pj+t36M89/9XmL/AJEx/wDNGPDl71/MaL/Uj/pj +t36M89/9XmL/kTH/wA0Y8OXvX8xov8AUj/pj+t36M89/wDV5i/5Ex/80Y8OXvX8xov9SP8Apj+t NdFt9cgSQapdrdsSDGyoqUFOnwhctxiQ+ouFqsmGRHhx4fjb/9k= - - - - proof:pdf - uuid:65E6390686CF11DBA6E2D887CEACB407 - xmp.did:bfeb32c0-1426-c14f-9a64-993a6d7fdb2f - uuid:0b3ccf09-03cf-4f8c-ac9b-ce64534e8707 - - xmp.iid:7b679679-76ea-e149-9c78-f08f125870af - xmp.did:7b679679-76ea-e149-9c78-f08f125870af - uuid:65E6390686CF11DBA6E2D887CEACB407 - default - - - - - saved - xmp.iid:3e405b58-9478-2948-be8e-e8b65ff81f1e - 2021-06-01T13:28:44-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - saved - xmp.iid:bfeb32c0-1426-c14f-9a64-993a6d7fdb2f - 2021-06-03T10:04:01-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - - Web - Document - AIRobin - 1 - True - False - - 586.000000 - 66.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 0 - 0 - 0 - - - RGB Red - RGB - PROCESS - 255 - 0 - 0 - - - RGB Yellow - RGB - PROCESS - 255 - 255 - 0 - - - RGB Green - RGB - PROCESS - 0 - 255 - 0 - - - RGB Cyan - RGB - PROCESS - 0 - 255 - 255 - - - RGB Blue - RGB - PROCESS - 0 - 0 - 255 - - - RGB Magenta - RGB - PROCESS - 255 - 0 - 255 - - - R=193 G=39 B=45 - RGB - PROCESS - 193 - 39 - 45 - - - R=237 G=28 B=36 - RGB - PROCESS - 237 - 28 - 36 - - - R=241 G=90 B=36 - RGB - PROCESS - 241 - 90 - 36 - - - R=247 G=147 B=30 - RGB - PROCESS - 247 - 147 - 30 - - - R=251 G=176 B=59 - RGB - PROCESS - 251 - 176 - 59 - - - R=252 G=238 B=33 - RGB - PROCESS - 252 - 238 - 33 - - - R=217 G=224 B=33 - RGB - PROCESS - 217 - 224 - 33 - - - R=140 G=198 B=63 - RGB - PROCESS - 140 - 198 - 63 - - - R=57 G=181 B=74 - RGB - PROCESS - 57 - 181 - 74 - - - R=0 G=146 B=69 - RGB - PROCESS - 0 - 146 - 69 - - - R=0 G=104 B=55 - RGB - PROCESS - 0 - 104 - 55 - - - R=34 G=181 B=115 - RGB - PROCESS - 34 - 181 - 115 - - - R=0 G=169 B=157 - RGB - PROCESS - 0 - 169 - 157 - - - R=41 G=171 B=226 - RGB - PROCESS - 41 - 171 - 226 - - - R=0 G=113 B=188 - RGB - PROCESS - 0 - 113 - 188 - - - R=46 G=49 B=146 - RGB - PROCESS - 46 - 49 - 146 - - - R=27 G=20 B=100 - RGB - PROCESS - 27 - 20 - 100 - - - R=102 G=45 B=145 - RGB - PROCESS - 102 - 45 - 145 - - - R=147 G=39 B=143 - RGB - PROCESS - 147 - 39 - 143 - - - R=158 G=0 B=93 - RGB - PROCESS - 158 - 0 - 93 - - - R=212 G=20 B=90 - RGB - PROCESS - 212 - 20 - 90 - - - R=237 G=30 B=121 - RGB - PROCESS - 237 - 30 - 121 - - - R=199 G=178 B=153 - RGB - PROCESS - 199 - 178 - 153 - - - R=153 G=134 B=117 - RGB - PROCESS - 153 - 134 - 117 - - - R=115 G=99 B=87 - RGB - PROCESS - 115 - 99 - 87 - - - R=83 G=71 B=65 - RGB - PROCESS - 83 - 71 - 65 - - - R=198 G=156 B=109 - RGB - PROCESS - 198 - 156 - 109 - - - R=166 G=124 B=82 - RGB - PROCESS - 166 - 124 - 82 - - - R=140 G=98 B=57 - RGB - PROCESS - 140 - 98 - 57 - - - R=117 G=76 B=36 - RGB - PROCESS - 117 - 76 - 36 - - - R=96 G=56 B=19 - RGB - PROCESS - 96 - 56 - 19 - - - R=66 G=33 B=11 - RGB - PROCESS - 66 - 33 - 11 - - - - - - Grays - 1 - - - - R=0 G=0 B=0 - RGB - PROCESS - 0 - 0 - 0 - - - R=26 G=26 B=26 - RGB - PROCESS - 26 - 26 - 26 - - - R=51 G=51 B=51 - RGB - PROCESS - 51 - 51 - 51 - - - R=77 G=77 B=77 - RGB - PROCESS - 77 - 77 - 77 - - - R=102 G=102 B=102 - RGB - PROCESS - 102 - 102 - 102 - - - R=128 G=128 B=128 - RGB - PROCESS - 128 - 128 - 128 - - - R=153 G=153 B=153 - RGB - PROCESS - 153 - 153 - 153 - - - R=179 G=179 B=179 - RGB - PROCESS - 179 - 179 - 179 - - - R=204 G=204 B=204 - RGB - PROCESS - 204 - 204 - 204 - - - R=230 G=230 B=230 - RGB - PROCESS - 230 - 230 - 230 - - - R=242 G=242 B=242 - RGB - PROCESS - 242 - 242 - 242 - - - - - - Web Color Group - 1 - - - - R=63 G=169 B=245 - RGB - PROCESS - 63 - 169 - 245 - - - R=122 G=201 B=67 - RGB - PROCESS - 122 - 201 - 67 - - - R=255 G=147 B=30 - RGB - PROCESS - 255 - 147 - 30 - - - R=255 G=29 B=37 - RGB - PROCESS - 255 - 29 - 37 - - - R=255 G=123 B=172 - RGB - PROCESS - 255 - 123 - 172 - - - R=189 G=204 B=212 - RGB - PROCESS - 189 - 204 - 212 - - - - - - - Adobe PDF library 15.00 - - - - - - - - - - - - - - - - - - - - - - - - - -endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/Thumb 32 0 R/TrimBox[0.0 0.0 586.0 66.0]/Type/Page>> endobj 26 0 obj <>stream -H‰,ŽÁ -1 DïùŠù›ÔÝF{5«^\E*ø"{±ÊêÁß7˜fŸ <š`3h&*ÒZ±ðù¾ÓO§¼/‚éã×ËwU0¼èìbsnrV÷>÷G±#%|Ѳ±egDˆ+¢Ó°Jè–!áV©±J)¶Uð â½ÛÑŸù 0 Á , -endstream endobj 27 0 obj <> endobj 32 0 obj <>stream -8;Xp,I2!4p:*-,@%^ZIS$ig>;!#kXp)?~> -endstream endobj 34 0 obj [/Indexed/DeviceRGB 255 35 0 R] endobj 35 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 31 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC/ImageI]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -526 0 0 17 33 22 cm -/Im0 Do -Q - -endstream endobj 36 0 obj <> endobj 39 0 obj <>stream -H‰ì×1À01—?é.iüA¡·8ÃÃïiI j ÄÀ J ”(5Pj Ô@¹˜lQ[äÀ'ËíÜ8½ \N• -endstream endobj 37 0 obj [/Indexed 28 0 R 1 41 0 R] endobj 40 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 277/Name/X/Subtype/Image/Type/XObject/Width 526>>stream -H‰ì×!Â0Æñõ5mG3Ñ„ÑeÈ -fbCì$®€@p,0O0 Pp)¶AœñÞï ÿ|yÏóùÁÔû´\(¿AÐò•àðêq©MÅm‚T…FK^ç2°.I³¼OPʳ4q6POƒ¶b8žÎæ¥Ùt<,:VWãÀ„qÅd¹Þîö¥Ýv½œΈªÕì›ãùr%(]ÎÇÍbÐmª²P­Þhu8Ýî‚Òýv:¬F½–Úò½ t7`÷s7ÐOÜ÷Oá ¬KÒ,ÿ÷ßKþ#ÏÒÄÙ@–gC5R›0ŠÛ©8 -–õ4”9Êo´|%8¼b¨z`@PcŸy{ -0jñ‰ -endstream endobj 28 0 obj [/ICCBased 42 0 R] endobj 41 0 obj <>stream -ÿÿÿÇ‚; -endstream endobj 42 0 obj <>stream -H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  - 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ -V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= -€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð -¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû -endstream endobj 38 0 obj <> endobj 43 0 obj <> endobj 44 0 obj [0.0 0.0 0.0] endobj 45 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -526 0 0 17 33 22 cm -/Im0 Do -Q - -endstream endobj 46 0 obj <> endobj 48 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 277/Name/X/Subtype/Image/Type/XObject/Width 526>>stream -H‰ì×!Â0Æñõ5mG3Ñ„ÑeÈ -fbCì$®€@p,0O0 Pp)¶AœñÞï ÿ|yÏóùÁÔû´\(¿AÐò•àðêq©MÅm‚T…FK^ç2°.I³¼OPʳ4q6POƒ¶b8žÎæ¥Ùt<,:VWãÀ„qÅd¹Þîö¥Ýv½œΈªÕì›ãùr%(]ÎÇÍbÐmª²P­Þhu8Ýî‚Òýv:¬F½–Úò½ t7`÷s7ÐOÜ÷Oá ¬KÒ,ÿ÷ßKþ#ÏÒÄÙ@–gC5R›0ŠÛ©8 -–õ4”9Êo´|%8¼b¨z`@PcŸy{ -0jñ‰ -endstream endobj 47 0 obj <> endobj 24 0 obj <> endobj 49 0 obj [/View/Design] endobj 50 0 obj <>>> endobj 29 0 obj <> endobj 30 0 obj <> endobj 8 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream -%!PS-Adobe-3.0 -%%Creator: Adobe Illustrator(R) 24.0 -%%AI8_CreatorVersion: 25.2.3 -%%For: (N8 Dev) () -%%Title: (line_medium.ai) -%%CreationDate: 6/3/2021 11:12 AM -%%Canvassize: 16383 -%%BoundingBox: 700 -551 1226 -534 -%%HiResBoundingBox: 700 -551 1226 -534 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%AI5_FileFormat 14.0 -%AI12_BuildNumber: 259 -%AI3_ColorUsage: Color -%AI7_ImageSettings: 0 -%%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: 667 -573 1253 -507 -%AI3_TemplateBox: 960.5 -540.5 960.5 -540.5 -%AI3_TileBox: 572.519999504089 -837.480000495911 1347.47998046875 -242.52001953125 -%AI3_DocumentPreview: None -%AI5_ArtSize: 14400 14400 -%AI5_RulerUnits: 6 -%AI24_LargeCanvasScale: 1 -%AI9_ColorModel: 1 -%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 -%AI5_TargetResolution: 800 -%AI5_NumLayers: 1 -%AI9_OpenToView: -98.3879003558714 14.1316725978631 0.650462962962963 2455 1869 18 0 0 111 288 0 0 0 1 1 0 1 1 0 1 -%AI5_OpenViewLayers: 7 -%%PageOrigin:560 -840 -%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 -%AI9_Flatten: 1 -%AI12_CMSettings: 00.MS -%%EndComments - -endstream endobj 20 0 obj <>stream -%AI24_ZStandard_Data(µ/ýXd‘þóÅ‹ )И&Ãri-™Ï–l­l›¶­‹M~.ÊED¤t5%i¹çù«@ h UãÕ1ý²•_ œ†]öÒ3ägÓxÞeéVƒòóx•ä<°˜7ô*$)¬=ŠÕÞdÒ#o“ôȹ +G£’ðçáÈí³Pº"ú.ª\z\&Êk g*ý¢K(=>vbw{ôÑGbÙ0’^1–Uôí$Éô¨Þmܲt~áôŸŸÜÝ©ü<´üÅ!IfæªoG#-9àÀ0tM¾ÿ«›³m¬,M†iiê–…‹Ñ+.À‘€ p@À<À.A&hp ¸à$00 Aq€Ñ p@ `°@$@˜Ða1AƒÄ.À!à€È`X‚1ðÀÀ˜ŒŽŒ`ÆluA™žÁã”KwÑ"]g8 pҌʆvc›¡”f_ÁÔB¿þW×+Uó:xwÊæÆ—OC«#§$b¥ÑÙÔÜÙd¹4Y7/Ì-‹ãBâ€`8 PÁªÀ 8…)Já…Ä"‘Hÿ9DâYÑ]-ઠ-O<#O¿ÁrÝù‚Z‰Ä‚Õ-à±0†ÖýÞ< ¾@W:+Oác‰+•Ý -PX,Ìa5Ùqx¹À€3Y…‚Ó¨ @©@¦0V0ÐÔFû‚ÍùêNán°CC&ºO^Ùqî^9• E.hW„»8 ®HóYá‰*ÜdÉ ¤æ§ˆã¼ÉÄ!šfjUeèZfÕdÕ¾¬i•gñ(¥ú⣛{ûù¯„gôPÍLfX­ÒÕÖQÏdFû*aí,O%É_Êmèßf®çòœëÎÎrâ•‚Faá -T˜‚7‰…+ü¤`Ä*àm‘çþhQµ°‘U¢G?ÅQ$4D<*àNÒs!çt;þWøÂ'áD%.q†D¤0Å(˜îø'LI - +Xý7Å2iÔœQ[F¤Ï´$3¨ìʬæ7õ@&ÆŠ´…â€È»‚M-háB± ¥.ºh¢ - -4×Â62B7Ú£Ú¼hÕ¹ÌøÙÓ\w¯©¬:+ºÞã]ÕøšçÏÈZ£›ùµò¿Ý‘Ž(ñ§™ãQÞ"„ -©@6"Þ$ãq¶‘bOŠFÛJoܰ“æGjƒ:nÌUfø°=3ˡҵêjø«ö:v7Tvw+ÄWÖŒ…Ââˆ+,*ûâ€`¨fÚb‘X¨+ -…žbnA_P,,ˆÁ Ä•ÍB.PÒí€`8v‘`8+ð€(¹w@X Öĉ—5cÈBWè€0ª…Dó€8 žx@œù€HàuˆC DâŠFßÏŠˆ2,(²æ€H^@¼Þ––¶±…"‘C ^8á+TQ%´˜™9 6P ’§gåO¥³.ÞI´Ì ³¬"lm°H†DÃa< Š*ÓÒî€ sB>…R…èÁÁƒ DˆºM&íü˧ùhžcé…bz@PÙñÅÃq¹8 j*ºº+jDÍæÃ+ÃßtűÀ\ \°‚á€H,¨;< ò‰ÅˆÅÂÔDÙa -‰ÒaO,è0ŸX,N½EÃÀp@(ò|@(¬ð,,Oü¼xúÃæ&C" iqŠK¤ƒ-¤Çj¡*q@¼²\V¸·p@ø€`X(‰ ‹B‘8ö -Šãa¦(< Ί< ´ÀâêhE -h‰Q¤2Èc&¿ÌðÈ\Ïd¾¬'Ùå•ÿÊÉ^ å¬÷ŽÌ “b·åÝÝiH–ö+Ÿ¥‘ -ójr—•ä9ÛÿâKfÐØžne/ÅI%¿ÉŒÓÑ~®êØ‘WïŒQ¡Ýh®hÒ8Cx2Dß]æ€ð€â€PX,¦•]>¡8 Æt…šìð€X,”LqÄ s@`^q@LMe—?  -…ÅBˆ‰¼ÅA— ÃÄ¡ X( -„WRPÜh´…E"q@`±VÔYX8  -…)ªD"q¬.nt@(¤¸øñY°…-ò€8³ò•1ñHÐϼ `H,dkLÁÆ€ TØàÂ)\âNç›cH;+E%¸8ZPP8 ` - Vä.³H«&i J4Áp†/$Ž!O¬¬4*|ᤀ3ˆ°ÀgDr5nt¦clŒßÉ%s@´Y§+‰F>6<,RïÄcÆ1€@ AƒA„……â€Ø@áË–B9N”‚þŒÙ2£XeF*Uâ šè²½Ÿ”8wtʪeù'Ê´Ê%šeÆÉŒÓ}³,ö*13îØ™Qsf9óuá” ‰;<òc…¾<«+32m°PfØa[·‘3­eö–ë•usdWŸ#¼Ê•4ÇØ¸a²â‚P\€ác -áÀÁ’Éqc†Gç€ðÀÂâ€@‰…ĺ °p@Ô‚bAA¡ P(W‰ŠSœÂ¥(+< Oä%.a”p¢‰¢ ‹+\!‘Ç_úQHÅ3JJgpA <&¢aa!-Üâ~@àÝÙÕÕÑ‚â–fe«¢•¨_YUT.+‚~@ D"]†Åb¡ H<ñ€¨…â€H£Ów -+xá3x¨d"*2:B: ’N R-hhªå¢ª²ºÂÊz%JQ -µ¨…b¨±š¬Ìì -í–0…)ØÂŒÁˆ¹ž®Îî/ï—8Å)ÜâŽá‹FÂBÃCÄÄc¨€ \@œl:)+-/1ˆÌg"©‹\H†œ÷>½n¿ãóâŠ+|ñ…3|M8A‰JXâ˜Èĉ„"¡X$ ‰bUXAŠR˜â¨HÅ …B¡ X( ŠQ¨‚H¡,® °PXP`PZÔ·ÀÅ‘‹/ ÅBa±X,,³Ð/ÐB-ØÂ-àB.|!±†2ØŽ -†ÃÂ(LMe§€ -*`>¡Pèâ€0•æŠb|Ĉb¨S,(ÄÔT¶p@Øa>¡8  Ó ¦²Ãd8Ãñ„Ba±0 ƒ‚!Á`8C2 Ã1ƒ1ƒÊÀ°°°p@, _øB.à.ØB-x¡ ‹……ÂB±ø"¸¸…-lQ]Ì‚Aa¡   PH(¤* ‚)”UÅ‚b¡PP$W¤¦()ªCb!±H($ E"‘x"˜°D%(ÑÄ$¾p…+þçïö:ý€ðç ¹‹Td"Ÿ˜—–•Îæ$.PxLD<,4nq -§¸Ä%.Ï®Î×›; la -¦` »¡•‘‘Õj¡¥P‰JT–UUkj¤ ’ŽŠˆá€P8qfèâÍj²j2 1,,œpâ€H8á|¢ÑŠÜ. -ŠD³ïñ®gU®†a¦ ‹Y(Fq@$&1ŠILâÇÉÉ9ŽÕ5FC.à€P$îDŸˆóùÊe£1â ]è±XT¡ -E‰¾O< ®W«¹Ó†9 fa³°…QŒ‚"q¼±9 ¬ÈB„Š 0ªs@xà€bàè8 0‚,0"< €€ @ A1®0@",\`<˜° .ðƒ4pP 6€€dÀ‚ RsŸÒ+UfÚ}†/¬²y¨.‰êþ«Ì›«²®th;Z^îEVk¸þU¯1¬­Žˆ–«V?r•ݨ…4é«gÖ]ïÊ”ÝÈjw•¶ÁæZyO/‘ŠÈÌóg,×ɲ[:N~ZW¶6ï®&Y>ËZÑ¿C2¾LéI÷egËÙ¬Û[1Ú_b‘Ñaá´Æl?Ë>í­Ñ©6åY{‰>²1š‘UM~°þ,‘í Ï”æ’ÌÛ^¶®g„¿¼¥Ý®¨°c7Shy9weGÄ1WÍ÷=Ó,Ë/ü±$'§/¢éêÔ+|ÞȪêü`¥dË#–Ã[ÿŒÄ9Ò·'µæC†FœôÝFfªU•õ<ð„ÈMªW¶Ä6¢‘UUwu9µñnèrN¦»9;œÂ2;<×­z9»aþŸ»”C•S'cçÊ|t2z•HêjG÷oé íHv’Wó8|ùìcÙšŠ•;ƒ6XÄN~Î|EõÒ$^éÖë¨bÕ‘z’­¤uô¬5“s§bÅ,ë^sd½Ëú-4•s¿þhóº½Wašùš¦<_Ú•mú“Cdæq½~v§;"eÒ!ÕX™½UY·?Rƒ®Ý©j¨Vƒ•E<;£ºÖœº»ºK³Tm6ec³^u²ow5Y½cM‚¾¡z¢‘˜í¿»ã›G;"Ò¥•®WÙ:yø¦0«w½Å‹Ùé»Ë©ëæ«Üþ'û» ½/Þ«îVŸLÕêq]+¯.é^­!·šx6:á%žÉ,m&«ÂÉÿ>¥”lß"“±ïçRfVfpK›¼ç{½)”"*³Nå щM­LüÃIù->œ^O–å>éïù¬Ü½ót÷º#DÍòÙ©Cw,«\õ®êµ§áNN"±¥vCþDu×FÊ…žœ)$;d¼Û™Ù“.$,O‘á©®³_’MþŽx™vT™åÝÍc)uœJ´’ÑÝs^!êȳÁ»R«ÁMù¸:y&ÓP´P]™¥+׳«WˤuÅ/zjÏ´j¨ûé3nùzºJ²Y5÷6<‰nìe-±·©¯Ó8¯¦®ª±×]Ï[ŠÙx2ÕÇò¤l£§Q‘};!Ö͘rãŠkš´2š±~ÿÉ g0ë‰7Bc¤¶>V#•uÙÙM¾§Ø³Û½„°cXµÃD»Ý8#sýÝݜهÈwt+¯žætïeŠ«…HS R{uuu9UËzdeåÌ9»])„M¤¹²ß ʱi²ßçRYjÉ>ËÚ‹n¹ìœ‘ì6¬PÖFcöÃ&õ7ØšŸÒ^Ä“ºRÓNU»ÖN‰vW³b[ö*Ÿ4{e{ŽU2[{©#}¦µ÷̄ޫ:2ɽfx½d#ùKc§ßɽ ±üÌI¬­Alà ùl4etXŸ3}ìðM?ÏïòNuKX¯)ëJƒ žÕì)‰ÆËÞÝñ›çÑ›òò@ÏÌŒkNù3Çqê¡ ÞÑÑÇO©yràXɳjÄ™éš^dR=²_BÎ=™¯ -¢YmËtÓãÆ•ºä«F8ç_¥eîÃ+̳Á¢w%Å&ÕÙóTb¬„°—3svlÃø6øiK®­´-ÏGe¿—›uÏ{ÙRìf`¶WÞ©%«š}ÐLûÖ‘Ý9&”M¬“9KHæ²ÓåH³Çþ² ñ˜g‚ÖwŠè¬:wom)*åHÝâ[³äqò¤¯%ó#¿¥{‘Ü—r‰d¡§/ôz'Éd¦G6ŸI)ŸÖù¼·Åî-v‡Ç(Mÿny“ºŸ!|³J°%+ýF¬}‹ëß¼µWeÞMB.Ö\yåÞs¯ˆÎûš˜k…¼¡|ÙìÞ×è„DU·’èŽT—ªâ[wªqÕ6%‹mÞÆÌNwå°£ïMñ®Ù¹F’_¦'ó~d9x¯Þ2gCdwL2YšÊP -[›<;^^Ñ8¦ ]GÞ9é¨:,›»í~ˆF;1B²ñnU(·‰‰Ä:Ö;IlVv&¼eŽçÒ^„)tõ‹ÒNÇ”ºž.Ñî:Îw’w6¢ñ1ÕYo*¿¶ªTö^¥L6ÑúºÓ,›11d~¯n÷‹kxùü+³>ˆ%26‹»UYð•9rhÙüDv4šTÖô6òq| -6äo-~è*Õöwik klðx†¥êà+³’í@ÓˆÙÙkŒä=Abôª—Ć#ÓМ´údMªÖ&ÖêØV°4•Êî±êEeo]L9&ÍøªºÙ ¼n}¥œ;cµÞɳi,s ºhjS®cæíQ{Ïìº%š¤=Zy3n‰É¿`¬$jZ‹ÉƒŒNüÑ4™ÜGRÉÙÈb4ù«º¹—K}\Öøêˆuqýþ°žu#8iŽRÍdýÊ)6…·ü†©VY¯ÙH‡é,µá§ÍêE>±ÚfFʆmʨnõ²+e>GX·ržM6ñ³2odìe™­!š”Ei¥îs«{ÝU¦J%iµv§î…Vâê éH%]Šs!"Ý‹IBÕ†ç‰å3%ŸsxÆ[¯’ÓQ¬¼1»¹ÖwªgÉv§û©Ãwo®.,Ã;Ñ•¤;ÐM2ÞÒ$ŸÞptð÷´£¼hÃÓfYNíÒV‡›'tõ¹wS’u\šd®^‚8ܶ|';JÎ¥÷œ¹Kš!óÜÓîsëåˆm€c× qALpðà,pÁ(€$\À‚HP¸ ¸`dà‚ À«¤£e‹ª®ÆUòü<þUO¬Tˆžññgr¥9—Âqu‰ï³l‚¥ò±B8Òæ6$YrÒ Ù¸{‰5Л-zM™ÌÙè"ÑOâ³Q‰žãÞÀ23=›¿É‘¹ ÐF¾rLw+%Ï"h&A˜'5Ò•|‚63$Þi$YQ%ö¾ZÌ4_‚9Îï3çä%›ärÔIÔ–ÆéR9¬É¿üI‡MMòF–±‰r7Îy÷§F’è‘ö“ºQì ÑÉuZ–ޤª1z+hH$yãì‡I§I—ÇÙ Ô£»¦>Ó#—,g£êUJ)QžX´NyôL’Æî®äȃŠ*Fã3w9= K¦<¬NêñÌötÃ_¦°ÃZ{ê.:9²1”é ÍÔïŽɃN6©ÕËÓ'm$Éã²V©ƱoRUÇ®4ºó.dX•&YϾòa/šéF½Ü]Y¬#ïg:½%wž4Šëï‰nˆ&-1•DÒIµï•›Ga™\Ÿ‹ž~e.É‚5<6"ú™Sè<\º`fQ™^g%xÔ”¥âón¡â`}ÆÅÏýBµÄº 1¯z³|]ËÏ/Å:žÁÁ“óÅâ þ gÎî°,‹íOcÍÃZ¢PU¾Óû`ásþ{­iÕ1:…œµÁªÎíîióT){ïÞüII†²ØJ3¼“¶XK¼{!–”›†­¡²[C57–¶î^J”×/kdÈÈ•6ÕMáÝ>£}nÙw5©Þ›mã+¹ÐzIvÖúMšz*ò“÷2£Âš)º,,U§^ô³3c'IÂK— ¯p¦Nå“t¹åž 潆PÈï‰n©OI>Þɬø¢9ñاönP¬j†wc•¤­c?''‰&ét·]Ž Í$Y™ð&v4ß®%éÌK$Iç¹çÃ{ËþßÓˆ’¯9¹JÝ(ºùy­h†‰R5Êò~4¬ÿT£­úïsøªaû¯‡‡qfP²¥4šÁ£{U£5-V_ŸÖÇ2æÈ´ÞIrc—ê,ï³ËI#º£Ô4íèèv]nãn˜O­k]ÕMØ·vI×línÇ‘¤Ú+hÍZö8v‰Õª±KjÇÆ$vãÎYFöÞ˜KZã­ìs|ÇßÔdï—¯4müª~ uzRw£¦ŒÖ™2?í¦›ØF~þ—0óÆYfŠÏE™æËyñaâ9-/i?úÓ(oi6¥×-íÙùØø|uid#Et4®<˜ö9,ÿ•ÓÍgânÊÕ&i« Ñ(óÌëv¾5M­ùvš4ßú;”=ÙÐGjuu¥<ªtt›K9ªÏ®Lp´„×KÑ ×½—jB#æa4U=[ë¬2ir*%©s½ÒŠHÆE»£J}«GZ•e¥Ž:eiE•µ,›Ôþû¾J«Ã’zÔcÃçzÚ ²CC¼“Âñ¤21Z³d¨Ö–îª^'Eê1?ÌR^%†Ô©™‹’|ÇšKV騺ާ‰#tÃ÷¡¾Ð¾WÉ+‰nξOOòÞÌQÝJŠ3‡†Ãä™´;“ãÀõþÑr`Î Z(ëüoðÄ7J•i§ë4GCóýP®F//åîh˜b ÖM¢áõj¤kv¯#X£±I5&¬¡½ð*i¼qÓ¢K1ÞˆqÐÓŽÊUßJ(ôÁa|Ú#;³™‰IxÂcÙ´ŽU¡Ù=×k&-t£îK¬O ÝxâåáØR®º¦]ľǑs«wÈ®u•Ãq7>ÖѬrtTceÎx†ðW¬Sºò¹”ßh=Ÿö)Ögü¬ãUɧT§’ÏIâxšÍ %ÝNgìvfs˜UÕÒ$Ž«¡³´üQ¡Xž¡IbYYÏJ¬†Ó²:Ó9Í“H—#qÎ|¿%™Ü¸eóGÞjŸßްä>¬jpì=ªØ«^ëÜ‘«^6”ûÀb³DnÍ,“·©âg\µÌ¸*øažÊZëé‡õªeÉÊü¸ºI²Âwe.mY$+Û­Æ’‰“';3¦ÍLf6CIÁ¬mÆ×%gΖµ<¢³½þ,2㌒sgtžít¢üÍjCöZeUQ³lZvž4ÏèÂc;j¬ä’›)³ÃÖx{j ï¬XU<'ºÙ©BWÚÌCñµê¹2Öí ?3–v&½â]s™Ž³‡(3u%Åã)ëdZßNs%5ã§ÙÛŒYó¤ˆ-ª-íxo¥Í8åI»#$*aÕæh·éäžHø4C¡é¨¥¿•姪&ugòË{}’ìjî.OêÙòmá}UâéÕWfâi §ðµžx{¯¦Ií(§NGØ›©:Ã’Ôš½:tÙ˜ØûØ™>êzì½vñçn¶ËY¾j½Ìçе‚e¡fù²ˆìX;¤ú}EA*¡ÎËÏ ѽ(M°Ê‘4æüÙ‰rql÷1£ UŽãž4%¹imKOaà\,*£åw+¦Åp”ï8i±Šá8š¥ÕêèíÙˆQ0ÓΨåÊiÎaMNÞz.Ã,:f/ï”Ū̚³¼½¹g>Å!¬íÔ^CïC…·ý¤SÌÂÖÄ×KK, Š3ËÐ’˜BgX%Uud¥Œò™¡š”Å(ó.GY&7©ó]ÅH˜‚w›KOKâ-Ç"™L¢4Qœ #sÉiï~¦¹!¼Mܯ¯Â[áe¦xr,¼RIÞyä6BF5—*D+¬û.7û%vé$”A: -!¡¥I9r™Ò´AÃá8ÍF–qÙ«G!ŸÈ*±„%;Ò‘Õïòfð†/ɲÊ_Ò岿™:;=MŒeYvæ†i~ÖßÛŸ½f&C%<;&š<óûÔX¢ë”N²¦=±N¬!oÊ/bÞ{=!ל½MMÞe¦ïµ´ß_©t'‘ŒEv#n(¹&+«)5•$oˆê4.¿Xò£+3ÿ>aÚž‡… ‰-2]Kž›Ì&E>¬”ÙäÙuþªPV•¸mÊ”´ûÆ®^4#óqûI:(chÒJ¼9bÉ5–iè˜sh‚Evû½ˆHS¿?˜wå¬6 =y”ùh^ûðsßX³S½<¢K«;ÿÐí%›SÛíhÖ—ÅÖ<«WgÄ\ÔÖ*¹…¾N‹l»ÑS“’ )³ÅÈ Ù¼¡U¬¡dSäg’í×óšä¡³âÅžI»³êÙ‹7!³ãIaC œ[eÓš²6íÁ¬ÓLìœF(”m(+ÒÑF,Áß{$sR•“nÕ*g^¹ -kG x«™3ºÍ—2ßæèù©¹!­VWÚ·i®u£«”Läæ%ÉsIHe³éÌœEf£3Nˆ$e¾!aùT¿“—§G7²ôL5iM˜é¦‡Žé‘B»’‡3½‘ùu)©Ê¯)‘ËuÛA·ƒ5ú®Ø›&9çö/½zNc«_‘‰Õ¶+©:‘ÊvCâóubµÃ߇òäm(§±5䲪©ÛŠÑ]&Ý9cYG,I–‡ójv¯ŽÉQµïîGÒ¿Ñ'‹„Ì„…ce“ž³\ƒ%]=‰,®ëßÐ nk…u6Øî’>Uo I=gUU[Þ˜½4?e½>KOÒÚƒ%º2#9»V×"ÛSŠœù©OÞ„ÈxXnMLnÇ\hßѪî&ÉkÃ)³íe>yǦj~PlŒ 5çRÅìC×ëó!I{P^ÑuFs?™:±Œ’c­§³¤t¦1fšðƒ®»\òwj(ÎsZþ²¯U¥Uù’¿$vø¬„eoÑÝHú°îÒ—/2¥¾6C<¼$çÿеs7­Öžj§·ÄúO™‰‡˜™”ͺþLœ§«}–'wg%!b[Ä{U³h?£ìXц™sh¯Í{è#[µd²¬‘UeÖÎJDÛ%å?“hì^ì9F{ý$M{ýmÚŸã­Cö_øÞ_k˜´+ÄÞÐÕí¢B¬[³üÚ «õê÷íh¢Û knf¤âQMu·!çŒãTYwÔH™1'kxT¤º®ò7x?ÊD)yTY_!»#Y%‰ðpð‚õë´Ý¢´ÑêΘ6Žåcä¡ÁOr`Þ•gÂC|:﮺Seƒ‡ò[ÍÝï–i³Å4x=«ûب„"…½#ŸFwROÞ™æÕ¤ÍñNu—ó@ÃÊqëäG}OÞ{M±4×Îò>¥Ê;ì`¥‹m3ÈŽ3f©ÕмQÖ [Rƒy%çËß1oyû©ËC4Bû«éódWObUí",ªÒaÅ5SÓÅßÏŒ6Ñ?ýÝîZ/ëehZEWº)¾DæÖ§Õ¹ZõZ¥jñxµÔ;‰#ÓßUŸCJ¡)zʈÜsž­Z¢)ž’lÈ2x'œúNÅ{îi&ÚìÄ£JMYë÷©žhü¹“ç zöF4CsTWF¶$"±²“:VÂ_/Èþ¹ª -IÝ>Y³ËêßÌù\ä—YJǦ1$úLPašêÐŒ†„'s•D>©D«[³r\Qå°éDtóÐù|¥)êIæ(šs?ðYh¿Ì[8Ô[šÏ\xjh3é7ÆJª¢É‘®*$³lï)‰0«,ç5•ôÞ¤TRÕœ’¨ì£¤_ß›r³„Îb,;1Ã(/Ï‘êfiŽ¢Ÿ/‡y~£±i爬:GdùIçÒnD–VòÈ, 1Í6rá@;ÑqLB‡7îê¥Ðч\H§;{žs†\é·ŽR4׋ovˆÌêrŠÈ•SE–S9U397(9U47õ湇EžQf3UGŸIæ£r:d6Ùn¤.ýÖÚ _͈ÑM>ß°´œ4;³:v©Xu±>YîÕÏrÜØsB½9Âj•àbUaåŒñxigN”4ãt®Zy–X™,”ý°ÑØ®¾+Ë4þ®¾±4»š»* -Î]ÏÞ»O¦œÛUÇo~fõ&ž´™RÊ á;wrS+$ªÍîê°î.Á÷EÅO›X76›© srl2maå4)³…•㢫)³íL÷”‚s-DËÔA„ &H°@(hhH(#ˆAƒ 8ÀÝ 4ØÔœ37íÔ±8‚d¹¥a¥çª~ͦĶ\¢ ½ÐÈTd•]…lGu”G¶ÊÆ÷ÒªêÛøÅ–u_ðjFîMsŠ­>‡dæºÉ«ù”ØÔÍzÝlͲqe³lLxÍfbËôv†l™Í?Ë/s£Tÿíî,v×»3Öäâ¤]Mç†áåáõ>âÓÄì’¬ð†ì4Lkµt»yïùzÃ/}U4¦Ú¡)\RÖíW¯ª¥Õ• ³´ç>F%hg5WsggtC7ksgå,›Õ¡Í5XÚÑQ3{ŸyʘÕ#Ñ*åhÔÔÒȈYg8x”6˜-L£Q^Š7E#±µ³'žªÒL•7R„4Eƒl>T4FFSD&{º†òbçÅÏ2‘U’U–Òt©DÁ¹/;îF„©ð»±›]¤†2c©:›OÐ+}u8”v“c¼Nù<Œ²ð¦„5“UK±n®¦Î):Öç>Q¢Ù³&kˆã¬¯®Z£YýÞ%=›B»âLÉŒù¯ÕJšêLÖ -Œ<4Ò?UizÛ”LU"öJ%µQÈS”ÎbµŽB¶¥4ʬf*óëu˜2cS)|ÞÚVÒƒÐIWnžñ¬Z>­ÊFЪêADÃD“ªëã¢×1m2cC¬š|å_$©žÆ0Ó²èìøZ‘ä[mž„Æ™~$4,o­ÑoBuCãêÙÚ}%D¡AøkíÒÌ’üO8v³>Ê“‰ '"•ÍÌ@çYYÝr¤—mÙ¸;D(5Œ8h)%5nXƒ#ƒ±Ñ¹¬õRã,ƒ>]Ï2ShÔä°FaóÊ03¥:.©†•¼ª›´;ã´4ÖA;ݧÃq.ÿ ëèJ’µ ñé«,UB~øn9õ¼ñUЧª:ñhÌóñ!}îÊýÈx$S²_<"_[™V}l”)ñ]m|M^>–oщ–F…}Í-XNº™£æÍÎä2«JÍEØÁjÝæîy„…ÏI2ú5Q¬wó7B2’Ñé(ÅÌÿÉè½§µq¶Šô+cRé,8gų=–¢S^ÑK†ióáùzµ3i¤>¨Eg­^芲V'ižú°IšéetòÈ~.ˆÖŸÈN:’þn?ÝM -áOHž"_1Óh\?ÓKÎñiš‹›R&®—¡kî:ߌï2ß„îÊ— ¡QÌe3Tf_Éå>•jœ8Võ²;yMûQ‘ýQ'I¬¥”ÇxõCÊ1Lñþ¯¦…&þ&^}\gmÎ ^M‡Õ±½Â;³ÈwHõéœØ—4*{ñ„UYÛ§f%zU<‡sÏ%?È·ÂçGÉ•õ¬æˆçDï³<D5H-׫f†„ çJ¨=jsì%W˺ëcs‰Ç:†¿›_r¬—·•á\ííX>˜·ôóœ«¯ŽŒåº’RÙ½Z_ßÔ™5ÿÌÎõ^ò§%Úâ3}Rí\¦Ð¨ä.+u¢LRS !¥ˆH€ 88 E¢Aáœ\~€°˜FV<‚Ë5§Œ1„0L„7/ÉÒ&e/{zv‡¢è/=6& µ…ºw’´k½šÔ‘M!ߌjû³bLT¦ø<.cãuFFXÖ§$_¢`„ìß ÿ…"F;ÃÂm °¨üäã zXŠõcØ¥¸ï HqÆ~D ê~Ø+N×Ú¦a­q’¬È9}`ÚH]¸ ²Õ:%Æh†âäŇç•þ”é#²-¿^zÛ· -Ÿ'üÔ¤æ>JñdÂæyšD×Á<©‡´HþÊ1NØ Á¢m˜*wE÷æµ!=ÃÔM˜‘ŒˆC6?gOR$3S÷NKJŒJHØÚŸ%ol;±W5Ö•®òë&ƒ®Œ Õ Øõm6JZ¹™ÎdGé«9fg}C؆@ÌĬ÷´1eݪi`#!qPÑÿŽÚe¯z¥oË,L/%9ÀyqeÒ†ø±yNòíj–4à§?—¨X®ü°íEÑeÑ€Sáfüi1’ƒç2ä,–ÞAql½Õ7†GN>åuè,Ä1²vT“®ÒìpiÜ Ñɉ½ãXÐòkZà7xB˜£S/œH  -D~Ÿi"®®ÐÐlÀM+†Ý«g즞¾ ‰Ø]ê’#¶Bå’£•¨4á”ÿ‹ã€R´`”mÉùîi}L+Ä…€V/¸Â Ç¥?ù5¦‹x4 ¢5,Ãí¬ûJ”:7ºŠànr(²/­ÏRK¾Â@au‘w1˜`‚§¨„ GùŠÌÐ)¿æÆ~0u‘«8Z°z<«{®k0TJ5Ön¼¤E„&þ1C¿"&5Ø«Ǚܱ'Ó›ŽÍóš˜à†+Û3{'nÃáß§ÀºØö¸…I{EÆÉNÊÈ9‹ŠpOB3 eH‘š\q1˜T•dÑs8þòŽ^ ¡\Å}Q¥}x}ù\Ð*¹Å(UA%ªëfÛ¯óHV',ÜŸÒ`oÕA¶KU,:WÙIÁ%'$œ3Òô@q3O[¸:ØöVšL<€ì¢Z ©™0À:1&t…ócºç,SþJËzETéßõéíNst­:ÞF/6v‡P}ŒþŠO K¬9t@Ê·&\C³Áó¹q[†E -XLfSÉ(.©ˆYɶ%YÀS—Üïä ­4‘š$ÏøáMƒê$§Âm(é=‹ ÙæÅö¶ÀØ™*sëôÏ€‘Ës샠$G¿Z­àQÁ‰¼D[0|hÎe(çÝþUG™©À*Lƒ²î·A”}Ú°|S~v¦²¦,5[L+íø!SÉii†”;mh¿øž×Kññ¨°ð/ù˜8²‹Å=‡ -ËËŒOâ{%‡{D9*ÐpÅLDЄdþ¦‡KLCZù›*ï@V&†x›fïr·†ÔÈâð>ûÉãGñYzîã%½„ ΟÁ+ó6F`Ï*ëe/¡íæ¢1B žû¬gϹÜ\E·Z4c2üIn‹§æ,¶¦žû^ë%†æeœo±žÍ|Âg%M%¡ÈÏi1g:åUf{"ãc®}÷ýƒkÿ9ÔåVœÙi·k˜Ã¤_DêØ$%n % -ž†ñfÌÏD˜\?zÿ¿bî’Û_¦ùÞM üømÔ±Õ.Aè—q¯•öêNf°±5ˆrüN”!?Ó?‚” -­°¾{.¤*\ŠÃ{øPšAÏ"wÍ¢&BóÅÿJÜ -à![)š¢žì‚n())Âú¹»a(‚ÆvJÅ´väŸæê-ø´r2Ù¾}Z—nò¾µY}°ò q3Èh<+·Ômª'Hûˆ.”PKBi„˵ ¼Í1y…b,ù5Š 1CZë¥fg?ÿ¿æÎ»1£n Ã´é¥Ø.(7Ñ ¢‹Õ„ŠSU¿Ìu"Ò_F®)FÇxˆ'® OíÂ!¿ôw¦Hµ% Í¯Y¾ž Æ;¬f?ëí`ï¿°Ù’ÙÚm?îþ}éŸ ¸µ×I(^¹éqg -ê—$êè¨÷ÎÅ·ÛëñLw MPœÝ„Ù{u)ÏŽš’L+”ö—sÚþ@‰Þš®˜ÃYó’êYÁ彄ÜÊ©Kêm–]C|ðx2þÍ›ªúSñç–vBƒµFE@A¾ø P(;†Ï²)DñŤAHn -Ú¥Ýë\:{J¿uKlÀƽ´O¬ûLŸO…ÃÁVÕ§2†w¢Ÿ¢A® ïî¯ð”¯òYÓt£Îе·¤‘3óJ|yAãGØ»ÅñSŸP¯1nf·pìÓyp"t,S—  ªY'·*.ªÎKÏ…µ>ÿãº8»Áš¨Iîvc…6¸LxV("†èr¯5pY"ÛëèT¡i-x9 ÚL(Æc_3Ý5m¥¯`4˜ñè-ð,{x«ÃèMá²`UMN þ6Ä ƒ{ö¸‘i›¦î†ê ÅWHç™HáìbÁ‚=i(T¨ú[ëGª§¯©–“9‰YW:FdEƒÊ¬Ü¥flÃAâ#{¬ZðäôÔôq8ºAþ(푨õX"|‘öñÛ>7–•‚SÞO‡Û`lZŽè¯ŠøòIg35¼sê~~s¶UD)‚Óh´åuˆÀ‹f 7Æ1&mÿ7VWß £â|m{i€¢µ?óñÚȉ}öBÊ”oà@$'ßä䯪¤þŒ…Ã例— þ"éöêùäBün `TŒ\EQœnjåC˜ÀÓCÜLoôò£»ëKNºï‡Ñ,˜!÷›™ T¸Ä]xŠ{/ÔÎDú ³û±6­ð¬}¸4K(ÊÓˆöæ>L(ß'ÂIs߇"¾m’(>,ŽŸ Z~öV÷3 ~­|ùÌVІ2!0+‚ëux¬WÉé´ÅwPHü¥L50®`{…ô;¡®-ͽWÁˆŽ1À#EiU1!úê¤F|–¬ -ï‡<õ³à§;Uè7â:-„þ0;0æ\„Bý ü‘™QìyÝ™„±Ó9ÙŒ¾6𪵺E9 Æä¸ÓȉÔ,™†Õ¼ñu×ÿš7FÙ?®a¬€mˆ£÷4"ˆˆÈ‰|{M¬† 4õ†Ã -n³6TÓ4ùMó*Gêv6¤RœØ ¨m¢ÍWui4.ÒM¡L¶À:ú¾2×S úUmD³‚§¦•‚žÑ·“_É"Ì\XOÜÏ¢8B=sÅt Aîçë}™¨<¼-­¯÷Ǿ•+öÆJÿ¬inª3Nú¤‘Ɖ±óêó€Þ…G÷RhQHŽUfó¨ô7­UáÆ–R…õ­pêãÆi‹…RÝÂ+BÑ!¼ +†¼ö‡â^"¹ló”¡ÙùpóºmãÂm@Ó>+:p@Wa¶lÞ‘4š7MJ o‡¡¤R}d Œÿ ãEq-ÀìÆB'_Ï`b$­ -0Õõ§×Í…ìÏÁ öÞÙ THÝ1÷/÷BaëáJü§Þ/š+ícY¡Þ5þ¶Xþ ¥X¦ãn %§ÔÑ!޲)…Dóé{h0θâã³Ù FCÜœfY‰ùL9°+@,úhÜæA`ÌJ[g¢Œ"_ Muέš°ÝF|TÏÁÒôeDÒ¢ Ô†,še¯}ZW+/Û ó¤®!¼"U(·wH ζïáaÃÊ"þæ¶$oC‰ï"îkhxÛ‹ÈÆö‚Ž`½NUÿÜößßzÉo£'O -3y×øòF®rG §TèÐayÝÞ­¨™±ƒIQL®¹³ô46ÉÞ§è6F…#*YHƒXCo eo/í%¨T&èrAJ™"Ѓ¬¹c„ÍÓ*â)óûîRÕ{=.}~Ð îz¶ã@CMè 'Y IúkÐŽ:«·Wqxc¨¦ó©,ObãÞ‡c+¤3u§óNÂÆ÷2¦úÒšá4ÔÄĸ¤àspݘSÒqÞ™G,«6J™~69žýÛÔåü -@û§ Ùû"Ë7É5`^ PÃ"²öÆÂ,0¢ûV'œTѦ^’Lì’ÿKeÙᇷw®K÷¤R›sÕš{Bà&3È/¢‹«³ ˜tq>çõ-4[η®,švy£6ç^¼o_G3'm‹tPÐÙo>Ê\4Å]A‹ƒ›ñm=B®«bÒàñÕJuö /ÿS„rË2,î8*NÐC2-™ a Ë–rŒ±…¯ŸDǽ&lsDÏÉèÈȾ«·˜Ö­ÀE ×M¿™ú›[A -A0ÏKñW¯9ÉŽØ«ìÑÒìBaΘ8‹Ò8ŒG·ÔŽ`š¯­áqm!‰âJe«Ü8èZ;ðÈ1©ëqƒÄ&‡z­Ð°I[!Uº)dï©ÁL*ÀI‘ÍâøyÕÚØºDD| \oɹrvšÕA“ŒÊ=^²ÇJÒii*Ü¢¤"·‚ìX¹¬Ø±k´m³îlCÓÙ5?õ ûçƒ:7È=1£L«ñ‚~ÍÃU$ÈKÊ:ã -¼ƒGáD«:ß}6ˆhÊͼàïªá ðDÔYÑòJ9G§K†Eeë+‚5޶¥Ô©÷LŹä³#¶Ž¼ˆp)c+„Оnü-ç`(/ƒíööÉF&¶–Ì8î-…Åí#—©„~‚8|GÏ -Ë!¥0{Ó\´¢›êÙƒLL*ù9êÙ驨f äÉJÒU%Iž$Þ,IùÞºG&¶@\IÑÁƒiùdÈ ©Ñ/ްhåšQ5íæíÓO®Ž:4Œ:!#bÔ§­õ_cn}ÆÎJYzfØ«œ‡v\L@EÑUŽ}óuV×Í·FK±ã”…•µ\yI¥[÷vrf‡«q¶reaElÊõƒ€«RRò…ÃΙ­ÂØj‚„º©ð1Gî4àLû2õ![u»¹FÒ¦QwtW—­Ïë±s5p Ú†úTõ1¹ÐÕYeaX©ï©M2‘;Õ¾Ýä¨A§Â-ôh8õ -±ï)VІmR ½DMwOôÓ}tL¬l¬CHf¯š|„@~åž.fMupÆ„aü!W\ëJ€Ùo_="b˲ßëàp£ÕÃø^Öñ@ü Ÿ±§3¨P]ååª=ˆ:øŠ¥p{CÛ|>Á-—Áœû WMp÷C \à„«•ÝätŽÑ„µÕN·ìë)ÚÓ3S\[±þïSJ+Îüp—5ªeR6C•uRh"ö˜%?.,wvÇ7ºÏás‡QGIÌŸ$k&`Ozbú²ï?¤ÌãП`¾‡Œm$–\— «¦`¢ ¯…±Ú n*7Ìy³Žf°“*F4HÍhñ¼ó³5˜ÆwÂÕ^.?ç¡hþ ‘5Å›·Q“_9Ì“/‡Ÿèé,…®§É|N|| 4äl<`­¸‹Q`; ÁÈ 6³å¹ÀT*R -£= få¨v·—jŠî§G @ó©'}.ŒÐ€”FÀé ÿš‡Šk_›ʉoûà?jwŸÁÏ\c´ìØcV= ý_'=½Ã­Vö‚¿A`à³Òa¿¿¨´5adÀ€„ñc;ºœbEX°Å".QÞI™#MË´ÛèQíšÁ ¹&ìnΙœ1¯²5MÃ8uÂÌ/š(¤Ç}AÐÙ›°6³ºežï¬–Áÿ}0°pPvX&óÈKÐÉ4Z{æ¹p€`ÛjÁ—Y+ß_]gyœDâïfÅÂq„f` Žåš"ï°»cé,eG+诸´ÆìÉú&@…]¯Ç87Ñz\g'ú³;º±…[E'F1M¹ð¶ÞþbŽd¡¥øÛoz;E¸]A·¼ùùr´ìmÀü6ŒQ]ò¸ÄÌùay6Îd¶@ŽZŸ'/,yn‡.Ó°'&Ât7xù›'oüÐZk>öòè_°§ÄÇÎ=³á¤Ñûð¡Ú"*@‚ʪÏ'c¹p‡eàú#:Ÿ^çfå• LéÂPRòbÛ–Jæ¡Pûšöu™' §\K͇2ÍÄæ+ÙeuÌ *E¸G‡‰ ±ŒÌYø—<+…ëXZÁ(ZFPÒGWð åug¦›’ ÂE N¤6±ù˜c›–p©ö/R+Úò%;ãp‹“×üééWàÅ“Ñ÷·y“¥Ëõ‰cî†r!OÊi†¶!ã -À,Õ´ -‘5šŒÓë…>½Büˆ;ƒØÍ¦mŒßÈb7´WmikÌ)¿|¥„Ê–] -ñ ð)Ó€(,¶}EH+W|Ž„ð—aÐÿô™tFþ¦Ë3²7L²Ø"Èeƒuö{³jg²“½}ØÁõ¤0øõŒhÌz9:†B¯8ñIV4'œ~fÇE$1|PO'—Q¸¦¥­f»ªÝ÷ø9C”:ÿÏ "wVÎÃÈ\¸JrÁ?ÔÔÎÞ„¨R– ôm5-¢ðO݃Tk´½‡ßPì0a’¢Þ2Øvp:i¸yÛf–ïd¯7@eQÇŒ>¤YócD"Ø/;h1öƒµ·4Ô6y'“B§\ÖçâhAÜ(ºìѼ põoÈ(PW^ ¹ØÆ¬\FJÕ]AUÆê†ÜdVU5o³À¦#Ç -òÕ¾Ü*|ÙˆâY2ˆ,›¶{d=«âàf†-¦)­/ξÐd–r_ƒz<Í(CÕf3"µíÇ¿9 Éãì ˜‚ŠO ,AƒM MÊ‘|žNTG\ø*Ì-"bØ ‚8ý98Íʨâ#Сùãý9ÖÊKÝsЦõnÔ¦ÇÛØºójnDùm89ê"8ÎÔC½Ž[õ¥„‘þ4‹ÁfiS:ÇoŠââ Ol3èIqBfâWíUH¯“”‚àªfÅÛCö\&ôFš µøCNôC@dj™¢¼öqI“+ 04ƒ@¨ø;û%3X^+L_€›,ö4 XnkÐBÔÇÊV ˆD£ËГçéwÿ}óÜ\“¢ØÊ'XÃ$+/ÊÊ{ VŒ grVÐì¨L,WïïgáÄÀ¹,}„ p# @›LJ7ÔF•ZÑô¾8õ…UVâ“Ȱ9£Ü—•'DìÇÌë]†“Iþ¶vÐQ Ú!•µÖärÿÓ.“н°Ë *¸ï$÷yLAW0vT"*"{Wkb+Cn8i´f•B0ç&ùxaEhWêgÈשäð4PuÓ6±‚=¦¯ëꦡM JÍÆþ.’f÷“Vm¤áÔ5Œ2ì:c}ÚñŸÉ2Ú÷ä°‚Ì£—ßj8ÆéÑ^ÛúºG.ú*ÈÞéZ¨»§CÂäßÀwŒ¯ÈÒsï¸7)sy³MI^4J+Yxódbôy2Sç®p0A4uÚ° §F(}š×›X"U'"øRJ 1à3Ù–ÚÔ(™­O[Æ•üÁ±?òRÐ.¡3 æt¬Á±yå·Ù¤²I[ñ›5鴓ߨ–…GÄ -ÞId5™Z²Bàâòe©Ó®0â„à4ˆé”¬ë…,Ÿ¼bÛÕŒ§MÐÛÈ› -,µË£<Òw¡p°Ç©¨ Q•D‘ç–t9‹£çÛZ¦]sýg‡)Óx©Ð›G~â_ä;(+Q¢ôªc9% F¦.ÅÜàƒ°þk¿¶u{Ç"ÊL¹ªÁ…/ÑQSðîÅÀJLp Çm¬çAj¼_NÌ@–%µ½G=… óa>2MmÇõ-q˜tã€sõO;ç¯s ÝP!\“Sp>ÄFÒÀ–ËLeÄ1Ý÷†ã@°Ê%)žT¹Î•Š“ÞýI«¤³–q®iàäL§E½¡TP¥6GãDŠ?­n† ÍŠÅàçìFÑôd1†‡ÀˆC†Iã*)¤+ÔõÉ çr«Mäµô*A;?b‚ƒÛPÉU[AŽjí3N¼ÝìÔ›»sà#ÚÑHÝ[̬ÿ…‘ ;BF•A‘j‚ð›™°Ý®Æêeøt"Œ(]Éûa áÌ„í/¹ÁÈT%™âÍúÏ6d¡}V%ÅÄôk²¾¶ ËBzÉÚ -YS¹ÊÙC.‘YMÅm~~éW7žGú¨ó ÀÙ8c@zÖqÍiL¾ â~±+Cݘí9¨Pr³•3™nË¢„Ú’\˜äFûÞm±–(¯µ›ÐÙOØeFò´3¶.o´ë¨m„ÒñµD”9Z@´>.yVÒS8-f·©º9‡ÇëÌ 3©‘ÑåWàBäxú hˆ}…IÒåcXJ Š›=3}W^åAÚP‚X™ŠL¯ˆ²®p1Q«îœ=pX¹ŸH´u¢«lmÂ9wHÌM9âáV`3Ý×M±é*à Ž2u!ëL7^ ùüã…("ãRˆe›èå-Y`YFôÏšú!$¹¶ñÕTð7{õyåÓˆéI5Žv¥ÈÆñ7‡½É ¹íMËœ÷•f‰zË Ä• ñ§ÿ™#>_"ïH4 œ>V€„'Þømå%kñæ—¯›ØÁ#t¿ñÔqhôÖøúWç4L:xD_=%$ç$ rˆ‘B Ñê1ª²úÁÉ ðSxéê' S¯‡¥_þÒž±©k¥“GQ½Q=—m²ÖûJƒEùôñê¨5Ô…Ÿõ€ft Èù  ºÑ(z¡FJÜ$Ñb@m ¯ö†ž!Î+tažõ@…FTáBs-´:á­ö‚!Ö‰-H34dõû€Ä™H—D=ßì^CÃTNf!ƒŽé\Þª9 IæÆüãJŸÑÍâ’ÓD©gh^ð¦§Ü!ñS“¯*NÆdªtüòšµ2S‹pòhx„E|W§‡ ÖF-û;ѯeDWÉ€¨Fù=ýyŸÌyÑSW?{¼F=€%1´@>}jòÛ,·vS:l -Yé!Ø Vê2ÅI 1 ›"¢õÚ©„" -+·kˆ ݰ?½{ÒQÇ,¿í‰°‰‡•ó”PT‰9ÓS^…ÐF²œed‡HÚ;®ž?‰ÈÚU¶‰Ûæîñbþ‚ïX?‚Ñ@FÔ §RKø ÞÔ(NÔ÷ZfìÈ$?ÜýŽ!´¿ C7Ñvˆ_¾º"uxƒWŒ…½)0´p`uß$¸HoB(“w§t¨=hê²#…8˜ä\µv+p†ÏÜñ‡5ôô -=Îø=ZÿÒŽ¡¤CÀ“µ¡ êËí³@™B0{šÓñcf²¤×ç¬NÀ¸2DK©N.¾‘ŒÃD,ã:ÊÅÍQŽR† «Fñ²Sņƒ¾„›Q­Åëä{UWŠÅ#déÒ†íJ‰°k“Ž$B{fàˆ(bé¿/NKäu H…4YÇþö&ßãU™k{gÔø\„¶»óQyš}eêÐÀu,’Ýü@ä¡ Å,èQá9é'ІOðÉ¥¾¦Ì|³}\<Ø »«©¶ùÏM!jÌìöF<3‰£kÄ>Áý–ì -¯¢Vi„ѹ6(%”QíëË/§ 1BØÙŸô¶6|$"óˬEH¼¾`]»JÉ•0¤H“2J~7ܵ¥I^^[~Ü“é†^©yF‡•¯âBeˆKÌßÅabƒ;Ÿ’ QƒiGÛ¤Ù,Üëú,„u]Ÿõ{0‹O0SB Ìÿ?÷˜$•cV|®©–1aKGá±à„H+Îz÷ê¶Þ&„(páÎê裊9æÛØ'Pƒøÿ$g<‰»½~ÒéE“y»dÞpê9Rƒ §%b Xi[ !óÕ» ¶Ü†‚DDw©<—\A5e¦ðF]Ì@ˆ6„¦üc}ßS¶nÏÐoÖ¾èÓœ©óeø#jHsÞo¥À]\˜»ÓùŠ;±Csí9R¼—ö`TÕ £Ê±¡á"Äô#Ä´Ú[ŒC2¯uÞû¢ójÉ1Þ¶Ùз6@®„̦9“ƒääz_\Ä7ø]èw+žÜ@ hõ8ŠÿV`™±k„f>® ‰*Š.Â`ƒ™˜ }œ9+‡¦Ý”FWQa±Ö­hj¤Šaöñ´âBH´ÒÐà+]Á@•„«DP™ÃøçnŽ*˜¾åáUp„VIÑäÓÚ0ÜÇ aý”µÙVIк˜ÔÉ&¥ôœýøÐ-/xXØ×¾MZ¡£wKk<³³ ¶é¬z'ÖBWo¤˜àê4¥u)ÜÙ´tvÿ£shÙÐïPn´ûð«EÊ•/(Æ`™Å@½•^ÖÃÃ='Z¼ªNq¦Ù骣þ\, :RÀ˜`)kg\”f•2JŠ…ò›ÜûÆ]/ŸÎV ŽÖÄ—86xfŠtvŸÙ-ˆÌ.›*ÒcÃç éíÒäTÜÙÓ€U}5ß0Nš„£ÙñræºO§áÂgD‰p™"ø°`¥Rr…ý„ZÒúCÌ‚7 8ÀžÌ´YTcRK˜|tœGPÃД–jKˆˆÅa¼–EFYLÖï\’/듟d#ìù:X&›Ýq2¥¤í~jS2®Ý «°¬¢'¹:·Àgo¿„¿,ÿ§V’(Æ‘ ˜½NnFžŸÝ7ã’B½Æ·WnæÁ´6.8ÁÞ¥ BT‚½/ˆkœÂ‚¥å‰‡C4â7sœþ’b¾Ö%UfµóÅ…¡»B=c”-Ÿ#ÁÀ÷Wײut¯·Ê¶"÷ä ¥é#Ä ~ —àfµµ¦öÌ…$ cË”½sµÙYØ ¢CþõóÖya‰šIÏÎ,hÎln)¤Fžb‚ƒp¼×Ï£ÄÆ/¢MF3¤cÒ1Y[>I¯¡Ì`À­šP€26z¦³ÂÁ¢@´4ÂÐÙkC‹®£'Ò‹á“ËÝüÛf俆óúñò9žá7©¬X[ª¨èe+/aÆÅ ïoJ"²¼èÁ‡0ì7 Ÿ¦”1£e™ÊaØ—ÕÜ‘K—•¿†1JÞÃÕ&l)hÖo¿a ÉÒ‘Kd›• Êb'\§‘‘—öž\‰a,šßC°mo89‰nÚ"}™ýœÆó…‘÷ÒgÓùçøÚƒ`ߤÑlŒÏ¨+²fõlÉzÛéCBÚ4Äi˜øÎüÀ—€ëï+·,˜ :ÚVð­g—8mIƒ²1áriÖcF8'wÉŽå-/χ7„úLp×̱>èuuÅ"“mF /wTŽ .~â}S*(Eœð|Jêž(åèè⟊žŽ„T%Ûoîˆþ6n òÒŠ…Æ KGB$x“•=È­ï(=cˆ†ô$Q ) #5½i†|óå9P-p /V‘$Ñ7"9°•©)3˜f 0û¨rø u"”ÂŒ3H}Ù©UáE=1–g錄*ä SÎLo¡¶üœö‘3PMYêg¾«t5ÎÍߎu=pbB´ZÑž•…»[Âr-,àC¢ -0wóÚí/9FA ÒS\ŒÂü;Œ»VÁL¯]+Bh€¢¶Í°Ç?¯Y©g6]ºF ID¤‰gÜ4Ä 3EÓ®ˆ=ÚW#‰è²:bXÈn2ÒQO[­0[† …j·"šrßNô©`Ã`qÁ¿ÌëòYMfïéSg³°f”Ôñmm37©´P{«á4_›¬Ì ´¿Úº}ªËÌÚÚ4tÍ–Üaɱo„JÞ×ÒŽø}PÁ¥î­ÙÒ¡ôD3…Ú§3ÅÇàn¥<ú^UÜΓ«—¢YJ\´V¤5”lš\˜íJ°j²®Û@V&AÔÑ"¸¤þRÆGJœ*kúCò¯êwºþþF&²¡”Ã%)CôÑ矄èEaùªxjkáBèÒ-»4â®Ô\ÈùNŠ}ŸÔµJ,ÍëMFõ¸\aïAYïô4JÝ(8Vx¸6›Â¤‹˜ëÏ+ci°}‹èFŽ4$U7Õtßä(NR¡}Ý Õåþ¢ÞVn)ò²K®/è7³^¼,†6Œ&žv“¯è‹á‚…~2¼!œP?R·äFµÒýù€©¢×íaÈßsK #«®:ÈqDÇAœÂÕæìC5+€ …ˆs”¾Ä 0pñø‰¸ .òÌ600’ÑJ2X}­{a|¯[OÁ¤$+ÿ–¤kmr—]…«Z©uR2)ê •×ÉHsKÃì˜4lL'Ò½Jø ã_û·L!܆pP%ä sÎbè¹Àv€*‚yÐÿÂçAÃ#¤f+L<Õ,^àØÎ¨)¯mMêL™"ñ.u•÷eì`:E|ã†4廉ؖS m5ª–;— -ESõnn}Z\Ûg§§øT¨›©Éúä„5 -“‹ÒºObŒ5 \Øë°¾‡üÈxòå›”Çô»w%Ú‹jX‡ZàA^²sãPúúß‚MÌt²éjå@æ j;å§Û 7(4ñ€Ùέ\¥3taLöéYô|Ï*\ó szµÛXq,j„ -Z}R)ŒŸFM,Kª¦ÃB¦¾)×@8‘Ì–}AÃÛCí³š·ÂßU_©ç&¸3`l>it›ŒŸŒßzp¼,€âFF¼H¶ú²šp8PeCñ2›FUL]cYû˜"´Mý(UJÖ#E¢»uëœ9äQlÑ ! ëh‡„EᤢŒ™=xOFI#ùšx¥Ï‰ÊŽ€+¼WÔD›-Kh"NUªKW -Kø]¥—£þƒÙ94+ƒ58 F(y+90DZŠãUPá¿F\¼âe–íÊï ­Ê‹(é4Ë|ÖÒ³få JI*ƃí±ÀÚ§Ž¨©—PUù1«1C x|­@e_%,~³’èž~pâfu•`Ì^îEWgyXe,Àrcøó• „`©š¹]+2ÐŒåU| -Í0ÇÖyZlE¦ñ‰²¶ú,\<äP$‰ìI´{ d6DE€C¼Œ™K3X—;%¦ÝyŸ0æ0¥Š:úâÔœªw޵Áä[_q -…±£«#ÃX$Æ?F Š \àxb–ÏbÈu1†å5FcèŪc Ú âȀȰÙA’Œd€22MËT¹×/ •Ðàâ`ñl£Œ”!cs*¡j Ü 9ãÙ;Ãý)Jþ EšÐu¯?—鳊¦F';Uh «ð•Õ‰áš×\Md"„c]ÖxX®Â½5 å5 -æ…xÁ¦A6$Ô‘8›‹&:Y¿ãwÑ€c•Ç<æœ*ìütÖâtÅ)ŒpŠlòÌ´jF9 aÑx Ë'Ë9À¨£É ƒ‚d3;@8´j?cNÀ6ÇÎ[Hj½¨|Ž *$‡ÛšÆá¸ lû8'Ö‹¹:rÞY}?“#'sÓã`ŒÆiœµ/ãz-öœD5H¹œðÉ)È&OŽƒ×äËÙ8Á0‹9|ÆÚSÕAõÒ9@÷9¢Õ(7:5ù Çt”†:`J ÿ\ªƒò¬S—Øx4ÜF-v‚ÄÚ·³9¹v,. ]€;z]öæ;éNö«@¸ªHuÒ˜5µâTj(¥jß»SMYä9¦2‰Ì¢Mc>õætB¨ªv—aØ š•¿BJY_¨ñTËíÐÝú«”ž¼òÝ -¤v ["þD ™H{‡-¡¸ãæTúGÇÕy‘§Ì¥‰!ØÖG\*ŽøÇ³«ušÈ%¡á´¦ÂxŠC©° ‰ï“KEŸÆBÂŽC‡³x¸Ïßš#7'ÎVuGûmûžZ’rîNôØC‹ÏêǸ`K\{ÿ®icTm !Rr,ŠÊZq˜€¼{òmQE×NŒ>3ÄÍ•­ FUÎW‡3SÙF 6¿™‘Dí¡¯.D¯Dˆfy*Pi3 Šø¸)ü€QÈWöž5Bçš{*À£Px“ÐUÎ}°«å¥ã~jgé¶?”C;¿HP c½¼\Öf*ƒâü™ ˆ"Öë®™ÂÃûŒYfTöƒÈ“Fò•·Š ¢|Q¶L„ v™@ø]<‰=—ÂàÄl—E=Èò<¸zëwÉÛ=r%}Sߢò$W!ï^ž1ì‚Ø»”éZÞ ˆú +•æ%ÜÝäîÖ3Ô0ËÐ!Zï­5®"°±:!©}ymBŰ ˜F O4ût!I\™peà/{Ó»€ß~’¹Ñãb´iÚ½obí>Ó&/œ+Ààô^–=»+ߨRñ#ldH¯^2Sog¨Ò®^}qá -¸êÔMŒiI5—‡Ì"{Å-Úæ_Æxüx§:-ËChV1QV-òï‘ôNPÔ©ù˜¡æ ÎTÓÚpzYZ™o£‘n2Ä)“vBµ×ÆœRñ”$Tý&kñ´;ÞräÍ$í!NŽmlúÔàT[ú`ª”>AÚE¾¹%·;cĉÀæ÷ýÍ ã-)©¾Rª´à9•ç+p_ã7[±D¬U#¹aUø¹T1ÎUæÒŠŒi:9ÿD(ø%vlai±©ä[“Ôv

T+‚"‚®(X¥D/ÏÒ 0¨u[ èH2ŠÒ¯ h?ù³HŸ 'èú±puA°ø•=Ћ^£Ã¦ÐJf ÷RÜðdn¬`žP+,``(³á -=áŸe>ŠŽ*9{,ÊãÌ G¢¶ô$·Z`jH'ÁÁà\J nˆeèÝ:€Ôkš a—׆BëäÈ|¶Q…:ȃΎx´uYd•ôRã‹p†´óMBêpBæ”?Jçù‘߃#׸ÐOßøÓß;nl®S`Û÷aû#ÅôÙâ´`uy#‰ŒDú†Ôeĉ¡Þ(Þ;ŸD•›²®\ÈøhÏl\IUgܸU\ð6zÑ@0z[ò´l“iºIë5¾<´»SØnaýD­;ko&N¡ÇF2¯h6K;­¿T¾æmf1‰”+BT.]ã| ,Y¤Ùšwà‰kL]­Féƒ;ÕÀÌÂÇ5E™×TŸf=×ÖïšFᇋ@î'÷ëÑ‘¦rWƒoáÞZI_ÈÆ^ÕJn· n.âÔŸXͶºÍ2žá&uسê’t0Н‰2fGmÞŠž.j•p9Fr“¢$­ø‰ÂîÅ‘°¿ Áq)kJeNøjœSµoUX…¦”U›På4^ʰ޳¬æ—GVÊJó!øØûÓØQ@'Æ/ê6ŠråO -+SÛO•›[^X 5Û’«zðSF»ZìOÝ‹jèÇýêíóı°Z.d £ƒeäÄ)ZæOÁJËYÃTU„Æi`#Ô›©«°÷EŸ«0‹åU\*:ñ@vbè -÷c¬¨JË#d±OYîgÈѶ1Fq"˜ ÷ñ.^T3¨a¨ìü!à±À§e,qâQÒNU˜|!-4Æm3ºÐø".ò¨ ãU*¥Ä À§7K»÷ ñPceô£[18R<ý€ -]™Ï -yêô³ ƒìï¢ÞRT -=—õ¡„ïć(U'ó4Ξ /ƒÂªfV¹Ù6¾û?íq„Oà„|ÿ`¡çÏDüd -ˆÓ3ä_’}ç[ ˆbcé©ñˆÚBlðG@q„…Ú¸Z€‘`*,~@¡œÄŽª¬È ƒÝŠ.Jfe÷ãÅXÇ-'ùîÁ…™ï¯âà^ÛÐàgMV/ÇÆç¤ÕCfPºXø=,¯qw⃹þYUÀïïk‹‘ÇÿÅË-+Ä-Kµ¦“¥²ÌØ®Óé9yÿÅö®Ö'–̬C”ËTv¥úö.¹­´Kù®¹úÀdÈw´Ð.ô`+̨ìF8´h!wX„Û·<”Õ·´–ŠÄâ…øc‹¡Ô³TNW6¥B÷ÃRòq"3¦aëŒ Hù=aÌR̾âÜ"º2ö,áM&±à«j.Î#븸%Æwß–D:± gB6iYüLO}ìž1mÓÍX‹Ï&äòãC e3H¤Õl:§ÔHÒ¸7¨œUe°‘îPgdÝA§› !@4v°¤&X¢¥ÔTŽÁÛùú¿k*pâÁº‚|ãm+Ù¤Ê!:¤± -þ"L¯,g]²Õ YWBDœºgè_­šN-+Eiž²R1^*‘‘JÃÊE 6up\z?R˜j)¿Ç€S®£… -ÁÔ£œ¤Ÿü­qËv®×$i·æè}SBÑ8´p=éi *},ÎÏZ¨¯÷ŒUºÓ©째%SÔæ`Õ&óø“ÊÊÖÉÉR2°þÄý_ð\þdpõò?E}|£ÆöTYlJú%öìƒCÚ%2Ýà›`›Âü)õ"mÛG7|ž$¨£˜k,Ô`üJRh%û®Tôµ‡¥[ pŽç[:,ûœÜ³g.4ÿÓÉ·s¬5<œ=br«è ¾%UÓ£šc¾ÊcÅò9lñaMc»i1UY69 ¶‰+S‚Ëäå{­(”qqòú[.þÔ¯óÓlœ„¹ §@1|6¡xñÍz¸åPßò¤Î4¼+Ø(HTa騷ãÍÒ²°˜ÑjÇ$減zá𴣨-ư—ƒ¾ ô…¸éLðý7îÐ/ôžQÉ.VóòŠoú -ƒ!2øPþÖêûr«P#Š …j§@)Èuñ­wj’%pEĸœZM„øP­]_Ù¿C”å,O4ZjZµ‚Á/ÈãªjŠSyÐ;ˆˆ±Fdœ k­ -ÕF¢Žc^U¥|®hQ+ yqÉ&ø, ééâ°G‚ ŸƒšÀ¨…¸øÂq7:¨+fjJ™ÜNm8¾†œê°/¹(3ú°§%bÃøB«“ßV½j-¨TXÚáI/dXîYÈñ¬M €² }™> »:;I‹ÿ¡!ôIÙmð*µ^Ã…’RŠŸœW/ Ä·iƒÈ²yf] 6î0ç…Wy%2÷-p ËþOE\ ^vªD«%šl.iT°d´n°gÁemÊ-†8ä<«uA’ÛCA˜¢hÏ*fH2é„l]Ã¥C­&ê‚þ,K‹aKñ- ,4S3·c‚壂 Ö¾€Å:•°‹Õ¤Q$äE;âlhZ¨^ -­¥dYÐÁº‚@’—‘²WoûeÿÍ`ÎXÇ^¯¾kÙÊ(¿´|s”>^É-í_W^ÀÝú7Ľ"\uYíö?!ZçJ|·+Íœ -éë«dWn'd]»XP‚ÇŽMX­°<~þO7ÌØ—:Žó$£°ÆE©%uÙ‚,‡ŽM"›0œX?nýŸº^åéQG¨Æ:#†“/o¤¿FJ|3ž|Û… è”ÃÔfÎ8ÓU^ý0„7ŸÁ«èž2^Ño«Mù¼G÷Æåjš޹ÉW& bZØ¥›p!ˆ‚ _Ñê ùc‹+ÙñÌYhU/Ì|Wµ_ÅÛåX{¤¶*S ºâ×h9È.Æ›çànVr»¬;Qƒ²dý •b˪g£ÍN&Öu…%DzkÀº6#ø6÷êÈ(!ÝUîTûïÊUOûÇÃ3°[ýûÊ\C­B¿¬ÖŽiª-¬bè­µL¬GÉU¿n^•(¦ÊÔKdž=It*·IUÔ=Å1ܬ¢BÇæž. T O½› A„S_<€¹48e/[8gJí` ÉKñYct@¼^­ Ó Â¦lõYàÀ.Ë„k¶´qŸs„úh}Љ¸nü¦î1†cͪ -P­t†wOnvå -à&åŒÍRÖw!081fâœL3ž);`|äÓVjvbÀ¢QÇ¢ƒÜ&¨ _"Œ]aÒHÃô¤‡WC£õCYÄþÔ‰ûâ¯L` )Óøh®Ù:Ìiœ\I 0ö$Æg9J$²j%Œ/‹¥+c¿(+ ãGê4 ãà1HÆ8‡ MãÊ!¡]ý€æk-I”Òx!G 9ô¤qïÐxSE¯Pu)k47÷óæŒãõû–+6­g|VγYüãé† p¬‚‚%£d¬¨TZhXjY1&þȲ¥IùcÀudÔIÆ«dnˆ8s -;:­‡¯©°s -¿h3Bö´è²ºd‡—K8c» ƒ…Ç(CzSo¶ÿ¢.™„<©/¨ºZ¸nQ˜Ka%ñÑÓpÄ)­šRÊ¿k“0¾ƒœfEL,al.Lü[ÿ™@Mv¬Ö’á@5Õ2 ­Â%ÄwŠ5®ÑàìênjªF`å$Ò]تݪϟÅX"wÆ%qÀ”æN7µÝʲehön°iúÚš¢'s+*ÿú“Õí_•NcIÅIqòð“b^TùÌkãwm s'AË«p#ȉ9fŽšK¦¦q21+µ,›ú=ȤLÆÕP“2(‘•Ž[šàRõ% ñËM{DÊ1¯!yÅÇìÖ#erþuîØ¢þš‚~Û¿Z£Q¤ïQ%—¨LŸjÑàpœK(šËäi… WÄü*o Ò~Rãåß1ȃVíû4Ø$c¡çØ_Kç/QõÉ¢£Ö–¹« ÔÓ´®UßÇ ¢FÃ3V†`Œ'QåøIMl¬Å%‡¥V®Ÿg™Á985Ç“ípˆ#D›º6LÉ6/“ªs ”ä¬j+‰Ä¬›Ï¹*W°åÝS%~ *o¥­üUí« ÁPc#]¦ó £R/êbø°_ƒKhd²ˆo˜\*ô'žíÁpÞÙ‚â–À ±…­‡ª2#¦¤¢Eø«hÛK (ë%ýFf”º?gÿe©×µR£¨èѨò@§ð3û/«§ŸäÌU¥Iè úþG¤þ$ªàg48#ž*ä®®Nú¦vbÊ”_á{NežcïkÂß´}\:sÊxŽ”„ÂMD p¦÷±TT¨¦3cq¬|§Ú×r¬fÞ†ý[A­j™çfàhA /…æLŠ …«Bý͔ɼn‘ç×S/;Ñœ±kîÊNÜôÎ"¦9ùÆrð6E+Ò{ è4¾}ØŸ—D¸0ûœŽyšÎÌ¢1ããÒÐõÝ÷s¯Ôû2xvÏ€ÇM2*•ÆÎøUÊ&S†žHh»Q˜§èG'úá¼/ à¹è‡\ÌdKØP°†AäúO«N·˜¶Y®ÇG¿á)Õh0Qù÷ÊŽÁ©*r5èôD^%‘ñ”ætÖ©:‹/ßÊGd‡`ÄÅÿ¶ÏúC…q[†Àœn>æšW3 ü2­ï6l[ĤpBÀÄ2æˆÂ•|”ƒg'æB–üö£FÈG·DbXeÜì¹Ûm½‘ÃV¼ð³lžÊoÍ’ä¯ø.Šr¸:$cx˨˜ÆO¡«_jóóªHbùô‹›Õ)òŽCô$تKe£Wy¾"ãb}ªˆwˆ^à\¶9ø}¥4в:ÇmÏG#$i[oÂ4Sœk´ÇuiÇúcÅ:µRqá‹Ábk÷I”S2 ¥±©V­z×ëƒFÇ/YÄ&Û ¥CùU¯_”1ZîÕ9QÁ’¸\è-4󶬠ÍJ™!œÌèófTJg´÷A‰€£+Ê^ÿï©é£5^ç¿õ‰ÜD‚ b•˜¨ áð$=Vš¯Ze¥±­Ì!â-c; eì××›™‰,Žƒ§T>1ÿÄûÌ{§UfØ„2±fÎO¸ËÑÛÜlå?.~ÍÐ>}0~¤y¼Àb;TµJZrŽK®ãu-cïŠ`ç&¤=Ö0ôŒ¸T’)~]5¦¬fþ**$Þû£™?Õæ©(¥±Âþhü8v÷ËØCßr%2\²ŸQ&»ÛGÑ3 &Õþ[ѵ0LhùDχeþ¦(V\1mb*nýÁ…Hzbð#û _3#á×>tï-ïõ"'<›™z[w(Éq¸X‹Ð)4 Ƙ•R\ç$Bb½.“ò -?]v ×S)ǕŸ§ùZÌÔÊ,O+ƒÇH]Uº/ΗŒeæ#ã’F(ªþèôޝå'À4êy?Ã7Pµ7Fó-,>òŽ«›àg2…º¡éþ+qÝÆ Sv‘EÑÇWr•P¯°B åΦ½xAµ–)oËÀ¼µQ‚ ~ÃX )ÿ„ýáŠò…!À•Êxò6Űþ€WÖëŸ&Kgšó,½ö£Ý¢'4‹Å ”Jÿ©‹<ÚÈŸÿÏÀÊ÷'Ûþ¨S>y•²#ŒÈ=#¾mü&,ðâŠ~†”ŸÒ@ù‘Ÿ„ ŒÝpâÝÈÐÃæJ¹ì£rRņØnCW§¢_Tˆp€3Wñ‚ýÿ„PqÂÌ|,U0–ÐL} -¥•ùÿI¬(N‚€%lÍmdA¢.ÔC„HATÀkç›[Ä7\àdb€1µÙTR¸NH/‹—íc>n\c2O ”Q›YiÄcùÊbÒ ´ô8—êEˆlláR– ž¤˜We'® _G™®êãÏv(Ã×Öê!•&`Ó ¼Éh_`:®ñU#OÆæÂ>Ù-Ž|*”v.Úù:âñ/¢´Ê,î E³R}š0Ï©¦Áï€h£ì9´Öø~ßk”jà4]A b¬Š½ ”ü5®áœs"tE€@:×&(Ûm½­Ïl¨³°d®[>á%ö—˜KŠÌ=ÔE†ãqTÑe¯Xd.Kž^>1P© kÈâ®\fóýc ßy† ‘Ýh^&¤Ç•Y}üáPÜ÷/±ÔSu™Ÿªlî{ ]¢?“G]…FÝ™·øî×>ٞЬÿÿnñ\/Øó;§¨qƒ½é+µa ú5pîôNÀõÒ<ÈÝÖ'Žž)Ìl˜Á427TÂfX|},›ñ=|ÞvÎ5ÅðȬÚV–þ29¥ôà"*‘%UÆ ½y'Ž~>MçÈ -¢kÜê¬]‘GI«2' /âÑŠçÖÐf4”ÆRa -Ž––ì9÷mí¡íR»›aНÍ'\:pD(Qú“`Ó£㹜M4ãPºŠu´Ž¢Cœô£¸¨Ò·’¦¥¤zw·óx(+²ú¿R©(°‘(:ÇêS Üû<’b}ZA]L™›SRv”tXuxäo?2ò¿Ú»<âÉ ¯<­[Û?XÆ #‚dÓ—!aôhztoíb+îÖû£¿ë{Mþ¤ïÿ‹|¤|a¨??T”!«Ȥbˆª£/õ -©¡XÛ<©M½þélc1+±ü´ŸØåû„©>F¬t°ßª¾Â5±½´7z£9ª£±Œu"È{ùÕ·‘&äÝ"÷ƒ]ÿ~49]ì4Å™“ý¤×½ÐKÐý_åt®ÕꜥÓK¬H`à?òå ›à¤‹à87جɬ¨Š6QµÊµ¥µàC-ùhñgÁ.bŽÀQ¤mVÕ‚@µ.2K€ã¶kxDݘC@ þ?4#Q8´lå«y J’Ñ;5$…ÖÕ…ë¶÷ºñòCvÌ%Ú§o7Ó–ñ¯ ¢Fhià¯TúuŽŸáˆ98Ë;6 ÍúBíBœv®o«4·+:,ÞÙ?6éô5-ÖU—ér”М`„¼úÔg‰íƒtwYßµ¥!¦B‹"^#ž)<ƒC®£s Hëy7wP×ÿæ7ÍuwŸ3@Õð»)æDæ©´bA•>Ì|bSÕ ùÆKY ‰ZÒKÀ›˜t¢_BK†rŒn¨Á~²d‰\¤£_ÒóùXÃX.{Fê? -W˜>ãëåµäûZ8¹Éû=8r_ßžG…^‹6ÒS· -ñM/-–ÝJDë‘)‡^ïƒ*]$ÔÚYöX¹ŸÿPöAø“Ô·W|[×6õ¢¬ê%ŠÜ[8$¾åòWW+aÿÔò~í(TÖ+¸ RS÷Y(3—ìA¯‡V^÷S -HÙœ¼ô¶†õ8èr÷CŒDX ‘,:³V¶Œ\û#D´áøõÕ3ø´äqF†Y¥ ’aÀ† Ÿ“›Q¼0©( Ú>|ôµvƒk3ÿâ"Ð -åÍ|S`¨Ê—î¹Ak&Я=ÙdãÀn:_dgÝr\sEÃ`«Ð7÷²Ò+¸nOZ×ùÚ- ‹ýˆÐá÷£tlñ<5ÊbE¨w_ÂqY}  š>г -4µ{J†ÈÀT´g°3ÓÄAÓS±Ò¹,À$ÿÒŒ‹ýYsOTѪ¼31«ôV3ÄJŠ~ýï@¦/×n®cÿ¶Mi‰lV–¥0× …¬’½r¬¶^È‘•ÌÍ:l?+•j÷Ù¦X±myöÉí’ó<à-‘ ¾Õ\Ð< ·î–'/§"åBl9-ǴЈ˜ËIæ -êëÊíÆÊy/bû=1Lžž§N´z«‹¹ÃžtYpÖƒÁ¬ÍZ {ø@O|êYOäcaó>¨f¸ -'õ°ZošÈ„{Ï®~•Ö×K7Öøåõ‚b©9û¦þy†²ùÉâð”x–Ít–ùLJ&UQ9Q¾€ÆW×å{-^¿ÔÙ–ý€8÷à. ÆøwÈ9´“w¥°&‚\FÐM š¨QÖP½‘Í$HÝÛ:€&˜àŽ(·í'î‘­¿ÌN–XTÅ@Ðú«zíœFbüÍ!›|a²„Y(~í~èîAþC§hFkjÍê5)ðôdéF_eŸ¿•a-KÔ`Ї9öò‘rt“g»‘4¨cì‡ÚßÈ B×( ¢f^£Ÿ/ßã'î¬ú1:\ò¢úhßCªò¸§'—Ë„ˆèœá?baáÙŸt™bïù)ÐëÂüFÿ<‘þØïé‡z‚SÉÜ µRëx²þ(ð¡î£¬‡O íçb7(þþÔnzS¶”ðgèv‚ÒÕ¸¸¿šïŸ²¶f°Yþ£Õ‡oE8ê -èí•-«½nö.ðs½£'‹\øSZ.€µrËÊøe¸$ahä–À‘Iઢ†-! -h®–àÁП#^"´8àþ¦—MÜ– ³ù~ -yÉ( !µDWÖ¥^‚e hzÆuÕŠ~3cá&2ÇÇ3ðÊ€ØQÏ%’ñÉ\G!{3RÏô³¨ïØÈß—KŸ\m@æÔÁ¨Kb5ŠÏ>cŒžªÍ†zª›NÆP§Ôu?ƒÏõü£ÑÑPYš¾Ý;àÝu1CA}}ô¨½ +I1Á_ˆ Ì},}ãR1{€6ƒÐ^‹â^õíý;ĸNÔ‘KÔD:ˆâ4f zÄ:¢ûÅ(â—}«Fé~2(QNž•lš-Äκ®6ùªfÐ ƒ›ÉÞ²Å$sŒÔXGw¸Î…|¸:›éèó‹Ã%–6h+qYyú0h©„òaÍŠ;UÇݺîXB‚Žù⢨½ˆ—*Pøuç®´ÒÝÁËKz;)™êÏêïÛ¶I ‘Š*É‚™ü‘b\?•™¨p¡k$J´:‚È¿*ß‘#´RíÙOkß\²}&*{,ãö#¬íŽAéÕiäÜÎícÁäÄ­d%±É•ŠçÛ’„R bß–T3jžÄú÷%ã|BŸ“éPvËÔÚ{Zmќ뮓öe{-’ ÓlHlV¬1è†ý\0Ôfý`E™ÝRˆ˜äÛS.Ó »‡É‰ÏŸ®ú¨:wZRɦªo)*-¿ØgFÔè='2Dïê?ÄN]€õtÉ¿¥«¨Š@FW_è"·Ï5±s)°¹hÎ\§º\O­\j\•Èõù¸ÞKzq‘'®Ëáz‰IÃg®É}K€)„ðªƒo·¾ÔXè 8mýž­‡¦ Íø2ö'€•PØüòú€úпHv›aÁgäƒüæyËõ-po­:D—…ãÁlͰ?Ѩ>ô,ëÃÈà¢[^Úòî.;‚Œ ÆÜD’Ö‘®ä#ÞzM\Ž¼Û­­ýÕo°æÌÌœc̹«uÚ)'7/AóqH½p²šåå— ì÷dX˳O¥W¾ySXE -G+?ò»hÚ ‘Ɉ(N@̬ÇlrÐ[`j !¹%‹v«+©Èé­_óF£1tÖPã¹T\KÝò)<£{‰CèÆ‰Õ•úm¥¬j)ñ¥¼y1(zEµ=T‘ÍyF‘ÿDDM„¾D“È>"Ú"B ‘czýA””ÛKA*ðR£ÝPSPiØ.%xZÞ¥3ªïõü +öãL7~>•ÔQA)e =‡)Þ½€u)A”°ô÷Dngá) j ã14‚†…ã$ƒ•û Hæ…ÔXò)R;d}¯" µï3ë%ʼüÆ>:ô÷÷ÉÌ¡@¥Éä -è¡ØËG4§©-д°EcñØ^;&Y+ƒX„—Xï”FY åÔ±gäØáMtþÒû<õ¾/OpBú¿ÔÚ’Â:|£ú5`Ò„aÂ57 §]€Tsbý/ûwAJ³ʋ¿“¹ôØ•Rù¬±@•ßë<,[\¯öÝ^ÚpåQh¬=^Rî¿—óanã¶pBåX{ÐßôŠžºÀEÀ¡áQ§µIÙ–uÇk6ÂÆK¼‡B±{Ê+ìÈ|Ÿ/‹14e?›í†¬q£gch6óóAÑÎMë lR‡·“fL”Ì)·A½´µôn ³r„¦gÁ×jÆÛÚéúê Ý ÃŽ7F5å~C”s_W–¸þ_2LUÿ7Ü’Ôi£¨¯õt@ÓÉâÓ@Í ¨‡”Ðoôs³r€Äó±<˜?9§¸ù®©9ŽÉüFsJµ|LåJù)NN7fU9ý§B®ÑÇŸ %ÅñиÅÙ{ª©óvP·h>ôì—½ìÝ]ý‚Üƪ‚ò-0zéZ± ¶/ê^ñOÐR´)€UBÒÊ´†]eh^6Ú‘r}Bmó³8ù÷ -áp?:éÔ;‰‘«ø`¹úI$&²µ:O¹Y=í‰VèÔ*@òjVbiÿ1‚@¬ÜL8ã²À$Šëß~¬YóLY+ ÿÆW®@ÀŠ*Ñ¢; g7—ëϬ ±ÖõÛ8/eEÕ+UŠÞ)¥/jüÈXýÚz•àÇÀ„ˆA -«)kàÇá”ukuhTYâgÃ7£Fhdm ƒ•°ÂÁ¡±9ŠaÑ ç1£óÚˆDØRíŸüDÇoÜggÝ«ÎF_øÝËrm…¡Ídèç‡W/=*Ö‹—PÀú£üÉÃLÈ‚]ếŠôð ˆÄžÂ-^Æ~ýí7}bá]@&@à]P››Ÿæv¯îÝÌIÂã'«¼¡^qö»EEjq鬢m®€ŒÅª®ÞžRdœxÉ«õ†êµlóÑo‚ %&í³²Ê…,cUˆD±Ørø;üRVëSõ’¼ímM}·y8ÕXeÂK%&½†?6’Q˜ ʹ€Íµ“™Ëw†*@“)\—ÓàB©¶¤LË«da,®4QCþëp>|VnÌì¡Чù ìpLÞAa¡d´¥Ç¨zØ2 ~“S® šYw!ta ˆdyTXo¡ürbxg½C)š€‚žNB ÈUêɃ`‡n«ÈñØh݆Ãï´†ìe)ž¡¸î”4ÓñDlL‡ m&s«eתݬW~•¦ÁÌ•’1²Ô%Ûa0ïÀóÃ1P2 i9-ûp *°D‚J鱑yc¡n \ƒUò¢,µ—V-Z¬"­'®öYbó´–Eû×)‹8 O`¨81(QGC@®`®‰RB<ªšd^¯F»ù;éØƒJü3rAH³Nœì c&—«ˆïVÑÇdz{Sl«Bï¸[¹0ðg3É~vXõ…0W}ïö•Ç-dÿIµ®‘…Jt°°Æ<øæð´mYdÛvfÛ·÷ýk¯×KÖBrÓP3`ð91á’ìtõ/ë È[Ä)%Io⃢@Hæ]ç¯'º8ŠAÿµÞäiú¨•æ’DúpQ5ok‰1Q<[S?ËOlƒõÚO< Çü~¯½ãëÔñünª&äöy£ìê7Ä%ݘ\æ½åßÏ€Nú$2ü¤ö‰¯¯êãœï]ÒXíœtxwVH¾™ÎãvpÇGv¯oÎôšðÏœõîªüÅ vÃT”í@i—bm ô7ñõ¦‹›$Û ÖôAÊ58 ¬±¶yK -Î^þÏâèc³ðFtÄ»e‡ý!A¿›OýN„½o°õ$Åà39–&ËÌ.MŽ­å¶Œ×M!K©€s¦¤–qÛ¼£ÓPù”ž ãà¦m¬¡ÇHïÏ•é¶xœ—¯Þˆ¸s×¥åHN=¦éZ€ÙsT¬Ø­Á«;w¸;Ï? fËè~Æ7þK8šÔfã{KY6yís ¿ Žbs#› ,$û ˜…vay¹Z_p®\DU(˜ -l¦'RB¦9š"Ý|ò"×ÿ GÓÿ'¦J4/?ÉPIû‚’t/"MwïÂEß×mɾÿõà0\Y›µZí§`ZìÄ© … =ú¤N%‚Á —g~1NÚç«.SW ´‰Ø%L~¦ÃÜÙØSðÝã,ö³¦õB¶eŒÏ8ŽBÞ-—Ò;<ìd²€MB½á 5s$ü:Bü°6}µrcFg·ÅóÓüüÑÑ2ü|ªúé&UP €ÀBÇÑ}@3<_yŒ”2%™R ¢gîY¨ƒ±H2@ô*ꌎj'¶ºH©B'F—©2D¬s‰q.íTiê¢ÉĨ6~3Ÿ aËåãº_RE£T•CUUÁ¤2¯ð,ÃScñ„ËÚf[ÔX³162ºE?/CóEÙq¬%5• CA2‹MIU½^â*Љ<õÉã‘Æe¾Æô‹Ä÷Dæb;Äá' -6‡¦ê•ÂÈȈT¨a¼Ï” œÞWôÒÇ„~Á‡ºÇ0gÂg3žÏD q I8Õ04J`½d%"ü&“a„ê7“a&LM­^sU”:hÃß7ܾoâ•\OÊM„ЊñVÓì ª˜ ZE]§Úíƪ·‰ø‰ñHm‘Yˆ TÉ9ë Ç,Q6ÝfÙBH<ª*'Nu`•¤js,Ê¡FgݰuJÈÕÇÚUf±ª†R”«e -&!Sò‹NT³àŽ81 õyÚ…¿%”ß?Œ‹³ïŸ3Èß™xÚì11Ÿ˜Íª"l65jˆñHˆ!ˆDcCÐÝ2á32¡¢[곑úÌ• ù#ȃœ¢ä|§´¢y , -ššV4A14 a¬^ÕûOL%QŽ™â<6±OÕætÂ4BñÚžô";uÿÙõ™cù1y½˜Ä¾XL<ì-›"™†G3ÖÐ#ýp8Ž'T‡dúðUÑè­ìã’Æ•¸ž><¯Óh#øpt—bð^ðá¨èætò9¯r}t^2cÝ)Jlºµ<ÑˉKÄ¿Ç1ßüšÃacfû¼Æ·"¥1ýÊßÔ6bTÅÈ625³¢óX(dø²&³7c¦N¤b"ŸÆÌ”©ØBkBKúк<´Z-9…Ö…øqÉ<Ó@T’P„’P0”J «PåJ§&&1Š@U ®Y-¸ÈàšK‚ë"vŒøÛb¼IG«ÄêňWÔÐtDEÑVÞQUS1%'eCfÕ‹$ê«Õ?“9q´˜gE­’‘ùDu^\Ûûìļ¢-!b±~±£˜â¿ÿݦ~Ý󋸢?‘êFÞU ®UOÆžC9^Œ0LèmK% -,;e‰:”B5MŠ`Þl½`:°UN|X ©0¤RCÅÊÒLNˆÉBHR!J(I Á3^}'šËŽü$)²xû7ážD‡ Lj)U‡~ܳ„Æžç«1iU# ©u’`ÑHrHÕx ºuA¸^’”ƒ£âx.y[§ÃÊ8×ç‚;Ï _™òfa\^vþõÆùî¡Ðø‹TÔèðñ•’j’•ú&ú “kTL~¦E -&72n#…È •EÔáTT+¢ :ªE"ÄtP!«|Í$ÍÉšTЬ Ñæ‹{²²#5vr©Z#d­N¡ŒŠN+”Œ¾ÆÙM• -2(EÒD4šò¬J*Ã!.KRNÎð2”2Yv*$ *C”Ó^›£\çÎ< «¨ˆ3?a, 94¯ù, O:9¡:G$bèþT8³Ø¨aŸÙxhaºÖ­øïü*Ù$ú6©-£u4Žq-,¥ße¿rÑìb—gãE´pÍ¥ÜÚƒßÊAvÑÚšÒ^Q¦œ­¯e™u6<ª’¢Þ¤”¸b=÷‘__úþ5 -•Mû¢ÔCeTåkB(Ì!!‰x‘+ áuãWÌDNîýõz…v;V<>D QðŸ©ÛØAdê+”Ýùšù‹jŠ¢DMT„u¥˜Ó ýµ¯ ‘ºÞhÚ§((»xÈc{%ÁµÊ½9Äõk"œ³3·cÄŠZÇP´ÇµŽ×:F§Ý¹ u$b/7,ªæÒ§Î‘´Þ 2-ÿgñ+pfâÝù! -§M©D»ƒDBÍÖÎT×Öæ)j”–êjG¸hY‰±¨…M3*ñŒ«}óÉÛN?%”+Êq·†âÁδâ3RA4áAš­8rïìgï4½èÕi %ÐøÒi”™±ÈøW:¾TK3y„TùÈ^¤ìO’=u6Y,!È GsšÊBTcI¤>~¬‘¢…é GQ.Eã¥fnS[=?óäRRVˆŠ8ºUnª‘Óì/¡‰ ¬‘]t3¹F—ìˆF$V‚6u:P‘B…B  -…ÿzÓB"—‰Eæÿc$ÄH‘C §~™ÑJ¢âØEjµÈe¢ ®±Â§­Ðj‘Ä'ZM¦’Ç¡§Á3e -Ÿ¡Ç oa ZÑ*¬ÂêVE#N²]·Ë´«¤FQš.Ö‹…†† 0‚Ea1ΰ„’•rÓð†UD‚C„ õ᥅1gÂð ´@(E •Íž0²jðălâ,xÁ®Ò „%á<ó…Ó g‘• m5ªaÊÚ-P¨åJÇB ɼ5_e¨ëÒ’µú WØK\ -û.¹„0Å2BA,ćÿŽð3®’À‘áÈÃM·w\BœâŽÇ+P"µ -³&TÚšh¡mY^h[ -ih£žàÖ„—¤ª!dSwxùPÃÇ;NV…ó<)&œ9œs“Á”¹›@{ ¢p @Ža ÑÃÃ'ÔfA -&«B”eÛf¢|Ì·V½¶OÝž¢‰‰ ¿8µ˜-H›‰‘ÆbóÎ1ŽÊ½ )ÏÎzUŒX6Ã;–÷ûg ÅÅBâµbž[â‰x.«Â²±ä5A¨—ÅãžcbÚÚ‡›2“*ùk8éçã Ï‘ü´ÉxüÏŒïŽj>qòl&X*)’™?© ¹eÕ4þ–æóÝBòŠ–’|Éü*H\¼}›¸½C¯F^q.²E¢zÍ´ú¸–DAzi¶Dsæ(¦ë\zå ‘ÈÊ©ØÄP´j!21ŠÌbD1%däl‰3ªÞ¨Uø¬¦øië¯$ŽºfãÑLäì , ˜8+|zð3P=‹Äap€ -‹°^©NˆÓlSõ"ó%Æ© -ÐÌÁΦ”6Û@ Dà€0 `Ð(€2 9  Ât6aê$œ® F${ˆPÓq}ž -wE±(ÄÔ‰UÅ“ H<Ÿ9)ìp Q•È<U ËŒUc¬9'¥–¨nCZv"›ÛÝž–„4ËæY©¡nÎhQÕ¥˜ ƒ¹[ÅjÿÅÇ´— yÉ -šÃ`HQñ¥»¸#b± ¡I8œ$}Q“¨aÔf!²X‡%5ªJÅð\iJ¨î‘FvFUpbµpÅÈÂ5S¬Äs•\Sý’¹æm2ÊfÓð[Á«©êø)í–gf©ùìQãJ1mNÂ`eR²‰B®Š!ω욎|ÖÆnþ©'&'™ñ"4$™Öž7ç¡x¢TQÐé­0hÝÃÔƒª|å“2¤LL3Ô×9Öf¤PPf8ü˜h.<ß|æqùóÏ¿‰Éù‘QÍÞÌê÷±ƒ$:ö¡òŒKºú8a>Ǩ4JÙ)O¹Š÷"xާ°JªbÏe™Ç ‘ö!!« ë‹Ç¤¿,þùŒ{ï<>5çOÿh†dŽI2g”ÒM‰ÎèæŠTŒ©uˆBâË3ØÉBL/g· ªzMuެƒ+§Y&¬GÇZõš@$¡YŸ°Q¯8Š)ÙHgu B:Ì15…D–ê²ö³ ð²HNM!óm[Ò©ôNµ$‰Tª¤Ä¥†H‹p–ŠéP£Hq<ƒÊ:V­ýªÚk¢,õád,-ž˜ªP¹LR“4XG7~Õ”O@ýec‹‚»Â®y— -⪗°‹ªAM?”Ñ¢dž®Ñ¢Fä+F4©EiNÌCk'õg%âÍ+»•5 3üÚUÙ½:afÞÔ'‹–SaÏïeÙ<"¢š£F¥™Ç"\¥]„jWgdZˆ*Rå’ê‹jÚõÍH°4=페E›X‡5“øÛ:‹g…eÆmË^$5^7|ì)E²»EjÈ!DûäeLùE\cY—Í‚ºŠtL_ÉÛÐ6®(§ñü»/rÉ´J,ôkQÒ×¢hÆÍH«è(&A®‰º#¼¾ÈK|#bÏR¥! -Vú¡Jeî8E$º"kAM²Œò Y$¦r¹|ËßÑcÄÒ­U3ÁùM‰XL]î’Êk‘ý%†R@ÙP -H„A"–ÌÕÙH–LM% "ÇÆ ñHÌ¢Z^¦°§7‚¨F\‹Èldgƒò;‘w¬]RyÅŒÕMÕüš»5?O?)<•úŽ-ÎéeZáæn\"O½%(›M)ý\'DÃᄘ·éæÖH‹àDŒÆ(ë ”)½Õój­PGmGÛ®Šö”ĵJ‰]ÉÊûöÕ¤Tå¢ëÍÛ„„ñâSü”ëq†ò¢¦\IåòhEå²lÄaU­E -!õWò±‚|ŸqÝUtÅW"Sò‡=³YÂ|¹F;ìÛdBWÄ.šgb×Ì>3‰H£2rÓ4ÌŠu)Séè"5òD—±!Qú=[¥Ø(Â"ù×pŒ ™EQF®W¨à)޲L5‰¦k+/T'‘i• ‰]*7Ò`ƒBƒ‘ÔípˆÔ‘0HrAt¾¹We/Ã%£ƒks/4HŸ’i1¯§¯•¶i]¥ÑEs¸$¢`±Tpû`éûP)RZ†ŠTJ£aEhRL›ãÄŠ’Ð0‰b áˆ4ÄÕªíj«5Õ^mQ¢¶S×àñtÁÓà·.“ÃÛª‚Ûàv,-AÛé%´íúª-…beÅ¿Æd;ˆþ –å{sc=ŠŒžÇº@CB­R"Á´zM I º6zI˜õQþÃÅÄ}¥ïu-à¯ܣЅ‹¥\¹>xk¬Â;…X'ÖO}‚‡ ö«PÑF+J*Ö…WÜÄhû!cÊèt².éYMÍ<áÓ¦…CÉHáë"tv¡j3¡^ê%¹p$–’z•Àᚆ"¡ Eì`Lê32Ó@D6±š:¿a:•m"Á8Z!ê¸Â/aÊ‹)œ‹0CçÐC\…²o¨tT¸ŸBÃ`8 †C‚±¤rûŸn2ŠJŒÃ!PXZ© Â@þÝ28‡úYÖƒïÌÄùdæŸTÑßj×ݦۡ³88 AE%¯@x,âa_œ¿àTJ‰êªåØÀ¾Q­Ó›$ EÀBKYÛÑ"óÊaÓ>‘pæì, øW¢D”„¨pÖ{u œòckhÞ&4ØuŠ'¢ ”Y ñÜ…ÜGpÑd4ñuwD®K‰Üìä¤À#Œù…]…GåãéOŒ¹"Š[ÔzcÀ넬¼B[ñúŒ&F"E†-À7¬›úÔµóR71$+Ýy¡·3ðÒÒ¡ -ç…³i̺Ü9éý‹ô· SPcn`­iìVîõ¨™<®%F9Q×ÂPb?¤o‹:;µ½ -ºrÉóìã/ƒl,‘Æ­{ ñ -#÷éÒ¥²´ó±sJôo»íòD -Pæ¶ŒIäº8˜­¶«©Ù.Úì**ªð¢àð¦ÀƒqdgL†i 4)W|òÄ˳ŸØÁžíˆ£Æ0ü—]`vÇòŠMì^N ˜?Êí$SPö•”È}ÚUb¯”«%-] OqD Ý´MhhhÐUÕýŒß»šç6ÿÖg§6hkîZ <–èÚQÞ ,iKÈ…d‰¢BÁêÒï‹ iñ«<^O“mmqAuØDñX€ÍOš¯ ]Äò »»Cç–Îæ‹P"¶+ÒdõÆ­ÃkJHn;/ýÔÞkÿú©|Ó¸¯ÂkŽÖ£ä­úÈtËlkDt” Õ/KëĸH£¼MLiÑXku¾.â ÓHqéaûCËàÙN¶tÛ’|ù½Ã›eC¶º -c/Aà–Ö[àM" ¨—q­Õ‚fEò€>þÓx£hÄS+Û[ã]ëtô§bâLÉ~£sªúxg¡«"oˆU€†˜t CY6ö† -òõ"Y—¶èk°v a˜š„á¢(C²p VšÄ vväMGéêDÈm×+æCÛ`¡g69%¾˜Ú'¸aë´IÝK4™ˆÓ`Ã(ÈÇ#þJ5îç†×Ã…ïI%æÌúµ?LÙŒ®Š).´ƒ„þ¡C×jüw!5`A››ä MGr(žºF8™RÙXž:AJ×ô÷“UeÇ£»÷&öˆüùß 9~Î`Sævõââ’®,·~âò”ç¨@%tëÔÁ­~"(Ÿ{ü¹Þ@µóë ÜÿÌúп“Çsukài"6Ûæ|IÐ#9Tij»nm™½`/¢lRòRû‡Ùºµvl+œ+9íú(;}G´b‘ÍsC„Æwif Ò"¹yv?½%SŽ–JIÁÒ”õšÕ4@Ü&f‘j•çv^ŒôÕx 1ºf¯³Ì%ú.F“¨0V6otÿsX6¨¨'—Ênr÷,&,†kè-\Ski‹£ŠÄý§)Zn燥¤Wï8†LPæß&/hpö"ÍlÂ2ʯ¬–”üol_<ÇáÇ3¸þº± ’Ô9Эf'´^2/Î7Ñxx3$.ÁëYUòB@HÚÞzo‘© ÷t3ìÒ¤}_ÎÁŠ­oAÆ7-tòŒiî"¯MüX(2Ö¦£.V˜Áîå7zây‰ëEyõFŽp ÒÃèRMxæhmÊ b‹d+Îu Mîô·°÷û„™—«S5¦¬°d©3g¯NÌ*jä<|䩤‹g‰ŠiòTí3ãöO¬ÚI—«=Ì.c×M0,RnÚ×p=Z6ñ…u - ;4Ü7Õ©ŸÈ€1¡(3áî¤]ïÑm­ÉmMb*5Ô´ÏQs0I%k¸ì@ç¥Òqnø EðÖ|ð4ÉÆu[»noäãrÙ ¡µ3jxÎ5ü;Ró ˆ° çöb•T”å)p´Ÿ¸4sЈ(fè›à2>ûÝZl*ü€ýóµð®!³oZ(šÇ>F¼£1d€häàRTÃãî,K£.¤J™3{7”sIJÚî‡ ÖLüœ‚Ra¯|!ý¬I¼´ác‡<3 ›ò¦@žIÌGXIðºDÞ¹Gèð/𪿩ÚO`‡®3Ö³ùQ#ÞÞ3j~,= ÖËŸ?4õa­Ù–×Ã3Vʬ…áÕʧÌç<fî'“:m—•«ÿ. çn¢²qˆ©¸£­èWÑG†&„C,à~8”мÌl¹›fSiÓsì#.êžœˆh¢á“Jòü;k7U>ôÿ]Ýì§Ws;¸am‘ëÌúCS0|$C3õO¨t yC,Ãwñ:mó]%[DMGn‘•Œ ö2Öä-¢"u¸Î6úG3w" H»É>÷$¹/úOMÞ?™¬-ï,¤8ä ÀNyaÅÁV³«]…*ÙŽS^Žž|,!Zº›î_`=% -j&@0„B\&h3&MNŸB­4I˜â®PqVƒ ››5ŠNv#‘¥ÝäȈ2f!‰5Y.›½‡sq„Ü# A³°ñËÏ—¶GCl¯¹ -áPP‹;>îÌ”_¶¨<®iì:Œiÿ í6;é £Ú‚S3Î n€Ày2<ïsQ4ÿEÆr~ -;‡I´ƒù\„øNMÈU‘ ˜l¾Ñd„¨Ý°P‡F_ßM"|à3„¡Íd±ÊKp32Æ]ŠpîfgÅ÷·GPbéȆº>÷ -Roì‡!*œ³˜b>ùvBg¿×tîÎ „Z9w5Þ i‡òÖÈ@@}èKc†½ð“ËôWн^٬ٺàmMZè‰Ç\zLe„{·Ut.ÙòÉBs4âcƒi7l’Ñ[—1¿ŽéD¯qPÍ,ùNüZp®8†Ÿ‚ÌCÎ Q[S1çÚ6p$H»‡"K¦S¡uŸœÔá››8ý@ѯ q•8ä¹ùÌxžC€ïyR~ø€2 ðÓÎSú †7!SFéÆGùwíã( èº5ü¥Ý÷Õôa,/øÇÕ eN£'¤l]ÌýÊz u±¨¡é|(<Ž!‚SÔÒ5o}‡»š˜)3ü~–z(X‚7×1ì7±sŒ1à Š{8·°Í„¯p@G@;rˆ@„•Žbõš¥¸@sšÉ<:v¸Ù©<ä€ÞYŽpÚe Iâø5v+I~ fôËßlvà¡ß¢fF"„VaÎŒH®Á@c߸šãý¾‹+ˆ<󊓱z­V¸O\¤Ð&àBÔÏ£AÕ^øï#ü~£Ùè³M&ˆ­a< ÆmÅoùE½÷_´ …5˜¯K<³<È®’î¢Qgl£Ãp×* ø!@úKvz©(q­bÄ‚GÕxd‹¬öôJÔŸ–m62Æ?\Æ%z&ÞuŠšA=fJ•ÃÎÏüO£¢®î&APƒHP¸ß•4A˜e—®Ç1¸É¾ö”·F6Wë*³LxÑ9šêäð¯[î!­áàwÄ< \7^!œ“¦ž/‹Š¾yžhûØ ’”¶„…#·_:*jn-ÞjɘC¯ÂaFËÍY -Aì ¬ `_šNŸ›Ñ3¯(À¶=áOö@ˆ:WAo½˜Ç Áhcÿm‡i™±),”©>™íßb›ã4W“IÍKU]SÄS_ãÐEŒ4â˜Jñµ´Ûvœ{¿!¾¸lç¾Þ©de’ c †p]i£YÍãø!&b­˜—aÞd]ÜâN–‰ o6 —GFË äkîot]7héU›Þ‰}‘°/… 6w«ÝàäF¥Ð’êŠWý·­Œ¶\QP ž[î%Gê1L†:®âQÂ/Ѷ_:ò)LJ€¤‘ÉÆ0¹•D^X¢O~{çZ 5c]¢Þj6UAؾ#ø,rn1æÆŸ°tæî©dƒºê5‰à O -„e©Ç\‰bÐÈSòëî[ô)‚´£+Ú팖٧ÀwÑr;®ªR'j•c—óˆÂï€EË|:.¦ƒÜ€©Ú $ü§úÝjèP -%›nÖæ- ˆÏA=`¹ÝÓ†¼F/Lì7 -|y˜Š¨Î{DwÛ…)]â¼~W¨•!÷r$4rªeͦ ' ä»Ðiàˆ‡hÈ¿V]ê¥>¶ÖßçÜ7Qæ…Ø¦âFñ¬ã½Ñz¯$•Äéô$U²•¤ø1Æ4¢Õ!l“©–ù"( äéµÍ …_HU[ŽŠÚ $¯¸“Rƒ=æmoŸâC?Ð5‹øôŒK­[áñ޾ð Eý&0‚xÕF±,îHÒ -(Àæl‡“ô•@Ðp†š\¡±óÝ¢•²We4¦ÔŽÐŒâD çqµ_T* ERüäm" ƒÉÍ4R¼ls¤[C!T,yBú†Ýü—"ó–ž°A˜oݯË0¬ÖMZOõÆöß§áÈí²îó#ˆ0wJ ÄʼÆ:]–2ÿ±’bàž[Î\7<qG6©3õA×E±?Öl|¦…ÆX!@ ?<p;­ÙD)², ™ŽcI–ˆ_HºVbÌ@èX´¿r^>è› sÌ%¡ãP Öá=-Á ” wÄ!^•53NñhíG²n½0«M˜Ý~¦W¢ ³z¶x¦¬˜]ÇkHÆ¡$”‚8ÊV†kÜüAâ$4v7YòSb_f3>Lõw wŽŸû,ÆðÉ[nvNŸ¡ËvÊŽ¤Å…3ï¤Q.[o™§3 úž º°L¼+|×’ÄÊc88¢á)Gp’£™9H‰0Vg£ŠÄ|'‰-¦Ó2‘I:þ±];@šy<–Ñ”aÛÌZº·”i¸Š--c­Øû¸Æ<Ëzq¹õŸtwò¨üòzȈc ‡+ÐBª¸ïž‘ƒê˜ - }`@ûŽ`‘Ú37öŸ+w\Î"[ãq—JGHðÍy;¡~ö&e× Êù¨WuÛ³ªÀD ›þ/²ELØ„«Š+k%…ãgÄMœúv+EÌzL¢Ìù ‘tb§ôŸÇ’Kï»6úõÞ¨NöŒ}gUOš×”L’Tø2–’})ÍÂ…MŒ» ðR ~PUu;«8*kpr*î)µoÈ‹p˃i4uXÌGÄâQsn@€!iV 8Ŭ@œ¢ÃêkpÑH¹ošg_’y?Éêƒv ã¤v†æáâ”cK¦úÌÁÍ_’õ'°Wò¹xʯl\`ø„pUA|@é&–vFŠrU_ž6‹:|¦ÛÝÒ'“Æ(f’ÑÓõ‹Ž°FkAŠìÊoõej}rN¹À*Ò ùãÐûàμòngq–™j”Ëãp®c±Ví"Oáï`Só°\!º”ùQ¿‡/FÑ»'ŒÖóê:àí¥°CÐy†ÌÁqv,úU: «f9²UÒ»€Ìv­jí¢»¨>2ÇÈŸguý Ú(Œ6R“Iù˜‹Ãw­ÔXáwÉCýû'é0†á@žGDéË‚Whòdçðy~Ož®69Ïø! âÉX¹/¹ô² -ƒœ¿B<„’s¦Õ¯":<#[bÜ`•QYÉïYÕ"ý ÇÚŸyW--¦õÿT^HÎi] Šõø•ïÃCVÁi\€Ú),³5ê&Å2µwÏŽauŒ÷®Z#<ïîÏRU—YðCĉ\ÕªÂgZ_i­3à&~0%"QÄŒ¸xóñ’ä¨/Kb了ÇêÇ®BFT‡™ge~ŸëP()m*$f²`SÊ6õÒúúøašT4´üyM‚ƒ‘muxv÷cƒüJ¦Iã2‡àò:IÀJÃ2ØÑ‹`ðÿA3(-è‰q¯Àöºó2±¨ã›±ß^® a“N:½ž¹Éôg“¹¾eh¢ Lo'©¢F JÉYöJ%º|uÄÆ9¸^ÃØwWæ’øéÅ·¹(×ö–Þ%ÿŽ÷À(H•‘å#‚”¥ðØ.¾ b%1F\6D ¶RöÝÃ)Áóš:äÙÁE@"Y’Þ0-F54YÒÆæ׃}?àH{æq€ÁºÆã¸°ß×D(jüÄg l·& Ëž¬< qÐ D -Yµøf¢§SÕ NZöS]m&ü®÷g¼I÷ögyçtÿÐ(b# ÷n§œóüØôsÞŽWž7°z¼A8jLj†ô1-Ä“ü”„ËŽøÁ1>jû!ð¨fr)"\š"òCXE¡}ÃØé$KìþÙ~GÐÚ®Cz4/âÏ+c~¿ xxÝÅ‚1ßÌ%„~¡nRðš_X1'iòðêÅ`E™‘ â-¢Ç¨1Ó¶À´åì6¾OM¬4$“á:Öù‹ëß@]¨7RAÜÂTúÊÆ­ÂJf„¿ŠG ;¼[1Íê‰cp´«~5{¦Á]6úy!†µ.X½LaŸ(5KÄ7{H¡Çw(óÈ?%Óow5ü¿8 ¼¾ÝR‹²*:A‡ðtN¦\¿h¯—S¡q¤ °êÄÿÏJèö§'í/+tØãÆ@—»€cÜÍ7ZªÐÝãÖ(’ÃT¡«ÊŠ­~[`¹6ÜR…åCƒÄy± à~9È÷ªÎÆýÿÇû,‡Eª9åN}·´“ G‡‡r9TÚI¨ƒÍ:ృíäYíp}˜;̆˜ëÞÓtÒLx_ȇðÄåözP§©‡½_öÆífaÄ„«ù Ю>@§“ˆ÷/œ°rÅÆð±éÄŠþáÄaåb™0 pAB›¹b£2A þ b»sÇA(dNÌ D´sò$!Nx)Ä’èäØBÄâ øÆÂÙÛ¸s²²Cœ–9aÊT¨›!ȉ‰È‰ÏD ª£ýÅÉq¡¨E¬ -¾¡¾pò¸±K-q¨#ÁóDq’æGð 'A"'>Q´¸•¡ã›t‰Ó»‰ÔEâ"ASs“$%!u›X•I„Ô&KNâ_6ô6…£Ä¥6)£Jl§hÖ\‰Ü*K¯&]·ÄYj}—¸B41Á9Mò—Là'Mî"‹&hò ‰΄LÏD—&‘k‚IœItù ™Ô¶gâ¸^õɉhebU:n2™|D&Ãvâ³cÂLž¸dLŠí‰9Å„lŸ8NñŸX ’/¥ô%Ð…Ä&ôr90a³ø—¼ÅsÀ¿,Š ÜªQŒK>êóÛ%xi - aHx P’Kb)⹠Æ›ÃÀÛ’éåZBÍ)ô¥%ÉqF±›³Ä*’%À£â”X©X€%L¡ŠBTñð_¡ZÈ „] h±bl+;+Rõµ&+©W¼l•`ÕDªä=¯Jnù្T°ÐÛ”YKÉÓÅâJRb€,Î7œ²h$J:è<Õ g!ºUZ@|xòvC âJÌ¥Å_÷$@)->¹“¤[ÊIøQ‹YÜ$°ÊZM“üÃád’µEj‚)æ6\6¾Å„%.p«8.§$ñrñô$i]|¹SÊ•$û²‹/F¹»‹ït"’`â­Gro^„r$÷¯ai$_¨‘Ø<}ü{ð š+Ñ9ñˆ†#݈¤o¡é!‘¯)q„ˆ`S!é{0Þ»Æ ƒ„b=X}alFü ㊠-t#Ô~äVXûh%†øp.žb¨l¹d{¤ø2Æ.=»1€ä‘«ç ádœoG*ÊuÄ5‘ñJGÀI2çÈq“‘)9²Eʈ&Ž”oehÀ2päý2Žx#>÷·îH3>$ñ6ãíá69ãQÙ{¡cPU#º=ã±4âúÏø„Fè+g¤‰hl˜þ5ûÉ<Ò;FVY™°x¤¦Q^Q|±ÀÈŨñå‹È?5x"Vãc.ÒÂ_·ÅjO-‚/×™EV¼F2,òoñ®ˆØPÈŠ¸Š0Uäv²qQ9?PÚsmà—"·iAÿm „"äF`OdTt#ŠþWÍn”j"âO˜ˆr½ñ}ÉôêI¤‘þÆŸ‰‚ÎÇÓ#B?8F(1|Eäq$ED–G”!RUÆ!Bˆ¨;ŽœÈÈñô±29žõ!„*ÇÇÒx9þñŠgŽ_0Î1BzŽvÈmÐ!:$it("‡h‹ß(°­ /¬!4 Žs4¤ýTÇš3„=ÖñN†@ÖuŠ!Û ;2!7ÌŽ0^H»Ú¡ôâ•·#cr{î8w…¸Ã;Ϋ -áÏwDdÿ@‚Z€K d3ŽŠ;ÃSû!^0yü#§j4S+6úZäeY -½ Ùµ™zœ!°ÎÜ -èQl'bò?þ(y–2N‹¥„ ½]IÚ¬A/‡I¢Ö•³D![ÕuLÙ?õÃ'ýh‰Ñ_~<“ÁwÐD·2Þñ£„?ï ÐgïÃ-‘ûÈ2œöA»A$Á>B!«1Qä§éãú vƒh8µï r­y8©uï ”—ÑÞ&¥LJçøðè9«Í¿‡n²½ÇN§Ý#`!÷˜Ár.뉴GÄrØpý5L…A’·ªÝ®XÒ+ñMJ=VGN2~AùPøÓ4å;z¬Õ“çÑ64EpË{gáHÈ™àå‘„H«<Š›‘ÉC ;ä¨ y‘ã!Z—j¥›ý}ÉÃ£È ù*;cËŽŒ¬±ƒ;)DnÂŽf -Ñ(Ûô:*<…ø¸ŽQž„öíòõÌîWÇn›UG¯×Ô!8…,uPL…,ît ª^¦c8 É–ÒñÂ/C:ÜUˆ>ŒåîCG4¿AÇÙÏÑà¥çðm÷W×9R~²âVˆ–Í(AsÌP®V!ß1LJ’ùr<÷B¢×r_ˆ.+‡ÖŽ”#M-äw“CÄ[’£vHäp˨XŠÏ8Ä[ˆÈŽÃ¨-$ -ósk!Â῞G _ÈÉ…’Sœß°¬ã!êC½”*ç×;„ÌÀl>µqˆˆÈ¥zˆ2ƒ?äcãø"™$D¯q´ÊˆÌ[ PE"P@ -bÃ;p{fq8—PI±Ž8@®†cC Gf?±ŶQP¹#8zF"Çmlâ:þ†²ø}cX2ßHdëÞØõ¨7+‘K†Jd«¼á‰dÁO䈻áS¹½n`§È¡ÌI_E¤Î˜ÅŠà•;,’`Üx«EƒAç"ZÞ†½‰Âm<#'‡ÆÈ†¶ñ±Œd¿62AŸžjµt¡š6.l$A´ñ$7’w6ÒY‚Ef‹²ÑbŽ(>6Õ‘Ìb£õŽè6$ö 6úóȳ¯¡€\y *ù‘sºF•‘Ãtm×m$÷©³çaº‹5*…DÀ«±Þ!ÉÏjäUÉ:T£êÉ-SCw‘<ìÉq¨Q $™ý4¨$É_§HJBÚ4®¶$I2ãd’¤/A–67µIN) x;É7I#ñ“\@ä¡ä¸Ñ€RÂ.7LI¤Dã…Jâù+ShìT%y)dÐ!и㕼ûJbI*Ÿ1Û,I#ÐZžvXK¢ßç·$Ü:£“.›3|å%!qÆâ¾äÛ¡Zf3ÚLNÚŒ>ÃdºšÁk1YF3Ð|LfÆ e™ñÅL‡=Ì™(–ÎgÎ$üeP MŽ]¾¥ Ô–±B5 eŸ®I„+#i6QNeo“ŒRÆ‹7ùNfAÐM†Rí%c¬UœÄw*R<2†ÌŠŒº\ šÉÉ`‚ þ£F€GONäÙǨ- ŸD£žœèé?9'qpŒL:Xc¨Z'a3ÆbŒµ/Fd;9Ìbt4T1|ò¡míDcˆí$÷ˆ+6ÄØS^ª)wF¦†p;ÑÙR€ÙNDW­ê„q"k„LÖƒá%h4£“„cª±ÆÄ‘dœEùŽRN}¶gý…ýèd±_pšŒ_„¬QÚ_,/ú^ùBVø½¸d©0,gtòüŒm|D'rëE¡‰ô¢°}ó“9ùŠ…’áV‰·À‹ôËÉ)ï"ˆ˜“=A»èzœ(`˜“ÄÕE:Ñ8]è•EItlt±Á:9Õç‚ØY£“qÍ…èNY.â6‹\L¦­Œ‹šâÂbük'Ÿ¿ÎwBê-Or=Ä=Ì„³'_ M|ò³-(^Ÿ|¡-õøØâ÷Ÿ$¾JÚZ˜m«…A  Ì àQ‹D -д¸[EZ—÷-ìÓOäŸÅˈ’‘³x뉚mGXleqF‰4Y|R£„f§£ ;·>ÊŸ2”±xÞHɰWù\RüÕ¡”õÂâ@•’¶ðdDKIXÔ{)"ÿ -…Æ”Ø}Åõ™r»WXMyᥟÛp -ª,EœŠo¤ˆí¶ t2OùŽ+ü”Ç·SAÑV*ájÅtQIŠVd ­8€T2ÍŠ‘¿ú`<¥rG¬Àc*Ç_EZ§2í*ø0TyækÓ4U,² -q»Êª²m«¢¬¢Š‚“ ®¹N«ŒI·ã*!PET§âÓ«D^*–+I…‘±òé¨`••?EE¢gå_¨à•VŽ@× -«Oq¹­„á)+Ù9E•\Q¾—te0lWX -+œeŠ%L¦˜[+Q.ÅûÊá„Ñý+h2k`áó(nh†ðð)¿¨EüŽ…¨ –ÃE"Årí(È(cyÝ( Õ _"ˆFµÐUXžQÛ•%{D±ƒY‚Ši= …‡³$U(„-ï ÔÜ~1(*!Ëá"¡´Üîüý¢E1?±PZ"õ‰TÅáW§%‚=1SZŽÏÊ–'xvZ ˜aïyJ‹Žv"\´ˆU' EK6tbÆ Ã*Ì 9윈'§¤E<¾œHð‘ç£}œä´Aê´ o9S æÄmÀÉ(:!{j¹–°aÄÏ7»œö€ÓµíjA L-B¡;-‹£70µL”9‘ -a;È %¡ØÔJ¸Z´“„ÉÎo‚±Õ¢X7‘ɯMl×bÅH-Ö„iÔr†š5-gGù6-»Ï÷–f"?‰eµjŽLx¬5&2ä#&€Å:N‹ö_BpÒ’¶—Ø$Z.v + å—`L´M[¢BDËâ-‘BŽ,D²ˆAf¢•`gY•ûE%Jö™ -EËR‚E=”HZÄ~G‰ÛIkm;] @ <Ë{KBf‘’h± I¸–þHx 5É‹鈄{gÔPn–˜ûKæÿˆ¢Ù>ÂÈ›åîWÛ#Ò~ä/7˵íòÍòëWüIGT‚ãp™åA´ËòþU¦Ì,ó½½Y ·<ð,—ÓùŸé-ÖÒˆožû-¾¼’xÄQZ `ª¬ÓÍ„©¥zZbN-rÖ‚(n-r*`ËHA¶àÁhË62¢YÛ¢±KnA­v‹ Q™?3¢‰CgoYÕÿoa5#¢ á‰Äe‰ÑÕ#.óЈn‹’aUäÈV.@l‰éŸ&‘å²\tåûz"ˆ{«hD×ã—Õ}÷ñV.PwëÕˆ–ærPb¹lÉû‰F‚B#ƒw¹1#l?O!4"¢±ˆUÆi¹€:%ɔ䂾d944¹ÃïÉ6êôbº1#j:¢¸¢È£ù -%^Ë\øar‰ÎF,%— Ü¡áV—Ëʘ43#Šòû~¡&¥QsFÄ t"À%é²Y© NÙx2Š½ì…’Ð @o¬ìmO‘\ÞPôºË?¿ßexá^R}"ž!/—šO2/KÚèå;‘d½œ4"hW{y""Ðú^`„ˆ÷ñ%éâkèKƢʾèíÂâ—8†ßú5†H¤¿@iˆ©ÿ’L†x0Àä!z0Êv»–¥MªÝâÙŒÞ -±¡‚ÉÚR§IBf³"!x0"X„!ÿ œ09;ˆÿ -“°A$€a4d–4LèÄ\9̱„ú=Ì=  "Ä\w3bF7û19¸ ˆíIŒµ"Þ&fåAŒbÎ -H¦U¹Œb .µ˜lb¾óÔ0†1檸ÀgLIý!s àƒcư€æîùa^;&oüp¨Ç$|’ù¹jù©È™Ù>À2€·A´>¤¥ÈÜü|¶#3m>œ›dÂÅÓ/ùâ'!{°#€ë !I2ÜÝCŽTF)eq+c:L„,³XiËÈL=ŒÚenÿ¬v×J6þ2Š á0“ÆyØšfß˃"3£6yÐ{t<¤‡4óNñ`³5ó´ð@¥]àAk›™òXÿÍ,xÈÖ¹ 9#öv¨–ÎH«Ôqg’˜V¢<‡/д¡:Ø š¼T‡Á§ÃCHhÞ-°†æ¯Ñ¡ŽÐa}¦G`8fϤänÍæH3£9¡4á—C¥‘V98*¦‰DÊ&Ħ‰’SÖf§A€E¯88Œ@h j¬v¤f€8@¦©a÷¨&âàð˜U4ÄůVãø(|5×|ر†ܶ»ã¬IÂÎÖš»aþÖDœ -Ï5zqƒºÊÛÐÀkîÙùš»jØCR\ؼÕue6PØÈ!<›ÔaÃíØý”M6_]»ÅÖà¼lnàl„c Ϡͻՠè•jhSÚÜ& 8ò5µ±50š›Ûqm>„ieRÑðsÛd sw›„DC¸Ñ&4¸ÄM>€†‡“›{êžóÀ¶¡ÜÇÖqÝÄ·òÛ"ÍàÞ„d†[É›™OEo>[ -G+xÉì— e˜"Ý„7Þö›'IïÿæšÈ@úœ;ÖåáŽ!º‡scøG8IÃ’…o1¤«¬ªáDÀp×{ÎÄ0­GœÙƒÈ®µ0 Cq´$ 9‹£#Æá6B_ã óÅEkBÇré8ðÿÝÇìXÇö…Cލ¹°|äÄÛ U˜9õ‚ÑPN¾¼°Ë„Lá…Ë,gã.Xá儯 k1'7]:s4 ί9Y›ö(°æÔÏð«Õ9Bq²/Ç \@ïs¼…‡ ó¶pèÐI4[H0:zv-h2)y- ¥ÒU ëL'Ï´0ðt²C ÍEiå©“³ðduŽ' *b_Çç»8 HºŽ¬°`Å× X¸v¾{DZó»+¾ìÜË2ÐÎ^ÑÁ¨Ú™Ó -à™í0Ó“å»1MæîdÁ -͘;êóà*€XRÊU°À*¤*@¨Q´rŸ -/Ëœ¥ÂÒܨ0d*D -w¾z -ÉrçŠS`.вe})€ŠV -š.“ƒ¨;éi‘ðå9GݹuÌ"È(À‰¦(¨ -Su'¹PëÝù9(øóγ@éÞ¹ü U»ïìô 4€çTOÀ*ÁöÇaœÄáA\'´”x–sú¼Å.6É›ýx.³ …#yÞ2R®åTŒyô¬ =lP™Ð»óœÑvžÕòÏ–=RB‘žM¸izRÛ¨æV¯õ t¿EÖÈžÏL¸-Ú“Ÿï™ mmÏ©=îYNì\¦½G€LüïA!3!ø^-âƒ¸Òøèé‘ÏÄYùÀ£ ýi>ï°ç³bM°FŸhxÍÁéé³²&ˆ°>)Ñ„öy2UûlÌ„ûÜ'„ñ}`þ ?òeÂÇÏíéaϬ[ù!D˜ëùÁóâÓà˜°†ý„ ®ßÜOi/!þl¸Öòç=KGý!z%,ÞŸ|UÂþ 3%Äô¡Eþ'¥“0zÂàQEQNM€®a› ÅG‚²ЯH »€® >àÿ èÆ~@KÁ†Z÷s—‰E“¨+JsZ vObqç!dábº¬ƒ 6î]+i £F—çeï„ ŽÀŸ²›¶üž°Ìó!M{`SÚ~ëTí-}@«wãg‰Ã÷ÚAìæk’r®’Ì!rŠúR_B¿A_Mè®\ÙÒEEŒÐ»ŽtÜ¡ >»-²¹ì*FÀa{Ö´Õ6âEPH)Õõ™t3—á—ºl¼TWýœ[^„×£ñ„Ï”˜‘üN5¥²œ!: ª× -²•ó"Ìà«BÏhÿË%ñ"`)Å˵¼‹l¤ *%0…Ï‹€Vì‚ -u¡ll«-ãÖ»dO4C8!6Y¾‹ ÝÊðOíî"Hôú~ÈqAh„>&A"µi×\K‹§ÀBÏ1'‡ME(ÑhG*#X­NJá‘ä ‘®îT ZWUHE(®N)c€¼^ažn.Z•Š‹ݲP>Æý^Ý•E5áBݵv­W,0*¤",Sõ $—Ì8R“†cœÀ­Š`_[±%i\õíˆ+@oPˆ@ãVë1ž6dP?"»(ÁBÒ4#²žSóHâ@æ>$5Ù’}ÎC8—¼h°Ï?±+TN¦JÍC(ÂÓ™dLgå "X;µPrä™›-N“®,W'±ra½‚ÃÈW—Ç÷æ!”>Q+¹Uý9CH*â+5üBÁ a³+-Y%ïB ã)«”1áÜiJ0S!d.ºh6ÝUJ­%¦g®5ž[r„”ðãÀY³Ô˜ÉPËA „ǯÚãjccÞ×o‹rš®уAØ+]èt¸Ä`„äÁbLZ]„±1k¼çð²·ßˆLÁ¥à³¿ÉÚ¼›²Œ/)hýu<ÿ¡8­®í!†dãÊ×DA8|M[”VY_¡ Oé6‹F÷@ü -@sÛ®ï×®wOÕŠ„&G~©”éNšŸ -ß ¸è7—ÙVkN0=x¬§cqè&HÌÐ35󬣂½L°ËKb<6Ãó a‚Üÿyç|˜€ã-zqjÎÐr –TDâq§¨FK°<ÏÉÑ:%hxˆcÊ,4= äžË„ø‰$VT ºTäÃ,d3ˆåZ B:_S·ò<‹dP–É-hô¯3HV8qF Îˆ?s¸¾AlD1h…ÁÊ©BÖŠŸ¹Ã0²²Dó¿×û¤Æ -À¹9eȦ+éüGA¼ƒST A‹Mð¨¹LK!Ø(¾û-ßdé ä oúHzEš³Þ!d9$ÁøÈ(€—¹€ öuù‡Ð -¨ÝaïÝ30í+ p˼œ=y‡qû‚ÝÜXËÄy~îÕ0}[Òhš'°¸æà¢jk @vE]b Ê—ªyg] g¤žâ®êa¨©ÉÂV ýH°Û;  §%7 ðhÉ´5z’VÿÕð'm³Ž¢#: K -MVðy7Å5s Fa›ˆ¢fY/Ž‹›^"€ÕÖ¨XÅ…ž~rIÃû:&p‘(Ý@Բà \BWÛ€¡º]‹ `G ±#Dè«R*«5€½ X_ ®£b‡{­øÊŽHI5' øçH7uiÙ7©ÛŸ¼ê¢Ç‡?ÿEA,aµÝf@<ÝÆ´kÀ„ñËàòrrdà)¸Sô°[Γƀ=ñ؈ˆðM´¢§0ð„ó+"¿¹2Xay³oºì|)Y¡+¹BrÈ:4NØà09VêPÿ»ú™q†&|Ç0e °ÕŠŽ&I- @B/ ÌQC€„œœDbPW`ÿPcÎf$[iÒÖ R Õ|9 ³RªNtëWc ËJ±àsäEF I|¶wF–Mßê úaJ)o 70ÑY“XN˱H±,X݈÷Ù `0;›=? ]›@Þ„·)’†%tUuÎd¬ôJ’“Òà̉->gc8½ü$ã(Æ}Pp´²‰$’@ò-^xÉ–Õ̯¦˜‡õµ¨ßj%uw¡ -öMÌßÒ}" µ¹©5ì›=¦Øæ8ÑЈ/*œ;SgSCåA6ƒÀ2&Ö¬ŽÄ€ÀKïëÑ9*7ôð{Ÿ"7MâÌŠ2⨛@H‹¦©Ã=œ}è$jE-¿T0JÜFû#K ¬‚k®,ô²jN@üxøáeŒ8öôâ€Å­$â  ÂчٞDK&i>ŽÄ½j@¶ùÞkþ¥H¨ ­w’çtÎ#f—pÇ·Fí Û‹ÿp+Å(’Дc‰de‡š‰(E–‘n’]Pön=!Ë3°5¸@áäðÿ×@ 9#& ¢½s8­$¤ƒ½Ž`ú­p §Î~ÇI‰¬€Lj ü0ÜÄÜ™C]ØÆ€ 'cETû1t(R$ i¬#;é§ÁÿÅ)Ñ®ÛÆZÛØI³°Õ>O=yêk±¿¿Ð·‚CÀ‰§Yä¿ôa¨Ìd{¥lŀ޲h¼]ùðód™¤0’4z??€\1Ì…@°åG‹Ê’çpN¡¸;ʸ-r÷eœ€ÉÎw:ùÆþ²>¥àƒ„¡tPÂbxú©‚½ThºÄ -AÃ`…Øa?–'ˆ9¶CËJ®_þ.‘.®Íbõ¯Øf¦“M—Îô§'œL/p€Vš&CÿD*ZÈYçß,”‹ù®\w{(ž‘ŸªåÇ¿ñßùÍðIXüËuÔojMO¥í ÿª¼1+:f‚¿ÔLjýÐMó`ß/’æÑ/˜³$ï_¢I–¥Ã Ýoo?n‚îG^ÖÊCPã:b›ÔÔ8¶\ÐÚ¿ù:^Sö‘fÿÆeüãß™*ØOL»ß[ªœSñ¿wýÀÚp€dý’=®(Ù¾Tªßl7hǘ=Íêï_(v=o€[AùÍš¤PPݽ¤zô»û‚c ýÊ1Œ™åîóû’±4€Œâ¤óϹG¨d©±æ~I<«S½.æoɨSº{¶„,?ŒqeY~ëƒ{«Y'”ßWF>«3^Ž ÊÏz¸5××´Á‘Ÿu×ep÷ÄÄÇOð³ø Ê¨[N5þŒ*_-ÔÅ¿ÎκñÒ ²áˆŸàÉðÎQ¯KU¸þÕáªrxŽ„ÿ»²… =;`üxo¸"ÉycðWr‡ûÊïû4™èÍûþ¯€Çr¬&ÚéÕ}2«¨Q‰¼OReúÓ>^ìýDß~áio\·ƒ@ìýÞ€#ôœºý³÷ÑUÅxåBqbïŸ*!Çû5Luv%ÌÙÇûÆ’i.)Ëûû—ªC°Ø¡:WD?mÈ#Ðñ>á@(Ì4ýqX‰”–á©Zu¥\TY‚v04„¶ax`劈.í~²ç¯/ÚýmyÝòô’ ƒÕî÷pyvhÚ}–ÜïÙ<Ê@Þ$}ý¥ÝŸõ;¹D -»nÚýA`ø¾LJwvÒ‹OÐMD‡Îî”°•°Ö³ïe÷9˜ɦ¸ãbл"O‚eÍ·0{Ü/ô6øÖ $³o¿v¬N⃠¬ÕöÙi~}…¸bíË.èJ½íC#ŽôHAU³ß¾|;Ê×ÁÚ‰ì]2îV”Vrzç×Y¯‚¿~™}ûäÓDìú#s­nª†j¾õ§_fsn“ôéóŠxpQôB设´¡ï•˜ËÁöÑ©ú„”qðÍxƪ¥~Gب’P?ÈiCUž£8YxaNŸq›^ꡬ:<Á´¿ô×23xϰ(œ&ýÆõPt_‚펾ë‰Í!:l J¬RýTr°K ýÀÅÆ¾u¯d ôOøŽæÊÂ/úüI—Ž‹ãùl‰©º±ºŽHüœ~ÉÕ-Žö$Š-ëÍ' jXÚ~²æ‡Ä xQ¢¬ùí@Ëœ1×Ìÿ9wJ¡`Þ?Mµ£°*óKøÌ.£{Az—_â8Ä£ŠèfdùÍJ7/7©E* -& Êob$÷Ñ„’lV‚L -aÙ©NáÁ-ÉFþ–#ªª’0²‹(!ÿâiéÍ^c„½ÇoCIgs@q †4–u] ÍŽª]Ÿ±Ân £Ìf„Ì`|¥œžÙõFN]ñišÑ°›Ï´è(Wb¨96r[¶‹ø]€1‘çH•‡oy´›>Š‘nÿHLQ©ð'K¼±Þ)!„ß,nàvóÎäpîš¼4 Ȱq…'›´Ôm‹Ë¶ÑøjS ÌpªÍßÙÅêùæiÕïIfM@äÀOGŸ ûþ˜;ÄŽ¦·2ïuŠrËÞÚö>¥7YÑÌ:‘Þ×mÐá‘&ï1E„¶JÞOø5´Á(2¡òÛý¤òƒ«#Dò< -\÷ex7`Eóâ»t¯rhV«Š -Î}k–¨‹û˜›(krß—Ï,PÜßß#ÀkvþñüHD*K"FéW5½=flá"äV/·¯–â€Uã“(MÛæÙPáÁlŸëŒ”Z‹­ö ‡ãÖÁ#<–è­ë¦ýÊø ;R’N´ç<Ú0XÅÆÎþö&m–ÛP-™²Ìþ€×CTödM1ä'µ, Ê¡&ÿ¡"ûzž„ê¯*Ÿ±oaU¬"‹·‰"ö¬7z¾ó:å aDè h‡\â__ή±ö‹ @[¯ßKŸ~z=›s¤ÌîÂgn×?^¦™:¹>­½·‚ü¢m}¯ Kù÷&÷´þâƒVÁÂÜeý™‡ êá›ëûxÙÿP¸z§3ÖÈDÅÏš^õ àäÜn¯zˆ‚Ä»D&ÈVªgf$ÍЙ¸¯­S³ÜÌeÇ”zþRÌ™aÔSÀOü S´ä+Ô“juÖí¢ÑH==Öð`ÉéÍ6¢‹»T\(M¿¥ä˜ôJÓC¯¸åwÍ¥Ùªãy1ByW¦LpDÝaž¥ à–E#0+†6¼YËrÝÝÃT—ç¬-‚¡µ–ªaœ.óA|‚±<ú¹ ‡ÐMä½f žíjåQëÒeû¿**o|)¸€,Ðò Î&‚í}w_ù"¹s›¼Ü4è¯þßÝ…´ä]øhÒT‡±% ÂßÂ󱑧YÉÆàUIb¤É„'‘#\õNap˜˜Ä yº9Pd8“cU€¼<6I)€üdC)gü›ó>„ðÖK|X±±øHÁ9Þ(VÁl‰oWë”Û¦„Xã‰ý›áÀ߯”zÛw_Åx{Œîéyñ×…Ûän9aï¢)+u-þ›Ùbš³â’l^Ô òÅgö”ɶ3ŠŸæIhâuü’ÀÃ(®Ñìp™òtáðÔ!¾hÎv('‹îéÁüðgÈ…×wëð‰Ï àó&(¡Œ Ùa¡±¨1<‘¯ÜR`ZøÆ ~*Òð4]D´ÒPxµ¼n÷2wUð=¥Wã‹>x°ì€ÂÐ/`\ƒ/·^¬wùÅ8| ái—ÜËèó—1ÛÀ;°/b~®Ù"ðMsÊòj …åûʹ@Àw¹ZÎÿõejY¨? ´¸´ß F¥¥s†ÁïôJFÄ~›ø°hÊ:ÄwéúfíÞc`ýªw¾ÐæãX;™k M½iÅm‡`Ð;_‹èK Ð{„{éW¤Ëvy'] e+sŠNÇû L0X²¬:ZªµðÞËÛïN~=޼©ëîæ^n}X˜T…X!“íþ«¹.ú‚ºì®œø®„ÁÛ±IçºKy³ÔN˜ÝËSw¦dsVˆ¬¬/Bº£`í-[¤ûVaÊùö¥)ŸòuƒMÌ»§T«æNÖ¢Œ –ûKVEDK€º—"w²}ùÌ ˆ‘åeÜ¥±U¶P -­w%âÏqçÇÒyå¿$–ŽÂ§h‰=E¡ªê;l¬{†ÔF k²öö«…¯´À‚G¶Û—z§äöøµŸÝ¶wÕDþÔ•íEi»M'$?ÁªÖ7½Q²ÝÃÓˆnºÀØîê!(cª[ûËRàÎ5µ=qµ •b 0=â -å JuÚ'S.“¢/zJûÞ”- µhWØ€]iÚ|í¤Þ/hG,‘g/:Ñ8¼í¸¤à줓%,ñ]j€f‡\WΤÑàeïAñ} À¡Uö²á%,X}iûC„äÛ…üJ\M'çéìG¯rì(eøcŸ¹)äWŸØkö•LJ«[Z—^ØÃñ߆¢°‹þÅ­°ì€ùöëzLE`ߨÜî -Ž›/»nÚ ½n™D½`ñ—E^ÿU‹ktS6îú$#Lº¾ŒÚÅ#Põ'×WÓŒ.^~sÿ/ý­fJãy0ÌØª­«Ú?ºf©Õºr”“þ@…/»EëtB÷~éáð´é¾EÌz$úXß¾ŒÆ†uF€᯾:D²%ºú™=EtÂ;Nµz$  "auÂö”dl¨«Þ¨=*â[QÌ÷TçïnXs®ŒÐ%ÅÊTtVkO³ÐñÛªš¦¾#Ni|ƒæj1Wê_ч¶R7‚`©óµdÓá4a™±äåñ:Y1uù¯…ÎZÓa2Ì"A]yü‰Š(¨óéYç¶“*VP¾Q5¢6ÔÍßÝç’1ýt@%”1ƒÑ觯¿4°èûéìóš¯)·¡u{m#OYmP7¼O7ÜšE1¨_9ÕlÕùK»”A=ÉJ…ˆzV›|uû6‚½™Ó]½%8¨ÓËÒÖ,ÑCêÒ©Q»nÎ9¨¿öÎH9;—Óú·Œê# -‘\ZTç Þ-J§fõ684-MnäAýžÎ(sÝ$›Ypêø‡÷A[$ïN¥µÙƒ:¢l¼_/½Cr8¨G°ƒí©àA]°C"µš‡¼ùÓ;aœBkT=}E?z=ý¾;™ D€¾ž>Kèƒõtõ7¬›g•ÙéÀO¦42„Óù0r%Õá*Þƒl:%Qgh::¢Ën2òÿ1=Öù+ chÏ7¸‘&£+€½jéŸÀ¨€Y e/²ÒÏ#—¬#J—<éÏåÅ}Ç/;štù †4á“FK_òŠ,’Α–²"Òg:—ÿƒ®Rü£c¥û w"vô—÷ 14ÈVv¿ÝÕÏ=Šã>ÁdtþÊÖ¨EgŽo"ü]ž\i£è)ª=­Xê®VèÖ$w(Ñ5û‡>æq`µÿ¡Ó£¾§|±¡¿Zµãª×æúùÚ«\š&BW ÆWÆðn}{KU:£]4bTôÊ¢§‘U#þóäî«}Êú¹¥!µÌxÒ>Ùç|=âúæMÚÒêù\)‡b;g«mÏ/兜ʡʤçO} †€äù({çåí<÷¸c:Ûé7$hØÎ‡мRü‹1¶Î#`PXîRäÑ9Cû~b¼ÇSs.®¿uUÛýºÈy2lÿSóeƒ8ïf¿ d¿ù7ô¢žg=íæÀL«`3kÛ|;+×½ƒ ›ƒKå﹋”û­ùñ²nÍehÖšJQMÔ.5G¢{´q)+¥“4ï7HÀÍ?a¶ÎoÊ» -hNU|ÓRtÎr$S™e»ðøOßà;Ó_1÷ÆOá¹ý Ä<ª_–Ã@wñsÆN21óÍ.ÚáUs$ ;&î{þŒyhÞ+wNžð51ÿNÊVööëòg̸U³ßؘÄ+c¾™}¦`éíRˆ¹¢ \?IÔõ=é| æZÿ™WXâó·z›l¢Áü5uƒßmuž1˜Ó³7z˜ Ë£s¸‡¹¡­µ<‰¤I,ƒy=ÓòÓ[x6ƒ9Ã"z˜ï<ÀÎëÕܧi4‰áL“Œ‡ùúÊ‚Á~…}˜gØ‘F™á¹¯{˜q¥–ýÃ|fì"3vìg0û‡Kb‰4ƒyÔ'Õ æažëFÔç¢Áœ…ã~Ý®] æ?RŸx©Ċ:IÂpž~ˆ¹™2æäé7«áÜgÌóù“Â7d^€óÓ8ÖRŒyNlÒŒ9~vÄ&GÞ 5!æf…ê(ðÆBÌEx;öV»‘Ìo™>ô!¬˜ Á|ð“ú<Ë„ˆ¡0ôr6v>*+̤™‘"´Â`°¼êªŠE ¼ -X®²šCËM˧yaЗ«¯êšÄq€h–t«•'….ŽNźŽ@V¹(Ùšö8ÿsT.HeäÊâT–TSÞO”»Ù%¶;ÐEÊ“ˆ¢'»µJåVZBºT†J‚äŸ\‹ÿOy¹ÔôMìä—¤W9ÒÞ=ash“7H9]dòºHÏø+‡-9äŸý¦YŒ•Œ¢2ƒfÐSYy’œQ©‰²¡-3|ŽCÁòCXv#×óôAè^Ò¶ÈKy=úžè‹v®cù^W`¹âô°Ør|vnÈûN†õŠ>ì¡Ì 5Sø¿É‚|´ºà”’âÿñʹìM:Ý>îûR¯HXK³n à‰´çÆ%*$@“ÇáæFñ›ªr§Õ„U;Þ6Ýÿ„ôJ:^BaµEEy ûirœ·¨è˜!àxkž¸}~ÓÜÆ)1r¿L@çgÑï3r—Ƨ‚®gWKbÀß*(TÄ©š%˜Œ PÆø˜ Šƻς¸Œüo¢´¶ôâÊ îZUw²]ü¸]×粨hqÖwó‰ƒ1±_qÕzzÝ@lá+NCËŸ© -endstream endobj 21 0 obj <>stream -(_£Á§øä}¨ «hãFñ«eõ -¸Ð_:ÒH Œ=:܈FDX~¤î_‚d‰=nÔg1åžà­@‚P’øÂ:@Ï×wyŽ7â'^È·/ÓLäœöÈÜIO‰¾ÈŽC¯HB<.‹Ôkmºæá…{Ú–ײ”b÷½À ®{xhIË>fý¢†r9|Ëý,e%Ë…ÈÍ WŠÀªFð¬ $Ôco®»]*à $—RHØ¡¯—.åû†?ôÞëfJéÛ½x’Uœj^ì+ÜF÷)m ÛsÃ3…KçôF'm-–¾RÂ+Ãöø6æc›´ÙgAA8ûks òçÁëLoï&$µ< çT«xyO¬Yæ¬3¸˜y ÀD§\ºWÄUeOCL4i]Å/½ø´” N»qÏrÅ¥Á/GRa@Ï»¤ïÜ¢s¸ç‘ñöcà#J2‚Ì <ï s3w¶pªT„-í²à¼B-àuFǺ€SÙb3uR9Â7RŸÅÃ;fMtŸ½·ö íý·l… ÿÞ®Œx±1` ä^"ƒUXŠð]çYÆ7zÖï›h. R¥—ŠJDó»]ØôÊsøÝP’‚sË{ºï ß5ž„î±oú 1J}‡}õšl?¸ƒ¾ñ°¼Ã‚NÉhËå7u&8¾ ˆ…ãº@Wø6–iq|øÞíÏ?:`“èÆ1so´’*ˆc­ñ©½'dÀZ \Ø[ÚSÎHîÕ²&FÌ°ÞØÑÏ=¡HmèÓûAîÈÃ?ž:ŒÞÏþð¶ BTçy“Râ5Yó¼ fÞ‹ Ë4pWåÍ7ß²ßò†SLr-+IC<ÆûC\LÀØë ŠÞ‘t|ãÀ vïO˜®O“ú»«’º…JŽuÕ»q—ѦÍî~F4Íõ:,ãîS¢SY(?Y•ˆ«6ѧ•FÃh÷ÆÈäɉh7V -ò_s”ìžj«F€Ý‘­œ¼f‡[wˉRD\ÝnL¦ÔÜ]ꆗë -?0nª<è€!ƒ•toCÎÖ%XÖ%º/ÑJY7 ®õt¯¸sgR ]¦£ws_}$‰ò IeîÅ£då[î5`bé5ÊMtm•ÎAÑ,’äö¾ÊcóŽ7iS ޼ú­èhïY£lŽ펢z‹ß`¡ý@xú—²´ÕpŽ0bøë‘³¥"Ÿ})tÃÓ>+ÞÙ‡i>”d‹9;7U±‰Sônö;ÐD(Œ[ȩّ„dzzG;x™}1y˜ÙNI:ðô¦jpÚ>Ìž½Iøp_Q_'¥Ë¤^¾š^|Ë– Ÿ9XÐ O‰Ê&`ž”—'û(bªdo$zÈvGÑQp‘ý¢AtÚŠB -²'TÆX•8ÆcÝ™Z׬PèÆFN8ëŒÈŠç‡ÈQƶ™Ñ”ӆعØr9†‰¯Sl×tþÂ~ˆJl$ˆñ¿±RAl$§û([‹Ã¶…Ÿ#‚ûñpÑôè£þÂf®ŽªöRG(OØ“² p:†l ³'¸Të³Ï -¶ø,'<ì?éÎ%öGØ8m‘©K±g›¬Ó¡zîésç[¿¿¾²Éùlyê#¿®Ôr<±Âf?ôµ`LãV^Ö÷ºÐepÂZðï[¯+4G.4šdn7ß¼.PW[llxöžÊÒ]¯ùXGìJ3Pìz†©`H¹V ®-úlºióè:¬`K‘ÎS^®g—¸K#@Ç5ëÊ@ɵp=!&G-©Žæ[i¸È¹µ_¿ŒÈÀS£®ê©­ÛA! IŒÿÅÖÂC^®œ_62¬5d[üÙì´Fé†N‚Sâ ,Z{ .ÊÁ˜@ ÏzÄ?ç€3³V–ê€)6>\¯²¶.>ëCÖßÜÒtW&`µÆ:êÒ6ÍÃiëo® -Ioõ¦±ÞËy¨z\ñÒg‘Sc­Ù)¶µÆ:±Dš4‘TA¬-Ó¤r(B¬# -:ˆ5¡æ¿s@æÁá bM/D4]t&ÆëpƒXÿå™ãÖÎ^ê`3¸Fx°žöƒuÀ2=t'„ƒõ³~>ä£Ð%6>Xç¹ZŒeîš8XoýçsØoåÒp°^Qw’xù«y?¥Ö…`õ~o°"-eþjŒÑ°§×ŽÏYŽbø«— g,Ïë–ºz›#b}²üÕ2b ”Ž1‡Æ›{Ä:*6SÕ,E¬#|AžíßE¬Ý Dƒ¸Æº2„e£.¾Ér”ådà_åÔX_5ÁÁ•±¯±v¤}Ô¸á!ÖfwmÏdÙ{š kA„*êyLÌÕ`½Ç`ÖÀáô -ÖS–§.kjt/T)DëÇ@È£­®Cú±Ÿ|Q«[dY·d3þçÂÌ?µ.X‹•¥û‘ /~µV;nØÃ,³PšêºzeMò‘P™ãéê&œ Ò¹ALy«ÿ¹gPpÛªÕûŒÒ‹³zÂ$Ì;¬ O¬•[G&€¦ýºêZž_ìÔ1­«.‰+–1,›BU›¸Ky×Ñè|ªiCК2~8ðÕR]e‰ã+Yo>¹QM¦…Fµ¦ËÛ¯f@Þª™Šåþ|zê—7¬mÿ ~âãj\ ·o74õ0Tü*ghjŠÐÛ TŸ„©m=u’/%¡ãÚxŸ‹D‘û*¨Çøw¡¸4Ñá‚êLEß°¢C¾xuH‡2K-z™uUG}Q$ݣʲf64ê¥íÅ-F:èM\Ç$Ÿ¡é(X}¸Sò(Ò=7ùe{u/·ä¤ • E©&-12ã.RF¢Ù )†M-¬D¦¤¬ßÂlI!(>o'ÅS‰?ÇéP*åw(ΰÿLéÀ¡*MO‘÷•ºkl ¾[ Zú>L9.ý ×KSÇ„¥þü`:ü,«Ï˜’·´(S¯Y‘ŽéuLÓŠB˜ç5•äú¿B™Þm -…N)Îæé§¡[q|y§j47ÌZâ…8žTÍôòði÷šbßêEJv;”*”|ç?%¤*6z Í#ÔïAÌd[Ì#ê“-“EmòÝ`—ÊZô úà„#µý’.Í“ÚÈ×jæXª•³­0õXè}ü[âù·œ7§Р٧¾;¬VÞcƒ´ …*p¦£èpT¿M(S‰‘WPõ©žªÈÃ/P Æ·ð¬úÂ8w§õ•/Þy _‘ù<÷¯ŠëÕV;$0¦Â óx؆° -ÛæWmúoe2Tõ ÚÔÇÃŽÔ¬¹)bËB'¸B‹Ž|Žc)B«n©± ýhŽ¡k•ÉǶVÈêH‰4Yß¶æ’-À&^€²ÈÑà"•Í,µqŽuŸ!z6^sáOv“ÛÖf“1\vþrô0ž9TY{äªi̲NÎô̪/4µŠÍ†ÂÙä§Î~ʳßoh=?ë¼Yö†´<†Ç÷XwR(;b¼hÿˆN@ZOgMiqSZ]È´dw\‹6¯.ë_׬©S[~ˆé^µ1˜XÍëÕÚþ¬åÆÜR ÚvÏk–`ÓàbTÆ–£ääde;uÞá©“õu¶7ÒX–¶‘K¼¶PëlŠB-aÜ6ªÒ:¸'™®Ü¦L#Óí!†Ø -q·rèŽ=Ý[ã¾ç 6–ey¸„‡ÔÜcŸ·”p©²½Šó†‹)‰ëº¬[\€@0°q)ûb¢±ý±y¼Ñd߉R® üӳ媥Þ)™+fA³m.Ý[ÂìÜÙ.úp@öŸ{ JRˆ.ðév¤»Y¬¦‹`» gÔå‰Äfuá© ¡u?¡Æ@z]õªØI‰¯oÍKÌ´À³›ò¤g`»Ô8†¸;¿Å¶°¹kéÿnÏ~w}úXâ»S*à¥ÕÐÍSx;ÐÉÄ›ÑO‘ãxß¹’Ÿ’×8Õ-ï¯4d›w› éü¼?#eUGo£ê ^ïDެ—Ud\Aìu´k/@»ýðØ¦ƒílä}¯~ׄü[x|Ùɨzûòå@_ãh-/N¬~²”}Í«îËå¾2G.ü-q(ó«µú…°'>þ÷û ý]»é ÿÖy¼ýw <ÖèP«Ù‹ àЊòv€›h_{0&V‹>áü€ã–™(p&Ö‹‹#ªcJðÌFœ„ ökD$"=C¥ñ(æ–<¢•ÆžÁ?Ðy‚¸£.y°e/¼÷Šý7J ïÀ 7‘%¬P -ÿ­0«@ÐNÄ/|öW‹ŸoK_GÃãƒf.‡yMsf»ÃÆ8ND}ú`?ýÄÌ[p(!žcÆxŠ€wº#Ñòtg#&£Ì­­hHþƒIb2\ml‰ñåM,( ¸)·H:˜kÞôUl­¾TŒúíLî?¹Æ=þÊJOâÕìY×à‹¹ºø>žuHÞ§9.0bÜ#Îõ›ã•ìËk†z ñûp—s -ËÆ§•ÐîÆ©ëØíˆc6j©9fq(Ym×1ïžLDýÞñ0B7j1ë{,‡?~CQæ£R€…Bf²ÇÖyç÷´§ã;g—š¿õ‰˜ ×õŽ„5ìpdƒíšù-aî‡g¥{¥ -N©œ¯Ãš¶$ÈålX9w¢U0Uõº„ŒWÙ’ãeBŠC ²±£œ -99>ð³ ³Ü/"ရÍu‰[ñ,ÈÉ¡1šl ir!ìq…¿(¡ÇpØ#猀,¨OYÜ¥lûÄáGòŒ³œÚü˜K°+ qRPËÅû¯Ó«°¡jçǶ}•!®©99^~,Wöcô´°äÇbü×pÔ²‚ɤæ`ñà=]¹†òù¨2*×ñgXéZó8«ÎZ÷¤Ä3“ª×j{5,ÏÇŒŽ^–Çœ9^? —{Œ>ñÉî±°Q2#–È bµ7 -Ž­tDð„Êc9ùF3îxºsÞ2^ÖvéVµ*ˆ&N‡ˆ;xë¹ã!£:1hlÇjíg"ÿKQéÐL²;N(KFÛñeNÈ€†^ÜñÎßOj×; -x1¼ýÀ‘l\_1MªvBÙ–XTO 2䎩ü3]¤çÅOÜñ3¬Rˆ ˜tÏ]3¶-èÜ19vN#ˆŠ2e˜<`êVÊ ™‘Çì„(8²4Œ“ÇØ15ý4˜H“Ç|D**övÁœ’Ç! |‚cL¿ÁDÛãïy¢öÐwxåËWß¿4Û*´«ö +j¶5𼕫þ‡Ï´†Qö_ÊC†*%4ºW5O -Jÿ?îÆ×”ïæÉÿx2GÎi>Y‘h•‘"GÕÿØ3Ä—üǵÅiàìE £=zÀ 7·^Ób¿ÿL[™VÑáR‚AVßݽ²Bkþ~f²‡j£=KÙ‰skxέ¹w³ OúqBR¾ -rY£¹Žl‚|ϯ‰0Rm%AN}Óµ†H51äÏŠê€>Œ,•亾GÛ)S˜yoÀXëu¤iʰí6 -ò4P&¬»Uqë;j72¸G«d1·²×õ8è…´ó˜® òN§ˆR$äUÎH@’5¡ã‘ÿ™ÁÎ;ø› -Ì©„LP§w$N!?6Ø$„1u…|Öv ”Z|+d ¦ÜÌÒÚ0Ùœ„-Í:({LÏ­ei… Ù_ ¿J¤B–z´µZt5~lTȪŠÕè«ø.ä“é¹â”‹i1d” û ‘×µÀHY©gÈw¹«$¡PÊkVpJLC&艞£†¬’¥¨¨!ã'öÀ|œ†<´Ì4¬ÎÁdáJþ¸äÕäÊ/ 9— 7“†ü (d£!3ºà×ø`8Þ Ùµ¦>°Õ2ïÆ!Ð²ì Ø<Z2`L5äƒ"² ´_+²H±¡W˜W®;f dóÈGdÄŸÍ$ 0"3^±%趽rgÿq¸Ý•S ºê—ÈÖ¢à%2)´WrÂmc'‘ù Æ4#ò™Í sVQs?#rŽtèŽ÷‹|„ùn Ö`,òøk-.ýCú=Yt<0•ñ̨Ê1çð¶ÕÈ—yÆ·@­‘ל¥76iÓwœ‘<»¨t\W}—?š£?½)¯‘é%­Xëcp;~Ä#y}=âQòcsQ"Ð’Ë“eŒÉ×ÊžM+ª“s™ÊÓ¦9~rCZ{)x(z™m,fk?xüÉÇu¤L /tQGüHÛR@£Â dÊûàä%;aw¤,X ¯’ ˆ”qáß.xÂ5t¤LÈõɦ»‘2ÞÄÛÀH™ìY!nøqÞ¬ç#å7ŽÔá|’)·BÑ-Ù -2å’i*O°0w¹¯°@Ö~©K[ï­! ž)÷·†h âW°t_ª†g?™2v‘„£bÊ(v/T^ÉMÓ¨ª|gVDUQðʪLm.–+cï˜Ì寲©E0à³Çõs‹#ýg¼¡4 ­wð€K Êš”Û¦1è*öårDzÉ­lZD¢É-ˈS‰h·*J4M Lf3¼¢öDÕ -0ú :Î#€wkËPÝø©[Æà„!„]¬P4ÒÕ·¤ ‘†É'mTjÖ*§4Wû§4‚•ΨbÂÒ òe”±læÒËF¦Ý{™.ßÔ´ùô„DýuâÌé£z§cFç>>Mt|RëáYeãÓ°‹0F Ÿæõâï»ÈÔI!ÕhÞWÔêðÛ–-M¹ ¨Ó ‚ªd¬ºiýfŠ BY@màpâ-¢J–ÔÞØ³ßR.cL uêšîK ŸDí)®t§R$u¥G2Öܶ©¼ìP^•¤F*8TºÕ0åö‘Z7WÓ=‹!ÇH=gËÌí4RS.~•¾¾KRÓB Šåòï7Kj®˜ý<8Ì÷ða¨’·NaµÒl %µm5p°·JjnïÛì‘Ôùß• dÚ×¥jnÑ•¨©^¥®“¨=éçÕ<$ Åñ.¨â*wT­ˆš„¦Q³í¿†­™²iÔ8\5êtFÐi~ÇÚŒ"jVIà›cÚ…µŽx¼‘¸F L¡†•µ‘BA£6[Ó—iÖ©(š’=ʤÂÙ*$FÚ—WH÷5нXÒä¶7ˆ ,o`ÚQ.þ§ ãDÔ~µž¼ ý…¨Gê;¨9€Q–à ÖíìÛ4Ÿê.t] )(¨i€ˆº´¦>Ÿ êÁ£`Ûu¸N§õ5×tq„ÆÏ‚Î $ jÕÉ!ú á–LõÓÃ[? ºúéÌ2¨£Ñ›àCíÆYº%%Ý@gF5äÀ$hª-Ѩ%޶Ø8“fiûñÁ£H&¢>ŽÓCù?ǵD?5Ö¨±½ëÏGÜ“F Ë}–íݼhÔt4Ű£õ@Ãë7R1U¶,uF¥¦æñèñ©tTë+ÀU·]õå¬úàæ€±Z^®Uc«ƒ-áëjsÉÙ@;LQ_½i¿o°ìpX#ê¥Y×.è·µ™WÑ,¢u…#Ÿ®¶ZD¢Œ½õ@¾—Øés]+Û€]ÿí¸,^; euÖk^Ø,9_7‘éØýúÃdéØo¥{°±RíÃ/x±#‚Ôõ®Ødí;ÓØÈ¤ûûÐcïR#;,šÒ£Y$¦\Ù®¯ˆavÍJš$VɧË&e:y×g~{%ŸÏ/´)¡%49Ú:ŠÆ ëSÝzÛÚšsSo–¿÷ñÿû~÷ƼˆHY|Q`)œoh }³âúè}sG•ÈȤào/†M -ßÚc"©îÕFÝuFf×óï\'¨U­Vé - ¸â" -6õžÒŽS¨ž„Aî‚ËaRôJp=’;mÂêU àôpˆE[þ=ÞR¼àßvØÇ¨àÁøÂëÙ³g9T¶à–Èpð-ÕÞæ•p]RÀOFSCpÜsm›†á£€ËV–f`31¾ÞýLÖÅnðqb•IgT"ipäQ -œÝš˦+ðQ›C¸ðÄ5PO„¢Aé+pxje•Žv‡ÙÈ=<Çn¨\\$Msà–5k*„mƒ÷…Œâ`ô8®àÀÅËk$f#Ä9ð_”ÖœjÉ‹§^à†L!—‡Ü*¨Ä$±}¯ØcR…âÞPCK-Ê ž\VLsÍ´6SLºpãt·Sàc÷ÿ£ôæJKËÐܳìoÌ«Óp”oÔ®^tO‚Z87ð‹6†Âª%pó_¤J–´°Óâîb~ÜíVHààùÊŠÀŸ3ÚØ þíêÃâ·JÀÐ4)”Ì)àÏ&n@w„”Ú™c+` -xëùZ÷ƒ:¨Ó¾†dWÍ7 -AI5$ -8£’_r9ñ"ª\aºu -8wPAPàf"¯ÕBÈh‚ - zªì~/‚qNÝß+$•ù‘&~fÛxÜÆ¿»fv`¨üû@E+V T‰°Œü -$1>ÇIµïÚÈhW4wü›m´¾,%QÏÅ¿ÈЮ7áß®œæJ}¿Ñ_öx¿ÅuGˆT󻃗½q¿šßç¶Ä óû!4™ î®ùÍ»oû ò›ÝGä4-¿·ûS¶½ðõ•ßûU+Ê*¿¯†ß¡-cöå÷à¢ÌÊØ€h„Vù½t)œ´o~ƒ,¿1.Â['Ð÷ÍÚÞ9Ù}:'¨ºœ§®E¶æÜî{æ-öÏñb»¢ú°öpß^½)-Ì®¹ïJ#º/æsä¾]:‡eºïB¨ÕÆD0ê{ÿWJÁ†{s˜ŒúnIàÒÅa3õôïù‡ðÃPQßÚ ÈËòmx/ù£¾M š‹¨î{Ùj~'áïZµNþ­§˜†Áòæû#·€;-õ òÇê”›\æÔ¨ÐôFÆ€?hèyÛʸpùE\ÿèbv*ðí_{àL[/»(ÁùŸ]p`Æáà´ÁYÐ3C?ø’ù˜ðå½:L -ßCù¶…Oõ¨ãM†3]R4;+;dx6DßÌ cü#Ž o+ ¶áãÙ4;\ùˆ[¶•âºõü®Ñp›ÊÒjéYt$Nk“87õlmÏ 9 z4ñeæ=&#Pð–&^çGUa,äï†iâZפÞ'>M'p¦Þúݨ™¸aÓÑ-Ÿ¯A $.©ÁÈOq×ÏÄ-78ÀÑ”g™øxþ×N¥Î!c3ñ×ohÏ™¸àóLàqåÌÄ—#†À k¨&n xÖ‘(ÎîR^ðÅ- ˆ»Cïk©šx×Xö¥ -]´‰©ñ~|b÷1L›8WÁmR®fÇ›0Ÿ¡ÏÍ<~‚àûÑ×z[õDN -ædkä#¹ý|$K>K…¥kò£Cþ\Õ7׌ÙUKæ9¨|2ª²òGŠå™«Ò®åS;‰t9¸Î£Ñ—O¼Ãg˜'ð0„Ä;š$h6$f~£G-îá0c%4G©æCF,5›ÏîþΛ“ôH‚·>§Ê9WÑ_çXðœÝÖé¹\]¯õËçPý\•€gÇ: 0úäå‰AŸíkb -ò€†>t8bûOŽèç­èJéo¤Ñ ÚífŽdI—i¤;àQâqÒk™mñ¸·ôö¸Ó×Úš^÷jVÓÊdu9ÝL\-O_ëª&mæ=’ߢ.46‰Rÿ‚OvêeI¦úÖÜÌzôç9eãê{XŠ £~{mà’u«1JZÿrνm½ÒJ®3Þ®»,?;6š‡ÖëãoxéÕÚ{_b—¿–tû Öaigœœ&ÙSôÖ¹eµ­Ø‘zÍám›½|´ãûJ»ÊS{µ¶ÓnÇòø*Û}7n;K -‚ó­À=½ €¸;tÅ:®ûAÉE»DðíúèOáöÜ#ë.l힢þuß}×ï7ôþ¬ö>5¾Èw×Û$cûž%ÒAØï…ê7ĵпÆÔ;8‚JWið7†5 È߇…e8J /¯8­4>9·ŸˆÿoâçeÈõ*>db²cp¡ôž^9îaÐê‚î‹ÂJ}U*ç‘Ýg½qïo‚%_ïÁ p:åq½èû$,ÿûû UV¦ïAœLуŸ/> Šë%%Bü^*¾¢ÆÈŒŸà,OF„ù(–E>ÒºYŸüOK0¬Xþ.Ý›ãJo¥ùH9ìU„φ>Òêð>ú©o¼¦£oX‹CýFÕ7Ì: …³þX»ïõ9”ÁÓc' íWö^AÔœ%îßCÝ(RaÞŸøýüÀ ,øcD<ÂMÚ¿”•EÎ5)ãðÆüI -ƒ@âÞÍûq—vm"£Á~6Y-½Éëp,uÝœÿ?¤<ÖñCÝWƒà"tNz\_±`ÃpnÎÿ-::TæL`~—u>8§7“=ÜþÄ"Ì_GWI™óS·ÐÏm:h!ôó€íc —!ô?Õ×: ý9ÿZû&ô³q(ôÃ'rÿÐÏ]ÇUá9ôã9¢Ø¿eX7ôwênõ¹êÐï:Ó?‹š<ÒU¿Ìõ«–«ýæ[Ë«ºÈïþÚèÀŸRüA˜®(e“ÿ »ù;Ó¤ÿF­¿ôÛoûßÐ' -ðo9M ò¿³KÞÑV͆´ÿÛå?ÊÆøÅä«Áq»ýç!Öͦö‘¨ÿ“Pþÿ÷9Ã&Bo @[Ç+1ˆÜ…·¨Ow„ºÒÀòÖ¸@KׄZ„Ø—¢ÕøoV   +¬ Ä+ÂO ·@d¶Ù%… æ »îÜÔ—*#BF‚]·ã‘bßa™€5uørUàÍwc«€¸OT8 •Òˆ›’ò± J©c½Šñõ °ð3-6 {6DÂGÁ¯¾: "ÊyóS]¦-øõ³ì;K’gx8œmjÊ#`áö€®OÏ]w·aRN áÅ„¡À»{cLÖM a4©˜íâøwÏáÖ -…4^¶N»ÇzÅ#i€ød ðg$fpþ5;ú•ÎÀcmk â¶mŽàš™ß@o 7¸0¾j)œìà - šÿÇä'“pýSM3Æxb×òdUãÇPBÚš=L=ôŒ“,SvÀì9 :¡\IVÖ>GÊF- fROöpbV+{§@Ç\qÄ×Z8ŸDYŽMî"œÙ-cÍð„7 1·f€gç;¾]Œ¦‘%¾(™ƒ½¶+*ÊNA -Éýz>Û¡ŸŒjsÑ -ݳ¹3Ý`Ü€xQ[S­vÒŠõ­­,Rbæ`—D8„Qç'mä°í‰Á -b&ø ,È•í{9&àlR–>&''Ñ€í×Áé¿èÚ¦û{.qÞvÍ|å·ÿ%ªÓÄ‘h‚\ʲ?@"ÚWx…y4´¾æ$ní² -ÄÒr#>·ˆÈµi´”×­™À:& .ï0nŠ«Ò¨ñLW^¸}3×5¤‡ŒCÍeYYVáûžÂ}ôû•‡¦ÔSPA ìê5.,ZLjh[(ïû²X/—7¥úÆÖ±œKšÒºº¥ò3gó´wçT)æïkVZÉÞù­ŒàJjäZÖ¯0¬ëž Ç"?`qàðÿÿ ƒžuV~éïì ƒ?3b:é!’÷½wï½O 8aGpW $Ñ»!o#[#~B”‚ö‹œí’VoaìÐæÉ¿Ž`Äc-äØcðà¶/u6—׸†x˜ƒ œÎ ! ÷ËnÀsµ$ÞL3G¿Üu¹4…q² b\í’Vo91>F6–}›e™?5óóP®ŽžBÔ™ ìwýj™À¶/m¦é“«iß<¢ž=„iÛÖ}A»:çË×”ô¦¬Î;Š|}(“°WѸ¤½¤˜Ò¨˜ÊU/*½O$ß×q´s -!Fú{ªŠ‡Æåªx/•~eòØjA·?„ ØíiÌ»aêÎf˜¼³ÇÐÎÖ ßÝE“…gM¡à³£K¯ äxï|ùn£LÂ;Hrðï,â½ìu¹.k\±,M6ä9Ho(‚ú-1­‹, m¼¿ƒ¨gã€ïºLßZ s·&ûDþÑ^Å>+'ÍÅãs†ò ø} ù:Ž÷® UlgÉଜ˜¬‹2 uín›@:ãµû>ŽžITl+(ñHÓ7Tùg;*ÞPª‹7’ü³—BÅ6ׯ;Ákä7°*ö@”€ç{×s÷þM¡Ý¯ „û3}ouŽøN²ÏÖëù¾¶qÞͳ¨geü“ùc£•P½žI4|ÇØ©u—³yëbw.#ã2ˆqn™O£ß‡„tŽ‹ºí*{1Q•ü¥•H»E›…ö” ÈAh¢ñ#…*‘"zžE=[†O†Ñ3£sÄtß(³°ËŠØr¼cøÔè,\wûR×eüØh<´íœ­„›sóæ¬œçrú Ì¥m;óÇÆÝyÌ«…4síj!MÁþcé×kçz Ý[ÏÛÙEœƒ÷Õð`£UC³öŠr:oP¢ê¹p€Î7†t>F -=ü R@ç -DLëFHg&&ýRiøû@ò}¿¶ZæO¾Aœ«V¿…XRïe$ô/™Þ1}i5ÌÞÙ„ù÷•P½þkâOýþÁ»Ÿs¸÷‡*ïžF¾Ÿ£8ƒ‡Fsyl,'—)­z»^·[:Be$Ïï'Â$ü4q=ËÖ•o¼söh¡}cH÷eüØf Ë¿.Å‚’žÀ¤tþŠ=킌Î" k$P°²üGž‡¿0IôÐvbeôS.*i¬œtƒ–µUDðŒŸ[äŸ õÊè'?'ØNâñK±ôM¨bïÝÿ‰ôû?“L÷uí>Oãž×ßý°Íã˜÷"ÿ¾ãžÍ£¨gׯù—<{~¹ûr _›󷯽Ãu¨t—ŽQî†)¬µ;“qý_BLý“+£÷qô;°ºè£^½NážMçÔªøTm È?›ο¼¡Õ:â;©ÓkHýšuÞ<Žy=b¾ûæPîÓÖÎõ¢ÐAß´*öI£`¿ÀäŸ:QÙí>×[¶Ci׳xXv HFé©&»Òê·ÿPúù¡L¾@…dmU“fÐB²¾š‘Ih Û ÖõžÆ½Ä öRÿR)Øf" ª–~AŠG4égÛÒý@¹_#(çs¼u]H½.Ф߽“˜Šª¶‚«Ü PPå,œóVÅ>ô)¨€D¤×²±YkÕð¤¯b`ÖJ¡`pœ±;ãÂäÍ;â=ŸàÄâ·€dôWj/¡‚}LßÚü‚gsoÄsuQ¦áWP‚’æÂJ;±.ÚF^ï´ªø™T½6“¯oòö9⺓—Æ•d“u$ïh&ë.ØPY+Gçl€Ñl¦Ï­Çä¹ÍM¨bûiµñϾÕ1yi3OxÏ^2 ÷,"ë4*ë­Ÿ3Ï™AŠHßtšø„€Dbñ'’ïû<úu$PÃõaÑN@"²?¹2ú$ÐïŠüû<Žy?gèrð3•"ÚM¦áÛg1ðëìù£Ïÿ$ -¶‘>} õî¢KC»Éñf*E¼2 oŸÆ>›'¼gEÞE˜„÷¥ }ÔIxÿLþyJ=¯Ãh÷aôÔ¸2€h4Ía[Ÿù¶qk -çh$ÑoÏ`¥uî*Añ9@AS½Ðœ‰2»Ï£ŸÇ9Äó;ˆ{_çpïÏð¹õCºOtIø´*v(WE›(3ðÆ9¬³oSo%Po·FÐíÇà­ÕÙ6› 3wV×¾ù0©ëraìÒ¸A—€^¨³Ïö‘äëC—„ÿèS°‹úýD‚ÞÆ+×gþÚj!N?¯ …£Ÿ‚QI# ±è4ûê›pmã•ë6„sDZïSðï<âÕ2~nôÌ_ÝÃØç"ÿ>Ñå`Ð%à!Ý‘3£_äÌæA9™À´fÏŒŽ±K£m å> \kÊÅúÁÉz1Ù§`H"~;P¥ßW:û%$ý” -ËzŠ„¥'ª<ü9‰wý\×6 í-š=‚Ò‚QÚKèÏÒ¡I3¡&öF>šÆ7ûLöÕM©Š]k(wBS™ŠEf]:è.ÿº’*bÍ5d³¦¥”^ ²ûHòu¼4¹Æ G™ -z¦VÄzje -Ѹdî Lh2ÐŽ -ÑøŒp´‰. wñl£LÂ;Qï†É;›aèÌf»îLc¸öyó|!\ϪÕÛº{Ë#‰çmãj<3†/‹¦û5…stN¯æ‰¼ó˜|]hÐmúE½.#¨FÃà¥É2jtM ¿×Ñ7à8¯Ãx×oÀv5  \d ˜ó½û6†qç°îÛÎy¿¸ƒ·VÃÌÍ2|k5M \ýrgsy—CÎ ëð2÷å¼µšsÅÀ´vlÖS/&û‚¿A K¦Ô°7=LPâÑ_½Ð¬Œ`´‘@¿‡6–ŒÌîDÔ[0Bê) í]°œµ‚£…õ©aWBû-,k KL箞4Ó*â§„£côØf"OÂŽuòoñ褜€ìCœ†Nž„›o¾sGQÎX{«•‹Ççì5e•[!ŠêlÁIꜥC“FÀêø›>o!JA›0®îyôë\=@çAH稌E–…öeàMtx M -ÚD–†ÿhÓk/‰"ÚI¡‡?)ôû£>8þ"¿’¨×öQô»o éþŒŸ[½£ˆ$ùgë„ó>ηnG¬÷s¾xöŒ^›—Á{ë7‡uÿ§Ð^ -õv‘: o¦RDÊUñf2ýÞGš‡=Œ}>Fom~±;Ûî,îÕ XPÒŠ˜ÊH¡ßžuûZÞÝŽ½Üu¹8a»šÓ°cÁœ9@„¼ÍB¢îàä}ƒ“Îñæ}G¿ï¤Êø³ddö¬™]‰Q)l+~o8_Sç} ÷ì1Œ]wžl«gúàê¿5½3. ž™,Ø6Çä­Í/s_~ÉûröíÖfázYÌš,3È&×¾Õ8b»š¦ð­†É»e5_ÆÍ¶dÜæ–½ÜÙ2Má=SÈFÏÆÑBœ€~ ÑúF½ìÛç¾¼ue?¶®ãx×m¼r=ÛÖ¹Ù´z›¥»·1}Y;Ï}É»·1€gÜì[ßò0 ‚*•J¿6Rèa% ÷‰ìó6ß:z'q¯.2ì<{~§iTÑHÛLª^;i´Ðþ™üó Go¡Éê\æÄC×0EµÆšq‰cx÷wÄ{þk¢o ¢²;µ6v É?¯#¾³q¾u@’}öÐ%aæß‚ ü=‹}6ФŸ-T hEÚ@“~7Ρ¹k£eöÞ:`\ßu›Cºz'Üç{ÿþ£ íÃèwÛüÙÙ8„ww¥_7iÜEê<¼4í¢KÃ;l÷q ñ‘~èÒÏï4òÑ;Œz=ª£wà#”ÎÚY+PÁ¨³h÷còÒê—:3îKÍ}©»µYº^–«µÙ8[ëÒfeãj­K[]v UÑöqäû;‹x¾H“ðYú¿6î‹ÝÙ¶Æ Gß|çzøÎã€ëºO$_ÂüH¡^Æó3q´ŒŸ­ãx׸Ší¨Ž>èr°Öi´ë:‹yݦpÎ×¾yC·®Ã˜W#‰~*&û)â¯!”ë1xm²Ìß›\S8G]úù­‹ÝÀ«xGÏç€ñ¼Ž8¯÷HöÕH¤àúic€Äc/Ú<ì>}°ÿ@vH¿O¤Iø+m"ÍBÏTŠx?µ6v((é,0é'$ë¥Òïíãøçq¾vÞ¦pÎÇè±Ñ2zmHòÏFà¡ñ;­*~!JAûçÐ'u‚í(^jE$PäŸã½ûë7ß9¯³hç{ù¾Žøîç„í>cÞ¢ü³‰4 ¿O£ßÏùÞÙ7Þ:ƒH×uñ<é©~È2ðÎùæõļã½ë7†tè’ð;µ.ú/$½“ë¢ßIÌû5rÞ&îÛÊýo]·ç1ïþ‘ì³wóþNbÞŸÑ“£_âÐæ93:'l÷…(mG¾_”iø‘>Ážçq¯ŽÑc›eþÔhšÂ89q¯îaìó>Ž~ß'²Ïë$æõG¿º‡±Ïç€ï|Ž8¯æaÜóC›‚ÞÉuÑxUìC™„='œWׯÕ:Šxþ'’ïQþÙD™ƒêâm#“V@"²/™‚íŸÉ?Ÿ“x×{"õ|Òé·?½2þ¨Ž~éTì‰8 ûÑçá'â$ìE „=ÊÄcÝ …e­àdáØ£B8ú&Ôð/ê,ô@”Éóû¡B,z«ß›H“ðm -~"ÍBoäiø•BÁvÓiâoBÛG^ùgû<úùF<ƒhçwó¾å g"E´›JoŸEÀŸƒˆçyõ|Ñf¡Ô ¶6 íH¿ïó˜wmzm'ÕDÛ@ªØ.Â$¼ûl1ßýÓh YÚC“…6æàã½ë5„r}gÏ¢üûEwåŸó½ë8ß:[HÓÏ üF›…¶‘§á üB™ö§¡ä鵋* o È¿Ï£¨'„ùãègßÒÙsväßý„ÊhyÞ3|mÆ~a»ç¼³ú÷o¾s>ËVo³m¶¨Òï uò} K?ôyh3‘~ÍšPÃß(´Ðׯõ˜=5:ÓïG™PüJ4ö¥ÔïÇY¬£cþØä>5™F®÷8úÕDš…¾Èsðã(ÞÑY·nÍ \]3(WÏì½õA9_3×oïúLŸ\…³å,Ü=ÓÂyšÀ6/˜ÖaöÌh;´ÙÆ0ÎÓÂÕ.h´Ö¥[ogßè K@?Ã׿sñ|Ðd ™üòfË0wh2ø®ûDòýžÆ=_C8WÛÚÕ5ƒut"žÒÔIÔë;‹zýgòÏÿLþuÄ;/ãçFÓÊÕC˜¿éÜM"%¼Ÿ\ï,(»“*ã7€ªøZ}QæáÇñÞuœ/^4 -öR*&ë§WÅŸ$zh3†¿Òç÷&º4üL§áOÕ"“¾šÙˆô L@~©b›H“ðM~ŸÇ>/„XÄ9hë(ÞõñžŸüûFž†Ÿiñ~zUüP­Œv‘&áÿyü:â;›§qÏ eþÙA–€¾çQï= -Ú9ß¼>£çqëlE½OÓ7×cîÚj›@:ïÃèw+zí(Œö” ÉÏ ¤ý”Êh'yzí¤Ïï픪h/‘qÚG …6ˆDŠ5±{äiø*ýlš¿¸N3èÖ}ù~’ç×>ò<üG^ÿ#ÙgÛÊù ÉÀåªh'Áh(]´"ÿ~ a\]3ç"ýîpÞ§áƒó6rvbŸ}Äih'u‚m›Á¹ŸeûÜ:[†Á;“m¾n¶Î¢ÝÏÎÙ2Ïpa·¹c>’{§ÏËü±Ñ6ß8ÿÙ÷qÄv5N¯Þ¼ë8ˆv^¨óï]úùžÆ=¦ë1gó‹Ý-¿Üu¹7†tÇq¯®9„£eÙèìZ]ƹca/tg\:¶ù%+÷VÓ¶ù™?·S§FgÝnn¶íæÆä©Í2mõ‹çò.‡|ÖÐ!WsaìÐh®åÆÇ0€eÛ¾6GœW…ú:·z¦ÏÍãÒÝ@•ÿÆîÃÌÕ/vÝç[÷}ý>Îá]ÇñÞõA¹¿æûC–…~èrð'…~?Òç¡}¶«m çjœ0“x׃,}Q¦áoB 'ÖÅoUñ?±.~'Öðêõ8‡xßF°îÚXÁ]$PÂ)ôÐ^:û­á 5ü™FÃwÔ‡Æï¤šhiÚO¯âûiµñ;±2z%Q°$9ø ýþdŸƒˆçq¾u?Ç›÷{÷ìȾ;ˆòÏîIüû=Š|Ÿè’ðÚTíí§ÖD›(3ðî ûÝ7†t>o­¦ ”«yùz"ž·)œó8_;¯£ˆçwõl0ž-£×æeðÜjïÝ'²$¼¡T黎v‚·Õ -Ê;êƒâ­ä‰hmÚA“ÿðAÞJžˆw• I»A IO¤Iø…2í Ì¾?ÓGÏìÁÕ>Ž{6äß½“˜÷yõþÍ mcHç‘: »P«AG/DIØmçºLàÚ,ã§Ö…$»A’w  œ}CHgû@æÝA•ö 8îÃØ™ÑY7{ûrgsoÄqŸP®~±³¹.iÜ1—´-Ù‹Ý-ׯÕ6‡rŸ¦°Íß|å¾Ì^…ëeÙ8¯}É»·5`·þƒÙ×k -ã|ö­o]Ø|™‹]æ²&“Áìu¹6b9G‘ŽŽT“g ×j˜¼4nîÞfÛ¾–we2µy+ãÇ6×ÒÕ/u]® ·Œ×abÜ‹uÈÆy-Ì^W†Ùër³ržûrçµ0}÷6ÛFk9† 8 Y6OvƒH×J {Ì\Û‡™;£qéîŸGÀÿé÷iüâ:Ï"__ýÞ>âÀ_HWÛÖuqŸOòôÞP¿Ré÷÷4îyšÂ·:ûÖ·Y¸{‹ƒˆGûDò}"MÃŽd öÓsÝØìXÿ’©×îqäû8á9Ï£¨÷…2m(WEûI•ñ+zm%Q°Íèçm -íêC:/´éwO™ü B8ÞC–wbŸÝ“ø÷uÄvw [ Sç6ó4îyÆ=O#×eôÞh›Â9$ùg+‘ÞG›^[Gñî×¶}Ä=_„Ix#qv‡*mÃ¼ÚæPî×Òù˜:5úÎl~yëÊ1wkrŒ c§&ë€õ<#à-9x=þÝ7yw!^·è2ÐŒ Ü]w›DÅݦ‰wÓ(bwgϦé›ë5u]Ï­×øÍõ"IÃË…åïš¡i#uÞ5‚rÿHóÐ6´eüàæ¿¹¾ƒ˜w9ÞGž„·Pdà éwqÚL¦ßûH´ÐªüûÙ¸.7ëvsqÀu]Èrð/‚»F–†f<Š|çî¾ñÆÙ2m4ÌÝMÃô™m³p^~¡û[™Á¶ÙåL&ãc6pßaÃË^·,;÷˲v5GLW÷PîõÉ:/ˆV»¤i;ð± ¸ïö‚§VÖ3©Wgãì-ߊeåºÚ—¸.—£¹´qDzs^󗯵Y„“máh/œì’¶%ã.|ñNÆ!ûÖ·2js Ÿ÷…îo³oŒs5„q¬ÿ:¸¨ÉdÙ¹.¿èÝ[={æ6Y˜ š–Ì¥­lŒÛeb.lõXÖí&˶}²ìYŸ_äÌfœoã½û;‰x¶ ßZÍó¸Wuz=‘¥aO¢ßÿyôFš‡vQg¡Òì8‡wýÅMûRw—ÑxÝh KÀþcÉ÷{&÷jE>ÚÔ°7±"þ¤QûǑï÷4æÝ8ߺž³kߌ\ZUû²Kw溬Í[™@6ZGÏßÞÑ<{Þç‘ÏÞAÌ»uÄu]½6Oó÷fQþÙE•‡Ÿ“Ð^*ýÞC—„ÿÆðîׯ}›B:_#8×m -é¼Ïf"ýÞT&&í¢ÊC›ðÍÛ Îý"ÏA¿ƒ¨÷aðÒfðœMt9h/}†o&Pp×h³ÐVúüÞI`»RÏÆ9¬³wõì›ïœŸéƒ«güàê¢ÍîêíI -vƒ"oœo-Ø6»Àõ²3^ônî ¡uëe\‹Aß0á‹o1hàw˜YYÌß™v&ÌÆ…ÙSÛfãþOëÀÍ´a1lc6‰q\0ür‡V£Ç¦Í¾Ýd¼màd4ð2¯ ¼ÕãŠeñºb.r³ï6p &ð1¯¯,žMÓ·¦•!lãʶqg Ûf™C¶­ËWË×^ÀÀ}˜—¶±.jeb.hòX6ÍwȺÑdY7šÌemÛÓ6ð¾8½AƒÍ†Ú&‡KK« -‹ÉÚÚ…*&®*¦*&,&.*&ª·š‰ŠÉJ‹‰K«Šé¦º²Ú¢’b¢b¢bú69b5SXï`M ®íB›œ 5SS‚(›œ<¶==4­ƒ»©¬+ª,­-ª,­-&«¬¬­;/¦ª=42¦µº/›ùªK«k+‹ªª -‹ŠÎŠêJ+KK‹Ëª -+‹ëjêŠK‹«Šn+k+‹ëjë -K«J‹jËjÊj«ŠÊŠËJ‹kŠjKë -KkkkK‹Ã–Ö–VWÖ•—…-.*«­-..*«­©-®­©«­©-ºª«««-¬- ZVYY]Wt¬¬®¶´º¬¦¨®èÚ´¬¬¦®°¬²®°°¸®¨dUYVYWXX´²¦²®°®°¬°ºè°¶°®¦¶¶ª°°¨¶¶è®Ô¸´èú–—¬.®«,.¬®ª­­ª+«,®¬«-*,®­,.«¬,®)«¬+®)«¬«+©­­-¬¬+®®),¬¬+¬¬­¬¬¬¬«+­+..«)­¬.¬-­,­­)­,®,ª-­¬+ZYWZ[YU[Y]YU\S[XS[Y\\S\YWWWY\YZVVVZ\Y[WWVY]X]XUS[ZYW[\YZZYZYYSYYW[Y[SXYTTWSZXYWWY]WYWY[XUYTYYXS]X]XW]S\[X\SYZX]]SZZ[][Z›|jFÊÐ ïÀâŒI\ÈBÎø·¢â r”8Çá0<†¿p.Ãg¸ ¿á8¼†ÃðÃax–»ðþÂkx ‡á0†ÇðNÃu8gZzz„ûb ƒ ½&nÈâ¡}ñ()œ -·à Ê%ÐŽðSCl!kœã‚Üxb˜¦Ræ"õ°€4ðI–wTÆ’}L˜€* -ÙäDrŠiè¦G MoŽ4{ÀØD챊Y裆æaœ‰8X7Å;R5Ã9>hŠo n*ê•$²è)" -\$”*¶b•ØÞ²ÄCR¹ò+cd1 @[7N€,Ã8CÒ–P/œþ(¼\žIàe[ 8Ózaâ@|ˆçð^Ãmx Çá7<‡Áq'!&~€ÈoÀäÄá´ x‚9¯ËB@Š T xcâ!&dâ°j ˜C Sð al¬ KäÐðKJ¿&I*ÿbx^.!_ÁBÿ@ЬùâJZ'£LÏE šˆ;Bh‚uŒðTÔA*Z9q4rã§"lg'bÒLC/.ao`öÐi¨‡§X‡«&)gwèðkc3Ÿ¦pý˜H‡ã‚„4VàwdY|B‚ ÉŸúaâP4Hœ †ˆey¸ÐK/â?¼ˆq¤(NCpð‚ØÍ%´7ð_¡2jÀhp!ÎĸÿáH\ˆ/q!œ iÿax4DzðСQI:& –€NH\.aˆdçWHê¥ Ìä°d;{€ý™¤sóûÃ'¢ÔOE§¢Ž°–¡£Iø>Kfh~s˜,"-îPÊ’î¶GÍvZÐJ’.Ö’¥Î!¥-S5–.3VQqGͰTMĨžB'‡à×-0Eë5î±Éeѧ%‡®-'ÂÄÆ;ÄÔÆG´ƒ -H™  2?29À‹B"QüDLâùùɤÔõ §Š*m˜A¶˜).©â ¥H¡©  öl}27Šiä{úˆò””IŸg -*m8ª¨aÉÒý,€JÛ(hÀL¯œa!D?‡Žfñ’ª*É£TråAò¡ éß%I|ä*÷éçÁOD ¬£ŒA6M7‹ŽšhçH¤È™ “öZtÌÆ(ÈÄnr°ÇM:&€œHdžHDÎ7.@YÞejã-êq0?Æv³„Ùc+ÌÆS:ìP¦)‚J'bÐÏðËÏ×)r†S®ÌŸAʪbKÅ€H Ç|HÅ–\@Še)Ð*6¦1¶h‰Ùkfðç )nƒE¢Ðn[˜”É¡”i²À¢Æ9BŠÛ$>b•+u ¬ÈP ð0¬¬mƸ’æY"Š›¨+»ÓÖØ¼MØX5¶àÃb^ ÿè„É-¹$Ê]¹ÄÊ­ £Še+]MW&q¦Iò6K“àun!Üï`Ý ÿõlù™IÄÒE–3ï È~ã´t ÀR7¶B®€Ù³D·NC%§—€Jvd1‘ù ’šiX$Dæà–€JpX*ÁÁjy$¼$ˆ ¢¤w¦˜Ò¦*ÂɇÉ"’$‰Tž’XB' +¥‹·n‡q±c¼[´Ì¡%¤Ä‘6 -±$%åÝDRÈ)Þ‘Ú©¸ã3ÔȤ§ˆ'oqã%Úí¸FÙ×Êz2H¤§¸é§%‘ï§epçcGNH‘œ‹=4%a¥t ‹±•øø€G~ØtOnøE"EºŠ±P|dþ¦(q›bØOÍÃ%8{Àøôö¡IdF¦!l‹ÌÂ!%0 ‰„À,$Bó{ô2‰XT26ZB -‰”^é#Ë]ÚÚän4|Äóó{Dt”3V3E•µÊ$°3{`9ë´qe-sÇ•3RNæLK—ð!.‰õÿŠ‹C¯Ü­$£[°€åœØðš;œ jñžB -‰LM -‹ÿ¯¬¨· -¨· @1kÇ.¶x@"kº ¢iD˯¤‘ÅÌUÉݧ#ìä&–5ÓV&á—C‚\ -­,2¤ÐÈËA!8.‰ì ô[k xÄFfášß ¬™ŠC&3)“nBQüÔ\2˜ŠË7ŠâIܦ (k $žÀ=ÖPr–„‡ïAñ9DñP“ŪÚpL`ØxP~ÔuSzÔ„VšÔœ2ª¬qö°’Öç„Çw`À*YÔ1 cÈÆ:Æâ0D†+€î}€Z9zÐE¤Ü¥"˜Ð‘¾2¹+]e’ê ãôÀñ–íã~fb¢Ã)aûÉqß)™qÏ)q£i) ¶Ëòƒ[±Ò3WXIëôLòÇÙ($róÑG$çcÆÍ°ÑÌC!!0 ¸jz‰°v"*ÁìlLÂhj©¬É# ÚÞ$4c&÷©äÅO0‘ÒQÉ#bRÉ#‰££Kú2a·˜)‰ò%a¥tC  â& -#Ê[öÈ-oy!7ð¡©•ÊA)7è‘É­ €V.šþPì+ÄŒÎÉ ;ƒ¯³ÎY‚Ñö¤ôæ"a5“›|ø²þnrâ§MQñê¸Ö[°žòՎʾ`…£Ï %µ>s’ÂKDm$ÈÞ -Pd‹Ù §'q¡¦Kô6WTY‹t¢À|r€Ÿt‚€})$Û•¶QS&{£”F¢F"AÃBD=ƒœ~²6¡‹#@¬6llClBNˆuii%»*¢:–A)Êa‹|NSÖ:e\Yû"¡R¿)`„ËçDH=ç„G=WÁ%#@‹­Ù8¸tRzÔ‘D¦Ü›<ª¤5&™b#*iâ1‰\1 uå ´)mDœtk -àNÉÔNù ”/€U†“ââÞ3òâLC«4” qý€Ê(7î3‡± -m %5çŒ)k‘L²Ø”C²Üž"žÀm¦ ÂF «åî4erÇö‘ºéýabóûÃÕs&¨&BÍVÔ*sp_ÞØb¶i¢ -'*»NÈœ‰>D=%ƒ(zº>™C\¥Ó)‘qÿ&#n²Ø]Oî£ $g}>jtÍ”¤øeK^ÿÌdDwCòâ;öHb6º¢ \jê>ÒOè8iHQSC’Ân -qø³m4ÍÍÀ:È ®i ¸õ£C[`w0–ˆï¤!e­†6HGÐ4m¡!v›“½OQQkµ¬;,PBVƒÒâÃ9qa×!‘aÛ)¹ñÛšÌè - ¹ÅE·Ÿ°¨Ñˆ”0S#‚¢k¦¤ÄÍ&$E÷ˆŒn_fmJ -øcW@Ôa|˜µŽlÎ hTÒT:.å±+ ên•t^!ôdì¶ç -*m–D¸•lñ„D¡áÂm ÀùÌ?¶hø±Œâ„Ž\RÅnd‚Å7.¡ò+‰`éV¡ÒULòä»aÙ1—_h¿@BkeäSû„r뀊j™YoïÇ›NˆŒ;.‰ ;mJ ºMÊŒž·Ä†}wDÇ¿;2ãæcâã/Þ rfHäÇ8dÇ­ç¤Ç§cRÃ2µ'{49\âö©¼¨ç-(h7+4|\“ÝC 8Îî–ȸ)hA•+,ÐÊeÛ2£·m©QßQñQûI9BCÆB¹%›X±5}T9ûDÅ2‹ý€–™S„”7ÏE ˜ ’A9Q™Øiº:‰£„Õb‹±h©± ?*9À;R @Œr€—ü±Å–ôq€íEà -­¦@™,*¸[F@¹I«„¶VMzC–Ôþ…•¾P%uÎpe•kÂêË ¸þ;âž3Ãüaã,œÃGx¬YàŽÝ8"&Ðä&­Ý [J¿F·ZW<¹^pÝÒZ\È53¸a -Œ3, bË€eáHèí'£E›_÷-%…·€€Z©"—Ú É@ÛiUñcáØœ·x|Î VLÒA›4Qç §‚qIo8ÀÃÌv¥F-(%I݇€’¹mlD{7fÂT²ÅÆô‘ÅL1vŠçk’¤^‹½A{&'< ™åÄü¯Ä˜m),ꚊŠÚÖcΓ2¤Þ‹"¤¶£â£Ö“¤ßUáÑÙ`ƒîb‘1ÏTXÈ[()fù‰ˆÞÁ€2BÌhO`x´%(lú ßAʺŒÊºnBÂËyÑÕë!ãÌM‹î˜“VoA -«æÄµîJNt´X¶ eE§¥œ¨û“ýªr„'¥ò†-®4×J -J5!!ßÑ”»öÉ}GHvŽÙ'0ƒk¦@™8f8tÔwW|ÔxU~ÔnYrÐlبãžÜèjP -ð º{FGņÇ{’Ãw³¼ ¹ °9 —N‰Œ;›ÂÖ6!Ag¢Zƒ9Qí_PPi RVén‘flCF q‹¬vÉb]¿X“VVeµCXJwùœå+"ú›Ýí”Þ“QîW­r·È ¯ 4@3Ò耨@;3B¢{7)ñó”Ìè -&éaÇU±áÓPƒ¶ ˆ1'Ar‹Êxò¦ dÊe)]È(Uþ$-¶gˆ'qš'¬¬QöØrƒÀB‡ ÀR&Àd¶KÀˆÜ8%‹—<’Åþ3€®Ü8V+sM(€«6‚©Ú®,¡\¯\·ªœÒ¢ ~0(©?«‡eOP‚ñWÍôY60;!¢´VM‰Æ.Ä)X/hñØÁª°v±*­Œ ª§“¼Þ³×ûCaw¯¤ðfULü» tsÜ0ûBà•«y'Ã𩕽Хi-¤I8Ú1d9íw•þ6@ÆLµ¢ÒkÙØ¬¯d\ÖX60;…ØÓyƒ•Öº“׺;¤Ä]ÇãÅYg„C`m>'°Þ †|†€\7lt²Rp;Åv\í´ÝdEOc²Âî&Qáç'%ºo2â§MQñ߬Ðè·1æ^EvFïfiQ@bî`€ˆ™ƒr*!è X^é [2é UP?Ôn×OZÊ…ãçúÁ)•òkí¸ìI©†_&ÍëF3hÑ8‰h=aI)=UÀãJ‘ø©rTÒ J³)a¶6ä„Ù&¥´%Óˆ7SéÐäVhRZCµ.ÚC–·ƒ!Ÿ5· -‰î ð„ˆÚ];8ë%S°}$jø¡H0Ö^NZ¹¬°Ò²÷¼d„W+¢â–3ãîSTÐpÕr)ñ”©xXÎU?,çz -Š~¶$Å—˜¨},‰Ï%ÑÍŒ”¸½¾v"Â×NPÔnL`ØtRrt½(;¾Y5†\eNB¹® nå(&j¯…×2QƒYy¥+DQ)@9·x|Î\>ÿ„Ÿ_ {Š&AMûA\Ñf$¯] KL;ŒI€£G@’V*ýþ¡KÂÏ#λoéºO¤‹fxxö UTk[ -‹ºnI  Û-ö…½¥2¢ia/Ð*‡ðJ÷,*è4lÌf -ИŠ-‚û€[1,!h |¯`5å%`šˆ´pî¹ä“…>¯tpÊ RDÖB„;D*’žAŠÉÞÄŠ8ÅBÒ mzÉ=¿”zhñý8á9o~«}(õ<Ó*¢ -Ñt èuó¼Ï#ß"£s‡XÕ_áÉ)}àƒb'¬6ÿè+—u”‰Çº‰ñ?yPüY?.k -UNç -SPg«‰1uq3LÞÙŒ®ëXiADg2%º'§ V\ö'm¥Òïgjý~§×Ä/C²Æò‘I'0ñØŸB4ÒZ<<åAFg-ôÔ -JJFg UXi±&¬¾‹H¨L…ãr®ÂQIoíøœ!0!åzE9˜¬›Xë KT¹¤°& ñèŸ^’h8IÿÔÚØ˜àº:S©ÀìT)2ë-ž´ŽÏùj'½Åãs¾’qYCZ70Aù—B½]!KÀ[GÑ.+†'-ˆéœàƒä’ibG0¢±A ˧ÔHÿäºhå"“~àctö:bJoÝଜˆüQ#í'Š]9>é+–݉uÑV"ý.‘"þ£ÏÃ("}jx3ðajáÈìR*í¨WÇï´Š@£_ ¢ñ‹zm$PÃ¥a³#OÂ['œ÷‰2m! óVMzêEdQg¡?5ôE›U2*;“½èÓ° QŽ"Þ9ß»ÿBw¶ÍÖÙ\>3y¨s°ÞÒI[Ù°¬“L¿lWËðµÉ2n²a,ãÇ6¿Ø™mcþظ0vjqf\¿¶š'R¯Û|áºLàÚœ×oÂrH¡ ^mªŠ ôû.ÿ. Ÿ\}‚Œ6Q¦ í¹÷F  Fÿæ_ìº3œÚÜ#¹ç»ŒŒr7Tq¥±plÒI¤ßÿų}ýúh¡ ‚Ñ3Xé‹@ {Ïä^ ”é×¥VPö.¢óƒ!¥òU N:*DdÕ‹J5±3©Š«fHú. ¢rWÐYjE¤gJ ÷¥Uq½¥#T¶Ð¤U¾ÐD•ÖªÑI/ŠýÕEŸ`dg€b²gáàœ±b`ö*”=jd?òôbÕЬ' 1•'()³ppÎT+,½ë¢-” hiYöý©“~ÃUAˆ(íÓØgßÚÕ>“}ªÄbŸ‹*ƒEq­+A—@¥PHú*—Ë…egØ>p*¾•DÁZmª•^A‰GÈ¿žÅ¿~äiø°&~%wÄ{>ˆòÏkøG²Ï>-ÄÓù ÌÁúɃâ?Àšè¡@$ÚR) •ŠI[Á‡G›“ðû4ö9µ6v¨WƯ4 -öMªb¿ …$Œ>|ÿ´p'ÜÃØçƒ"í›Áº—¹;Ñ µÐ#ñXcõ ôL­ß?'gÝÌ´Y¸_öRw¦ÍYÄËïÍ1xpÛÁ·©Ôæo޾ùÎyA·:FomÖq¼ëG¢‡~ŠÈ«—CƒõPç`-¤)ø3ùw5#“κ‘Ù·phbÉÈìL¦‰¿ÊÅeýäʘ¶û9a»E¢ï€…Õ_¨’:?`¬ƒ.’ç÷>â4TÂñ~p#´f€ÒÿPöùšÂ9Z§Ñ®;¹.VÉà”³fxÎ JêCã§RÙ¡X¿ä ½óÅ;ªü3k:w‹0 oF<ûHÔÐ{ )­5$íjÕð¤{cŸGýþ)"‹6 mžD¾O„YhC½2þ+•ßé¢ ”É÷k ß|Maœß ãÙB“ݨŠ?‡Gû‰uñiî$êùE¾.¤)؃2{“ê÷^ âñ/@éxhÄùÖQz$ÌðÌ»kãþ Ÿ\-³Wï„ïº7…u6Œí’öµüæŽqÀødà·Ð䔿²!*'zy$õŒhìH `ŸÖ«‡Hë)”4“´—Ú5",n;.Ðf#"þ…#¥êÃâP&! `Ü΢^_Rû*–t†%§ŸBÏ?•bÒ@ªø/Êð­ÕœÖŠeÙ>÷k -jµ£SNRõÖH¦†] ǺËèÌ@æ E‚±¦*À²ŽpD”öŠ5ý2rÚ½†”v®œu K駱h/•†?“)Øöi仃&m'UFÏuƒ³ÖbÁù£>8B¹:ú¥Ð° ÕÊhG±FþHv-½‚k Í?š‡RoNJ]B×Q (i?L¹^OVåY “ÓžÅÃSnÀ“²ô8à»®£ˆçméêo]/Ò$$êôKª`¯µC“ÎËZSPr:sÙ •ÁЬz1#ª÷…§ýkâç¶–ŒsÈ–…c—ƒuÑ]#Ãw0ò¡Nàa²÷(ö ÈÀÛÒï†ÏQúuŸRo$í"MÁ{G¼¡‡çÿ"z{ ýX3.½#àNâÞïqä[ÛFœ…=Œ}È’/©4 -£Ý Eäý„ºx7yŠ»Jžˆ¶¨·ÛhG‰`´«ZdÖY7Œwe£Ò[2ú!¥< Ï£ÞÓjbw -…ã}:hÛÊ}—³ºŒÏ`cÙ8¯ÝYÔëP }V ÍÚÀÄÿcéWÇðµÉY8»Ìå¬.ƒ¹SÛæ$æÑ:y²%=$H/x!I{&!n´"&î°'®µ#¥Ÿ+§’ ‚ ü¡ôó3€otÌßWˆS¶ªIS"Ú!Àzv'Öðýé—ó½² ¼¡><ÖU1,ë' À˜¤¡R,ÖT8.çIDe(‰‰Ôð7¹†»Õ L‘RyB‘RšSÚ¬i· dÔCØ!J?±.Ú8^»/³×F×ÂýCº#m,—žAˆJÏŠˆd‰xO‰˜´ŸNoE= ÔІ°$”†€¤T†JÁHׄãdÀ7îŒáÛœÆóN­‹Â’U9C×yÌI룢ê%!­bdÖN"k&Vq­@Ed½@d¿š‘I'ððhIÚ9ˆx>QF²ƒ!q­)Aµdpö BJ½6ˆë=†­ªôûa±«~Œ ˆšÊ…'Wêe7@ªh#}‚½‘æá§ ”«eøÜj&Óow˦ï’Ñù¡^¿\¾ëNªâ;êCãoB ÛA•~6Ì\ZÍoYûòÖ•gþÜ:Päß_ßGž…·ŽøîÃØ™ÍY¸¿Í¶unãžmÕâÒO‰¨´“B oš½¸{æÎͶ¤³cîÖ|6ÍË7†tŸAŠÊ:ÔVz”ÔH©Ì„šØ:½žH“H20)ôkgÝÀ¬3ÀšÚ`?éžH½.Ã÷Fÿ@úý'ÖEÛjŤÝd¾eðÜjnÏÛìÛçiþu@Fç EJé¦U±ëc¼,ÞÁ‚ûÊ…³µ7๚§roö¹ô£oéd¤UÞå#“6°šèoïº  ßa´»iþÚlšA·ŽÔ鵩T\v¥Q±¿ÛÕ3€qô ¸Žº üB™€68ïŒû5q<‰{”œÎ¤´ÒG¢…þÀÄï ˆ¨ì¥åt«²Ú/@1­ŒH´‡6£B4þ(W10{׎Îþö“vZUü@•~Ù¸?¿ÀÑ2|m^†Ï­Þ ß™)}~ï"ÉÂ.OxÏŠ$¼•8Á]§SÅÛ€i¢ÝšxG½6Þ H8úTÖIªÞ:k÷Ÿ™XLß½5=쎄Ö]?>i¬›µ– P -„c¢ôK­aškH¨ŒAŠ*=eÕÞ*a½5AýN¦Œ¶Ð$`׿Pîó,òu KLe°$¬½JfZmüN©Š6Sh˜ˆ²Ðª'MµÂÒ/•~?Pä`‡ú°hkÍଭ^`v¢KÂÄ<4>V Ì>·ù†ÐÎãÚÝ5€sŸ¦O®Ž¹k‹©S£_âÐf™¾µšæïÍÛÊ}ŸÆ>[èò¯KCøÖùÆÓ`h -Û<ԇů4ú½aêÔfÞé­‹YM»˜Õ4Û0Æ-@ÐðBgÏY54ë XDp-4Q•©\\ÖT»é÷/‰"ÚR($ýÍõÊè‘@½ÿªâwRe”á[«³o~[3×Ü ˆ;`!!_åðä"¡~i&Vq½€%í•…uÛ›° o'-jn“u'­=ƒ”WÙsN@ÂÑ[ÕÀ¤-¿}ÂÖí—¯\,šó”‹ÊºÁ‹Ì9ÉSìoï:ØÏG€E•3@i¥¥J`Ö>~>omžñ›£YcŸÏ²u·.h]ËííÖÖr»LŒsˆ€cMmq1/¯Ï?®‹Û¢ÑÃùÉÄ#‹Çæ<K*WB–SÙ'ÓOîÁôÛZéÔr0@ ®]¥Å†-"¸ -LXÊD™Þú@+cMA‰ëvŒ -ˆú-6Ư[‚ãÓXZÌ¡õºâºÕÆ’ ·F@|¯%¨3•‹Ë:êCd¿ÐD•kâZS0bJKP‚*puœ‡< ç&U±oÀ“~ Z@wkÝîìZÿ5nf4€n¶¦_AǾ E¤gà²eÎ1~kY¹®&ÏMk3x7ã€ïzL7«foù¼ãZ¸†x< BÀ³2#ÔÃy눩ö -ö3»fqnYXLž×IÄb]!×m-­ÜªšÜ -Y^·hÝ"¥"ry0÷¶C¤†[/xЪA©A£=á¿xå&`AÉ= -ýÖW><¹eVJÌoHjx;!2º·’~mˆŠÛŒÈˆîWßõ£”+ŲK‰(÷€q“˜7ÓÎÉ6^ºYÇoމ̣•RÁõ(¨²×”U®Ö‘N9*…c}TjXÓ€ßf¶zŒ×Âb϶Bžý&|'gç¼6Kg—Ý8ÊÉ0gÚì=ö’×Õæ8ÚÍL0ÊP•ɪ” Å¬”%HYÝ:pœ›<(ÒS/0gª›r‚U92e)&i£OCŸH¿'lW -ÒC ‚µ ˃ä°-!汤ܤÑ0=¤iH+™†;Të¢ ¥úè¡XTˆÈ^„éåôXïrµ1xkõѦ׮r!iKâù1ð ½£>0Ú>{vv­+ómXÎaB^!ë‡RjÀ·ªºdã´:•w2Ì_™Ë,‹çÉb -×È–@(n`9-ÛºrJÆV’5CR›a"¶kO^ø²+#h,¢Û«s‘%Ø?‘pœ»Š€Î_ ´Êp•¿ h•Ǭˆ í&)üDÅçá#)•>½ý@«cM¦äÕ!"n±Øµ“+$}󽓙RÃÞ‹ ê|!ö´kÕè̲ɲ˙VΪÍuŒZ¯ù›û:á¼¶«wójL@î‹'ÓÀÇ0hà´ïe`¼Ø^AÃ.Æa¿pá·¢zÀ8mq@Rœ -ÁGËàóé·°2UPµT<4¹O'e(‘²VOn…-«²—–V.tM¡w'pvÀÄtû¨Z)™Ú[T·Ý,ÐxP~ÔsLvô™ - ™BZ©™\±¦Ü±+ êm•´•³×”UîW×y,Jˆ:L -ºSúRyAŠIÍ@Zˆ“P~"á8~iqž\s8'#(áX‡iy¥¿° ÒS7&i¥Ö0­Ôú¥{0õæl]]æGͶÍ<•{³QjáÌS™7Ó|áäì[ãc0pC†¬Ü÷¶dD’±‚µ>›ƒe zpj)$ðªM bRN@b’¦šq93.Ö PHÒ[F4i#ûÒ+"!Ë*½ã ó8ð‹jm<\ܤÒC•…¾'ò^ B²Î@e•v€$uë# 8#*ÊeSJж6™’W_õâ²×øÑy;µ^÷oílŸÅ>ÛÆÏÎËø­ÍÙ64í÷ŽÖÜ“9WCw %?è’À¿*P€áëneþØd<µ2Á¸­Œ œ–×0p¤!|)gwbÀݶœtHމYl1$ Ù}Emë£ ÖÄ,É‹{®sRë—~Á;#sAënéä -¡ýY^Ì -0B»Í¢Bvƒb£Ÿ]™1ßT - »ThÈdYPp)dùPÆU„tKA‹ë¶ -Ç&HSpî™ü›*ÿj$Ò/ýô!rΚá9[`Ò*{-Y• ¥ ù¬1dÁcKô PLk#ÐÃnäiè)0 ­$‘P¿ô‹ßçò{ ŒŸiÃdß¶CƒµŠò¨à¬É'C©pœ…Dç>¶-ÿdaÜ ËÆÍd7ŠvÜ PÂmR±ÖÀÈ­„<”]XÀDÙJ”}@ÅXY–²^·NëŸÊÀ9 ‘n`SöšÒÊý:`u¾›”°Óž¨øU=4åìœM–ûeF$β´j«thÊB¤ƒÜ©—r· [MˆŠ›C‘Ö® -¶q -ñ¼8ïÞçÝ:Šu]>8ïbÖç˜9¶ÏÈg߀íê¹[v9ãŽeݾ–…uàXàXàJ> 8â?3¸Ø/K=­g×eŒC¶o{´Ã\êd Ù¿î†VÀ1<.Ç–H8’‘j‰>½2eጠ„äÜ¡J 9!¸œœn½”´—–U9AŒFšA‘µÖh£G)ë¼ÐW%u…1r¨%aíTû’i¸# I/¥Šk¢ÎCšÉuq¶PÅÃö&2¢;+akh¢ZK ‚Ê¥{:k‚ê¯`LÚ@‘}]˜»´:›Vo]Îê2³.VÄù¥½¦´ryûfÞå`o  ‹{9ðÊÆÍd0gܘA5mσz!¹Í0NQÆCú'–Å£Á8œX…!‡`áûÃË #™ÒEWL[$ÂäîZ‰Ao%Õ"©~eD>Zçq[aÛ9'6<ž“¶²‚®Àëv‚­[ -|ÐjX!ÛÉñϤÜ-dù =àR^Je”‹B i¢PBúÈÔ°aö£Ð/-µSހŕÞ.ái&%º?‚Â#'þ*æ10娎þÇÑïÖßÙC™„ænæ÷–×¢ŠÀ£ž¶x—6OÖcéÇ äþx’]9ù,›³¨˜»P%ûáôŽ­&Ž= -õv”ÝR66Þ!FaœB¬ ¯bZZTǨ`AË&àC™…” ÃBbJv „#É<‰"Ê@4ÊI©àzHT¾R¢Þcbã¦`€U.N¤Ýö§ÓO®ê¡É¥`@*WiU< ur- 𺵣˜øoCJ qxòÚ“8Ã6Ò%âýDºh–àUŒætŠx¦3˜‡ö¢Öý|Ûr±¯ ¼/.–CÖÎó 2p,ø -ø­!Œ[ØŠÀØÏfŸöåïã7Y>6aB ¢§$”®Æ#6t'CKKC“ÇC:ÈÀQÆAÛ,0¹ -\TÊž j1 `„vï_©ÊÙ×ÔRn„'¡4XÖž†$Å}/QñÝ€À¸Ç–xèŒÎbJNï -QTe)&iÊ@Y§qo~ú)cÝÝNˆUå2HQY3†¿„%¦²Ý#„Ù$«õTŠÉŸSh×å~ÖrZ+Æ»[2/—BlêL¦Äƒ{ò¡®¼ãò]ø„. ük«ï@á‹›…ijýŠ©‡h#(ðÿÆh³Æ(6à¸îaØIá—ÁÆõî«ÇE!ã  …k˜ÀY;ÆAU@$ד6B‘îbbºÝf!AòàÑ…Äq 1È{­‰ Û EâìS9¸5@b‘kO‰1+Æø‘6DÆõã“[Äù¥‹@½4Óª"¡I©üàˆ)7¨°ÆA´«‡ o(TG‡Æß¤ê8™"ÊG§…õäÞ ³—¦}±³¹0vfôŒ ÜŒãÍ«eüÖf.6Æ·¶*ð%]<ð»´²—;51¯]¦”ÂÆ2Æú¸GYØx†Xؘã$`Æ[2Øã€‰³dp0¾küƒ@pè*€± cdÆ*È´ª Ž%¨q©ÍBªÅ ÅƒÌA ú’ÓmPæ ]CX'‘ -ÎUB:µbÞ2”{õÄS‹A\ú ?&E}À¤œ„ºÈ•@ÅU›²Š -ù,I ›Â~ƒt&šìòxñÒ~÷Ú|ûÖ^Ôì3îUAŒ_)Àå SZe­Þ†’Â׉ÑMÜ{ø#G—FÒjö³C¡>ÚJ¥‰ô›UÄ“»Åb‚ÆÅU¶²áÉeBMì:ÚÔ”„ÒI¦ßÎ#î{™ëÊœ[ö’g¶ýñô“7 €· Ë ¹†cÖPdP/0ɬ¤œŠ‰iŒQ³èTÃ1lÊV0?2ÖbÀÌ©âÊZég,àik\‚¦W½ Æ1ÂÒ°1§Eqá¿ X-Hi•¿øÀ• ÅµÌÖ‡=ÇdGW{"£ÓÅÒ°ÿž f3˜ÆÕ™¼ãn(ÀYÂ>Á¦‰ñ¯Ý Tb‘¬°É’ž¸„Šïàp@'Dï˜ ŸÞÌ›ÝØÐæãØØ‡˜à,Üð-5å-ÝPQäƒÄÖÆ48 ¡ør°9¥Ó0#QC„ñ cc$`ÆC,(!@œ Œ[0"æ¶x`‡<‰†‡#½ìpn3?¨ªÇ°c’@ªÜ‘3bÑêXuƒ’õ–ÌúÂÒŽ6Å…¼‘pÛæ¡â—1Akɕݔ«~xnû´^ç¬#¢Z¦ŽdZðÀAnüD 86`ûµ‚…f#€-V•Ó±¤b2©'šdÆ1ÄúÈØÜxJÙàX Wmœ„¬ÃØy DLáÀ+ c v7Ýx²4.DaLøy2 !Kj†Å}–Úâ;‡¿ð§œ#NfÅ`F²-l¨upÛ$"Lg@ u6Ӣ‡À•> Âë{.ël$ÕÁ_E“¦°UæòáIÏü¹uþ…Œs]yeåÌÄ(ŒWt`Œ’@Ÿ,¢€Mh-\¼1-Ú8v ȬñŠ [ãü¸ -˜ádÄ[~æd‘¯&¢ÏL/š™G߯èð5®òu5âå`[Á/Æ6.‡µ±8Ìc4p‡T›:ÐòÈCƒn‹3jð­ßRâ<\'†Ïð œnFù0d€Jf_yQÏI<ØU1.ë¹µšw %E®uÉÞ' )n  žÈ}³H¡ËÆ+¶D¼d\ð ¶6²ãà 3Ù–¡&“. 醤†³1•b*Ôkcp¸Ç „iÇd/€!nL1ÀXh‹€«€” -€ü}qÀ×Û2&ÓŽ €AÁ8Ç„˜]0£sxáÜÅÅò§Ë`ÅË®ž¸ÖÑwºùáM4@Ühæ‡÷ðžÕb2д…ÔBç¤q¥ ¬ÑJ"a±“)=®C¸÷؇PË:ŠŸsµNWÖÀE¢ôÂ#Kº%\´±-=þ1F6†í€5Æ€J)´jèã&aƒ@€ ¨€ÛEüËPÚH@F_éP6FfaLƒ V°Ù!Ø5ÓbË%RÖâ^‹ÇÅ¿ à3ÖaŠói`ÀµR<ŸÛ:ÀÏ4q-“·òâM4>0Üèè%Ò¦P6Þ!fx@“:¯É ®H‹î}%…GCàEG[`Å/K€‡îu€T®˜FÌo -ð÷ªüðd01Gí¨$‹ŠÝäô#RƒW ïH ÷m)€öl€0 ã(_VãàéõÓÄQ‚ì7B̺.—Í.‡ü ^Zá´zD>00!¡k<¤BÖxˆWÔXÆ„¤ñ+#“[/䮸åoÀe\Qžâxp²¨!þµ$Ä) q®¡ Þàf(Ëc" 8àâç'qH1ûX7Qæaç:làdô˜çåïfX‡«¦WG NE¡™žEüþÆ[¶~ËáŸpàŽ“„eÉ€`ìÁ‚“I -Æ!&@© 5nQ!GˆØÁŒ @-†Y8I³p˜@fÙQÌŠ‘aØÆÅ_â«V2:¥`T2à—mxàÅñ2Hñ°øT?šâ>ü¦†æçLJ×Bal2è¡#¤^!Z6 }Äbþ€Í4äQçG M¯Ž™‡9^dæ`ÑéK©º$’4Å x»ñdyãʼÆG.$«ðê ò¦Å_oW•J®Ÿ+šŠP -Á¸Å„ã^Qc–Æ"a±ŒïŠûM8ÀÃšŠ¸”gŠñáC1>|æ‡#Áñ¤ ®ss3Äyrdð8TÍc,6Å=B-…`©ä4óÈw³‡4ÑרºÏƤŸŒ4N?]—Ðe¢˜²ÖÙŠ„îR·D,VºÜøÊXÛx‹X…q ÆY¼ŒÆ,¸p¤XZ½ÀxÃâŸô—›ây^PüS5qšACÐĹŒøÕÏŸò9âR>G|Ê'‰GX2Àµ ž¸ÚÖÄ €·U=ñ HGœÁŽWzéáF722/<Æ@ÎÐÏF -Æ?0Ð¥”!:ÒÓÀ1k£(0–¶ì–±†‹N/Ž©‰6‚hNÊ ÄĬ‘¨¸â‰Ù ¸cc*¬Æ8*‚Ò¸…&–U4@­²*ÞpSîEq8+œFÄÇ q -CI\‚чP„ÄµŠŠ¸Ñß"*â]DB|·°TÄ)8ñ LMÜK‰‰'À9â>Ù®Ãwø Ó±q“ ša!D …H1õ©BJˆÒB$WH L5$¤ӻÃG'ø Ï/Žœ‹7B1!w86¾.i›3ȶÆB¼¬ÆB&_ä(©Ìz)!gÅ%Ëp:KüŒjˆchâ^FCÌ鈋)8â5•¿­”¸˜“s*â’†ì q¥ ¢ìâ>ü†ëð~“üR}U -P–þA:ZXHé “,¡ƒG° $%³ðÇ L¯œ_I8Á4„hŠcŒØ”¤aI‰ZÄ.1”›nŒ…ŒÂX‰ãnŽ(neG´IñH°&ž)æÄ½œø\Uo›bâhRL쀿â -x€xoºùánˆxSÍÊñþÄ{øÒ 73ÄÐ q¦› NóÃsxƒ¢¢§1 -‹3 øšß ¬™„@’`Ââø ]Â÷é„Ró{#ç׆ÔÄHJ 2Ú¸Æe¦°di½ÃTüÛ8ËX‚± -;N»²ªfT¼(ë“ݰà)Âøˆ…KÇ!ŒŸ‡°:J “<1=$òÕðÓC#WBaŸlÂÙôæHâ ¾QäS,£€MÈ>_‘¸¹ Ó÷¨5NA¡‡ -e׋‰5,î–€Ó50ÀíHü, -I‡ð3Ä!øñ® !.Õ#Ääñ)Ÿ!®§ˆ?Ýñ"!ÞÃ}xßÉò—.³Ãy¸ßqáÙ²¬÷¸`›â©¢‡?ŒŒÑò9h$‹g¡-ž‡?¢hî¨ñ‰Hƒ†(â¢áI@ÅüØ„„!*yänÑÄ5¶1± ã(_9G!ðNm FFük(ˆ-qŠˆÏŽøWpÄå° ð6,¼Ž ¿¥ž¸¢#Þ §ˆGÙq¢lß±¡áÙ,Mwpu K)ו6V€ƒæ!›‡;rlzsÙ4ôáCÓ›#Æ&â šˆ=P;ujŠ{xr*êÕüâh±Ù˜£sÓñFçæd ÌÃQìcrš>à–aR¼F€Ä74ñ¯£!NæTÄ·Š8Ù$þõtÄ% q,!$ŽõsħnŒ¸˜!ÞÃyjh¸ÍŒ Ÿá4^ xŸXÐLôÁùyø#ç!^76¿5q`Þ¸ÒŒoxÅÔxsÀ¿p BDœAM?ð¢Ã`vøSÌ_Êòð#îÃxrÙáI/AœÈ¥‡ßð.Ãmø ‡y±B° l V9‚ÊšfxH§&¢ÔÍI!ˆ›™A 73ƒj&â0ÝüâPñ ÆQ©·¬)â ¢à:>kÈèL”1‚Ó1)£%lmc:$Y#¸ŒÚWÜBÎEÐı|ˆ¸ßá;4\†ËÔðó“Äï U÷xK§âQN0œ^/:¿:ht1"êõ[Š˜#Vô»# ¨w’Î/¢ˆ6Œlž*±kÔ¡Ù™:$ÏòD6Àq®Ô8†˜q¸\—nÅ#TóÂcpø Ïá8œ‡ïpnÃq¸L–¿¸ðlö…¨(iÆòÏËg ÓLEí|dÔðÐH’KA"A2¿><|Z kzx×¹iD°ò‡ã¦âŽÏNÈŸ–Aœ§Jî8]Èm²6™ã|ì1™ ÞáA’E4Ã)ÈÆI0dQÑ´¸Üƒ(~aèˆ;Åôp"žÃø §á40æ…¿Ìð.“å/1|†¿ðÎy ¯á8|'Kĵ¦dÛ¼€F(~ii`à@Ë)†%Íô†Ð4 bbó+„•“1Èd§#,¥§¥°¦#ÊM° ˆ3rt‚oÈèôò@êÝáÂц Îïâ$8gˆR’þàrÀ¬aLåk‡XÿÃ0ÅÅ àO3B1œs—,ÏòÞÃÛÄ`ûØ8^`;7ÆBÖÇR8´µˆAö0ÀÎ,"¥ó°‡’Íïš^/6½;PhzqÌàÓH±)¾±Êɘãs3G*g"ÖND4<9~~ùãôÐ.³€&j“C t­Héoc-b -Æ!¾‚œfl"òpÝ ë`ÅôÞÀ±)¶áúù¡‰\$,6Ûøˆöp¼EökÑ -Q¼Àײ¦8ƒ"Äs¸NV†ëðÞã2Ãsø §á0\&Ë9çœgù çœsÎ9çÜ…Ãp^Ãox Çá1|†gù Ÿá7‡ópnģТxœY±1 ÞØNK?'6,™Ððìlâ> ²c¼£ôÐÈ!˜„°:6½;Ph~{Ðüæ(‘ ¦Ñ"ó{C…æ÷FŒMD&6Å7V7q¤r2âøÜ\äѹéx£SÓñ†f[Le69u69´MÎÕœV••ÖSUÕ–”V[WWU—VššÔ—šT–šÕÚ–[וՕ•ÖÚVZ[ÛU•W›Õ—TWW–TÕV•šT[–ÕWUÕÖ–.-­-¦ª+«,&´·»9¯ª¬4ª5¬4.4*5+)«¶®.)+«,,©*µ«4©­¬5´*´,5¦94,«)*m킚–Í n–Õ/¶5;5¸:¹S‚6®,ª¬ªª,*««,)-,5.©+66,)6,,*©54«5.´«¬(³'›L .l÷ò¼Ì¨ª6xE1=`J`†eFeÅä€é™C‡ºØZÝ—†Ú&míÂZÝ×ÓÓ¸ -ÿCé— äÏ’±Y?…X”ñ[›eüÜh!&ç°&­½C”×.åW”W-Pä`¹s#Ò$´0•FýeþÕ VDÎ \PÎX ”6v¢KÃ`uÑK•ˆTõÞB”‚öè¡(â¢ü:v'\W÷TöÍN   ¤:½!¥DHÚ@ƒ¿’/‡GÊCãwjUü’ôƒ#¦ÜHTÿU N:‰ÔÛ³ø§ä‰hI~ JÀ!&=“^«Pš«ÆgMÕ"“®* “¾Š‘I£ˆìX`òˆý>Žá]#ßÕ‹ÍºŠ…åŠÊþôÊø‰. ÿQ§·ŠÅ£ çQÔËùÞB½2þ¡MA/”Ø™JÃAŠGÿ´Úø(ÿìÐCŸG¾OÓ7×q¾vžé4,Ôù÷$…* ýèa?šh?¥:eÚ BLú¬™ÁˆHÛ†°Îç$Þu%RÄïÔº(÷V×Öõ°Päß -áè™HÅvNØîÃÀ¥Ñ\Þ–qmØXÌ]}Zh/YäIøoÀsiÔë—PýO¤ß×YÔ«oï¾é÷3•~o1ßã¥û?~ˆÈ¥Ù—JÃH¢†ˆоÓyÃ8oÀŒ%#³?©2þ@º¹Z©4±cÙ蔵p|ÊxÊQ!*g¦ÔÄ~ÔùýG£ÞNÄYHÕ"“ÞÒ*3©Š½Ìß›ì×Çd -ÕèE½¾EC³KèAZW©Ð<ÒÛO®ŽÉ4ÑYú!MAT9X7¥"ÚK¥bß©çeÛä½›¨&;µ.zª™4—ŽQ™*Ef­.Ú$<¼;-´xhüI¡ßŸÊ?«š3—Qn"§Dš„¾ 5ÌTª¸dŠèãØ×¥ã³CÒú·D\m¯%§³T Êß„^PòC2:? ":Kˆ%³l`ö$(»(â÷‰äc€BÒ{1¥ô%Â$üM§‰?Æf}@5ÑšüS5¼¥HXz($< }&û:Qç /Ò$Ê$ìR($}V˜Þ‰5|ßÚù±žQh¡çaÜ£ü6†tõL`[„ ؘX´pôO¯Š?*Dã׊‘ù¼*âÞ}E<ļ?ÓWï(âù#QßäŸbñCùGuz}XÏó?kù°0qm4–ŒÌ^Õ‚òoáÈìDœƒfÚmŒÞY¶«sÄwýDz¯Ž±c£…,ý¤ßÑSë/lhppz¯£? Gó«,ô>}öѦ×~ze¼z¡YWbÕ¸¬é$!l’Òú@êc} -öW44kADé«3— QYÖ:”V:ÁˆÈ>CèF»¬ÍeY¶®ÝïEèZG…¬  &:±.¦˜ü@@v¦QÅ(2lt–îoeÙè¤Q°g`‚²7h±)gÍøœ¡^™F÷Ñfað]ÚR$&½‚7â9ÎÁ:Kǧl!vu¾z±YHÛGß/d)è£BDö#"¨Šm!JA®Œ¶¡=‚Ñš*ÅÍ7îÏz,ÉêÿIFÜbO@]úý˜¼´ºfÎç|óú -IfÕORJ+"þ"ÎÁ›èrÐÎZêä Õ:C³#±h3•~ï¤Ðïú ¶¬XüFž†ž‡QϨÓðcɰô`?;ƒ’Þ¨Óë—BÅ6”O¯ŒÁÅOôøcÑh¼[®1„«‰6½§×/8!Y7`1ù¬†cæÜ꘽6ºF®ÆA´«sÂz5Së÷gùàœ§\D`MüRí¨Œ¿ -J—[ÞÎìÁÕK¦ˆ?+G'%#³3†ÿL`Í»Ú-ß‚‰q3.7 Wso¾sžçq¯öôûL©`ÛÇ‘ïÃÌÑÙ¸îV3ð;˜ñ騈üP"?Í¡[¯r!i?¡2Ú TPþ©”=iÔÐN=¼«ZP~¯$¥u… ©t™Ön›Žjw.T´ÅíX¶-"Âïx§V@Ú\=@g­´XR9,Šˆy&"âO r:?±JÖDš„GQ/‰GhC¹*ÚNªŒ^jDeOð™@„c× ÑykÆg-e²#p ¢ü³‹<¿ÒéÕ°ó–QÙ›RÁv©¸/y"ÞH ßÅ¿¤ -öB µŒàW&°«´úí]DF¹€ŒÎU+,=Ò'øJFf¦3ò44ÂôÎðµyîµ\˜:³^aÈiÝRâ¶“”°/8A­˜ ì9J¥ßO”x'Á²f2MüDš…Fš‡v‘?‹Æ¥ßšÑÙ›Nƒ ïE<(‰vŽKU‚ÑPE´‘:ƒ&ýÍ^õâ²vJuôGœ`o5ñK ìxtÖJ(þŸJ¾OCÈæeþÖêpTÅ¿`Dä‡j]Ìãy/ž·1´«y÷¼"ÚX:.k+—µÖD_ôiØ“H½þ‰uцú°ø‘> o¹~ã­#Ê< Òüë/tg\~Óe¼æ–ñNV–eû3LÞ- Y -’95³ð£´=úÝ6€r6Ï¢ž­Ƴ‡*m™?´Ó×9švÌ‹Èhw€ƒÓKàê x¼ùÎiÝ•)ĦÊŒ¬þ±%ú\„]„õ^bÒÇеÑEž÷ÔŠG»éÜmZ{ û‚“4× Ñ9¬éü5ÄÔ{Á’ö¨WG%ÐÃnâ^÷ÇÑÏ~Zmü\4:{–‹Lû©5Ñ^2õM¦‹ž*…¥ÇzÑIwåø¤¹npÖ D8&}Þ:ˆw<4~®Ÿu‹MõÁÊÕÑ+…†¿ê¢ýd - ù— ­y'#v®‰ 5±'AY;øaÊ¥àD•K+ñpc`rÚµzxÎU`ÒC—ƒß¦ÐŽ®”«oÀsõ΢ž_*gÛjšu³¤³+Àšv?¤-̪½AIj×@µ?ð1:Sê¡¿Ré·ÁŠËZjD¥'º4ü<á>_téõR$&}ŽMO•B³æIäû2xnµÌ^óµóB–€7Siø;±2z¨ÖE{A IâÑ Q -Іo«—ËÅåÍ¡¤’é¡Í…¤Gðañ7@iƒ*š)y"ÞI ‡÷¤ß'Ú ¼£D0ÚT-2i®¡ò–ŽNzªE%} u±eúõÉ>z¨s°6ð*îL¤‰:â;¥QÃ|×iáj>39ûÖÉ\Ò¶d/v·œƒˆçuóúL š§)|«‰8 ;Aµ ìE˜„7Ô+£'ª¼cðÖjEº[FP­vIÓ–ñCdà/ g×̸Y¶z[3(W3*ÖŠ˜Êr’þ‚TºÊÅe?pêè™FÁ]ðåžM¤xY~=”«#OšÂÒzëÅgGê4¼eöÚh¸4š†îãÚ) ÑxS¥´ŸN§·Kdiø™B± -°Z±Y3‘~ïšÁ¸S§FÓðÁyûOdiø”p¼± -Àü @Tv&Pp—ȲÐ>ªÛR"$í'SFÐB‚’ЙNŽùsÓζÍ8ß»îäºè)(Y•3hy˘¼þ0)ª^‚:kf¯À䔆Ðó#uvmãº0sjõO¢ŸY M/fdÕ¾b‘Ù p´%,1•ø­``öŸG@ÏT®zq)¡ˆ©¬Eãs–Àc”þRê!ð­±bX~'áT)è‰2“8ÃvªXóÐÁP¢ÍAÄ=3'S±ƒ“3}p5 Ùìâ6k]и[žÅ=ë…åŸ -Ñ­áûÛÖÎu&$90Yõ^±ª2´@OÔ)è£F0~'"½h¸èÒÐŽr}´‹. í?¸Úm.ãÜ aœ‹!ìeîËH †_Á É^ÔYèaòÖälœ½•l“‹< ?O$“·6çˆój IAŸMën¹L&ö2וg -Ùh·YËÿ/jh3  á›™ëÎ/s]ùÅíLÞiÄó–”rèx¨¯nlÎEž„Ÿ0®žáƒ»ñÒ9±.b.H餈ŒéK«³oŸë²6Ë/qgôLŸ›—ákCòôÚG™Þ®Ï¢ßMDYhPÛQ }>IÔ+óÇÖ_èl9ûVË/pfôLŸÝ=Ix+q"vN黎wShâåÚHU€e´êíY;[ŒwÅÂ^> üø¬o€ÊP–ZÃôÖPî—Õ™¬ ëÿF>t¹AZï¨ÖGûè’Ь(ðìÆ+w#iv+ÀšÖ_AP;kã÷yüëH¢ßbÑ'áø³hpÒ^BLi£[78묜=ÔNF¤Õþbê«ZP~¦SoW(óï3•"Þz„v BB;;ˆzvÐdàwJuôQ =¨÷ßÖý»µZænÍ×Êýœ0ÜÙ àœbŸýÉw϶yNoàÀé ’§÷†©S£y§¹.f55ë5ï&Æ-@Ð}³å«˜}ƒ²Wlª\õâ²/@ÙŸB,†ú(‹ÿk⣠OÚ‚¼_ܺ4׊qà4‡¬,gÑÎc鸬«lXÖD„=fMæöVÌoMëÒÖÉøßvȲù1îå;S‡6ß ÎÕ0yP« Æ'mõB³~zeÌ ßýp]J‘øÇ¬´z XVi¨ŒGœ†v&á-$Iø|X4³PƒôéÉg 4Ñf: ÿ—¹›–é[óB”~f:b»™@5äxYÞE•…Ý"MÁnÑf¡­ä‰x+…‚m¡Ë¿ÛGRÏžásë0tÝZ¦oÍMöuuÄv7ÌÜÙÃ×Eüv"ýO%߇á3“…<g EP}"¥9`£ž72ôQ# ;KàCøÇà­q]Îæ1—4Y,;gkoÂv³Ï$_ŸŒãfãÎÊdþܸK©ß$ZhÏüÅ}'&þÛÝ -I´±f"¨bDDÑÀ`IÍ RïžÅ?óµ«4m«˜=é´ð»óx÷¡< vµdXÚK¦‡÷Mîç(Öu$PÂ[IÔk'i~oŸÇ>ô8h:hÓÂupÏã 屋Ãò+•viÙˆlþèl›Áº~X÷güÜjn‘ñ®_×`Å•CâZ'aÞÚÙ1toÇ+× ¬¤«‹4 ¿ÔŠÈÞ•ã“–"1é‹<…4…ó7â:š¨“ŽÐduë• ðcEXm+š5‚×ÇÎe#ÓG½6ÚF–„f=b¾›gÑÎ ¨ÒϪô³ƒ(ÿ²dpuz}à\‡‰ƒ“w÷Œ2 }"óî›oœ C×­aèÐê:µþ’fF¿¼Ýuv­Ïœ{¡ƒKW{“8Wû£ÐÁÛI•Ñ#u‚íœïÝš„T -Mì\9J¹˜°~. 3ÐäßÇùÒ}™½5oH—¶³eðÞÖìm¶Í¦_äÌhš@¸3m™SkcC‚zSXRJaöù¬›™†M;*XgÑतô¹ì›—Xŵ“ˆÅ"$ë1$¬¶w55&)n SR.åÊzÂ’Qº“S:ƒÔ¾a‰ªÿ"Bú±^dö$qó:”«£—Zé²Vo³sµvfÐm~b]´181õŒ€ÞV¿÷ ![¯9tëFŸ„Éñ/•†Ф 7Ò<´°&~D;Ÿ…óÜ,]­l›/0)õ’„Ú1|ht¦ßWJõ*…‚m@;Ÿs¸÷…(íD™ƒX6n&SZýv xàÚk7×è“ðÇø­¹¬¿¢œöm’U3²%|&ªÝ‚“S"ëªbéÓkyr² `/vg\Ú ŠnH£Ç™Ý N^e(VÇï„Úøoú³ È>3'ÖðMtiˆiÝáHiÒYiÔkó(úužÄ½O„YèZq¾u6 Z—ñKëiÌ»o¾p·ŽØîÎÊÕÜ—¹ÎÙcãÂô©mmÂo`M¹`QZëyɯ5òú39ýO¯N¬‹žA I¿óݳcôÔz !Ü&âgÛ=‘xvm´âÝÙ/ã]+Æ7|eà`_|ÿü'¨5׎PùHÔð߀ëèÈ<:‰\GpôH ß>*X7ÀAIOŰœ-l¡}ƒ}q÷ň¡Öë⦠dUN`ⱎ*ñX3˜1IC¡P¤«t\ΜŒÎO"ýi!V͙’T¹Óú«Hj F$õ‹ 15Û`„ôÎzÁ¹Þ³cðÐê,œ—ù\Ö!›VosÀx~Ê…£¶DÔ ƒ‘Q›iñË ¶Í0|f²åžOqIK ìD—„1|h´ Ú\æÂÖ¹9ˆxž -G{Ã’ÑîWQ[ ìaøÒ¸Ùº¾µAŒ«‰2»”N«Šÿ¨Óû|XlúðýMŽ˜î¿ØqcüÔ¶8t3”‰Fú‘Ñ™‹èì„*¾eøÜ꘻µ¹ 5,óÇF¿Ä¥É:_=[iì¥bHÖV;4ç ±¦ò†)­vœÊŒ¬þ² ¬7XÔ™ƒóÚ`×CFNOvDDOðZYÞ>~5tHrÏ ÊUÑžJñxmvuñ<Òç¡Möóƒ 5Ã`DÔÞÒé{oï:Ρ]#ߺü»“: »Gœ†÷Ðåß­Djxu -ú!P@Ÿ#¾ë/t].Œž=Ï ¶ÍI¥à5$+l²'#è«rÇ9Ìë:`=¹´¡ÊAKÇe­ˆ©=ÁÈh]ôIøyï~$_‡ZMìR¥ˆ¼< oÁ¸¾ÕÀ!ëVkuñj(@ˆý&_—ák“]Þú·¹c/tie7a»‡ñNæ±Ì£‰B é)•³Ù’6[Ý1'º'§ô×ÅÚô°?‘PìžœÊ_¨ÒdQ^}ؔԟàÄâ'êô@ˆûÔ -Ê.eâ²gíÀ¬»|€Î_CH?]¤ÕŒŒH«í%ä”®JQi×üÍý—·®£§Ö‡$»„ˆv LNë QNé IJo LFékžH>!NÁZJEeáH*wRÉóûi -ßjÂ7o”IxKZW`rZWxrJc82zw›ZëÇ(ö®  ³WljØ•WìJkýà)wÁ+å7 ªxÿ<~˜¹4®Î¢aJë¬-âjwá˜ô J@Þ -Ž~?Ëö¹ÜÖ’eáºÛÉ>Ú)D#ísé7¿Ì¡‘¹¤qÇ8¯/®%Õų ¶¸…¬¼mˆñ[ãÞ(ÎÉ2€mr¶î—Õ|ãä›D9š×dbÃ… HŸá~zè›^ç.&¤Û [\i ¸Ê]JF¹ -N@v L¾oZØ',A•Åœ´þ±(!j¯¥5— Oúìè\ã²–:Aé¥NPv«š5†"¥ŸÌ«Aªo "³f: G‰X´“H¿ÈòÏÿ`þÑ;z4d^—|ÛúLúÕP¿Ñ§·ï0æav¤ÏpW*ýþ¯ˆ¶’é¡ýcéÇS™Gã(ÞÑ6ˆqõËÝ™VGQf2ËÆÉ.i ¦.m«ÃˆWuz ̾Ó·6Çð­qoéh Ì@:'1~¡3“_êºrŽb_B{. sdÄ#â¢û•øŽˆÒGÞ_Hçw÷~˜´…!¨µƒ£sÓi⊠¼yólœC#Íÿ „¤ïÒñY/•†¿Œ\M#(7 eÚR#$í)&=Ž÷®ÇÜ¥Õ>{ÿªâ—*Aù©RdÖS.*é#ÐþØWóˆû<Îaž‡‘K£¹ßŽeã̸?‘7Þº3Ç6Ïðµy›C»9È’°>úüöq^mûd\»!ƒÌ ›öQùB•ÔyÇq¯æZ21{o2Ñç`]Jø„‚qÆ0&QÖðb6sÒ‡Iù0/…ŠmžD¾Ïà„¤§™|¸ý‘wVÍ)Ôë£D@v" i I@£—6gÝæmÌžÚ ùg3…"výì—ºîì‚Æ%ƒûe¼[ÆÉ4Xà÷؆—»{ó·¦å&|q.]œ -.j\4_8YÈspÖiÜ›w$óh¤RoýƒéG¿Ä™q_ÐÎh ÉÀΠ€Èú_qQÛ5ÙáÓ˜àǨ€¨±j|r‘B¿ýŠF&!–µî - a#_Ò¸F>ØW24ë,(»Ô ʪ˜BSZÃÕú+ö´O€=Vû¦aÇùÚu;5nV®ogÝèI>Zfpë²feå<ÙŒ Ü\CH7gÛ¾6+×ÕÞ|ïè¢K¯ª,ô:Œxu ^ÚÌ=™¯;„Í ¶ÍI§ˆÙ¸³2—·šŒnmKgF¶ãØ7}ÖDœ„}&°­va£µÙ·º,K÷Ç€:ýj.!¢Ü&U±¯ ¤ósgò Üœ771ÑǬˆ ¯fdÒ9‰w=Ïsá¥%$Aå‚ ¤$ûzûl"ÌBÛÀª—SÚkHi„£7œ«wõúOäßÿqô;ˆ~}èrð#~£>Dö.¢²…+¬rבP -D£ÌÍ;wŒs;tˆñsã}~$RCïóè×oéêD»¹æ°nË3É'iþÑ9Œz2L^¦.mÛcéÇJáX¡X×ÎÉ.lvÙe_M“Ž"I+­~û‰´ƒVɶ ˜ µZJÐW4>åpŸŸá“«©Z\v9(ÒºANÜI£az¦/n²¬—PÁ~ˆ3ðÿPöù›°Ü f`5>טH¿  ZÍÕÊĸÚXÌ^YÖîsiãrÀã=`¬ù™vçZ“yY IŒÓ"( ’Á -êvˇ(·J‡&w -†&Wk(÷ÂۺȻ‹H¨|§dÆmiã ã'÷]6‹¢wÁ†Ê ZPö JR;›h{1V´ÁÝ8¡&ag¢Z%cSF@âq‰Hÿ”êè¡^›PÃR*&k$Ðï‡ÉC›mãj#ë¤RÄîWwà=,CL_Û6gñŽž|£³q¶öæ[G+‚}ƒ–µ’hØÇô©ÉÜ—qà$|q521&;…)¬[%à™æPŽ+ãÇ}±;ãfѺ–ßZ±Ã:ùÀÅÉ)׫c»·üÞrÈâÙe4^8ù€ˆÄúB•UùR9)±ãxóºÍ!]ßQäëI©àúA“Óm†-ä Z<ÌR+0g¤Ðo?Àšè­hhÎ FDv¦ÒÅ: -dÐ% ‡ÑØ54Q­·GBô;‰ Û^²Âs€‚f°"ÒïˆûêšÂ9ZðM~±CÓfÛ̸@”€‹ÇçÜ Æ¤R)boв¦ð$UöÊ’*/X1I]ÖÙ:{ëÂæËÚ>YÍáÜœ“ˆ7ã ÖùK>Ú§²î¡ì›D¿²Ð&! DØ…4 é MÁš(”VjE¤J¿´Î"^]38G aö(ݪ&½…ÄSî2:{]aÝ‚aù0wÁ†Ê<ŠýÅ-.Ê4ü[#"¼Ý -LLéŸÉ¿Þå -i -òDâù™B6(WÅ›ïœçf2«€ÁeŒƒOg×)…#×èô+cíè”7Li­+L1¥q é¸|–>gø*z5܆ Ä|7)ñ9\AcùðäqÒZë¯DE”aMŽb¢ë8Ò…ìѤ;X„ˆ7ƒâ¢‹M1k°âJ Q¥3IíÛ#¯7XUÿvtæºñYWµà¤ü(åBX‚º½Âº]bʃâ_BýÒº} m+–]Ákä—Jù• ƒ.ë—:5- ŸÙ–¦pn d)Heþu!ÎÁz)5Ü‘@½ß@*cçyÜë܇qà(|qŸŒ&ì&_íМ#€çTÚå©"ô¦Ûɪ€ƒW—ó–Éù7÷›o_áP)Gc¿ðUì¢D‘óij¥å0 Õv˜ŠdgEäo—%dœlÄ}D¶g+Ñæ$æ½T°Š™Mo~u&˜´å®?@™eýâ›rë¥7¬Üf¦XeOçf>%çÓ¸uzL²X¯Íì^ÓàºÝo]pfQËUŠôîÈ—” -üôå™îÐ!7î¾þʼnaþ}ÃÑÏfèáeÏ‹ÐüÆcUûÑå:m÷rÕ8Þ^¯’Ó?Qïû:ò­ÔÑ|?{ƒƒ‹²o9W7~¢+÷ÃÏŠ(qgW² ïðè -–Oóð|Ä’âôª(³¨Ú‘+œžÀX»éú“ϸÙÌç‰Æ AæÝŸ>Î×õÝ#áûd±c&xGG†ÇÒF¶ õgüÇäŨ‡×æî Ÿ¤„gD'»uò¾Çu^ë‚”#ÂÖÞ6`lÝÎ[áy ½9Ø~‡q5¶ ôþ)>–ùñø¢ü¬ -ÿ©Cziõ³F`î¯|ÆãîIýY_èÁ.䛾þ2j^Øií½~þ^?§«lÔ7ôfzàƒd8þVmð³jþ˜€æŒÀÿ¬­{²åÿw«ˆoÛÃQ¯ÜyQGu2cpÿ¬…2Ûs»_‹5w¾a:akÒíyg¼Ó Ø G±¿œ6K@e6ŠÝ[é—Öì|ìp,´®Ö¬6ˆJD°~·~ûZåE¤qäUFåíþ³:ÏšòsKÂ÷Ô,®­ïk‹ÎºC}` -´F{ÞÐB´É —q3üYåêÿ (†—ØÇ…’e3!?ëû㲚FÁãæë?Ó¿ñæ« …WÖ<ËRã?+‡››ÈcpwÖ†z8ü%9ļ@ü¬Ëo„t8)yŸQæ^]u øs.kû/¶0³n`æã–þ…}æá%wãïϺï«&¾üYuóZ6>dÍcu³%éè3˜µÍ¯‡ÿ«µ«áì“OrxÐ~8Áeûç2SOúü@N³Ë^Þ‡ðzKÌåTaÇájÿäó9ÚênJ øºþãó:öšË7džYÙÌÜžçŠÁ]ý½wj­ -`ú‘nöˆ(¬¿EdÞ(UÛÉòÅÇí͵„utÖ^ÿO3hÝùùŠ”|)"OÇàuü8ýG¼¢Û}>ЭÔý=¼OÆuŸÉ÷iÃc^xùêcC®aîè|’< «cj̶–*[¿<}Ï‹Éwµ°ö8äæ¶ dÿòFN'æÓïKPíI¤»ça$z|—UüôêìžÆñã@HóB¯/·Rõù¾”}Ѫ€\6䛚”Ÿî”YI2Ù|dºvî˲ä„hg²eVD/€~ô¦Qm¼ã®Â¶TðÃø--´ø¸sêlŸ€tr3åÏx…fòà÷“BîsSBÞ7•´–¾sî!ÛˆJ’´: YRX&·<úU,gŸ%\·ø©Ap•°ª®>Y·&ºönæ}h‚¼ØIu«oƒ ØêÞž6g5ê°ÿàS™ÿ%yâºÿ2‡3˜ý¾<ÉV‘/D‚ÿíó: }g¿‚ÿ,yýk,1Ñì.àN¤²¸?*t6d!ÿ0ÃŒ”ë«mŒsy\d8U{sýÔÕ»ñnü•óYB bMðµË¶ƒ~M Hÿ½S1دx ÁÅ›– 'êpûp½¨)ÿO:zâ6=líä»L=wn‘2òÀÚ¨Ÿ>,€§Lÿ‹£Oð~¾¡¬¯XN¬x£Ãdê¢ûðlpŸJ6ÓÈC/(+Øæ‹°RóTLT®•˜QÕü:.pgChÎR¿•2wù—¬éÄîß•íyÎA9aöçC¯•jó. »Êb({œç‚LòQr3L“6~!!ÿóÝŠŠ& þ©6ýÌKè|oÝÌ* -+%È_½/Ïù g|ý_þ¿Ÿy»©†#a~IUÉ5ì^וeÓÊâ«ü6°)j;›”©«óæ–’èó“lÈ„õÓíÃü¨Ké4ÇÿOi™ßc&œ-æÖägÛkž>èjøVvÚè]ù]?Á+í£ú‡½»ÍÄýõûNxý} Ü+Ú?*¹_‹ï´GÍžf|³“Í‚ð¼[¡lËU|„hXå0«@ÜŒ¼¡÷ÉóË ÔežmÖ°Škõ±*aWd¹¡Þ÷°KL­ ãnĶe“ƒEä*Ñ-öð± -¾à6OSÑ¡°æ…*ªcn ðžQ¾¼Bw–?7Š„ŸIœÜc<}ðy–z \Ïnêï„—k¸ý!4í{—|t¿Nãk÷Xd#5æ§øçä.§¨]X‹ñYç·nY˜&„ø™ø»zΉfÅ.ÏÌôæïÝ÷ÎA~äWóº+Ñôí¼Ó /êk¡3X¯"4vp|ñ Zä’=ÁX?”,7Ž]¸€Cã1ˆdœ¼Ä»4ÖcªÿŒ•6I Ú¨VtŽ‚kH‚ar§ü3,d¸hd¯œ?dYwÛÁ$4Ÿ¸‘™þ·g6O©ÌÖÎ='íF‘£+0S…èUUu¸ÿ‘×oªœwdáçÍg޷ݨD=7çY¼«3f|!?Dc+ýkC’N1âgœköÌÎ)ésMªûÌÛ¬–Úì1ülÜóÓŠ<.UWÛS}£œAh”f2Ï^¼ä& Tœ}²…?ÜÂÐ[Y¤ãÆAC½ÜµÀ”ñ9(½¾¶õÏš§!Ãë¬b_ûäò¹ÚÈÒo -èjK -NPôgÃQ,~¶]Å¢W¸ÿQõúALºãÙ²ºQJ;ô-¬TŸÕo—pÿ§=ZDÌ¿Ëöר“Lù€ÂùV§YOÁr£y>ô¢±2s5jèSƒW`å¾÷ôÿ(O¾n0ðQsǃل/šñ´ÂµU; |±—Ÿò3Á­£3`¿|rÈ©h¿˜åè—v©ÒK&ßø(ÛðìÙj×÷K ²µ½£¾ãU¸žÔ5¡­z(hnÔ $z» ŠDÿ?ÿIÐîü=/øq·ŸëøË俥&?â?.Zí«‚w’«•ïâ*¥Á÷&>£"©½O=â=Ì9lޏÜȲ[ð„T³saØG(ÍÁø]G(ÔÎ |™ gYÞƒ¦ŽAèð’Ü 埥ڋm»Qñ–i~CGG½oyx€ A¬±gÅËä¥ßžß6èèÊÐyF_¿Æ&èå7úU§N”·ôƒQ9jö¶Ï²Š|‹ôúMæ/äWQ=tÊtCÂIÿ¬oˆðÕr×ç´•¼ðf„µ’RÞD–-Ü ËvTéø õgö|_×Ι(¢®àeë ÖÜt±ì16š jצü,Ê_t¹õÙºÓM^é{¹v¯óãi§tàѽÊv±ûX.,íZ‰ÛUw"hä¢3ÐÅY´µñ¼\® dá‘åm³züúKÂÄ\­5y»˜®bîU^O2¦>iǽ£óÓ-vò>r†ÿî«ÂigãµÕ}!%PIÂL¦ø·ý‡ïôÃñåu@*ÔÎp)øAV$¦¯ùÿï :E´þµÉ‘/³1í_öõ’XðƒS`š±@âI˜•h‹½w]­b–~ ž…4‡vàäsO>ŽyMÂľL;¡:@ÿiþ›ë›ÏÚ+‰€ÿ{òçyü¿¹d%=ŠÄ¾,Ȇì’’_E ×ЖHd®º»Ì¢‹ŒÕV1¬Ð—UŸ“–?³4Æžtr„‹µ>¼È÷EDtbùäjCg.¼ßÊÕ•}ñ3"Žoˆ^Òij±ùF …õiÁôb‰˜ x¨Z •a;¸XP#Ès×ôÖµôL¶ÂF»ˆ‚vë'lÚñ†<¥6¥¦­‡ÎÝ~Lš@eˆ¢8B÷zéò¾q”FèW3ôÿYŒ@7Àކ9¼/A9òŸ&‘F¦À=tÓ üŽÖò¬¸4Dö…¹~/ƒ]h…dw` ]»’å ¹G-°W̨æ'£¶Ê0õNàÄd“îªöÖ‰\x„ˆ‘ñ· ñ0l¶H.ø‰:0>nüVé®6Rî¤@‹"„·\†¨.›š ÷gþήFt(í¾`†Ó•|…,ܘ®°†•’Çð­.o­”J¨`­\4P´%$(ëm.VGðôX À]EL¸üx2>xHä€4 ‡+´ŽA–÷6‚E‚Å+¬ÁbVñ¤Æ~@Ó„…:`í¼ûÑOoEͺž#¸"ÌøÑ?Ì©njÒhiø-9§‚ Qy”AÉTR~Œü=Àê…#ŠœV ¤3IhÉ"QÅñÙÿMÀ$›–È[Ô5­fƒ„©ÂÊxyy @öŽ~–¿2XÀí–I ½Å²AúÒBÝ Ÿ ùXÿºä±6,0°Å¶¹v µ, sA‚¤Ì+ ,`-/›ðD‘¶¿KCc1…Éu‘ûýmÛ3÷ø´ÞÊH ³*xÒŽ|rBG?ñ 5Á–ÌÜu_?ÍZ‰z®ØÏKjùü¢a»$$©(çc|‡M!ØZ~³< Ô -ÜhÄÛ=3—©g2ómS‘GIÕby(D=| EÐ@¢}‚£ðÞIì/§gTĺÖ|‚÷ê0ÅšMnC`¿©;vÝ|‡/„pfô±ü/ Á½_ןöÈJðÄžYCj£Þ°ëÖ -Âu{¹3ÿìË›«[¼Å·,ÓDú]›F××Q'GtjÄÆœ| ĸ-iñA>UÒ7Àk;]Ö¬¿!-)BR8ÓArŽaï=Æï…hF/7 êeµ­Ñ@ -éoâɬҟW‡»Ìv@‚×½Â*†‚ÐG(õ ¡ßÓ–|»)@?i¦öiÜ9‡do4Ï„'ÁX¯qcüˆ2j - -«ÄH·r¸ñ†o›Ö1mx¨Þó…¡¹ûXEI}`©†ªÓ+ÉaN]ï›z—iÑP ûðåñ×OÓp‰¯ж÷ïB üB|Rpkš/Šƒí0%ÒO˜¶|ÛX9ßN´¤Ðt«ø žqöy«î‰oƒ¹ÔoT¸~´x €–-×îØçðƒü²_³6l0 ^ #li zW]1ËŒ?x$ƒ˜À·#³ÑÇñMJnÃÖÀDCFÛ^6Œ‰.I+ŸÓªØ ðbMì©ZkßFÜÓscu¢€â­#pΗ­ lYθ4$?q•¢›ÒT *€}¹ý(Vq89ôŸÎèÒ  -½;ò¶-â+jÒRçÍK^Áh3.€ñ°™Z=X¿#b)~Fvix¸ùÃQ^À†y¶*ÿ¦Ôûqí[ Ýù¬¢k-âdÖ;4Š)ôhœý_R"­MP¢z%_ôO¦Íh «vÓîšsZíÄÔì…ocµXŸ™£ri|8X÷1EÈÓã¦~l×ûœ5ýuáÉ_Ý\þ¥`·ìlÏÐl•¤¿Ž áÒ«Ö½ž 'JúóúÂI=dÁhR7Þ)Àö„ —4èX…y5Eñ0ì›iUÒ—Q_ 6´Ï‰f'Qy˜|M·¡³dãÀ#ÚЄÈ{@¥”STq¶íÂjµ´Ôï0¹•b¼‹@]NÑeƒ¾Ozj[`d»lNšô‹HaªRã{ C!tá<|>$[kÌÂjÓ]PTEÇsMeêîÏë ;éá™…`7uV;$!Ð>_ -´ -Ô9336d1063-e4b3-4c2c-bf11-1cab41a000d9172551d9-9ef3-4ed2-bbc1-3f2ea79f1f8450 623884f846b4-97b6-42d5-897a-4f6e51d87d643fe3bec4-4b95-4332-9b12-a4179f8af2da034638.25212523713- 1 !#<ïø7* §ê0 @oM ­éþX,\›“mkœhé‰g4pƒ°$Ö wu’‡¸ó6Ûp ›Œ3á#/L}DÓ¿ÜýRâ™õ à0ñtÖe>‚nX<µ¡r -@–é…|ºF4<œ÷a3 ]X$`ã¬òpz@¥081¿ôˆLïá|9K‚n± Ž”;ÿ5dd9630ac-5672-464b-bdb9-a8e30fa3debe287865f-b4ad-42d4-ac77-1898149a59cml10SVGFilter -/ : -/XMLNodeArray; (xmlnode-childrenodevalu(feTurbulencenam/(turbresultattribute2typ; ,noStitchsTiles0.05baseFrequency2numOctav,1Compositin(SourceGraphicinoperator0%xx10whAI_Alpha_id)idyo/Def ;fractalNois4GaussianBlubstdDeviOffseddxx1PointL(-5000-20zz1yyeSpecularspecOu2l-color:whstyl1sExponentConsta5urfacekkkk1litPaik3344arithmetMergeNod11-2xx144BevelShadowyy1Morphology1.radiu(dndilabbnn-bnnbDisplacementMapsb2RxChannelSelecAyyMatri1m3animto2freezfillalwayrestarfrom0beg5dlineacalcMNnonccumureddit418ccccc8cccc1ccccccnn1b1521CoolB-y2AI_D_163erAI_Erod6_(271 1;20 15;200 200; 15 20;1 1 remo1spliRindefinrepeatDddc1AI_PixelPlay(50 5;20 20;yellow;green;blue;indigo;violet;red;oran5Di18azimu6elevDiffusednn51lular15re13344102(redxx1688-1432yy0..5cc5nnta8xx445ddonnFloo(floodblack; opacity:sCnn135105k(210Gray1-OxxCompBlurT1Func(tab2VFuncG.7 0B1nentTransfCompXferFir12…¨ó{!c (<0ʆ£IÓ¼@B`((€0( …€0"’¨@ -îÕB€nL_悆vÐÚÊ#‚á&ŸÕo)Ñ4U‘ ÛÁc/•09Bs×<5'ZH ãýôƒ8qšOx?U‘V…'³"I=ù+²›w¢¸Ûÿ²L©²7*éO”×öùR)í.¿á—4”*Ì/¸L’-”öhe>X'L&æ i·<®óîÒ\‘ÅC—©7“Ä3<›É_ê -oâFŽº¹ñŠ"GÒ”¸4$½°FJ8 -·kBÐ@¦!æòC®mh¶XÍÆ²™6.¨yS¸†¨ß_ª™{|‰Å¶s*¿.dŸ:#¾A]žµ‰^ZÇ~Ñ ¨'E¿&»3VØu1G ²Ôqs-¸ÀÅGSOk¢†ÖFû¬W¢êºi^¥à$é{>“wÕßô«Om¯ [‚÷ÝSã}ѴŠ ÕL‹6»DÏ«&/nâ&€»‚°%p:­ZsÃSÁîãÞBDʶK¨ÀV]w¸DÛ5èidà…7ýöÝ1iúŽÝqtÜ·~®oúäHÍ\u:‘›ü*)ÄlÄcœ“_vÏC:Êg?Û¦J¦Ô4âôwz]Þýw¶~Û:XRê°‘-­ !d"0ÆnKÆ»œ€ïXO¼Ã=?0ÁJð(?&•Úûöo„KD •ÛX¢h–AØ(;SrÀfਪ©¡ªÙº‰êù9ëKÆ´8«ÌÇàŸ»ZRl"!µ”¤¨§+ªøÅ„©Y@à-ÞÒ R¸Ëc54¥8ésAÑ@—W›"kw ŽÙHÉnažýµ½õ—0]¾á KÛE˜Ý.³ââ0×£…hƒã'C¸Ę j\BäÖ1%«TÖI-ñ¶·Ëš˜È'­G³½±PLAtQK>ŸlÏ“bÛ¶`dsEßÑðŒu5q*ÌW5ÙØ[P4Z³Ç¯Xa•O–öNØ¡âs+D¹¸Ù u¸[xbã!¿Íb˜åƲ0Ô_Ÿ¶4ìÜlb•´c¬ª„#&s˜:µµ_MÕTæšÜO"OØ¡1qUC¡+rßX¨z™åÕÁõz}|uÉlœæö—øÏ%3b‘蟩ñAäGQ;ЮäøÎQ½êeÞW#tPÚÛ¨KHiM\¨Æ#+Vß“gbì‡èÅø@¥N1óµ˜\mÖ¼=÷ð«WÁNÜábfß 7Š©s¿a÷n§7)žcØ |_¦»óÂv‡¶mw”„! -R'ÿjǃ˜|tX€XØÕ„¶øõV‹39·¿LdVŸžlr!Ø))ú°yU,ÅÄêFÙ¼ö ¼Æ#~>Ì4øUýÚD(ÌÐ>…dîC¡ŒºEÖ<±™ »÷E„–oÍYØË&ôI¨;86ϼC¬|Ö¦É,¥O˜ßuKëá ,˜VœEÈ^Ø;ðÉ -,e„µý÷b‚ 뿖ϪwÎ%ë3àXDP+¯l IÒa  ,„†’aõ‹{Boaò·`ØÔr¢æÈ*çëdîöÙMÁ»üŸP·ÑôpvuG‘œfóãÙ‡€V\”2Áfl˜ô;Få?¡…·–ȽAÆ‚ XÎ àáŠîŒõß™R¬~†Åø4¨v£Õ€¼p¾Ý{ÁbÈIkT®wrj*8Å>FebÃÛþúKçM‚¨8žÏx}V"ø›õH;ú8×Ò#ƒ],X‰«²ª?ˆã=0ûë@öqß—»Óû:eb„ï‹Gs@¢ZŠ6w·¡Ø>Ë6•ö¼½s75ZoPŽ•­±°v.Œ•ÞÖ<6Ò&©/\¡³J­½VNK[¬ Š´nô„à×DÊýa¿g›ÏTÁ¬cq¥/N±j4/»”š“QZŸž7….ý -Dœm8§)¸é¨i4¯ w¨ö—L#¢¦˜R›!b[f¿&ÿ…XeDXdÿ_`€ºª‹´lª—èûìÚGÝq† )g:l»Å­ZDS$çZù°g<¿\¥”Ñ:’6#»âvVÅéŸÑ«Wjlü%bã`z÷ØUòw‹3t!˜ùüFàÉ9nr»!uývê¬^"g›\r‹#ûÝýðŽ˜:Ü·æ“61s‹÷Ô:íû›»BZH:ÍP¨nÖ™ö m@è&Cˆ‡Ë¬qÕ#±È0Z»7¬×æ ÿØÝÌpù·›„öÏÔ&cmÀš/ш²á„´+¸´;ÑAÚyÌÿDÑŽ>Ù9V”ýõ…à6á 'æzaÞöìH[ú³Mº'G›”7`Γ/ ³p'¨izùÔšÞžã­|í†çqUSÏMrÂD©-¹!˜;úq.{wjêÖLqaÐi‘}˜ ~|Ã~ÉݦP#4ñCbÒÒ2x{ž‘Å™îâú<æ´;aS¬-œ£èÿ/ÿâR4´™iÐèæ&¨åûáW7¡³ÎãTCyZ¨ žÓ lu·÷!à鬿iœÚoÀ51÷r¥ØvÔ•éÈçuÞ°P²„@¸a÷Æxíº Ñ 5èrÙ’…ò«EÞF!V·LCiÇU˜bèίʋ.XY…ÑeðFwDJ:63¡ÜÔ±J¢ã•·*töMXYfi­Öæ³€H˜©òiHkÚ]nÒ‹sj[÷]ÄÅñâSuÆ@E´'Ñûciw‘Ú Pî`dÆî;°S›séÈ Áz! L=î¾[ï§8ù1áF±e6Ò‘Ów…•a”`¾E¤iXêÉøf(V.ïÛH´Ýô¤h½»½gqVÆŠV.´ÅÔr4k„2Sm¢í´Yòtø²%§ËP…àP$ÈJ¨)îÍ„0ÕEŸ‹9¦ïžœ¦h vdûÈT.ÏöY”â~œ%K"—y[V¨(¤žT|×íÊ2–¨ýÝ#È …ZŒb½ß! -lÍ©ÿI,à6)–SSCÑe…˜Ü|ODÑvæBb]½¤€aE€â½5çaÁÑ%ü4µ‹x»2¦×œ&©-ø¯gí`„¾FÂÇß`@¼,§²_\{šZ>¶·A0¨úˆñ3A‡ênP F¤`¤L´Ó)lwÿýMÓŠ· ãJåbΡFäÄUx±~P§ˆŒh@#³égÆg^‘ j 5çþÌvò'ò£þõCvl· di)º‘˜‡uÕ£ Éc-úAäwJbûš5„h=v3÷5AlƒJ¿/Ö¡ òUS‡ÜÞCÜ–ÿ¬C‡šg~{Îô5×\sÍ5~0±Ö´ÎJv\—ñÌtožï÷NëfB¿æZ[Œo¾Ÿ·Þ¼ß¿õ³Ýüœ©DÊûÆM9Àa÷ëÍé}çµË–ƒõŠï­øÖ‹ï­øæïôÛœ]k¦™oÛ¹l9m±å:W3ÕÛk¹y-My%7zœ”akÞ4Û»¿ªöåWëxÀò¦Øª´¦¿-WašŸã\gç×Î7Ïôa´>gù;°K/§mîèw¾aº£µNÌu¦ïx¨î;]ïWj-‡Ÿþw[­+ÕÝÒ|9ÝqõZú¹ÓþÜs™Z{é¶Óv;mÞ™nNÿVÊ¿ó”_úwüõòLÛ¯_ë¦ÿ£×™¢ë³Í»ã~éÆ3?îö9J×yý–î§Üñè¼ýÌßñèXÍáN/7ÿbÝyîþ|;»Ö™Ú¿×k'ž÷V|)~jçO›+‡+ïô9Û9ÖWz3‡µÖ˜^nfk9íxÀ.Èñè¼Î–so«¥–›xâ¼7Þó5Ý÷~1µZ[þ4ÏÞõwº§î—ÖÇÚÒügZ¹ýµÞKûOœ³ÅØæNõßN·­9SíxÀúæOóv­ŽG‹3ÖÎUnŠãxtzÖç8®>—5åÜäæ_oÝ{§}Ú5íµÎúój>ÿοµ×»ãÑM{gžÿ³WKëí&·Üì½SZyµ´ÏÉÍΫå8Ç£ãö9nÖ¬õ™eüˆ¨˜X–3NFmß -C­†¦ŽÚ‹-Í\kk-Õß -œ…¾0åÅ*jƒ(GQ6À'VºoQjãyßï8ýw<ºN1{ªg¶÷Ò·Ž‡7ñ›ãºñÚöcÊ|Ç#†ÚPjCm¨ µ¡6Ô†ÚPjCm¨ µ¡6Ô†ÚPjCm¨ µ¡6Ô¦ÕĬ³v.­Õ~§5Ó¿õÒêxt¦µ3güê©{¥xj»s®–ZÇ£ƒmçy뿜ãÑÙËýå²å.®”?·ŸãÏuº¹‰-—q¾t[nâM·ã¡ªùiþ™õÅúU½ÝßëÖ´^Ç£›ø¹æ&îûÒÏ›bŽÖK»ÕÜܼvŠ-7y·¼sSç›)Ö™öÎñèØ›3ÅvoÍéµü¾}{;Åïx¨²¥øoí•ÖÇùRîxtùrü9N³µíÖŒ±½6«èµÜ~nbÍ+½¶ãZiµœµÿšvn^1Íö-¦•›ür~Zâç˜71­í·þë§·WÎyßÿÞ—çÝ«¶û+ÁQàæjµ¡8¡˜‚À?Úl«Øg#@À[+Q”Èù¹ e€oµ-Ma86¯J+ÅO ½ÔÀ™4§lfšûG›¾r~10,gbÅ|”ßQF"G4Š.UÌ mž±†Þ˘§´a}]މªÏ4À·ŠD°ôÈ2&‚ÊLÍL¢˜XE‘-M™›•õudù‘äæ S¦TÊ4ïsU­(Àžxø øºI Coæ0[1°6.è’¸˜“ß(ƒ‰ß»]$óNó·æ_9À' ¿Žþ»e"ÄóÂRÉú:Ü÷üþü A–8–V_ -ö!G¯4Ú¼JÖ×ñÎ3gÅ$‚­oœ|¡ &ª¦ U¬Y–ãûÊÒ A°¸ú*(vC±SŠ2ʾÞèq•ž ÕŠD†/]2/fc*Ðó…)âƒy ¡§;Ò3¿26R‰žÒ…Ÿ‰2 8?µ…3Ù÷z)1 =”¬¯“‰«ï 9¥(#)([í•'»0Q†HÎñ“y²ÙO%ëëVßrdbi~-oÖŠyÝ”ÍÊÏ4K0S^ ®>³àƒ˜ßXzØ”~׌ÚlLKK"Dø=ì<~áìm8ÊåW{߸‘‰cÇE~ ³6³œÉÊiöÑæ¶f9_*1öúÂÔüJ/IpÎÿцœ+plMªØ7z22æåì£MÊr‹mçϹ=1UŽÞì7gÚ>•*]-ðµÇWz+¯ü`°HXdÉú:˜X–bŠœ9ûÚæPÛV! a”Ÿiô|+®b`J%†&˜X’3•P@¢6rô È˜„R~&¯ô<_(ƒydjKyàè   6Ô†AmÛÑfsP,ÇUL!TI‚§d¿ó¯ÛrÛ{­{óü¯ÆvÛ§µòÇÙÚmÿf8³[þÕÚ¾?ç]íã};Ï—ÛŒo¶z_­kÍßßÒ‹k¯_Û«gê“ ÌÇ6Ùc›y pB³^Û;åùs柹՚W}ëëú}ãÏÛöŽy­ÖfB׎+nûþš×þºg¼5îßwß}ï]ûÖ;WÍùkŽkîºÞ|s¶™?¿˜ßýxã»s¿ùµÅöíg(ÖÖÇŸ»ýºïý½kÞ7WþùÞ<ãÿß»ç½3œ¹w&4÷îüVksÖW×k¿ò¼oÿÊó¶\ožsÏÎüœy d8SÛLhê~mÆ×ò]­Å¶kmmµ\óÞuÕvÓ gÖViþ¬À`3“‹suÿJ«åš×»ßjþûrýûn|·Ö_ïÆ™ÐÔýf¾w®w׺õïü˜þÛŒo¿mζjnoç9W¬­Í»êï·þÅxWÝ5¿¯;ÏÜÞÞ/×_{ñ½úæý[}-ÿLhjýXk½yýZ)ïUç»iåUïz;þŽõß®ógB“÷q}þ_/¿Yïýš_¬÷å—Vܳ¶Vg8ów&4/··¿åµ?¶gË/ÿª1~\óãªoÏ7[~wÕ›g8³÷Lh濼â¬mÕ×ÞÎûµ»ÞLëìïýøÞŒ¯Í¹r]q¾皳ݸþíÜbZuÞ¼ßË{ÏÛj®5Çöû¥õnÎ{íýêÍ-¶œ[ûöæ·<ó[-­Wß¼3çµÛϸ¾Öý;߯øÞ\9®—s{kïc¾ó÷|³®ù5ÇöÞ«wµÚîŠ5Ç;ÙÏ?š;_»-åµf½ûÅõmÿ~µÆ[÷Ï„fÅÿ–×ZqÎ÷¿ÞÞuݯ??Ï<ßZ3¶û/×¶òšuÏßWœ7çOïµùöN±¶6¿½öïãž3œ©÷gBó³ÍJùc1,gªo€Æñp< V±/ä¬V¤Ø7àó‘²yõgnbn7­ûf½éWÌ -) AP‚ œ­bb§½f:sP¦ã1 0#)´ßKK“ -$=ÎK啦0’à 3ßñ ˜˜=Wg›a¾`©Ú|0¯3+¦ª`Æc ǃìvVÙgí3—^ÊuÞZRTé… ”®3›:(£—»/,Ipä F›yg¦uÞKë¤uâY)ŽG¥Þyuž_Gq<*?묃©³NÌž˜i)ŽG…âxTè¬``Þgšãç*½¯ûf­˜1ÉI鑳‘³ -AUì+Mn†ž¨=WÇEºT3¢ôBФ¥læúǃ›Ì*6&-eóNÌ\¤9~-/æ1L99£Vh‰4ׄè5–<¢ÎB¯¢±rÙ1¨¶‹Ðæx\*£çr(S)ÐBdIJ"^_¨»0 RCb¢€YÀÏF³ˆøT,œó5ÌÇÄ!ól\JI -²´=«ÙÄ€çJ±: -eiêh:»é\KílŽÇE5Ê8‘ƒ3VÙ6sè×Á„ãò&–DKbÓ¢X}6`…w7¯ m#{ÁV ÚF1%LîÞ$`B$LB÷d#‚‡ä!”: áblÐ ¼:‡ ‘2Íæxl(ÍȲР¹Hy2šq!D ¹YA–Y8¡2*—ש¬,šL‡Ëd`mT,¸w0R¹J F'á G(õ@¢z¥ÁDAbeÐ]x ȉÇc -u°. lއ'È\EA¢P A@ ¥€à€ËúÅÀ—Ñ\‡.;I8½´ðÙnH‘®‘°òŽ9.‰¸‰ã›ÔŠÜq\í—ÕœöÄFhoŽhUé[c Ë–Pô R”F™ ´ ÃiQÆsÀ±Xô¶läÚâT¹BÂDä­Ó eÈ–è¹´¼.™¸$&(>\X&0äB¡€%û ƒ/ƒ7Ç£’$ ˜·:›0Ð/®g—nDFîÜŒ -Ö7fòTî$ÒmØmúV6D-–£³`è±—IÆÚ ¸±ÙSI{±ó©·[Œx†êÞU1eSiøßŽ2ÚþÅ1Äj¾©*áij¤T*T—ê+qëÁ†B©)ŒÒ&OX …˜[0¢Y“#+ŽI=ΤYà”]9!¥“)¬(*Ï‚"1Å (Ï…2aúPJ®‘¡è®)E)ZF3¡lŽB«œ Flr¡Ð¬ ƒk†1‘Q@‰ ‚Æ¢4Y™H£ 8 ƒ ½8áÉæã&œ)™HT¸™„Jxb’Šüµ$¬ž$r ÉH $±×ƒdá¤C’Íñ lÀIÅ— -$%2˜„JV¯‰{+MS±d[)¥±iPcµm¼BŒm¢„Pl t›¶Jfas9¸B›‰U9›FÒp°]6¥Þb^Ão“Ùeë&$ÛæxdfÚFC¥l`Ff¼\ ¬ŠH7P:a,BTb C< d‰ ÷¹¢É{:šlA3°²è°-h,ÔWã2ÐêLX$È@k#!#®ÎC,²9 V#3µ¾È蕼DÖ/"“J„"Âe4 "ØÁ¢ɼ$º¨šD’Bƒ'"@ã!!Â2È8ˆŒG.W’#œâ~D¤M\D"V".,‰ Œ&HDGLJÈæxŒxI¹E` ŠbG,ˆÈÂR”fBA áÆbàU -Ä©Œ€ÄÂfX‘ $‘E G#^ÀAL®dƒbL€x Ä"V`¡L8D¡@#C6ÇÆðbà1THÆFrŠÐ¹@"&\ˆ$‘@8²dæ4ˆÈ”Ú†„jC Q’¨mPÀ4Q•¼´Ò]Z§Y±´ÙÄJ3=œRA†ÈÐ,B mGLXh›ãáÊ hqBƒhÌNZÄDÐ0ÃȤ›”ƒ6Ò’’V¹ 4h¨Íë´ÍŒ[Ð"2ÒH³m"-a£ÒFÉGCE*:šÇRÀÑ.KÐZ™‚FRÐh´-!Éh›ãQªT†Q ‰0¨k—!k#ê·†!КÂ$k:bvµ2rµo“¯9”`UË€-ŒVáRTÓøXpÚ ãD q ,X4Ñô©h!E Õ‚‰¶9™”‘hškoZêb´AD+¸@4‰¦iÚÆišV€·*dÂ%ä$tÊE -(¢išvAÑ -@4ÍÒ ,ÚÆDCEƒ\X*MÓ´RAÓ:ãGÓ°„GÓ4D+ˆSa"÷•ˆV €†ã¹Ë¡ߤ&„ 7þ&IJÎÅ¥ÍL±#0m šV ÀE]~¤7—EböNm9äÜ0!älŽÇd´y*:ǹhl@lXŠ…ÍŒ ¦>$92`ˆø -ØÆÖæ¥ÑPÀ±|6ùy¨Æ¶7Ç£\µÀN,À´)Pˆí±Ô\´…¦@ÕlàêP÷¹lÂFÂw ŸK(vNª­I#ÐhÖa›—dµ9¤ -p@Š‚UÁ‹“¡-8!Ë„(ùd^Ïc£E)›ãQ Ž`> Âêaó €‚zÚ`q9‚ɳFMC‘4M3(€€/MÓ0&š6* hZÍñ@]4M#A"švÇ/ +¢¢i -(P`s<.˜ Ãá´@ÁA訠uÂ8 “(ðð§ŒZP1à± wä±.-²¹lŽÇŸ³Ï&š°<©Ï…T`-œh#7 6%ù„îÒÍÌs‚TˆÔÇ%ÓtÌ«‚e ‘û˜rYNy” MƇ‹Ø¿èóœ¦i$÷@=yÄ@`ç£išÖ@ iÚmxm¡ˆ¦i2‹¦i: mŽD¦¢iK£Ä7MÓ MÓd×oT* $~9 -#UÆg2Ñ4­²qqJÈš¦i.IèKà„8DÓ4‡MÓ´°u±7š¦i〦i?r¬¦iZÒ§Ë|s< -MƒL,šæÉ¨hZd]HrÍ(H¼€ìe© áA„%Z•5­Áàv–‰“7dÐE$Œçj4Š£P곦iÛJT}žÌG£Žiƒ™“ƒ)U Gf²ãWíhód}´™sÚmð_Ô&@tÕ˜é e`ξž©ò”(­ïS!>2ÂŽ¾–Wz,G Æ^±Ù$A–8?r6C/æ‰&éM—jFNÊdÞ,g"/œ8§XÎÕ÷ÅæL$0Š“œ1Ðk}3&ΘÊæL$ð‘dĤ O)æMÒ›_²fÌ›­8À#gìs 0ÉV ,Ëœós•ó½ù‘Ÿ ‚"“y#„­ÿ… D¶BЋ¥`3ÄWzãûB/1z«˜Wšì?»×è1Œ_} !øÀSê“(Iô`I~žRŒ‰ ødeì[V1±Ã*c#+¦6_˃,o •^JU› zxc¨›…ªØèÁìXpA%ÆDÎk(Ç LA Ìë´b` ®>(§ô?ÚÌ -JI‚Ý|ÅF*Z’á+V-²b£”¨†¢Š¦Dó” |‘õkyâGŽß€o¤)Q# ½0ôb3Á2¶Ñ?7³Œ®Q&{Ù©IËë ½Šªš5ÆPS…`IW£ŠÂT^ë‹QrüVž‹¤¤ŒÊU&C•  ŠÍX–ë|F“z )±˜§ú’²ÙŠ€*”©HºU}e ¤0U#e"• ¦()ŽžI 5W_ d}Š«5Št5Ž2:†20dÅ>p´›¦D Q”¡JæÁJ0Ez%X¦D ‘¿–'£/XËõÅÀõ­è Ö²Td²pEËK«DÏGξôBVù‘””©() AÖè¥ÆTæ…ã7@¤«QEWãêû‹%’¯ÑƒÑ¬%Ó#• @RÙ`*‘ÂT¢ -,c^ì#)9®Æ±Ee„ßJ„­d2 K’ÂúBè(“©øŽµ@ò[Ñ”¨!–\ö­hX’_Šª‹/S"FüVà “ú$&jé×ò` e²[uЦD ¦$½nÆÀ)Æf7•>£Í´)ÃŽ‰Ä9a¾Ø­bÞœ¦Ògþc¦9;aøuÀÒ“ÁÄÈSú`­d}]¢–¨%ÊÀ°ö1lä5ÁqMp¬ˆ£˜àØ‘¿lh‚ô—fÆC«PDfbeüµaS ï!7¥y6%ûÏã±ø<Á#ẅÿœ,>O@¡¹„8 -ÍåóÁ¨l,o`¡¤2žR„µ€&%ÍÅ#2x*(3ec±±<Ç•IŒl†[ èTúÇ0›ãñò@p ZDkšrœt Õ\›òMN!L‚ ö0Ñ µƒªÍdÌFŠ -† lhîÃçŠH$+§“+Já%mj`êk€ ¤ -\Ê""-{pá¨rÐ ,Û“£d w—J¯ - °`¥¬2M”™ Qíl"œ!ª Êû*¬z0aL…•Bš½E Ü«9 \d [½ ²‚„»9‡„Ë‚,r‰@¸wAêÌLáP -X!ÍEánô{g -pQ€QpÁÀݘ¥`à*Àf²>pI…Ç¥‡Ò™Ø˜°ªx -i.#ya Nw¤!¡”„‘Feƒ¼°œo¤Q¶È Û©˜¬êè¡ <àK*¤¹ˆP»9ŽÇoŽj‚c#PÞW%e9Á@(E- ¡Ô\f« Žýx“Uµ®ýz:2ËúKsqx …H‘“ù,3Th†‘™Ø’¿4 ŽåC«Pæ"ZˆW¹)LDùÕ„ÍñQ!ÍôAA¼çŧ‚vXÕS1¢j"/>/J¼È¯ZNŸÆWa¥&•1ÉöÑt ws<<Þ‡‚pñ*>‚à >‚à$2lF4ð~s<<¡®q°D<Ÿ ³y>†CŠœ‹ÝHØXbE‘i¶-+Ô“LRÒXf(QÝ$¢ZŠuÒ\<¤È©äå:®Cð!Ð\® cê¨"Llg"Ô5‹)2ŸR,¸lŽÇ¦À’QkçÎFLÆ2ãJ™‰° ˆÏç´ÐÀ(°Ç’6qU=‚ (2< x‹èÒÁ¨z ¹9V P*®|GÉžD$6—ø€ W´ƒ0Ô¢©Ñ$¢#DBus<® !-(.*{ ¢,T¿ c6°ºK'*xgLÄ8†¢¢S Ù'1tr#šÅ)Br¥ÌÄBÆ„N~ ËWR™D2DÕÑLì -d1êLJLB)tAðÌ$Ç!LIá‹x$0œÎ¿<‘§bP0`+àfâ í†w:¡ÐŠín^dÀp±M'”«Q–`™PpýæxPòÂv¶SÊUQ×È*-c<“ „¡6ãˆqH#ŽÍŒ#¥P®*3Ž å´rØ #‰ë¢²>¤5L| MÉØ os"c6b2"ƒKD+”vBm´ˆ&øPºhAŽd‚dUA:b¡Ñá" --r¤"Šfbªds<\ÙÒ_–Œ1#YUl†Q1ˆøWHÌFí TB¼®6Hh"®9O‡ÜTŒ•ÒÁ†ªnŽhBr)Áhya9ðLh´H rs<*¤‹Š-$Ê -eI!Hl2$0N›ãQAH¸²S]C˜P„øÝ©nŽ_¥Z¦Y¤ã“SípD ›ãa€€2•ßjÁ‚[ ¿S­Tl:¨WBDƒ£…A;D^›ÜAHKþTt5A½,>†òéÕ™tDS8 - -ÎîªlKV•AKØ'-%9b´RBë›4ÌB¦æµ ¹9¢ P½ 0O¦ˆÖ|:¨z‰K%“1;JT7Ç£!"4¸PT -endstream endobj 22 0 obj <>stream -°€Yˆ#‹ 3½±|&žcŒªˆAmÐ -"ÙÅæxp´Ä8ÄÉJéä¹+>©å]˜Óx'“Rl"bɪn)ˆŽØq’b …êŠ(°•D4‰¡›ã!R±@µdpc\!Išª(ðæxä§HD{:{p±xHQhÆl”‰R9ÇÍñxm¶ŽE/ÁIËy:Õ qrs<"Ê‹1c|]‡ìѤ—¬ª¥ÀB°€Kˆ“›ãÑùPÆTOåbœ Æ‘ì<’U CYsIePÌlˆ3–Ä-¤¹Ìxw)®ð,F—~È\l)r.›ãa ð~M`*èÁãHvLÕžƒØ¦$J=E{ýg -B_‘Z’B¢zB ¹£Œl7cLc7&m!sÑœOT5$ STdš[º,\çr7wT*Öö†ÍMð -ê‡9K$CTa -YsáTBÂÂ6Ù† N…ë‚àÙ -²h#Ê žO*Ì›ãáð‘ %tÝ’a!èFB·€1aœf +ºb(»8ØÜ‡I)A[‘@W _âÀ%ñæx8T:ZŽíå½KFÅÇŽ.:& ¬Â¡ü \žÎPº(8h‘˜„‡#ñÉ„ 2º(“úòdÍA!CT(:ÅÒÔ¶›S¡PG5ã3ƒh6W” îæxltµ0°Á\ m«(9MRjÕPT–ÇË0b„„ÎU €zšn+.(RŠ=q¡P1¼Z” iBãB¤'>Ö(Ù¸‰Vk#±9ØÄ©Hh|$¬ƒÆÅpú F>½ Ƈ“€ˆ‚… -ND䤲D¤Xe ‚D)(A @pˆ‹DƒUH¦Ô&dŠ|“BDìÃO[ã"<Ô†òPÑ–Ãæxl”Nr€ˆ î0c]h%F‰*Í,F¥ˆç²¥Éë³A"˜A*H¶bxH JòXÀ"Y¢¡â£7 ®Ö¾4h  F@0t8 †á¤}…A£âäê,›‰©ÛŽEe:Š‘Sºp-tï{X8aÈ,$Ê‚æ;¹.\&…KäÓ(4ØYEa uQGU1Ò¨T6#ÍD›¬¨ÔRéc‘ $¡bˆhDHã0x$‘ɤrQÎ:d¸€kT.‚T@0—C‘@Ž1 -£(‚d1Ê ¤Œ Uï)¤r©fÁ¯Œä˜hõ»«óÖÄ3n¿ÒÛ•¡0–<ap@ëÐÃJÝ’cpÚ0 }4AÅû  þBÆÈtœ–ì–âŒu –ÇNÀ«/Ð ùº8R_9Tϸ=¬´ÁúìHƒÄÎ×û€:‘Gë(Á1sRâ½øò8evAkUÐwŸxÂÔq€ID­ÈþV$k6¢wù°_UØ!L¤QÙ™âbjáüM”¤v R÷é„|ßæôp7¡š©Ó,©¬úmé Ï’ªñ"L>û ,ÿxb(”Æg«?ɸß3¨&9vºýK -8ù&Ñÿ:ßYM³³õppD,è[RÔ™w©0a™|\]nr+Í–ÜRãÚxˆžKôÓ,?Œ­Š4ÚÂÎïÓ¾¸'ÑÚГçD-›Oà#æ¸rm”D±˜X;x‰ƒ lÖ¤–‡‰pçJ“·†-O>©Vñç17¡9Íæ6z›)¢Ø Yeq¹,Å–‹Þ#fxP"Pí:“×)\cÖc—Uÿ\¹?”„, -Ñ;/u@ír4Ó%eТ®q6µÔÖyG‹Ä;óàÿåׂŸ¡ W›Ôkû@E Ù%|®ŠúRÎÍøŠþÀSy:eŸ hA¨²ev ?žèû©Zm33Фï\ø¡ÙÅ[ªïMDu©øÎP -€øQn¢¼ÈSGíËf -l6_‡ª¯Ý¸>âƒ?L\#¤„ª÷Éßÿœk´!yoHŸÚcà3¸Æç 䚉uz¼_òÉ2êø˜Ð­STéß–qĪ}CsÏ£Û Í€Ê2¡Ÿ‡‰(>~'³6ü,S†aݪ$ ¸˜+Ãpˆ|Í:P/ÀAÒ6à3ÑòÙÄVwÙߺ!‹¶9§“ ¹$^4¹šØÐ9 -°¦—b’›ä›ßƒâ>¬_! s”¨âB˜¬rÎ ÍJòB°äÆ;ðw…ÈòCfRX»,DÔ÷žã²ÍpxéÙÑû?p"ZÅ!\°5:¤N¶^4ŒÖÍœA©q .«¨* 5vÀ¯W¾£#íò0'—ïŒK¥Cóäˆ[b‘Ó¡ÝR½û ÔücUÄG™¨ªmh4k âÄf,$Æ$xæ÷–=[v©$K̃6 c»_NÃÞX?ú0 Y/äK¢j–Î +ya•Æ€£îMðÒ XcÛQ½´Â!¤6=0‚òé¥ê2²>•jz ¼@V3£Æ¾ ‘¿â½>rõ™õ<¼Î‹CáÞ8„R[nm¹L:SÐëf.<1u¿ð¹a·i„°†…B.Qtp÷jt_Î1³}&få68œASÉmøiy3 „#œ~& 3Åý9«¼§RpÂW0¤MÕhz¥3‹Ä` •Wœ‹æöK^-jÁëT»]>µÿ͆ÃÈí‰ ¢ôIš£Œ…k²íÎcÉ&óh1TÊ‹ÆSA Fd±®œè`Û.ÚôLªC÷hƒ^qIãX"*ƒkG²Ãª–âÙÃ[b‹ÏèuL«;ŒÅ}1Ȩãˆ$uÒ“RU&_5Ä¡Íò%7xp:DaQ}"Fù„æ(ã—&꼡ùý&dD£i1 µp½)0—ÚCކm5,%ñÃA˜¿+©Ãçsà2—A³XÌĤꚯ_ö÷r@NP6ŽX2Lagãƒ'LÞ„o=íáÔ¦•ÇwÛpK%+ƒj½•>fÐ1=ü§xÔieã*4¬´ÃA+…¢Œ#šG‚uYÿ:/^¼ó¼ä&HúU"¶Y£}ç6ÌgªmbK0ß`ùˆâ‘û¦7пß6¹ÝÙi Êwг¬÷%âàÅÍ=ÇŠ*X¾³çÑNéÓsº?„9Z“îi=a1ÄAŽtÙ9+À£Ìøˆ×½ÀÕ¨0Îjµ„O/<øèüŽ®@m`ÓÁó”á…Šm~ÛÞ—%+øfÌÔíLV0_|ø˜ré@‘Oš‰4¥‘VmÎöýûÉSg=EZ¬å¥Hk#›-{Ú^X·}å+]wÏ Ðþ¨vÁ¥kRRàÚûü)OùØñl»ÄopÉ£ø¢PfÐÉùå!Çö‡¡#V¦DÅ¿å"£ë¡ñð³f̤ `ÆÔ'J=*-Àc¢ZQç4¾Zäcë–Ì@ÀD3ß°&Hnz¸X{Pž“hP÷ð€J°Él@×H5¸y×M¼NÂöa@KÃáùÎe®+’\‡4LàÕhŒa•Rk‹³TÀ~³<ËÝYÔY°NI´[ÇôA¸ÌÏÖüb¼÷é±”¥F{‰Fzé,bmñhv`¸}mðÛ•´ÊZyr¯ž ǯ¯š»±¢°„,Ú˜k|`V02ë|C<¨ƒ«] Ï@wÎãT£t™9h™5f=`O0ûåÊçÙ¾‡Ö\ÈžÈJ´ÉU Íæ÷´X4 ›ÍmócE;ï!݈ ÊíçeÝ15ò=mïEÏô>‘vÒ½^m8‹‚dD&z‚ÈùMI¤$ŒÐ½áBók »ÔD{¢Qè!¯Ù©óñ‚·!=@"Ølo»|ÞÎV¢q,úº°œBø-¿ß·–JŠ*Y # Œ¨‘~¬Ã’x©ÐÞÉÁÂáÉ?žlWGÆm‘–t±'8ÌtkÈlû^Á>5£…T"¹: j^ °è«†#ëÎñ`&ç¼!-@’‰ù/{¶¢]Äì^ì•@Œ*¢C»A§g}´—ŸÎøT"Ha°h‰CÞüª*‘ØÆ’ðßbªC ö«>©M#E{}ð+‹îåõŽÂE[4䘳™§&¼írøo)WF_ãÒ»±GªûM9Íîàü,ÉKàèºø6<¦w3úÅ&SqÛ£{É?i(ŒŽTJ6E:pÙH¼ênNsM¦§CmÈÏô!U"ÇZƱuÊ£éË\´Ø0¯\‚c´à3’_Ò—5c²üþWÐLq)q5OŸB‰\j )$ 2£Š£,Mé†HªÙA9°¯”'·Ÿy££¢= º©ô§½Èg*°D‘aÅ - jº[‡çÏegyÑxb8zd&¿šh°œ–”<”$Xä#xÀh0[žjäÉ #ÿ7ñÓIœž<¬º.„óVy ŒŒ»aÊ_ßYBÙ}ëxËB`úôż°Ìrˆt[Á8`^„¤,cu?Žwuy[qZW é!jt0ääÖ -G³r lŒ¿¶ŠÃµCQA‹(ä5+Í['Vs -qRÑ©ÝSlN`Å[™Ž¶³Ÿ-Q0¨(b±ÔÃ>éö¥’a³„¨ î0† ¡ÄXI´le‡—­°íÊÛ"ÍY :êÎfPÝÅÐŒáðDø«1ñ_k«ex^±ZTÖì„Ø3¸Z ì³Ú> êwµ5ðBy\Œûtþ U*)rûÊ„F«©•¹kë’ŠL²dÉòÅTl~OË•ÿÇ <9—whiŸ–Òß6Ìï‡=HXfFV è…š:zY•E3-9¿çĪY‰ýo[/K^•áò-Ã缚ÓM¡–F™Ìø|˜M’Û- ¦"¢¶lé;¶Ïõ ¾{{rlr^‹ýFî†ËLþ;´\²{°ø8Q|S†äÒ¶Ÿå¶4j3°™ÜzÕê%=ÁâéÂ*­ž(Õ2—þuac…/üœ.¢UÏœúWnþÜfõ88FÅ®PL¯Áª6õ+À%çH¸°{´‹6ÜÀÎÕñêÂE<†ôHk -ZÕy´S¹5¼ï $?¦ì``îÒJrØg? á¦Sÿ' `[¯1I`/jü¥ SS¢cçìÆ üèøéýj(˜8 bXý úKê¡~+RÈ+Ò -¥*6˜ßãÿ}=J­iñý­_þ—'ÕEŽmä‘Õ˜Ø û¦æ) a -M¬’KÀØÓëY­ái­¾ŽòèG–ÒTB-ìbvÆ8¸ú1\òMïóÚ"Só!°üËï˜yÞ…}²áÉV@ˆ •Àÿƒ•yíUßT/qŠâZ:¼ÄòÖƒ¸ò§)^šá¥Óõñó øMÌ:Ȩi É$³7ó”w²Ü5©BàÂÞ¥+#Ä=äm“*Z^’±ààóž1Æÿ•ŒVô!xcʸÄãÈ*¹§R³]׿·Jºá¯,À ì> ë’[ÛÇ!ÈhUVF§vƒIö/DZä/Ø( ";Maþ6yw„ùel(‡_l%‚“®T¢sœ”¥ó`¯Èh@<›õ´?ɱÒyC# S‚ƾƒ”´Q]¡uJä¬/ðö#9Iº{klʹô%î i~ì}=³ë]8À~¾4î/BÚÇIÉ€ÐRÖŠÇD¾Y“ËDÕஎ³„<Æ99ÇëŽX5Ä™e{E:G‹MÇBó -Ü÷˜Ù"‘'Ì(ü¬(ŨåÛKœh«µ\™KÇæíZ‚Ξ¦B,17ýÕ‚d%_ÓUNÍ~×j$’{|ÿws8ÐÉóõ¦=6‡ܾ(ôIz jx1ÖLïYš6`ȃ§î jVÝxË}´çÅp–Øe˜=?dˆ„œ2ÑsU\×Ácdùæm•Iˆsè|XLh¦eŠá½v¸ÆY˜zÔ­õ±ˆ×,—1é4´íÃÇ?ú¥;h«»3½î{Ej"gP®õ5e¡ck®B>„Á®W›!ø@P0ê-÷xÄ/('srJÃþ#ó -4f¼QŠÈíÂÓÔÁ RÀs!¹^þ»&ðJ.Ù:ꃡ‘û`ªþ¿_Éqz¼k¯†ãŸÿÛÕQÍ5Cõ}‘EÑ'^¶¯©Ð“Òª®@ÉÄ\’U±È³n}^o,ÁÉA¤{µ†³ò³d¤IÂøyË_ºL“mýÉG©}Ü–}ôÑ:)šVLŒ,ØL,tfMù7ÁšñÚ°>3»¦žÏ5w -*™`Ôú -á¡…ÀOE{ñ`ž-“Å©áóBfÅ÷ÄMo± »µä­o“Å^²ëƒãKD„—ôð yl¯tf ¯„èíÎèö½3áÖ:¥­ž¢>œÕæ‹>ðJ=`¹³ßËÇÙ@I5±èûþ6ˆ}@åJpôѹºE×VÄÃQþ6%œUd@fü-Êåý|ÊšSԃŽûBЍK„ÒW]ÖßœðOв]fq¾‡í‚_m‘eéÎy”ŽþtXÊk¢æy°-«^t[!¨¡+Ÿ«ºÈšEdlCÅ‘iÒ3‡¢ÃZEBŽÀH{P»¸4tgB¼z­&ì)%Å3 Ë®„[å| ÌIb9ž¸ŠªeH…ŠIó™%XÜËpçZ¹’©ÅÖ]MÌ»â;Ã$B¥ —?Ù¯ãsánY ÞðîrÀR&Îw›x”È¿G—¦ïS½ -`ͺ, ñì,/“Y¥T/J:š‚4¤Ëñ/:‹¸6޲A€ãL>O¡‚þÅå;4 ØaÞGUàC Ö)ÄEº5Gà }}Äh:3*–8À¡ÛƒZÒ¾ÓÊÿ'ÕæÂCÔ–µžp2Tîð›7~PÌÛ-_®YDæjºÝ 0<³S{¸Ò"æ[Isï>Ž§È›Ëÿ²&á™&”°È9E¶Žå©–^½Ú¤n¬ï>ôo†3V_“óuæ°n?˜¿Û"i#@¥¶^» Ü ä ¼l ’±ru¦&2’^á‡ß7FLIü¦Ž«½aÁèo}ÃO {6 ô°ŸèzÛ쳃ôD1r7§€ÒAj -Ôöà|x³¹Oï"ÎÜTê~L³ËªÀd…`ª¡«Ÿ{³-X•¼`â·óè8Ç…NT9ñ¯‡¿L[ɦ¯êxÿ³±·<¾ª™z9y -UJëÞk]$U«È 1@íöÍÀ -\2_Ô¨øÚ©ðfì¢XÊ!wjBýwË¥••)aE–y.ßyÒ.¦*'¶UÓtØ´ÞÈæƒ µ“‡óKY©AÙ9¤j}…t:°ßgÄÔ%?%ó…m+Éè»)\èí`"ÇtIàk¦{³¾-¹‘l¦à-{H9€¡ž´Ç´åÝ -˜ÍdõEž¢öTUTþ;(×—¢Žß,®‰ŠÓQ…ÚÌÄ cå?+D¥|"—k½9²»M6Ê<þ‹Õÿ­–ÈÐK¦³¼öåiã*™9†pK90ã*"2#μ‰ æXtÎ? BÁeqƒˆ¡Ã˜:«ýbƒµ„îxý£eã?‘^Õ>oÎdÁñ߃D‹êº er€lL­ŠÔž¥"9ß1“`öŠØâåQ¦9;&K‡}ò,ª¨–±ªòÖ—ÎÀÓ#îV €Ëg€’Aeu™» eXuVÁª8{¦e»,:‰Û.4æ~K ú|C°èýæY^ÎxñéŽozK,7³A ‹¡Æ2Ø`¦ÿ|¶d€ôYkàf0âýQB1„C̼·aÄ Ãí€;ó¢µoä#C4‡ç˜ÜëÂeå¦dˆœ}n ˆgwú½©ÌvùÊôˆ'Ð=·tLm¼T 9ãOLØDŽæ‹ss*–Ùw Ü— ëÜ‘ÿ¼ûþ¸b0Åã¯ÊËÏxA·S *àÉè3®taƒÞØM&H×w;ûg5M•=Oøç¿u68áÐW€b?¨»'¢ÂÉÓÛ3íJ!§­½å5G‰%ò'§+Œé¼Cÿ¬Ê% ì[æ·Œ"@œùEÛðP϶À/ü¾]±¡6/Æ‚LŒ^yç/©Añ>›|$Qå¸1¹P÷íª:[öÎKæ8€%sU©Q=èûoü'$áÔ¡u`zà´KóŸtÂV´:/køuÖ,‰[ÂrôÖ7–tn•è‰zã(ŸT¿ny\f¾3*ާ'h,Lå‹tí‡l²Mü”hÝ |6›€89 ­°>'&§p±æq«KMË‡× KÕ¬†+^ëïXÚ³ïžç²F#â$ïáuPo$G²÷p ¡Šƒ†l·›‘N‘úè&éOO·ßIÂ&æ™x¸°µÝâÕ·‚9 >5“  m×Â8v¯Ídv®l?âOf²Uý%Z -ë•?¬Œ/Ó ­\¹kÓ!ÙÅ”T7Ø—ÆÏÈ  ½Ìµ•`¼žóSúTC;"€Îp”ÿ .î—,N ÛC«/÷åú‡\êçËЄ‰ò»_U¾x*Gk”Z®ÌH˜-âß$µØŠ±¸e3Cžíö¶…õðº°ÚŽÑÝÞ=L|®¦eH/fát¦¡œïÄ5H¾!71†^û¾ˆ&™ƒOñŒÁ×ÙoCä$0ÀTÜôG&JÛ”_SÏé2t44²óÂ?2#zG­ `’OëËSÓ&€2j±&Aåh#sXÑ2ƒ> s]/Íd–ŠQ“Æ2N¾aeÔ’e£4ï?0?ðM†Ó?è„S Þeœ³kJèˆ ât”Ä)8* ??uÍf£EÀòŸˆ (ÏL“F„3Öïp•ì*RÐ{>fê‚E}°¾BÓWï€9@Åíßý4B«;OýèOG¥mùµ¸y0ªry¸­I60í@ñÈ2±š¢8~²˜@Ì´k×]Ù9w Aÿä*@Žª²Ùš8dá5y1 CŠ£‘רž³‘jÖ»hlì€?Iñ;žDZÈFòqÃÎ틈B‹˜¶h¹’;_)f–_KÜ•Vå"-€$¶÷D…³•v£ÕRæsBKÕ%†™Ì¢ˆ)i3´{iØÏVH…éoÄñ(*ÓÃŪ‡©mé= ¢jËÁIÄ8ÖçÆAP…”„ªêëÁ3³Ê<™äbq!À&Lcц%*³ÿš’+>æ¸Ï}Œvøhš)„¿åa˜*+|<ójõê¶S“.Ã’#ý‹öµ¿B÷†ñøæ`ªòV‘Ðà­­#ÆÆô¢Fœz¿k´Î«a@™@…Å—êTµš¯ -&ZtBÅFD/¢ªAmRÄ2ˆŠ0ŠVf¤í‡ÐfõóR"pXuy}ºWV\OÎF4›˜<+Œzâ“J„1šñóÌl(<ØgBZ/ “Â@ÀŒàƒ!týNǃÝÑv« -V †Q -†,S¨:ÎYƒôh:±l‡Æ„ÔÉcÍ{I×-0á2pžZ®9Í.YI½Ž›h½D;ˆe* ¤wºÔ3[AXÃ#­ïŠc+ã„fþò´°’JÙµøøWÖç¬ÄÒÄûæ\ÌÏudéW©àµ=zGÞŠ•ç¦ùbn:Uöep&òÁ‡é¥Â÷ é=7â2³`tù£íˆBÃÀC™x†Œ"2s8µÃÓ€ \'{‘QeÐÍûnŠ¢½²ýÆ…N÷é -TÞ¯´²Ll6 òá Úqí&¦‡LÒÉ×&öOhwf¦‚ ל}‘c›‰ -åo–¬K"Óáòn;îèµìŽ”¾ -öÁ@ îG8e¦bI¹žJȰ¥ÕÓ=wž”¥ÅE'‰¶)³b4¨üšžš†Žü‡Cš†Ä8 -ˆjAÆ3U°@OØwotìA°í„‰AYwè—ø’î3|‰'[®At¯sÂ}.s‰?"úlâîXLLºjSÆ$y[ÏãÍA!*÷%8Æ -x/òÞ ;²u¤ô…oÉÿºk=cBì3 ‹$¨êùˆzõi+…û‰µÐâ#jvµ»ó¼KxhÀÇÝc‚!'¼M¼g&Ÿ9&ð¬‹Z&ßxþ€AI$ –7‡¿pbè›&†X& -9idY¤·æî ÿº5úiÚÑ&=@©¢Ê0(aCSÒs`ŠÄ*ißðjmç½UdÞÊ*¢’9ÐXU8â÷9™Ÿ½— ×…!}3?6º„]ÊÔBõK!QbDÏ:ÖB;öË&{ü/«Õe1qïl˜Ü³éßÛï?ZÃÈü[ 00×òû·§»}‚Èì60çJUg±¼eþò§ÎÉ ìŠ…ŒçgBÄÉMTÐ-?ÌÂ0qVºIÙ’Dv8ÌJä=¤¥äVQ5£R”n/Gñ“E^®,žiëØ™-Œ‘¥ª—¬€Ë?ÀÊ󇎅²`ì»—÷›KæG%UüèÙ‘'# $¡†›ô†¯¥-Áj+a »YRé#”C æ@‹p¡’o@h”‘6©#1"BuNäÀQ´˜ùR|@×d–4àÿÐ×WI0ÈÎÎå<†xHµÜĽUÚ¡/‰€üÐó6’†Љ GZ¨3Ä!]u¼¶1:X|_6â+Í«5p,AvAyK1ˆ. Ó»'8qλ¨Í£%Ïë°é\}¸;#PŽ<•Æå -…-ªpÞ 6Ÿ‰šóX#&Â{bX ›/¶çÇB> ÆWBM¿q„¨ÏØ™ã%s LNœç:G…ªEpÕß6úæZU¦v}yÓö:î&%âû”l¿Ç ŒÓ¶B¸açÁH¯–¡ÆŸå -{ó²M_Q»ÃŒPi4¥6ë:f~»þ_Ä>&L¨Hu†­{ìò9LÐeéj`e›ˆWò$þ6G,ÓÆ%eäâb6Gا´ò‘à›‡çzŸb©®ø'-]ÝšŸÀdÍ®1FÆâƒg„kǛĒD*m2÷OÙˆÆ`v -ù“¸e’Wô_0FŤ÷yV›O°DL«Å;zEuqJð%F¶bñ‰"¿'KT"BPºn5ÞïÙK5)P8¹Õû@DÑw]°Å[KË’‘Å..F¬³öæÑâFˆZß6ܪìÂ"°¦/fGo ¶—¡ø+ÅšÛ0?»hìDïKç@•¡_B£! -÷œÚ%­¾ à .“ìI–»ÑLÄGè€ê䋳Fؼ -È…$=Óän`¨$Äàð¢®Ð-)i$V»‘ĆlÕbQ© Cþ‡Wû‚S‡ô­ÁâÏÈ|] ˜`ŸÄp«e–6íÿ¤Ö×ì„7&‘¹´ - Ó L0“J3Ü#¯Êè^Œ¾Ë!`wè ª 5@7½BEH`ÂࢩîˆÞˆ{ò®B2=OYÌC€ÜR+×B„T&),¬TvB]¼·\ãNÿ¹nÚDæ×^ÒUò·J„ØŸÁÈö øO6•’|T"@iP÷2§¦¢ûã–Ý|ÊTCÕï=#ý¾[ -·³cB\û¾š8x&=Äõ\¿ª‡¦õ|)äh0Ù>MßwgÍ´DR1‹®J“úÙ¢èêKšdxn#´1Òÿq þ£~ƒŒaж†¢²&‹õÂíjVBŠ`ȘYJYa ùHg…DF¾L‡+µöʼn#—{ú F9ã ö{šyÁï1 -®ÅüûL&öú©`u/%Øùí‡kò½øuŒ˜ØØ¿T³7ƽòl$묊™s’†Ç—:!=¸;];ë*f’BÎVý“Å)Ó¶t*z•åÕ9²—lFöÇf%1תNë©«¹IT’[Jã.U~¨àT×"±I¥õ-}XRRÅ {™ç§Ëk(îG¯u%Ãä£W2\ž =¯ò“rk IæíæjVJV¦ø”;P9Ù°ô#¡‰`ÅËA™Q:ýéØY;p(ƒV,¸“©á°D%öæd;÷‰¿¼¡î¾/¦1\K¬òÂÕ{;ucÃD”—U^a‰~ôr¸º)““«…áЇ1© ðEV åîÁ/†ÓV2¢çaUéyHQ aÿò£$?Cj)’½;0,ÕÚ Ñ5>‘˜a Ó )‚ó®$YRʵ%šßfT–>­ÕM¶Ãl²½)ΆŸ¦oCèP 3[&Ô1V‰å–gqݼU™¤co´ú1ýÞ€¦Qˆ+÷ '•¨Wñ@o‘¤KˆqzmTrzÍYÔ•º+'õ›XôíkªD»&«z9BðÄízM¿IÀíõw3Íq£ÓR[ÑÜމÆvÄ<ô´9Ì£Ó[08ôŠÈ€Åx¿™zºç´w¦JÞæ{ÈN®£[ttWèUÕnobÑŸFwX”è®r÷RQÄK«bË «àå‚\HÀÕë Ò9z®YJ(‡ÈôöÝoOQÅŠ7‰ÍÄ&vÛZº¼â”¾˜¢št!^@µz¨YÐ¥`Àòw‘ ÀÖæwž#ÐÍ_E(¬+à¹."ú¬òÎÆc¨Ã WPn;Ú]Cv¥%1·H̉—Äò ÑàÆð¿„Zî‘:œ¼™È‰¸7Õ©ý*·7]\Ñ2,>Òw¸U2=ˆ³ #:na0Ÿ?ßö4Ý ŸýÞ“} mGÃÌ©ŒšŽµø°™NÆd:Ñòf+mšœ'T ¼ýrõ™À:»ó‡POq¡²õ¤b”]$QˆöÇ\ŠóýMj[¼äŠÛ®#Ï–XÑ@¼Ï¨GåŒÁ6,–b fóòBé Æ RdzØx8mx(ι¬Î IaŸ7»¸¡/Ä‘¶÷uG­8ùÑﺕ"#‡'‹0Ñ`*œÖoÔ#|¿ÿGéǰ -è³õ\ùV­ovf}Ò`V€ÿj½j¼hL7ÒÛ‚¼¡5×µ|-bn&რç1#q­ß®ÁœªÃ={‘ûÛx/r¢´³ÂIÉÁ®¤Á„ðlcmú¢6Þ¨T~#z~I n¢Zçl?‡÷;aV»wsl=åÊAVAêásº´fq±«êf€,ÚéE­ÓM„€C_ìÕ:P‡7·Wù0ìÊ’‚á†Aˆx9ñ¤ÿ£WÖR²ÆQôéòă”d7:c{õ -4 r>˜ð±« á|!&[YB„cþ×1&ì/":ÝILy“¦u„Á"Õ‚› Âü"ªî⺨h̯iúÜ75¹rYU2+š¤bNÐKÛ¿3£üÏ»Uã§xÒ#_ FÚ-=Ärv ¹€Cy(Fî¸:›ÚkûáN#HÂ̲›iQÅÔÄ<˜Ùr¡YÉÒ{ÕnV*Ž -;Vpí­-ß|”†røßÓy¢»7+Fü&›|Ɔà—6-ÿêŠ'DN‡lDXªË=½ÏTö˜¦·ÉŽ¢:×¶÷‹zn‰à ó‹OŒ(àI:$^}±U4¯N=û7f®¨S#Ä:rÙÁºÅè4zà4/™’7Î|Ê^¨ÀZ/ Mº„v=H0TDðßhafɈ]Am ‘ ²hÞX.ÆúH ³æñÊSaÁÅõ€ºD)‚ È»Vúú*ÂØ>Âm蛊¾~×Íå· >¥Ú–»C¤çc…Í%æB1ºxŽ¥ÒX< %¸”útýë3­SÖi†zÞ·‹þ` RCÊ5ó(ä§?"è ÖÜ`•¤ºÞõppfY˜k•Ê”HcxY1Î&8 ¥š¿•nl®C÷i“‘E‡DqˆçÑ?ÄĆgëç:¶³D8ù x Ù»Ä\J/‘“•.{¡Œ˜’ ñ¬¾X%ÖÕo°NDÀÒ¼†JI¡š¸e”¥OVrA|a\Ö;}¡ú5*`DI/©~øÃ]ìËËQu¦ƒõê\+r´™ K¼ÚœÞR‡Éë'bÚ¥ª£»ir×â\XFÈŠêý#³¤—¼ÐëxiÂQÈa-”!æ ±(âvyvµÅ}65'æÚ wBЧµl:È­Ç\³Š²‚FhŽ‹F‚Ö•FDWK’ÇIO¸‡ ÖŒØÅò%Z¸ÅMKdýd!äj…öAÄ ‚ÈFÞp~ -£«OÓ¢¥[ : -ôÒKF(SÃN7$Élë  —â¤$£’ÆôEÜI”<<òŠxCŠâapO–DûÝ ÿ—Zà[NW4ë–²-Ghx6ؼ—^«PËÝùL¹±¢¾îÈO%¦ÝoÚ:@Qµò¡³UA~AxEïPZ:çr¦l!u›ÚðNiÑgçl(5 A4 “©-$ÝæZáJĬ¶F -ÔŽjœ”ñÑŠ¯×ÁÆý‘£_ðØD1mªI¬KгMàÒOÕÅ ÐniÆUlJbiÜ þ¨80%À€“c‘½ñ;‚± ¢ÒûЬÃÛÈUâ]³#w -H|LÅÍ*ÌÝrn,¢´@rÀ7mƒ_ª. ï&ô ýðŠj ÉwAçm0ÔÙY;M¿Fç[FÚ|Šä˜«Ý_ŠCú(2˜\ -FuÀ}UTFP Ü„ÑËm‰Á â aè‰_¦cC@ZýTˆ‚R+‘;¿í M…¯Nh6°=}4RÚ|¨Ó×+VvÃÖVCNa¤±Wž•ÁÑðZw\C¿òûj"Ì 4µPŒü ÖhøÙféY»VT\‡Ã4(ª«,ú—*R¶&¶€;û¹ÍŠiÄ}d’ 4ÞC” \µVε£{–Ô…ÖÉÑ9àÂÄuŸ+!ˆ“ía+<AÄçùî®ËgÒ=·¦pø)1_ï)Ž+8P®ÜøÙ%€¥â³㣫wDÑ?CZe‰ˆ¿Vˆ‡áUIgŽP+D€¨©bŸUÑ=ÄX-£-:È„GçS{Ñ}\ä†ãÕÜÂŒY¦“X>ç'$½ª©¾ ᄬ3 ÄàD¨ÿ&k J+nà^0‡¢ÊôßDQ²…;N&éϓل{`™®O~”ý›ø »Ž4LgK$ÞfNFë% ŒeNÃ"gíUf7J®<ÄÁs1£ê·@{Ìw— -H¯7„ØmÃê”÷¡éðr¦ ¤Fú¬|b‡|»5Gä= à5ör¯ÉüçØšùqZsB…ìk[¥û‚—ÀWeEIjÞ˜ÂçX7§'Ô2iFŸqHÏnlQÅI2šÏÉ8† ñiípG¼ô:=þ I -¸´;$µðÉìDÿ›[eP5Ý(j=–K©” ¥P˜©$¦O¼º”» GM€ý²ÏöÓç§/ñBâ ½UÓ‰ÓIð·ïJÏ…h4ê·Æv‡R -õ³5_W’à -¹Kšò#é7t{æïŸ"]ìÍíP Äm ï›1¨Br2Úz€¨‘:(ÜM;p‡TèõFì1."+“ö Šp‹xF\(¸m0ðÖ„,ÞE4õЉß3‚ÉÀP›}›qÀ‚n€]Ó?8ø§ÔÃKŒ—‚ Lë8ëóŒû½~¸t«ZF -/ufñù -?_§Û6ãDWejã¹z†ÌU­ËàJ$_>r€äµ¤œ9¶‚—ƒäÈÑ/À»Jëc+;Ë 8¬yë¸R¯“¢óm·q3é8Ñnbeä+±’=)[·FÌ_ÇXå¸;“i0ÞÊñè’¿@ÿàá«>L·2.“쌥k\\#ÄëºLhxb;{ÜIÎÚž]¬,Õ ÿ?ÌxÃôm3XŸ´pW£ÈB ”F¾c1¨ [«WW|з®Ÿñ—ZTSüÊ¢{¦-âüÜ:ÊËCÅK:jlxµA|BÒôÍý\9ñ~Üyle`ÉgRˆÛwñ®q¹Ü¢ãsÐ4¶É€ij°¾(z+ƒeè;$]ì×­Op~”ˆEx\0µwÁ#‚Pk„ÞÔ Õ|Jõ#J¬A Jðeó£´Ñ žH€ñ†™`R8™Y†}E¢œf›8e3ÓŒû¸‘•Ý;j ßV90ÛЮ«H#ÑÚ©›ã',Ã9"øâ—ibã €Ç.Ý—ñ»•æèWjßôïùaÿ¹Çæö+“{(=zyHœB(ÆJgR”²ûEßåúà×þüÌÒÞ—‰¿E”f’o\î…“[Ûþ¿øéÐ`ÚÚå´ÿÕôö5Kñ`4E¶‹J"mµê[GÀt¥™zDk Ì„}&É[2Q“ƒó˜ÞŒ4`–.‚u|¢w*?î –€VwÓwnëõŸ•êº _:™ˆ+0íä»(¡èêpëdé’¾-ÆÜK¢ó†·ÁGSà@’RÙMæŽ4¬yëÜɈ™‹¶åqèÉŒ¸ô†xF·®n6'áVyÉTžÀ~¼ y§À‰U-Ð2 -A¨¸°¤ºã5kç=y$œ«º:þÀù½èG'ÏÄq‚h¨S ³íÖUþÚ¯†Ì<õ Êh%ßÜ_½ç¤}BÀ°ðQžÒ´@pèÙBÄHå@”=Rw<¾Dç"Õµ4&§êá1¦¬HÌüŽC™O ŒXǤFº£×ʳØÉÕà× ”xÌ`ÃêíËQpV¢fˆb Øh Y•Á&§ß‹ã½‰~ÆîLši3=Ku+³/@ ¼ÀË8„aÕFÛ²¥¿Td*)Í)©‚‰ñ ™™ „^60Ý82Nì´ÄR…§­Bgøo6§äNMWºX«ZH¡a¦ÕŒ¦ÚŒu›œ‰V 4+F BŒV3çë1 K„ ˆU‡6>ÃÙlžÜÙª´ÔM7»˩ʖ<­VÅàu€hÀBNT_+ŠfÒieí+îvÙÐEºNâ×eˆcš—O ,$Ï4·'îIPŒ’[±l•èJªî*R2©¾6[†ÉÈrMÚfaD[‡ÔzR€½™¯vñ­ìyd dÛMMs‘õëfƒ¤³ nS©9ignI‡x“Ø 5Ïד7”…µ¸ÃkÆc¤÷ȸ;yÅ8ƒ° µäY>r’É=Ô‹'Ù¬’½UHe6)…ð¶Ûsæü\_è| i^¢0­&ºBâ ŒNFöp¥óAåT€œ+ŸÃÙKfëÍ´Bc™Py]©&z›PX'ß0åi’¡¯y4¦U}éÝöÍF|Þ2$ƒèX›œ,å;8 uKyø$;Ðá‹ò¡ëGÙJ½oŒÏÊò".MÜ>o4ÂûN#M Yµ›5³? ÂíÕ¡¬-"ÍÝt·±Šƒ´ sÚ¤óÙ®-0â¬$àÆô"aðMÒ‘0^7ýžÅV€w…¡¤Ááy*‡(¥³ÓJ²í4$wì$ô¤/NºÆcÒQ‰æî$¾of®tOç:/ÈJéÅøìR;bÌ}þ }ÍãÒÐ$ð=ª-Òvå -zËL&®pä"ÏþâQe€µ7&iüE·ë~êêÞ¨åc~• ü $Ð8”Š/™!Þt(h T®– ñ`í;52‘OBþ, --\ OZ8Mg¾m½óÝ¢-â–¡h^WЂTR ˆÛx ;Qÿj»ßÒO†K5Ç -“Jdß”<}-E~ˆ¢+ë\Á­\ªžøö—ˆ!Æ -!Ûµšø8öúN½¡>°ÒÎtí)3väª'Uö<‘„8|„EoÓu‚‰r,£@.|Õ5¥Ô^Gö{ -½2©U `Z8ñð -š`o9aûí nô Y ûĆUø‹E—‰™|ø@Öö Üó¦_é–›£ä-œ ›ÞÜ×$ÉO¿ì%p«é_b_åòܦC€@ØÅ ÇØˆ±ü X\• EÔßCdjcÍX¶ÍŠ£×¢A N×álÙÒDˆaåg[2³6‹ä=û‰FÆ%µN)IE> I3îœÁ -û«L[ Ãx2nY ?n2¸Kp2"›zií¿ˆIv ÀˆÓ°€¤ùò§ÞŒÆ²‰û&šÉ\ľ ­EäÎàF¥Ì/’ŠÀ¦”fªøv@.A‘'n ±Ï3ß1™f:eå•ð1wohDìbG2ýÔ˜=•12hÜ|4•Ød0Ýó ^n¢€Ûn&²Ï¹gšïÍ%%Lã-“ ˆ¥\Ö‘7H÷±d*Íz9AlòÁt¾¿j’P*:$ŒGóŽÛNKB²à¹îÙN2gv`š…P‹æ²« ÓÖ ’ÀŒÎ ·Ž„ŒÚ &ºæpOcæ $i”CéDn†Þr àAˆP÷˜#þ; 7hG Ô€Ìb¨–õÌ JÏåŒrR$J@ v*YQ މ4iÆÍÒA7 ë‚Pµºø Bê%©vÐ+én—âÀq—öló&¥p°àÇ]–:UUǹ#u%퀺®E—8 l‹^JAÝåš},¯&ÖzÏžÂ$yÇÛ’#Á&XŸšéJ(J¥Ê"x–É=ÃÛ$XV|?º9ÓKz@“¥owaÄŒòÄ­¯b8v¤BÆoÀý¹¯1MÔÙdw¹:”ýâ‚4ôE:”r¥’fK-\Ã'û%ó¤ìüPâ?É9Êä4#â~­Dá“STí ]lÕE퇦&Î%I(Ûæ…Ãs'‡†ÐcQ Öé¬mw•šCzfý -Å7ÒŽCž $¼¹¥²!AA¹!Ùw -’f9VijâZšKj‰MîfÑ‘#9 (‚Jtÿ7UÊ):EÜ.v(ˆÚvÃõªZ¨¹ùèǸ~´ÉZI'˜B"¦ã~ (.Iñ(û´ÂChÿª6YŒpê^:­út™øCý‚ükÔ$Éb•?æ 5šŠ3t›K•O€66ˆnüac+„\e¢B†Êöï#ðͮѢ}BËU\ìÝßa]±/ÛB)×ÅyAÂÌoã©]|ê`œJE!à€@“BSÒêû®Ì0 -õü¹Ú­FÿÝ`¨Få¿W -ÑÔXá?ŽÃí³²þÈ×Õr¾Ô¢qó|t«¤É$Ì¡ìÊÀ„ìX‚„ŸÆ€•wÝžÈ+ }ŸásŸbKÚ{,úÝ”åC(›~à -&JúÛ·I{’RÈTGñß4L#é?‡µÒDØÛÁ˜ÏRžšNKz ºˆµÄjQ»n·¤Å ä-)2àÙŽ2Æî¾Ær€‘DÆúAópdK1¸•K±\Š¢|p– ”]À^Šn/?ûZŒÈr…S¬nÁ¥ `Š0nŠ­š„I„ôG~”ÃÒÒZ^½Ìq-—w<†J-7}uÕV$i J•É8k†z3„%(9­øUTx«:Ä£6¯óË—¶Y-[‚ÅUã Ð¥­C“+ÞÔ¨Ô'_‚ß)n‡§Ê×2/&–˜)¶a“µ(è»;M-«].Y1ZV-oâyexÔ£+žV˜kò -.î7èâ 1‘Ь/ó-x¹î6)6Ò´*ÜoR+¡¯xm|EkÉ í =´ø©õU%:+Ÿz4’ ùæxNEßL4•lMn}ê'„5Õ–MË×ÉËt^—‘-E5G óY¯)£[µÙïÁsÉä iJ‘ç+Çx&6 -ƒd@PßnÔØ·Ðÿo†x\ýhöië»Ëcê#ŠU8äùù²´8¨Ç½˜gÛʯª ê©f±2ÔòÉžÛ²²g ^*-ŠŒyÜ)ì¿ò/èç(å àI½‰èä2)/”ÓÐÔJ.NÄktE!1ˆ@‡oq ¿HM¼ -dø0~;U³¦(Üì©…E (‹NG ôÁû×µ«R3À—qcÂ_ÿ¶#]tÕlßÙÒ,Õœ_üjÔŸQ{**\ä›í”m´ž9ÙF .Sã-8àey%u½‹æ¾ýXÁñˆ-˜g×­û%Î&L4:+¦¶ÜbTï¿ôxk.ßwøNÜwÔAAða¾tÚ­÷D+põcšJÛHJQ·à&8ûÜu|c<8†ïšƒó1£UœÀí‘ì…«át×âšs6JnDf "ØyÔjôôkØNîê¡ÓYä±%ÎEœ×FKyªìâaŒ!_¼¤Ú›B«_µIß ÜŽVøŒS1–Ã9«œFT¸AË=¶n ÎF˜±ø€¹¦Š¿*¥ $ñýœš—¥¦¨½hœ\ÄÝEÚ,}ªûÚ6È"ôµ5¡%*RÓ‡Ô##ëÃùlœIÈ\TñãÛHŠ Ò>Àƒzø:€úôíðÇÎÁ¯wýÇó$ãøÞk{Mú‚Þ=>l3‹+OXû†I*ÍBÌͳA'¼< !X¶›K§ÜÛ¡‡ ÛÞGPañXoÿ§1õüóe¸Ì]á‚+‹™9éâå¥Y'Ò}ò42Œa¡Kh £UxLhB„êÈ‘^<(:&¦9p¼3­ïA´˜¾>JŒWš"ÉaÐt¬ðòSüãcT”1 +·SsP…Pðxt®5ÀtI‹V %"´T…Å.©†U£IÁT,• Ó!9•e¼b¬é#êo…m]TÌ&_—þš \¤6'bœS‘¥¢°Ù† b!‡¬¥é-b¥š»k"eÄÐ^èQØÏ‹ªÚ²ÊKˆlSd|•Q•YÁ®ˆmÍäØèZ“½"ú ë¥ë™i±×æùÀUþˆ”ÕÖ]ƒÖð¹ƒbUîT¤3Ús2u›kcº=»+Ü쑇msPÙ÷“ÄûÂx@ÊÁû}M؉itšÆ˜}”v›Òr<íž™[‹ÿGäØCÌùé(fl„•],ÈJêïÕ7óýÀŸè©«]<:#_IYjfŎծ•N߸:I‹†é@óü®E¤àâÏŒyú“z\ã¬Éú¶Ç΋è'øßXSˆ™µ4?-ΔΧé㨂ºî U/| ææƒ]6Ö¶êu«,g֭ʆ‰»P•q@ðö?8 -µƒ ÆEVdœÜ5¡T?0í5‰ôÑ õfÓ¸h¹´m¶S;›¾,¬c¯?VûÏ™Šúæéé¶Nš‰´#×…ñÛÐp5 -Ex Qtõ–ÙTO§§&eìÞ‘õNÿ›XaW]ü? OŽù*C¯Ycö‘öl=ŒraÚ4Œtã¹±ÅÞ{`S¡"ª£~ÖÝ8pÁÙ¿* yñ7HGSœžëªÑäæ¿U«PÛ´{U”KðÁœºÞéšxßb†iéŸå@Iº,>Ïf¹w^{… øÊGÅÌ‚t‰”¶6}ŒÐ‚q•]Þ$ô»'’8>¬üåƒäPO+<»Ô7•µ <Ü‚°**)ûA‚^IŽ 5Æ€‹â 0¡©oÜ‘´oåîß7Âá½Ü—öŒ-ìgIË•ÿÀ}Ò6c`‚ë7½kŽfÞ¡ö›D -;´¼n´aÞ—"ÍÖ`T«ÃCÒá 8ÒÖ~N¹Ç½QÜ®ª¼V°ÍY熌1+|ߌ¢¶aVaóñQ¤Ì “³­ˆ—-úh4uEîšÿÙ‚LêË'B1ÉCÎ^š„–HšV† ֙РÅÀR…a 'HJ³^8®:ÃñÙå*ƪoŸQº¦@êÚŠ1HÙ÷$à™ÿòB–J8U °a¶HO1’>¼b–°IÄ ÊkÂôìêz2ãòÍ[áñ x ‘ÝVÈ÷6„âDšL^á£MIªž7w výÑ£ÆO•¡OäÌðA?ÌžmžžâåñÞ><»3pG‚6vxÔÔq¥ØÙ²äX·ÑQœQ¾ÁaÃíÍM[îÈ¡*cZ7ÎZÞ èÓŠDßY(òi¤j@OLÌ0À´J¥Ës?„­–{÷3Ê$4÷#ÔÔ„JÃf­ÇE;غ„ŠQÝ9#WA:€²üžŽèRÀ *½ehßNOøL’²Oú¿o:ƒ¼F–n-Ú»,º¥ì ÷Øbcpò-&ÓŒw¿R/©µRÁGÛýµVÉYs¼é•Ë3£áCL&y]ò â=&!Þ+q³$Šø·ÂÀ „A•âöR!rÍÏ% ?¾.š;÷{5Ì„I8«ƒ"Å÷rAØZ1¹ûm8[$wvDCþ+¿2VJi0&!ƒÛÞ. Ýš’è97Nº~bŽÓlº0•D)ÄZîGhðj‘Øà‚ZMÀø5'ØN'#(BÇ“³‹Û¥H€3ïCÎ]Nü° -šàÒTåzWÈݾV‡‡¡Ôj,tð}4gx+JPÁ:°Ù!ëd -í)µß¼…ª`à=$m"Y)æZ ÕX ƒ‡Î¨S_¼ñË\–ÃÑ,ê%ÊÇÕÝëçxÎü#ö£Š`Õ{¶…I¶ê¯ýªkÜö×e ℽ—] ✓`Ð̲ÏXF¡øÇPKHòu›rÓ× Î4î5ÚjU²ç9^tDV´kKaуŽXöï]þ+D÷¿´‹ZïONÂÝbYýëLMß]K´¶¢Æ­ ˜Öù$Ø;<ÿÂ*HÜûç&6+8Kû±'–hu2Ñr=z%d:e;BÀLÒòs,Š®Û˜1džAá)D3W|üã*•nÚÅ!»ª«˜Zå£8!¤m ]£é¦I`؆ù{Éë<÷üÿ™˜Œ2MædÓå³,i{¢ õSje ¨Õ&*׳síçÚ§æ:ÖicŸÊÝÐlS‹nh`D$974pÓ}‘ä<7´Í£JjÛ‘8kš/±‰³¦ùoó%§&¦Ù|‰ˆÓ:Ö̃~:_Þå“€—O"ÃOf†¤ñ“¹æ.Ç\ó×îºL×…¯ùÍP¡æÌ¤{8Éëvís¦è¬3s¦°˜–’×1-¥ÏbZJ¡­è¬3EGÖj˜5aÑÑׄ>Ô "ªŒº¶”p‰= šõª_E(4‹a8¼$£ˆEìéäWÕî{¼¯Å»ŠßޱUUB_²by¶Aºð•š0gõèÕSÚ n#a¡£Òµ÷MYaÙYa5¡…K™Ü’%$cH™! a:áû’û®¡\íýj“Q8sƤ°=—1Eâ™àÜiõávQn“©;ÏV¢´¸–#ƒÍT\18Óí‰Ó$ËÒlÜY…š›Qî·¸Ïý–mjY¯3l¯%Ú^‹&âֱ޾Q|gL—ÏÒä–&·f?áÐH"ŠE±è#¢=Ö‰m¯¥`AqëXA£IÎÍ£J6´ÍÙ‰$›GÝxTɆ¶AxTÉÖ‰$gÞQ%šÔv$jš¯‰i …÷ÕĹù§&¦àÔÄ©)aŽÄùÂOfg8¸®Ž~|UHrIëºâi~Ovûåæ™I_Pš(¯ý‚ê ‡ó‚ºpL—A‰2iBß–·”ýA ÿ7Ê–RMѱ”n•þ˜¢ÓÁRµ{‹p¸ÁaÕÆ/¿"ƒáD‘êÛY¦G%¬ó.¥… -“ð•&ˆ}âiàî´ALµ…8Ó­EÉ©Ç)K # -Ù@öIÐß+¥Íž/;ßY`³ÈÚÓÔ¦ÃJ‰Û‚ -·+%n ÔHÜ>qûM¸¥ÆÆ¸½°µo /qc$>ß–7Þ“¼ Tñ‹b®6GPͤt†ÃÌÛ`>Ær-¦ltúûÁ*'q^û› þÒSTN1…)=N·2'WL’m¥$Ûò$Ûê ¹$ÙÖH²-O~*ù©w*ŽãTë?µåG°¿'-¦‹Åtù¬×ò4™&ËíH´½Vh{­Òì0¼”ð‡JøY~ÎFílÔÎF­(axíA^ûœe?QÁòÜK¦æú<ÁÔ\ûX§]A “*׳±Ql|’œš˜µ‰Sóm¾DƒÏ*¤š8›/Ñœš wô•yf22y&·|\Å×|ãkîS2P»vw žÌ¥* siI‹µ7T©‹IN:%¡.‰ˆT1is†EØÄüQL—?"T®÷”ðÿ–›?)‚•~¡SÔN¦Ìúh«{’*fŠxæ8âæ/ZL—/"T®'?téc¤‚ågñ¥;ÃA¥ °¡¸ñèÒσxš¨°T1¯‰£ -2JˆBÛ0^¬ê¡QX5"ZxQù‘ˆÆB…ƒY¼Øˆª³Q9IŽÜ*׋¹ô ™MYHrÆÒã,üd~Ú:¥Çãˆg’o§ôµ1Ó)½˜RÂßÙŽ#Ÿ]oŠÚ²§”ð{N[–o;b *êòQ}¢~˃•ëAµ­ÐF’ó]Kq‘¬/éŽ&ã~˜Z'Zz¸Qɼø7%0…‰3´ëO - - -þÎbŸI6luÉUQ }ÇñS»›®½Û^ tÓµ‡õƒ/5×¾$?ïó˜#q’¬ôö(]ûêr‰¿›̽½I*…)ý/gìã³áOXêW ›EÖ†=—þFØáæÆ°¸±NʸI–Ä–@®8Oß4^9n“ (neÃ’Ø,°µo#¯74nŠ\Áª-gFIï<PìUa1•LB‰O«?? ™o8˜Stc1ŠÇôFúBåÁ}ÖI×Ϊ¾ …0”M§kW% 4±¶iJ¬º²6Ö¢æz¥xIªµi†–¯˜É”ZÝ¢ýÎÄ–8ï[‘3RöKaƒ>6Vt†ƒûh¤ÝDU³'k6mšwB »¯ªu4ÏŠâH½¤Gõ¶ÿýªÿA¦Dy ~â§eèþ-“\v‰gb Ϥ3b£MgÒ_nþا+OîmÌ`8ÓM—1Õ®÷J5ijzL¨+Mˆk¨ •‡š -LyËkˆ4BtjoþfWÁ›·X;3W¸½ŸH«BCà¥\­ÝÅ ¿' -~{cÂ}ƒ(ˆÊwŸPåec&åc2?ù ŒsòZ¢à;Ã!¡¡¼-óFžE?ùŠ$ò©÷ya¿"•^_ª0^ÿ©‰­wO'ŒŸ\Ò.Þ{mD}rGÖ^Q©ææÍ ãUoC²në ‡O>‰ÖŠÙ* -¶Ýd”‚›p-YÊÄÐHÓ%-°ÉÖÎàÒû˜2&þ¥*óTeìI ÆOæÃlÄ>ÕGDqÔÓS˜Ò³èK¢oËw™¼Sq'‹x&û©-~jëS[«øQlZ$ÜßÕ´ô³‰éòÑ´ô$®èppT‡Åå¬z2xqJמöVãxJq::X…¹qÄx¬`ˆåig8 òÒÛŸˆg®XÎKÿM~û=*/ý*Îä"ëlX•:7”IŸ¬õ¥Q0_‚ŰÒÊ:gºô33ãXMýKtéÁÌKÿÎpð1]–"zäÐ3:ˈÔhš¡Ë¥ge,᪽ ¦m8< Èʸù;T¯Œ€ ÖÞCéÚO.ÏR'uJŸ°ãJÉé”þæpóo¼&Ž6舃²R›.?ÄtJŸ -'Ò×6‘äüŸ¶ôµøÉMqÅ EË“™ŶáFÚÏ¡¸‰óT3Pãf5èJ’lKä~+tS^®ç¦ë˜Š+f*G¯3<æ¬~Í„qçæóèGž6`åî ‡üÑ̵[Œ9¥š „[ ýµøDJTuNŽ÷$ã-…)½¢„£ÛæxOr«u†C‹ró7•äÊ})g[ÌÕœÒsŽ‘TÕnVç`¡=ƒ°¸ôÞ…jÿWsJϨÄ@ÓKaRP)sbfiGáæ}ç´ô19²iL’Âîе›­;J‡XÓUØ@V‘û¶È:–g]@‘î¦xIzfÚÑ"kèI×~~$îOHWÌè>㊠fÚÒÓ2ÜüA¶-ý»pŸ´¥ï¥Ñb’ÜÛþ -Èn)˜ðÊ$Æ‘q 0Gâ<‘˜µô~ÑXʈKücû&]{Ïà&]{ùòÄÏš&¨VIµ ŒN}ĵ“зåA:â 'iéíOmyÄÍßc¤e„þ罹¡r=nJ×þmÚµ“¢‚åíQÚ5ÜüÁ¦ŒiÒ¡9±¬O‘DRGçtæšEW.^N4¼œ@ÐÔÑ-a^NFvEႚ3…ê18[Ôòß?}(³Ûõ¹•Ó½ñ÷Kb‘øi ¯3Ià8朠 ŠUt§§]{zJ׎ðñ†‚ÆÈ$„w-Ë‚#-.]®˜§+ïÓ哈B ?‰P¹¾,å×Txâöz`D††s麮3j×L«`öÂê{–ãõíB¨]3­Îg„:3î2îzÁÁ|‡j×Üé^ÃA!Nu©nq¨á?bù®sYÍ~Ço¸dõ«ª¤ùÓ»^`ÉfWU뼪ê`þ@†Ãk’‹ãPBúIYgÜ´5ûÑ{Ô1Ò¬ëFzŽ-³µXœçÂáXyV«Õb9ã§YŽ‘±Z¡#:¯ÒÑd|‡ý×@‚ŒPÀà@8  P€œ±4X°€59*p d¨rM8 ,XÀ‚ 8Jˆ€& <@(7 ,`ð€–SôŠNÉ0DAá ,h(àDsÁh0¦ÈQ €<aà8€0!‚4x HÁ 0`РlÀŸ…ÉøáDhx°0S„z¦#‚÷ŒJûIêByÀ`8Ð/‚Gð)‚GH?‚ƒq× ˜_Ã%»¤ºµ¦Y'¥}L—áBEÚ2sb×S¬ cEß–çݸ½4[ÜbVJÜаômŽOmy7ÏsÜÎoYÞ• q\P,lˆ…ZžÛ°UƒÁì,®+±Z»Y£m:—Ñ8ŒFÝ/º¦I4 z¼Í„›iEqµíFÉä&ã/™„ºk-¯=ÞP´”\ƒÅ¦üÕ!Ýtg&ËFÛBlÊk¨#ÏLòJ†]“¹»³vSÞf3›•$Â:Nu(S§öj×~¢Û;ÕÆ&S>‘¿P: ³½æ$”¢X$”Áôy—ÂÎpåí3#*ùùûËKoƒÄµûµ$WÓåwW\û¸š.ßL×z ÔU¸5n^8‹Gˆ.aJ´¾HÑ”ñ ä¾o%íÊ”«ýƒ2w†CëØTfgbI'¸Èõ)Ã’夹 Œ‰sµ­= [¾1ŠÉTá0AÕNfg8œÄÉz -ÕõäzŽ÷$äªo&lÜÖà†R”ãÖyÀÖ¾i`+7ß+Àq s -.æì,Å™{1Žg`>ñß´ÔûoœÔ4êSÒ( íßœ&EŽ”žLg±ÑRÛÉ#õ‚1ÅöÈÆ-æÆPôs•:ÛŒ=é  -În|¾%À¼2£“Êd—¤ËåüLYq‚¶ÌÆ¢ðÂýR«Üµv†H¡ñ)šKåôRu‚×\p‰zÜ~Â1ÆûÈØ‰‹Ô^øMd¹ƒY]ߘK&z"‚á°6€²¥ŠþïÂõ åÛ‚˜–ñfrBºvŽËAv¥Ý¤k—lèÔû7‹±¨Ä5æá¤ghf@Mó -Ǥ’1‰–«C6&JDV H(.”ÆâP@‰Ä‚A æ”SÛQz²Õoòp&ápñA7-|.ѽ»Hb©Dêí}¬;µÀ’š»7ùë²q¿šâ«±Ùxž0–[ç’]ft]ͦ‡tsI.õæ#±PÑ®ç®vQ Ò pëVxç‘Æ?åÙìŸ.(|óéÔΟ·¸qªkð¼FðwÝå=]Žœ‹×½ÍwAýÉ_Û½wრÓcpÌ»Y°ŠºÁà‘x³`|SÁáƒìF Á½ù^·éáv#}n7Ò¹ÝÐóþH–R²ç=› Œ`ÂçCÉK¨ïK›[Aµ Ÿ+ö½†ÍàŒ7o(ZA aL¯¸º§":{Ȳ —Ul±žàÓð¢ŸT_á|ÐCïéô ©o+Œ<Öi÷AµHb÷{(›úß«Åþ}Èæ*±ö¦{ÄGº9Q|tCȧ©/m |¯9\ÇyŒõ ¾òøèÚÈGÝ7ùH'íÞ\ѯ]ÒÕå^äÄ/üò„Ï72î”Å‘#£ ð³ƒû¸×ÅQê_¿ÿè9?|g­ŒB¨}Fuo1ú PÔ…§æŸËŽäŸv„3¨Êéïf# -p¼séý{ÐÖ\¼Ó»Q—ÑtïUÖi.â=Ûu¸äë­ñsÅ›¾JsÉ:~;ÞËWŠµË‹÷Õ ßrã÷ôw-$²ôîù½pñ^Aïj¢Añ®RÁíH‡ùˆw%ïÿÑËOYj¼SœhŠ õSuëÖ<ÏÎÉwêüúYb7Ýxpº0ÎnzÞÁiij¨zÄ‚À·ÂóÙªÂÐPt|MIkCØù>!†Ã-CÎ -ƒN½8£ƒ·sÛ4Â~ˆ=¯ÇòÞ‚ÏÓÆX@(pSb-R ‰vÖµ˜‡zC7…_&QJ¬ƒð "ãlÐQ‡piÃ6Pvž‚ZÅj%Xhifõ‰w’ŠÀ< <)È„œ†¦Œè®ìõˆÔ£¨Å* m<àüð”B%Þú-âÓc¡­8‘e»Ñ0´‰MªP[tHšAoNXj£Íî6Ónê£,Ò¨GÃm*øÕÀ•±ŠÌÃýùšt›æo´‹’Âd›™b2NAw*‚¹Rì -X”· œ4VÓ{™}8<3‡Z³{‚1Jäj=KOcö¶JÙ£hç‚©¢ÁÙF„ †¡-Ã)‹ˆ¹gÐl d_¢öx¨ù‚TÌCVQ¡Úަò.ù¨Ù„¦j¼á7î²Pj¦S>M½Í²LÉ™®ìÏÍeó€¿Ò=_¶/³„ ò’£YB -{óؼ)Î~Ðlv7EëØÁH›§D]«;hopU¸íå`6,Ï>$N-s_"A$ð(cO9ò›¢käÍ¢ŽS=hïMùîõiܵ÷åÎÊwýÎs$öŽ•ïs?MÐÊwJ·÷qŽ•#áÛ£^ß>²÷y¾càðm±w•|ïÞ¹¨ön²$k¾«±÷*ß1M@«mm á5{—’¤ïA¥P½×@Zy©bšúQ¾/zºu±÷–|ÿ9F)ˆØ;•ïŸZ¢®Ùû\³a¸²ûO¦QÜÞ>Ýó±@ 4òO^ Ç· $h`vdÎ*‡Ø ’ “pëåçîa?ˆ0ûu¡¨‹¡ü¬ J iÖÙPÍcÛ'ƒi"ÞÒ0b[°Ðkå„úŸø Ë„9Šˆ2Šˆ¾D ?)¿ ÷¹CHÜàz„ûíx„{L®›z¹À°¾ò :„ðg$þ—Å$ë 8³ã»+ÖøÂ)È¿W1ŠÇoizgz–Ò2¹"¡5Ð>™Þù/H«î•´ãOŠQE¤ëJpX‚L èÜÙ—•<† %ly_&z¢g¶ÓûS´o§Tù)—ÖŸàõ€0Íœ>& ®]G¼†Y¦КH+ùâó!L“&Éþ§©ý§z׆”ƒÃñ:zXо۹ÌNöºúV”N!ú'\C¯¼Á_Òßéó @öÈ×´¾wAß@mè×ÎL§­Üa¨MÁIáîÎоdxJlDT£‚ÄDK4Ža%[H äEœÖPS«ñ‰†Ú4MZ^êUj:z`Ùª üÆt$EîÞãAÆî{dë¡`T‚!ˆKÍ,ª½­Çî$-nÚ—+¸Z lth° CÏEˆ®ò a­é[×ÄÚþÃvªäV ñä*lÐ*˜Ù>· ìÌ ¼½È®ª±„:÷…×ÉXr4Sl“°ÅÿÆ©û»Í”òÈ8¡p=—~îpÿ§ ^jÞ†g5‰Æ,ˆhê bš¥êÑŽ÷“‘-@aôG¶MÔD{1iŸn*5q‰ÂõÕlñPðË Žú'Fl¬ñUQ ¶Ãl¬S©¬uk£¤« Æ H`ò†©ëXÆË¸Šì1yãid•Ê.|Ÿa5Î’b0Y9çø¨¬êÆ6Úâœ`Ù"#¬ÞÁ!ž‰^¬5ÚÊ‚jóø(†vörd+ûA¨ oácŒ^5DH‡âLçá8BK‹‘ÏPQáu˜Æl£[ ½òŽ•Q™!ü‰¹"6½³øgœƒI¸0V 3‚¾ƒ è«^ÜÅM2]:‰J*=]¥¹ñzhïˆz£E¸«,\ô!¬ (`ª*µ (éŸïJØU Ä°,¹Aè¥S‰°7>¢uXŒB–Ø}+HÌ3&²¾"¶(.-]`!~œx¤/. A\óšD1X¥ð‚ñe=„íPú‡{QÌ¥àQ‚ /í‚ú”ÀØúÙ ìpãJ8ã¨a©SUÄp  \µ…XÔ¶5½@s£æmÊE:$§æÓ¬Vuí>õܯãÔÆ©¿àð£wÁw',àêÀ†{ -¹Â¬{šV,‹\R³=¥; &Äz©2oʦ>Ë”ShÖs´{'b[•‚XÍyâzµ²ß‹Ÿ ötåtfvž ãW¬k|T‹VÅh˜m¯á‹„ -!¢œã7§ËNá=¢± -ú&Ç* ¶Ò’ÈïZÞŽš¶h…C•†g?jþ^€t§â¾ø÷§ÂêOtó;lR@¢§!¯[^MÛËü =j/ïq§ f¨éß;U…r³@d:ãÕòXØ›.þ‰‹™Õ’µ®b‹£4ÊÞRS8YT³i 4¾²X}µÈfóoÂmE°Ÿ!WÎ9 û©ó°]õD!b>Vo4V›pç97ŽðØ_3ôÛN—Ýwu4?ÚTE:º¹q\ »ŸDÈÔüw$ˆÊLz¦Îú*­B°þn2lÖÎû8üÍ6jèmA Õ~Rh±v -袨Ðm˜à.GJ;YÑÙ­ÄD=Kág!)Næ Ã|°Ø€\m }€ú|8]øÓÐ$RÅ¡Ðë“óý@ý™™ŸìSKçsgåfö 1*A³"¦[pœ‘±X3°l"vð7¨0E÷E ¨D°þE¢ç_âzè6¯«Ø>ŒúÖbm$TœÔ[¾ Și¼×MÑTïÐE¦x‚°ÏYÐvfI•z$ðfa~–T7Ã… ê®*T<ÑŠƒôÈ>¼¤ñ<ȱ `IåÄQX)Ÿ¶XRYbuz©“/)S¨¯`ÚTJÅ qìÁĸ/)Z®-u´ ˜ ÏÅa†sm kСÕ‹½tTS4Šw„èYÈ÷Í¢ÇÜÉŸ‹Žq?·bôN¢›û^Úæñ—pÞèðÊêó Ê?*D{ œvÌ䀕 ޶ià1±kæ…ÉÛˆGûêÊ€oÏlBØÈ2Lh`õˆJ‚³SaY§gÑZGÌ0Ž Ué€TZ.ÖÈ•xÈÂTµ»žËb¨ [Q¢â -¾†Ãf_þ¼;4'±1ª×¼ú_A% b«.r˜jE 踫:L]Ûs‹C ÁQ›@è{û¥àäø´µ-Éar«ÆÌŽái4àF%œÂöTº@p_íAóã‚Á'#Û¥A’zÿ›K¨2X7™¿ÔG#pdËE‰˜«:Qp©øK!÷ÁPòó¤d _²ì™<®F“*•ûù¤çÚÇñP É/:ž¹.û=/•g Êq`•c¹µô©|¬ñ|Ø¢“`l¤‡ÿ€zÖ­ qIðVÐ;TFµôÛYñÓŒJHÚ ¿Ã¸Š<‚s¾ŒWÑQB»Å½Œó6ì`…¯¥¬NÝ#©ò|^Ÿ6ý©kwÊn0=Zv»¤^ÂÌ­mä:p„öC^•pnf"ª O›%Nó3N$gƒ™b"‘ ¡}ÀzCT9rØF9X…C,4z‘O¿‹g" -Úk¶ 3ào¦âéI1ß›¨¥BCÔf¥‰ç…}¹ÈŇØÏªþŸ7¹- Bœ?3] V„x…EñÝ'ÑBˆ#^¾xˆ›®µ¹™gMh¨–Í ï*K¢6£:6š„•úJ2!¦ØóÊxÆü§˜¿nXÕ@[ ~œ¾tˆ½ŽÈÇv¹y"­4véù Ä j.û!N¡|ãL™—jýCì4Ñ’O·ãw+W7å˜LñV½p‡øÊþ"8%<+ùbô*ÿÀÖ,åcÅÿûj¨â´LôïB«g=âÎ8ù¦­â’¬„8Ÿ/VZå^Àk@±áp²Éeãš*%uxª¢¦Î5ÓäË¬Š£©·3’”X¾¾ï„T9ƒPn/aoyUOé|UM:4»žºä¸ü!;>Ô›þÈ.AXONxJ¥€>,Ëî¢$0„ðõ©aÓ -Üqqlg±j²r¾ <­Î¥Õ -.‹6ù{÷ -ÏŸè6—ÐÏËo”¿go1奖Á³@r×<­†Áó¯mÄ;X@‡êå´…ÿ•–e³­”y½i_•I7»÷™GY ˆ¿°²$f©þ"^x‡ò¾ë×KrN™žÁ8¯O—º$ -©Õ¬ÏÖ¿Ò\Œd¼‘¯…‘Uxûþâ®1îÿâ7€KqalÃN ûí®I -pgî_i§©ËX‘õgJ—bÎ&SYÈûâ'£7I5õºàºï :]Š5¸ö†Ðÿ@hí~ÍœP¶´¾hGáD]M3³ 9vð|‘Söš0""â•r©æ‹Tx£²½“–ϳt±Íáìù'5r¢ ›k­¶lŒ :óÙ—U­}J"«èi2ñJ5iÅ JÖ%û :ê5î×p>ø` l½Å(ÐV¯XR¶|€ó\ÕVF8¢F@ýÎà¼sàx©9¦3xÞ¾`¨Á¬¡ ìûp¨è ®Ó½HAޝn6›¤NôçªÁ±…â/º>ešçÄÕ|µ-•3X AÿƒRÈ{ô/;OFÎјãs5F¢$ød) æšÕ`ü« ߪ°6ʳF›pî×lXÈÔ\冄§¿ŸÛâ3 xÀßäò ceAM{Å> EgTéx`Eî†HŒpìß;Ñ£àqÛ9mŽ(¤5´X'h1䥃¹|“Æýÿ%ñ»pLNeŽB$h3-ÀU~|ƒÑvKÊðV}õøœÛ±ö”I@Ù`ýCÖórùÙM(Ø`¢çQsopp¤ÖdƒéÒR*OôËøµú%DF*c½ ¼a0Ó>ù,Šø¡MQÈ Ù³øOó¾6ä³Á¢8°N–ßà„ÛëC6¸ÐýrtʾVÙà¬XV2ÜK‡6¸®~‡óF€<pk®yŸ]~QæKΜ´í²¤)“Ô¶H±*|›~‘|ÖZ¨‘j:V%QblG&Ìš™Ôø¼Øƒçª¨ùSÜ‘Öá°Ñ®‡œ¸d˜ÞsÇʼž~ËÏÑåñ1*Éù½ÝvÂ&å žwOT(Çx‹g$Tžý½B\¿!Ó¤Xb~‰8ý¨àŸò33ü]*¾ì;f³q¾0µ°PEc2[Gñx©ï ÛlÚmVÓˆDþ3ôÎΛ¸&ÿ'ùˆZbZÝõ–†*á%¦M_Q%&/E3é »8Äò+Üwb -©Îf\ú‡>1Höb½"8Cê~eÉàz5&=B÷ -ëqNÆŒríùÍë±-ø3ÖÒ[ÕrÖ Þ½\úCгyŒ%3·¨êb-¥EPl4u,O[¨’.Á•è( ÿV¦°è:Š_'JÖž Q.õ¶7€¦ƒðX°°8ópŒ[@ÇC¾0Q%(€kèâƒÅÚ#À_DO+——=pˆ0V0Ý¥0@_·{¨ªŽÖ¨¬èc®ÃÓ W-¶6° äYCXE€%K[3SÀ¡LWŠ7Ÿ¼éîÀ»Ø§ËƒÓþFá#^ž«ÚUD§å©É3II|Ðxàçç=«êH"ãÖôi*Z‘™QO‰!‰¹=·˜Êwðl¶Ü:¥£èf‰§šû/ð†7ÌráuVßÂ]s*˜–¼Ý-ËÕ›„ÆàaÖq.Q’‘ÕAh=x‰ûÏ?‰üuî$”mf\'-,;š ¶Ÿ†Ê;~ùõl´K³ªa\–âó—²s»å8ê8á-:ŸÔ­,…²p»„cQ·ñÚ -,1§ÄŠ ˜M8Ì•ó;³ãÂÌ̧ӣsÅPœ­ O@¤è÷pã5ïãJXÕö™/Ü4ŽºtÎx£sÑÜÐ1ýn6=~æ´núe*@yÛDcB6É¥ô£€*¨þiÛ²9p§ÓTîjùŠ·• ‡5”2¶OÂwY º×ÝÞf €zp9nõˆoÂÇW&×°Ð̆qìÇPÎáƒÙTŽ)%s E{±¼ÃÎmšÂÞ…Ž«ÊÆ%`Î…ß ¨ãÂ)VñÜóØ6ǓװóQÒõ®èàãjVê>È‘žr$À$Uô'ï{îÏ̥欑\T NŠ9£+þuQDŒç[&ûhbjïoÊúÝz)]\8OÉÖïÄC‚«U™«í8£:ïb«jÕó½«ôªY“ƒ!ö—30Ûë”j&˜ìÄhZ¤nc7¼Å§ÌÈ×>Tµ1*Î_fyÉñ–…ËN‰npßÓÌÇF«5îB£0Ssað*kô{Á 8ªàáÛ3¬$Š+'Òèw.†5D@‘Å·–Íüä®ò3.­ÅB=õßã…8õ@-ù ø¨OQavBúR}' Ô S®ëÃéËú¢»eY¶"û±}‹­¢-!}U¢½’n±¡ék%I°WØëç' ¹#%š¹RížoÏ<°Tt¥ïAÕg ^VtL_¤/Ü•×@Bͽõó¾¶\K_;xcŠÊÇVЄg*])âJÈt†8ÚB¾j=Øçø7fÝO -²§Ó2Ukcq&¤ ¥"])˜ûÙ@Ãb¥Ð…;\H~ÌhŠ‚.W¾q]]¨=,žœûœÞØññY“;ª¯qéµêmݲ†5Îä+u/ã“I>ª·"í,39÷s¯éžq»­&G"H?祪°¹nç‘­je*KúÈŠ‰Ÿ"æ—ü,Ó«7‘Ù;ªžì2ß³Õ§ë,ÒH |n–÷í'«„GÍ“¤!«G ÝÐfÌ ¦%WZÔñtúr6$[ÛwŇ „è­ hÒ¸ŽûUûI;|ƒÁó 6¤~ ‚cjH‰f=µÈ×Í‘;‡P9si*Ú.æ´Æ–$,Šõö|q«×Ѫ0óPñ˜“+Ïo®•[IÅ6Ľn!H2&EË3ˆáçÍEå¶‹?›’<¿·©3¡.3•ôctq²xPHmÚ!aâ®oSH`Lg¿6±@^(R߽蒒2Š"ÇI›šj³£šÝ¸±ÀÒ5}l´ÓÙƒ(jë¡__´éä–< KM6n÷@ñ3âjNp ²©ogp½1×'6™RM3wg¯/!«=p £¾^Èõ5ù™éŒy}}Gµœ¡B}Q`×7ùIÜVV‚ëû×ÎòÓM§c;ëÛæ߇§Êð÷šN0ÓJ†}¿0¸lÀWÁÁ|ñ‡O¾Iëü© ÷à`;põ3b©pâp ¸ÔÂq*ƒcýe+­¿( -rY:åRñvˆ‚&8ºoË%cP6&*–‹ço ´Mèàп›$ŽÅÊ7$^õƒC7„¿QHµX|1  ®‹k´åš‹º¬˜™àžÁDq­]ÔeÇå•ׯ×ì-è~Ãä" ªÓŒŽÔ*µ'Å¢ÑËS·Tÿ¬†+bMíWÃÚÈ<È¢È*> endobj xref -0 52 -0000000004 65535 f -0000000016 00000 n -0000000147 00000 n -0000035360 00000 n -0000000000 00000 f -0000035411 00000 n -0000000000 00000 f -0000000000 00000 f -0000042389 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000042462 00000 n -0000042658 00000 n -0000043891 00000 n -0000109480 00000 n -0000175069 00000 n -0000000000 00000 f -0000041965 00000 n -0000205435 00000 n -0000035834 00000 n -0000036036 00000 n -0000038050 00000 n -0000042152 00000 n -0000042276 00000 n -0000036834 00000 n -0000036098 00000 n -0000205400 00000 n -0000036272 00000 n -0000036320 00000 n -0000037125 00000 n -0000037481 00000 n -0000040789 00000 n -0000037188 00000 n -0000037524 00000 n -0000038085 00000 n -0000038140 00000 n -0000040903 00000 n -0000040966 00000 n -0000040996 00000 n -0000041254 00000 n -0000041853 00000 n -0000041327 00000 n -0000042036 00000 n -0000042067 00000 n -0000205460 00000 n -trailer -<<6D46D8B536AE614289D835E82D33157B>]>> -startxref -205649 -%%EOF diff --git a/images/elements/ai/line_short.ai b/images/elements/ai/line_short.ai deleted file mode 100644 index 67717b3..0000000 --- a/images/elements/ai/line_short.ai +++ /dev/null @@ -1,1447 +0,0 @@ -%PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - line - - - Adobe Illustrator 25.2 (Windows) - 2021-06-02T18:52:49-04:00 - 2021-06-02T18:52:50-04:00 - 2021-06-02T18:52:50-04:00 - - - - 256 - 24 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAGAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9Ka95ksdESFrpJXE5YJ6 QU040rXky+OV5Mohzc3R6GeoJESNu9J/+VmaF/yz3X/AR/8AVTKvzUfNz/5Azd8ft/U7/lZmhf8A LPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf 8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVM fzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUf Nf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5A zd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8f t/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7 /lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZm hf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8A LPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf 8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVM fzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUfNf5Azd8ft/U7/lZmhf8ALPdf8BH/ANVMfzUf Nf5Azd8ft/UmGiectM1i7a2to5kdEMhMqoBQEL+yzb/Fk4ZxI0HF1fZeTBHikYkXW1/qTwMCNsud alHmPy3ba3HCs8rx+gWK+nTflTrUHwyrLiE3O0OvlpyTEA33pAfy206v+9M//Cf0yj8sHZfy9k/m x+13/Kt9O/5aJ/8AhP6YPywX+Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/ AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfz Y/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn82P2u/5Vvp3/AC0T /wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn 82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAt E/8Awn9MfywX+Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7 J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8A LRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5 eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX+Xsn82P2u/5Vvp3/ AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d/wAtE/8Awn9MfywX +Xsn82P2u/5Vvp3/AC0T/wDCf0x/LBf5eyfzY/a7/lW+nf8ALRP/AMJ/TH8sF/l7J/Nj9rv+Vb6d /wAtE/8Awn9MfywX+Xsn82P2phoflC20i7a5glkkd0MZD8aUJDdgP5csx4eE24ms7TlnhwyAG9sk iBC75kB1ZX4UOoMVdQYq6gxV1BirqDFXUGKuoMVdQYq6gxV1BirqDFXUGKuoMVdQYq6gxV1BirqD FXUGKuoMVdQYq6gxV1BirqDFXUGKuoMVdQYq6gxV1BirqDFXUGKuxV//2Q== - - - - proof:pdf - uuid:65E6390686CF11DBA6E2D887CEACB407 - xmp.did:4dde2ac8-f8f9-df49-be5f-86a697879804 - uuid:977b090f-124e-4650-b8e8-7ff4b2824aaf - - uuid:aa1df131-7923-4167-a097-93ea7f930204 - xmp.did:3e405b58-9478-2948-be8e-e8b65ff81f1e - uuid:65E6390686CF11DBA6E2D887CEACB407 - default - - - - - saved - xmp.iid:3e405b58-9478-2948-be8e-e8b65ff81f1e - 2021-06-01T13:28:44-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - saved - xmp.iid:4dde2ac8-f8f9-df49-be5f-86a697879804 - 2021-06-01T17:17:45-04:00 - Adobe Illustrator 25.2 (Windows) - / - - - - Web - Document - AIRobin - 1 - True - False - - 284.000000 - 66.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 0 - 0 - 0 - - - RGB Red - RGB - PROCESS - 255 - 0 - 0 - - - RGB Yellow - RGB - PROCESS - 255 - 255 - 0 - - - RGB Green - RGB - PROCESS - 0 - 255 - 0 - - - RGB Cyan - RGB - PROCESS - 0 - 255 - 255 - - - RGB Blue - RGB - PROCESS - 0 - 0 - 255 - - - RGB Magenta - RGB - PROCESS - 255 - 0 - 255 - - - R=193 G=39 B=45 - RGB - PROCESS - 193 - 39 - 45 - - - R=237 G=28 B=36 - RGB - PROCESS - 237 - 28 - 36 - - - R=241 G=90 B=36 - RGB - PROCESS - 241 - 90 - 36 - - - R=247 G=147 B=30 - RGB - PROCESS - 247 - 147 - 30 - - - R=251 G=176 B=59 - RGB - PROCESS - 251 - 176 - 59 - - - R=252 G=238 B=33 - RGB - PROCESS - 252 - 238 - 33 - - - R=217 G=224 B=33 - RGB - PROCESS - 217 - 224 - 33 - - - R=140 G=198 B=63 - RGB - PROCESS - 140 - 198 - 63 - - - R=57 G=181 B=74 - RGB - PROCESS - 57 - 181 - 74 - - - R=0 G=146 B=69 - RGB - PROCESS - 0 - 146 - 69 - - - R=0 G=104 B=55 - RGB - PROCESS - 0 - 104 - 55 - - - R=34 G=181 B=115 - RGB - PROCESS - 34 - 181 - 115 - - - R=0 G=169 B=157 - RGB - PROCESS - 0 - 169 - 157 - - - R=41 G=171 B=226 - RGB - PROCESS - 41 - 171 - 226 - - - R=0 G=113 B=188 - RGB - PROCESS - 0 - 113 - 188 - - - R=46 G=49 B=146 - RGB - PROCESS - 46 - 49 - 146 - - - R=27 G=20 B=100 - RGB - PROCESS - 27 - 20 - 100 - - - R=102 G=45 B=145 - RGB - PROCESS - 102 - 45 - 145 - - - R=147 G=39 B=143 - RGB - PROCESS - 147 - 39 - 143 - - - R=158 G=0 B=93 - RGB - PROCESS - 158 - 0 - 93 - - - R=212 G=20 B=90 - RGB - PROCESS - 212 - 20 - 90 - - - R=237 G=30 B=121 - RGB - PROCESS - 237 - 30 - 121 - - - R=199 G=178 B=153 - RGB - PROCESS - 199 - 178 - 153 - - - R=153 G=134 B=117 - RGB - PROCESS - 153 - 134 - 117 - - - R=115 G=99 B=87 - RGB - PROCESS - 115 - 99 - 87 - - - R=83 G=71 B=65 - RGB - PROCESS - 83 - 71 - 65 - - - R=198 G=156 B=109 - RGB - PROCESS - 198 - 156 - 109 - - - R=166 G=124 B=82 - RGB - PROCESS - 166 - 124 - 82 - - - R=140 G=98 B=57 - RGB - PROCESS - 140 - 98 - 57 - - - R=117 G=76 B=36 - RGB - PROCESS - 117 - 76 - 36 - - - R=96 G=56 B=19 - RGB - PROCESS - 96 - 56 - 19 - - - R=66 G=33 B=11 - RGB - PROCESS - 66 - 33 - 11 - - - - - - Grays - 1 - - - - R=0 G=0 B=0 - RGB - PROCESS - 0 - 0 - 0 - - - R=26 G=26 B=26 - RGB - PROCESS - 26 - 26 - 26 - - - R=51 G=51 B=51 - RGB - PROCESS - 51 - 51 - 51 - - - R=77 G=77 B=77 - RGB - PROCESS - 77 - 77 - 77 - - - R=102 G=102 B=102 - RGB - PROCESS - 102 - 102 - 102 - - - R=128 G=128 B=128 - RGB - PROCESS - 128 - 128 - 128 - - - R=153 G=153 B=153 - RGB - PROCESS - 153 - 153 - 153 - - - R=179 G=179 B=179 - RGB - PROCESS - 179 - 179 - 179 - - - R=204 G=204 B=204 - RGB - PROCESS - 204 - 204 - 204 - - - R=230 G=230 B=230 - RGB - PROCESS - 230 - 230 - 230 - - - R=242 G=242 B=242 - RGB - PROCESS - 242 - 242 - 242 - - - - - - Web Color Group - 1 - - - - R=63 G=169 B=245 - RGB - PROCESS - 63 - 169 - 245 - - - R=122 G=201 B=67 - RGB - PROCESS - 122 - 201 - 67 - - - R=255 G=147 B=30 - RGB - PROCESS - 255 - 147 - 30 - - - R=255 G=29 B=37 - RGB - PROCESS - 255 - 29 - 37 - - - R=255 G=123 B=172 - RGB - PROCESS - 255 - 123 - 172 - - - R=189 G=204 B=212 - RGB - PROCESS - 189 - 204 - 212 - - - - - - - Adobe PDF library 15.00 - - - - - - - - - - - - - - - - - - - - - - - - - -endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/Thumb 32 0 R/TrimBox[0.0 0.0 284.0 66.0]/Type/Page>> endobj 26 0 obj <>stream -H‰,ŽÁ -1 DïùŠù·éÚ{5ëzq©àˆx±Êêaß)ÈÀ„¼0CÜÉà&SlƒÌ¢H ý&`Åù¹Ë/R·/ŠÇ—×ËÁU1¼åL9#·írNôÃßQì( ZÖ·ì ¥G®Š§Öî&þò`ê…ö -endstream endobj 27 0 obj <> endobj 32 0 obj <>stream -8;Xp,I?9"I-ZMG`3WgM?!'V^n@K~> -endstream endobj 34 0 obj [/Indexed/DeviceRGB 255 35 0 R] endobj 35 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 31 0 obj <>/ExtGState<>/ProcSet[/PDF/ImageC/ImageI]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -208 0 0 17 41 22 cm -/Im0 Do -Q - -endstream endobj 36 0 obj <> endobj 39 0 obj <>stream -H‰ì×É 1ì¿iP˜Œ[y`ÃÈÒì0ÎUÆY ê’ûžÞ}Oï8òö)².Ò÷Éý¦ù†  -endstream endobj 37 0 obj [/Indexed 28 0 R 1 41 0 R] endobj 40 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 205/Name/X/Subtype/Image/Type/XObject/Width 208>>stream -H‰b`†€‘‘ièFF˜o˜˜YÙ98‡6à`gefûˆ‘™K@D\Rj(Iq.6f‡˜ØxÄ”tŒÌÌ-†.073ÒQãacE—˜šod|RòÐIñ‘¾6jb\ÀbdP²‰«èž:sÖÐ3§vWÄÙ( °ýÃ.¬åU2eõ޽û†.Ø»cõ”/-avF&vQ]ÿšùÛŽœ:=tÁ©#Ûæ×øëŠ²3 »øvùg˜•oíþvíƒáÖ~víëa ”ŸÕQ -endstream endobj 28 0 obj [/ICCBased 42 0 R] endobj 41 0 obj <>stream -ÿÿÿÇ‚; -endstream endobj 42 0 obj <>stream -H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  - 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ -V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= -€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð -¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû -endstream endobj 38 0 obj <> endobj 43 0 obj <> endobj 44 0 obj [0.0 0.0 0.0] endobj 45 0 obj <>/ProcSet[/PDF/ImageB]/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -208 0 0 17 41 22 cm -/Im0 Do -Q - -endstream endobj 46 0 obj <> endobj 48 0 obj <>/Filter/FlateDecode/Height 17/Intent/RelativeColorimetric/Length 205/Name/X/Subtype/Image/Type/XObject/Width 208>>stream -H‰b`†€‘‘ièFF˜o˜˜YÙ98‡6à`gefûˆ‘™K@D\Rj(Iq.6f‡˜ØxÄ”tŒÌÌ-†.073ÒQãacE—˜šod|RòÐIñ‘¾6jb\ÀbdP²‰«èž:sÖÐ3§vWÄÙ( °ýÃ.¬åU2eõ޽û†.Ø»cõ”/-avF&vQ]ÿšùÛŽœ:=tÁ©#Ûæ×øëŠ²3 »øvùg˜•oíþvíƒáÖ~víëa ”ŸÕQ -endstream endobj 47 0 obj <> endobj 24 0 obj <> endobj 49 0 obj [/View/Design] endobj 50 0 obj <>>> endobj 29 0 obj <> endobj 30 0 obj <> endobj 8 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream -%!PS-Adobe-3.0 -%%Creator: Adobe Illustrator(R) 24.0 -%%AI8_CreatorVersion: 25.2.3 -%%For: (N8 Dev) () -%%Title: (line.ai) -%%CreationDate: 6/2/2021 6:52 PM -%%Canvassize: 16383 -%%BoundingBox: 859 -551 1067 -534 -%%HiResBoundingBox: 859 -551 1067 -534 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%AI5_FileFormat 14.0 -%AI12_BuildNumber: 259 -%AI3_ColorUsage: Color -%AI7_ImageSettings: 0 -%%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: 818 -573 1102 -507 -%AI3_TemplateBox: 960.5 -540.5 960.5 -540.5 -%AI3_TileBox: 572.519999504089 -837.480000495911 1347.47998046875 -242.52001953125 -%AI3_DocumentPreview: None -%AI5_ArtSize: 14400 14400 -%AI5_RulerUnits: 6 -%AI24_LargeCanvasScale: 1 -%AI9_ColorModel: 1 -%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 -%AI5_TargetResolution: 800 -%AI5_NumLayers: 1 -%AI9_OpenToView: 783 -436 3.90277777777778 2455 1868 18 0 0 111 288 0 0 0 1 1 0 1 1 0 1 -%AI5_OpenViewLayers: 7 -%%PageOrigin:560 -840 -%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 -%AI9_Flatten: 1 -%AI12_CMSettings: 00.MS -%%EndComments - -endstream endobj 20 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX‘ó…‰ )И&Ãri-™Ï–l­l›¶­‹M~.ÊED¤t5%i¹çù« > j .]°F³¨L¯³<jJÕxuL¿låWC'§a—½ôL#ùÙ4žwYºÕ ü<^%9,æ ½ -I -k#Abµ7™ôÈÛ$=rnBÄÊѨ$üùG8rû,T£®ˆ¾‹*——‰òè™J¿èJØÆÝ}ô‘X6Œ¤W̆e};I2=ªwA·,_x'½Çç'·Aw*?-qHÒ†™¹êÛÑHK80 ]g“/Äÿêæl+K“aZš:†e¡ÀbôJ€ p@$à‚°À0€€ F‚ (.¸À  $HP`ô‚,ÐÀA &4@XLÐ q€ p@Dˆ@Æ8 2@„`Ì<0$0¦C££cÆXÀ1$F]€*à@âU¶Õ-rõ°<¢¤›>RåAw%‰£èˆ8Ø``À@9 £…"ñÃBáÄ †Z EBñBaAá€X\á€@L€@‚  Ýß*Ê»ñKÆÂ´™¢1=4w_74¤ôïg¿™õ332ã½Çx®{b."¢ùdzS.ÝE‹tá€ÀI3*Úm†R˜}kP ýú_ý]¯4bTÍëàÝ)›_>i ­R8Œœ’ˆ•FgSsg“XäÒdݼ0U\H *X§0E)¼X$é?ç€H<+º«<ÃBUá‰gäÉâ7X®;_P+‘X°º< ÆÐºß{@(\é¬<†%®TvO(@a±0‡MÔdÄá!æÎd -N£‚¥™ÂXÁ@S_í 6ç«;…[¸Á ™è>yeĹ \xåT‚¹ YPøÕá.ˆ+Ò|Vx¢ -7YE2©ù)â8o2±Cˆ¦™ZUº–Y5™Aµ/kZå™ClÏÌr¨t†E­ºþj‡½ŽÝ •ÝÝÊñ•5c‡A¡°¸â -‹‚ʾ8 jÄ™¶X$ê -…B¡§˜[Ð b°Ãqe†ÅF³ ”tD; Ž]$Î -< JîVÀ„5q@`âeͲÐU: Œj!Ñ< ˆ'gE> x"ÁÄ‘¸¢Ñ÷ij¢¢ Ь9 „¯·0…¥¥mlá€HäЂNø -UTImcÆffˆ ˆäéYùSé¬Ë£w-3è,«[,’‚!‘EÅp@ˆ…¢ŠÁ´´; ÈœP O¡FaÄ:F0Bð "d n“I;ÿòi>šçXzဘTv@|±Àp@\.ˆšŠ®îŠÚQ³ùðŠÂðw]q@,pì€`8  ªÂˆ|bñb±0õQv˜„B¢t@Ø‹:Ì' †SoÑ00Š< -+< Å?/žþ0¤¹ÉHBZœâiÄ` é±…Z(…J¯,—nÄ-> ˆÄñÃâ€P$޽……‚âx@˜) -ˆ³"-$ð€¸:Z‘Zb©Áƒ 2@Á˜É/3<2×3™/ëI6Fyå¿r²×B9ë½#3èd†Ømyww’e†ýÊgid§Â¼šÜe%yÎö¿ø’4¶§[YÇKqRÉo2ã4Dt…Ÿ«:vdÆÕ;cDcTEh7š+š4Ξ Ñw—9 < 8 ‹éAe—O(ˆ1]¡&;<  %SÜqÅØWSSÙ刄Ba±Ðâ€8 ,oq@Ð%È0q@((Š…á•7mAa‘HX¬u†…BaŠê‘H«‹ -é.~@|la‹< ά|e Äp@,ô3/( ÙS°1à6¸p -—¸ÓùæÒÎJQ‰.Ž˜Â‚¹‹Å,Òª‰DZ‚M0œá ‰cÈÅ++Í€ -_8) ÆŒb,0ÁÆ‘\éãw2DÉmÖéJGc¢‘ ‹Ô;ñ˜q@ HРBaa¡8 6Pøò£¥PŽ¥ ?c¶Ì(V™‘J•8Gƒ&ºlï'%βjYþ‰2­òFI#„f™q2ã4Gß,‹½JÌÌŸ;¶GfÔœYÎ|]8eCâüX¡/ÏêÊŒL,”vØÖmäLk™½F„åzeFÝÙÕç¯re'Í16n˜l ¸ Ä`ø˜B8p°drܘáÑ9 <°°8 ÐDb!ñD†.(,µ XPP((ŠÄD¢â§0E)Ê -ÏÂy‰K%œhâ€(Ãâ -WHäñW§~RñÌ‚’ÒÙ\P`‰hXXH ·8…xwvuu´ ¸¥YÙj£(E%êWVD•Ë -¤ EÄ‘H—a±X((O< j¡8 O†bá€X -Š"ñ< ðì€`XX(O\8 °ˆ2,((ò€P…Eˆj]ËÇ@DTTttHII§Ó¡ )S ÔjQQUV"±X¨‘ÑQVvv–† S°Åƒµ,/¡8†¢…§X3¹È…yˆTT•VåKʽžÎr:¯{*¥ã†ªJréb …v#©ßÙ°&±#±t½ÓdJ¯Êl|ã{+c÷3É¢)ûÕ.ÍRMshæÎa}¤æ>¥WªÌ´û _XeóP]ÕýW™7Ve]éÐv´¼Ü‹¬&Öpý«^c(X[-W;­~ä*»Q iÒWϬ»Þ•)5º‘Õî*mƒÍµòž.^"‘™æÏ:Y®“e¶tœü´®lmÞ]M*³|–µ¢‡d|™Ò“îËΖ³Y··b†5¿Ä"£ÃÂiÙ~–Ýk}Ú[£Smʳö}dc4#«šü`ýY<"Ûž)Í%™·½l]ÏyK»]QaÇn¦ÐòrîÊŽˆc®šï{¦Y–_ø;;cINN_,DÓÕ©Wø¼‘UÕùÁJÉ–G,‡ ¶þ‰s¤oOj͇ 8è»ÌT«*ëyà 5›T¯l‰mD3"«ªîêrjãÝÐåœLwsv8…evx®[õrvÃ0ü?w;)‡*§NÆÎ•ùèdô*‘ÔÕŽîßÒÚ‘ì$¯æqøòÙDz5+wm°ˆ?,œüœùŠê¥I¼Ò­×Q#Ī#õ$[IëèYk&çNÅŠYÖ½æÈz—õ![h*ç~ýÑæt{¯Â4ó5My8¾´+Ûþô'‡ÈÌãzýìNwDÊ4¤Cª±2{«²n¤]»SÕP­+‹xvFu­9uwu—f©ÚlÊÆf½êdßîj²zÇš}CõD#1ÛwÇ7vD¤K+]¯²uòð!MaVïz‹³Ów—S×ÍW¹ýOöwz_¼7VÝ­>™ªÕãºV^]Ò½ZCn5ñltÂK<<“YÚLV…“ÿ}J)Ù¾E&cßϥ̬Ìà–6yÏ÷zS(ETfÊ¢›Z™ø‡“ò[þ|(8½ž,Ë}ÒÞóY¹{çéîuGˆšå³R‡îXV¹ê!]ÕkOÜDbKí†ü‰ê®” =9SHv:Éx·3³']HXž"ÃS]g¿$›üñxÒX9þ¯¬¬6ß©.ɲïÕPþ ÞÑNA÷Ê -ï6”’®Q«xG:ê½°§RRùzEzo¬ãŠÐîŽYSø2ìMž‘ÝΤ™åÔå•Ó³Ž¿æ4ŽÝËf’¨Šäò®sö›æ½²,çjÝžgivyðÙ¼º”×V*ï{Ú&WÆç}2í¨2Ë»›ÇRê8•iöÊö«d¶öRGúMkï™ ½Wud’{ÍðþzÉFò-–ÆN¿“{:c9ø™“X[ƒØ†4òÙhÊè°>gúØá›~ž%Þåê–:±^SÖ•<=ªÙS—'¼»ã7Ï£'6ååž™לògŽãÔC*¼££ŸRóäÀ±’gÕˆ?2Ó5½È¤>zd:¾$„{2_D³Ú–é¦Ç+uÉWp:οJË܇W˜gƒEïJŠMª³ç©ÄX; a/gæì4؆ñmðÓ–\[i[žÊ~/7ëž÷²¥ØÍÀl¯¼SKV5û ™ ö­#»sL(›X's–Ìe§Ë‘f%†}e!â1Ï­ïÑYuîÞÚRTÊ‘ºÅ¶fÉãäI_ -&þJæG$~K)ö"¹;/åþÉBO_èõN’ÉLl6>“R>­óyo%ŠÝ[ìQšþÝò&u?C4øf•`KVúXû<Ö‡¿û~òÖ^•y4 ¹Xså•{[̽":ïWhb®~ð†òe³{_£UÝJ¢;R]ªŠwnÝ©fÄUÛ”ðh5Õ=M–VÓŒîd³Tõ†d‚U¬ŠYF‰ö»¹ÜÙ>âÛ™PC^i*‹egƳ»CRì0¼“¬q¼óv¤½‚5Ib5Îö´BªÚÏeñÛÚÍÒBÃYiãiŠr𬼓¼1Ø| _ûÈM‡]šÇž3—{Ÿh)vëák›Ä«œ×®,ž|%¥‹\œÛç:âëù¿´cöSN{iHìzEcs"Úñ:èLÎäþÓB;ešäµa>jµ‘=+/”X&éÇ›Hµ÷WâwRüAãÄ× %ßa/”úpд¦þ²'3窯nÓ‹K'2þÈòjêXŽäx8iè*ϯã8eÆ7~ëlÇåÑÆìF~«syµÝS$Ï“•óš-»Iš5>‹mÞÆÌNwå°£ïMñ®Ù¹F’_¦'ó~d9x¯Þ2gCdwL2YšÊP -[›<;^^Ñ8¦ ]GÞ9é¨:,›»í~ˆF;1B²ñnU(·‰‰ÄÆz§#‰­ÃÊ΄·ìÀñ\Ú‹0…®þcQÚé˜R×Ó%Ú]ÇùNòÎF4>¦:ëMå×V•ÊÞ«”É&Z_wš¥ãa3&fƒÌïÕí~q /¿‘eÖ±ÄãQÆf±c·* ¾£2G-›¿‘ÈŽF“ʺ#‚ÞF>ŽOÁ†ü­Å]¥Úþ.Mb­a ϰT|eV²h1;{‘¼'HŒ^õ’8Ðpdš“VŸ¬IÕÚÄZÛ -Öƒ¦R9Ð=V½¨ì­‹)Ǥ9_U7”× £¯”³qg¬Ö;yv#e.AMmÊu̼ =jï™]·D“´G+oÆ-1ùÌ•D­Sk1yщ?Ú&“ûH*9Yìƒ&U7÷’c©Ë_±.®Ÿ£ÓÖ³n§#ÍQª™¬_9ÅÆ£ð–ß0Õ*ë5©ñ0¥6ü´Y½È'VÛÌHÙ°MÕ­^Bv¥ÌçëVγÉ&Þ`V挽,³5D3ƒ²(m 4ãÑ}nu¯»ÊT©$­ÖîÔ½ÐJ\4©¤Kq#D¤{1I¨Úð<±|¦äsÏxëUr:Š•7f7×úNõ,ÙîtŸ uøî͵Åex'º’tºIÆ[šäÓŽþžv”-Ërj¯î°:Ü<¡®Í½›’„¬ãÒ$sõÄá¶å;ÙQ²p.½çàÌ]âÐ ™çžvŸ[/GlÀ¸‰ Bð`‚ƒ'x` 6p@D áœ@‚ 8À8 à€È^%-[ÜPu5®’ççñ¯zb¥BôŒ?“+ ̹Ž«K|Ÿe,•‘6·!É’“NÈÆÝK¬ÞlÑkÊdÎF‰žxŸ­ˆJô÷–™éÙüMŽÌe€6ò•cº[)yAÃ0ÙÚÀ<©iô®ä´q˜!öL#ÉŠ*±÷Õb¦qøÌq~Ÿ9'/Ù$—£N¢¶4N—Êa•HþåO:4hj’7úÛ°ŒM”»qλ?5’D´ŸÔbgˆN®Ó²äp$UÑë\AC"Ég?L:M’¸<Î¥nÝ5õ™¦y¼d9U¯RJ‰òÄj¤pªÈ£g’4ntw%GTT1Ÿ¹ËéIX2åauRg¶§þ2…ÖÚSwÑÉ‘¡Lõh¦~w$Ht²I ¬^ž>i#I—µJ 0Ž}“ª:v¥Ñw!óÀª4éÈzö•{ÑL7êåîÊby?Óé-¹óð¤Qì\OtC4i‰Ñ¨$’ÖHª­èx¯Ü< -Ëäjþ\ôô+sI¬á±ÑÏœBÅgú¤Ú¹*Ÿw ë3.~îª%ÖmˆyÕ›åàëZ~~)Öñ žœ/oðg8sv‡eY4h7xkÖ…ªrð–Ø ŸóßkM«ŽÑ)ä¬ VunwO›¤JÙCx÷æOJ2”ÅVšá´ÅZâÝ ±¤4Ø4l •ÕØª¹±”°u÷R¢Ìظ~Y#CF®´©n -ïöís˾«IõÞœh—XÉ…ÖK²³ÖoÒÔS‘œ¼—ÖLÑea©:õ¢Ÿ;Iê^ºŒXx…3u*ž¤Ë-×ðl¨0ï5„B~OtKµxJòñNfÅ͉Ç>µwƒbU3¼«$mû99I4I§»Åèrlh&ÉÊ„„7±£áIºŽô¬XÕwvÉ -ç°L¿£OèCÛ*ÑM4z™¯Ø¢£*é#T$":WÃkh7U -ZÌí ;“wE57_Mj´s6wX9Ìž=ˆpcÎÐéfÌÉ¡ä\-XÆ^\øÉCi§†óãÁ»|ÁDC™2i»ÉUí/»ºúކ<½¤K¡Ãªå•›52ýÉÃJ{Îz/Ã’ôùv-Ig^"I:Ï=ÞÓXöÿžF”|ÍÉUêFÑÍσðhE3L”ªQ–÷£aý§mÕŸÃW ëÜ=ü;Dˆ3ƒ’-¥Ñ Ý«­i±úú´>–1G¦õN’3ø»Tody÷˜]NÑ¥¦iGG·ërwÃ|j]ëªn¾µKºfkw;Ž$Õ^ùCkֲDZK¬V]R;6&±wÎò0²÷Æ\ÒoeŸã;þ¦&{¿|¥iãWõk¨Ó“º5e´Î”ùi7ÝÄ6òóo¼„™7®È2S|.Ê4_ÞÈ‹ÏiyIûÑŸFyK³)½niÏÎÇÆç«K#)¢£qåÁ´Ïaù¯œn>×pS®6IãXMˆF™g^·ó­ijÍ·Ó¤ùÖר¡ìɆ>R««+åQ¥£Û\ÊyPÍxîte‚£%¼^нî½T1£©êÙZg•I“S)Iu˜ë•VD2.¢ØUê[=Òª,+uÔ)K+ª¬eÙ¤öÝ÷UZ–Ô£>çÐÓ¥pâŽ'•‰Ñš%Cµ¶tWõ:)Rïˆùa–ò*1¤NÍ\”ä;Ö\²JG­Ðõ>M¡¾õ…ö½ŠH^Itsö}z’÷fŽêVRœ94&ϤݙÞȨ÷–sÑBYçƒ'¾QªL;]ÿ£9šï‡r5zy‰(wGÃük°n ¯W#]³+xÁEˆMªÙ0a í…WI»à›]ŠñFŒƒžvT®úVB¡ãÓñØ™ÍLLÂ˦u¬ -ÝÈöè¹^3ñh¡u_bÝxJèÆ/Ç–âpÕ5í² ö=ŽœãX½Cv­«Ž»ñ±Žf•££+sÆ3„¿bÒ•Ï¥üFëù´O±>ãç`¯J>¥Êà8•|NÇÓlN(éŽp:c·3›Ã¬ª¦†$q\ ¥å -Åò ÅHËÊzVb5œ–Õ™ÎižDº9ˆƒtæû-ÉäÆ-›?òVûüv„%÷aUƒcïQÅ^õâXçŽ\õ²¡Ü›%rkf™¼M½?ãªeÆUÁóTÖZO?¬W-KVžàÇÕM’¾3(siË"ÑXÙn5–Lœ<Ùá˜Ù0mf2³J -fm3¾~(9s¶¬åíõ—`‘od”œ;“ sðl§åoV²×*«ŠšeÓ²›ð¤yFÛQc%—ÜL™¶ÆÛScxgŪÒà9ÑÍNºÒfНUÏ•±~hgø™±´3éïšËtœ=D™©+)ÖOY'Óúvš+©á?ÍÞîdÌš'ElQmiÇ{+mÆ)OÚ!Q «6G»M'÷D§ -¥¿•姪&ugòË{}’ìjî.OêÙòmá}UâéÕWfâi §ðµžx{¯¦Ií(§NGØ›©:Ã’Ôš½:tÙ˜ØûØ™>êzì½vñçn¶ËY¾j½Ìçе‚e¡fù²ˆìX;¤ú}EA*¡ÎËÏ ѽ(M°Ê‘4æüÙ‰rql÷1£ UŽãž4%¹imKOaà\,*£åw+¦Åp”ï8i±Šá8š¥ÕêèíÙˆQ0ÓΨåÊiÎaMNÞz.Ã,:f/ï”Ū̚³¼½¹g>ÅEA³ ]J#E•#º§\_<Á¢O’dÜÐú„°b´gP#x ½Þö“N1 [_/-±4(Î,CKb -a•TÕ‘ML”2>Êg†jR£Ì»e™Ü¤Îw#a -Þm.=-‰·‹d2‰ÒDq6ŒÌ%§½û™æ†ð6urS¼¾ -o…—™âɱðJ%yç‘ÛÕ\ªQ¬L°î»Üì—Ø¥“dPé(„„–fPŽ\¦4-EÐp8N³‘eÜ€FöêQÈ'²J,aÉŽt$Fõ»¼¼áK²¬ò—t¹¬y¦ÎNOcY–¹ašƒGF§Ÿõ÷ög¯™ÉP ÏŽ‰&Ïü>5–hÇ:冓¬iO¬kÈ›ò‹˜÷^OÈ5goDS“wÎLßki¿¿R'èN""‹ìFÜPrMVVSj:*;IÞÕi\~±äGWfþ}´= [2dº–<7™MŠ|X)³É³ëüU¡¬*qÚ”)i÷]½hFæãö;“tPÆÐ¤”xsÄ’k8,ÓÐ1çЋìxÌ -å8ôØÓÊ•²XŽ*;Ɔ÷r™äÈû`G°áfå·WIµ#U‰ï£Þ‰ÌB™”w«Á¯bë­Q†ìDëÐ¥ÔºÏ+§\“§îã“Ø’hÚ -ÕHVÿŽsÙ`³+X•úº7]rÕ¦¯i.Ê}ö{‘ :§~/~0ïÊYm@{ò(óÑ:½ö7àç:¾±f§zyD—Vwþ¡ÛK6§¶ÛѬ/‹­yV¯Îˆ¹¨!­Ur }Ù4v£§&%RfŠ‘²yC«XCɦÈÏ$Û¯ç5ÉCgÄ‹=“vgÕ³oBfÇ9’† 28·Ê¦5em Û=‚Y§™Ø9P(ÛPV"¤£X84‚¿÷Hæ¤*'ݪ%TμrÖŽðV3gt›/e¾ÍÑóS!sCZ­®´oÓ\ëFW)™ÈÍK’ç’ÊfÓ™9‹ÌFgþœIÊ|CÂò©~'/Ondé™j2Òš0ÓM#Ó#…v%gz#óëRR•_S"—붃nkô]±7MrÎí5^zõœÆV¿"«m7VRu&"•í†ÄçëÄjCyò6”ÓØrYÕÔí -ÅèŒ.“¬#–$ËÃy5»WÇä¨Z‡w÷#éßè“EBæÂ±²IÏY®Á’®žD×õoè·µÂ:lwIŸª·†¤ž³ªª-oÌ^šŸ²^Ÿ¥Æ'iíÁ]™‘œ]«k‘í)EÎüÔ'oBd<,·Žƒ&&·c.´ïhUw“äµá”Ù ŽÇö2Ÿ<‹cS5¿ (6Ɔšs©bö¡ëŒõù¤=¨¯è:£¹ŸLXFɱÖÓYR:SŽ3Í øA×].ù;5”Nç9e/ú’éDŸ•°ì-ºIÖ]úòE¦´Â×fˆ‡—äü_±vî¦ÕÚSíô–øCÿ)3ñ3“²YןIƒótµÏòäñî¬$$Cl‹x¯j퇇.{xht}¬Á›.åZ•U“v3ê|ÌAÙš9Ò¼nV(Û¼ã¢Í  æd)w|ÙT|má§HbñòDçyÆèc×î»æºþeºG ýPè=¶5ªõ¦š ³6,ÊñùÙÛ#»k.sæŒÒg”+Ú0síµy}d«–L–5²ª,ÃÚY‰h»³„£ügÝë=Çh¯Ÿ¤i¯¿Mûsü¯uÈþ ßûk “v…غº³¢]Tˆuk–_»aµ^ý¾mCt»aíÑÍŒtC<ªÉ î6äœqœ*«óŽ)3æd ŠT×UþÆïGC™(%J#ë+Dcw$«$^°~¶;C”6ZÝÓÆq¢|Œ<4ø©QÌ»òLxˆOçÝUwªlðP~K¢¹ûÝ2m¶˜¯gu•'K’Öªy¾ýìBzÑYèB²|Ò¸o hƒTµL˘FUåo1ÓA¬ËtIfÞÒìiöò8ãPÙ¤`ºlÒÆÒe“.{&‰©lÒ¦²;‹2i£B*›¤¢K1ÚuhCÅfå:ÌŽ:ÎFB#´<œ«Â¼»LÓ‰;s†8w£YÌJe¬žŒÆ3Ñ|w©’Uv¿Ö•캛­2ƒ°Îx-“VH®«^Ù¸®u™A”sÊ9º"¢³2±QFsD¾iù:÷]MÑa -žê¦#/êήŒHh¸Ô´{ÑÔȇ­Ê´¡aW4 ‰n—9ê Oæ#RøØ;òit'õäi`^MÚïTw94¬·NÞyÔ÷dŠ¥¹v–÷)UÞa³(•Xl›Avœ1K­†æ²^Ø’Ì+9_þŽyËÛO]¢zìØ_MŸ'»z«jaQÕ+®™jœ.þ~f´‰¦øéïv×zY/CÓ*ºÒMñ%2·>­ÎÕª×*U‹Ç«¥ÞI™þ®úR -MÑSFäžólÕMñ”dC–Á;áÔw*æØsO»0Ñîd'UjÊZ¿O}ôDãÏ<ѳ7¢š£º2²%‰•Ô±þziDöÏUUÈHêöÉš]V¿øfŽÈç"¿ÌR:6!Ñgê„ -ÓT‡f4$<™«$òI%ZÝꨘ•ãêˆ*‡M'¢›ï„Îç+MQO2GÑœûÏBûeÞ¡ÞÒä˜xæÂSC›˜I¿1æPRMŽtU!™e{—HI„Ye9¯©¤÷&¥’’¨æ”De%ýúÞ”ƒ˜%tcÙ‰Þ@yyŽT7Ksý|9ÌóM;GdÕ9"ËO:o”v#²´’oDfIˆi¶‘ Ú±ˆŽc:¼qW/…Ž>äB:ÝÙóœ3äJ¿u”¢¹^|³CdV—SD®œ*²œÊ©šÉ¹AyÌ©¢¹©7È=,òŒ2›©:úL2•Ó!³Év#ué·Önø²hF4xˆ6hò±ø†¥å¤ÙؙձKŪ‹õÉr¯>x–ãÆžêÍV«?°«’+gŒèÄK;s¢¤§sÕʳÄÊd¡ì‡Ævõ]Y¦ñwõ¥ÙÕÜUQpîªxöÞ}Òx4àÜ®:Fxó3«7ñ¤ÍäRnß¹“›Z!QmvW‡uw ¾/*~Úĺ±ÙL]˜“c“i +§I™-¬]M™mgº§œk!Z¦¦ Lp0A‚2@ACCB¡ÀAL¸ÀÆèfˆ Á¦æœ¹i§ŽÅ$Ë- +­08Wõh6%¶åHè…F¦"û¨ì*d;ª{l„ì¤<²}T6¾—VU߯ïì(¶¬û‚W3rošSlõ9$3×M^ͧĦnÖëfk–+›ecÂk6Ë[¦·3dËlþY–x™¥úÏðhwgy´»Þ±&ïŒ'íj:7 ¯(¯÷ï˜&f—d…7d§aZ«¥ÛÍ{Ï׆xé«¢1íÔ~Máj”²n¿zU-­®„l˜¥=÷1*A;«¹š;óÕœÑ Ý@¬Í•³l:T‡6×`isDGÍì}æ)c6VD«”£QSK##fáàQÚh`¶0VDy)ÞÄÖΞxªJ3UÞHÒ ²ùPÑM™ìéÊ‹{<ËDVIVYJÓ¥ç¾ì¸¦ÂïÆn6v5’zÊŒ¥êl>A#¬ôÕáPÚMŽñúòyeáM k&«–bÝ\MSt¬Ï}¢D²!gMÖÇY_]µG³ú½Kxʦ«>cöÙ®šz«,wÕØE ¯•d–SŽ­êÄ"²qêö +kL•Yq.§ì$«È§†dRdÛÉØÕj”Y1‹HÈF“®Zu¢üulšN}z6…4vÅ™’ó_«3”4Õ™"¬*yh¤ªÓô¶)™ª"Dì•Jj£§(Åj…lKi”YÍTæ×ë0eƦRù¼µ­¤¡“®Ü< âYµ|,Z• ¡UÕƒ>ˆ†‰&UÖÇE¯cÚdƆX5ùÊ¿HR=a¦eÑÙñµ"É·Ú< 3ýHhXÞZ£ß„ê†ÆÕ³µûJˆBƒð×Ú¥™%;øŸpìfÿ|,”'ND*›™Î³²ºåH/Û²qwˆPjqÐRJjܰG;b£sYë¥ÆY/4|ºže¦Ð¨ÉaÂæ•afJu\R +yU7iwÆii¬ƒv4ºO‡ã\þy~68Có3jZìŸÍyVb˜uòf¨'®As¶êÐ±Ž•„eGÖ±¶Q¤¼º#¢Ôªä„’5ŠŸWIb ^–hs[Y(‰m^!ZU6§l™¯‘vH¶Ö$Ó¿ÙEN´¼†ÙÙ2KsdËìkœædsOe*´”ªËTRgÊN–#Î>¶ìÖ~87ÌJI°²ˆŽZ£·d„½;²˜™aÝ&Ñ=ÉèÌøK:3¶æZw³³ª._ÇÆYQæÎÝ䤑¬½ÑuÞÞ{JÒ¸:™1– +Çdi×0Å»ÿô^=ëÈìv×ÄÛõÐän •´9g…3¶Íª¶£ºÈi3BdD)téLD#Ýs(4dEª$¢ê”ÅmÝ&MèÈŠ§þÄUDóÀÌ«Ýsºx;£PÛK±Q›•> ëèJ’µ ñé«,UB~øn9õ¼ñUЧª:ñhÌóñ!}îÊýÈx$S²_<"_[™V}l”)ñ]m|M^>–oщ–F…}Í-XNº™£æÍÎä2«JÍEØÁjÝæîy„…ÏI2ú5Q¬wó7B2’Ñé(ÅÌÿÉè½§µq¶Šô+cRé,8gų=–¢S^ÑK†ióáùzµ3i¤>¨Eg­^芲V'ižú°IšéetòÈ~.ˆÖŸÈN:’þn?ÝM -áOHž"_1Óh\?ÓKÎñiš‹›R&®—¡kî:ߌï2ß„îÊ— ¡QÌe3Tf_Éå>•jœ8Võ²;yMûQ‘ýQ'I¬¥”ÇxõCÊ1Lñþ¯¦…&þ&^}\gmÎ ^M‡Õ±½Â;³ÈwHõéœØ—4*{ñ„UYÛ§f%zU<‡sÏ%?È·ÂçGÉ•õ¬æˆçDï³<D5H-׫f†„ çJ¨=jsì%W˺ëcs‰Ç:†¿›_r¬—·•á\ííX>˜·ôóœ«¯ŽŒåº’RÙ½Z_ßÔ™5ÿL™ë½äOK†…5¦Ó¨ô.+u¢LRS !…ˆH€ 88 E¢Aáœ^~€®˜FV<F9–GjNc`˜2BFjbæaµ.ݼ‚¤Mœ½¼ôìôE+õTˆ˜Ô×À·NH]“~5]¯ 5…W°úíÏЈPYwó8ñîWÚ-F¡HŸ*}‰r€Áèk„Úó+Ëœ¿ y Q$`Ûð“ð\äa…ê.Œa—⇆ƒÅ™òI­ûág¯¸Z#”f¤NDO²B°ôá F{Ñ5V«ÞdMN_B¯t.Ó•m|YéíÖÇ?ïõSÙH S©›’I(lä Urƒyhi„ä¯ œ°a$d“¶7a¹!:·š³ôhSä0C3žÍÙXœý_‘œéÞ;•d6U Ãi`cÍÆ¹ªÑúûøt•H6œKüý¨ü]s²Q^ÊÍÌNv_avR¶bœft¦,뫦! '9„Ðñï^,{X”Ü.³þöž:É+»'mÎõûðCÞ® ¤ÉV}‡¼T ©¿Z Û&Œ.åˆ Ï\ã˶‘PÁЕœð*ŽE-¿V§U?&~zòTÒhxà8JÆûŒãj~\Icx -eœe²UIĪPç|±Å’KΖ1vFD‚JsRþjÒP§lëæ~O›{Z!H¶` -CŽ;÷2êókÜ7Ñ»9` HàAS1ÒW^ê4h£Ñ»ACQÿ^w´~%PS\Ô†ÕðWÜÕ`• >@%3ÊïˆÈìAùÑ7öa÷$5mçÆ‚©é1yÝSh¶R¢±öì¥ð#<øíê!GÓ^EŸÉ½@¨œ¤éȽ£‰I6Üù=3+q^û>1Ö…Ýã–LR†PáˆlLvFŽXTûtèRÍyä -Í„IU Þƒ‹–— ÄÚU´“*>ÃkËçVɽIDŠºþé~OúK:áp“û”?«žË²Ý”Ý¡³ÊN.!$ᨑ¦Âïu0MÚò«ƒCoeâ)Ènê H ˜.‡1HWøÓx¾ý[­Ê?ZÖîD•xÎOÏUš U‹ "m2bc/ªÍè‡ä喙ŽoNnaùVt°34}<‡6n§{¤€²dÖ¦Œºî#˜ÕÛ¶¾lWµñ¼ý†R6©oòŒ0^Ó4pdw¸ $½³˜>`Þ;ÞÔ8¿eî`þٹІ}tCî¨8K  <±KTƒÏÍè£ •£-¼êñ(3¬žeˆënD-§ ßt³{kŠ ³Õ˜•vdÈ$)9]̨Æ/§-íß«{©•ÿrž)„S»XÔÑCAaÂøäû^±h^Ž¢ -WD‹šJß´À{&‹|SíäÊJ o;á]–¯!Y:ÎÞ;~„ŒNÿx •Âù6ðjQÜÆˆÚ¬2vÙK0šQ¸¹„"”@óŸe‹³»ÊÍzK„_Íx c…Só Ò†uÏí©õ&ÐH/ÖDÅ(x€xÚ‹A¼j—ç—†35[b8ÚŒšÅô\ AŒù`õY_@yÿ¡yS2;ÒöCö_™Lÿ ·÷:ÙñÊ›=îFF8P,.ðN¢´D½ú\¼ÝžX‡p×Ђ¢!è6æÞ3,åͨ —i]iïwNKäÛèí6‹9|6/çž\ÞZÈ-›ºüÖ†ëZVÈ—'Õ7¯£úàˆŠÿþ´ôükT¼EäVß`KÙÃþ,B´»˜7 j¸ „*íÑ(¼ÎÿêpäSú¤[°-‡±XiŸs}5tǪ’•qt':Ç5p–s|ûòUÚ0 Šé ñ­¢œ™¬Är!s<ÂÞÇYü¢„¢ãfw ¿bZ'=#uÉAéäæÇSÕù°ôD°–ˆŸ±@o7Ø7€ñÝ~ThO ­„¢Ï+÷þ —d{]ŸAç3,–µ—s·Í܈‚£8ö5ܽÒVñ -Nƒ‰Œ^ŽÈ²‡³:D¶)ÛsÚïºiîA£xŒÁ'ŒÅ—º „’W'úà–`…½¿óÔá/ÑùÓ@?>®£úß<<1BŠyäàÏŒútÁÞAtŽI¸ÎIÍh3´!n®Z,ÊøbÜbÇK¤’%“XÍ‹7€ìúÓyc?þq=Æ -l1E§ÑõE„ÈåÓÄÚJÿO`®ˆì6 ZŒª½9V±î5R)aN•bï e@½"Ú\sUkD#6Ú`?”á¶…¾LÙp=¼OËêq;²+øå´R8„¾ï0©Å‘yaÆë¹ípÑ̆#°2÷̶hÌýÌŽ/ûÌËõ5zlZ¹‚ÞXsž5©›êªÉ`²”.LOì¤ê? Q+èÞq-*À±Ên‹Þ`ÿZ&œ›¥´¿¾WK}$pÚÉá£W7ü -St š°Þ’×v¤¸ù’k¡œr‹:\9cS·s¹ ÎÆ4ÊŠFè?ÌFÜÃ;H£ö¦ÞDñVu()ÕS(ãî0^¨^Ë„Ý(ça\׳"Fi¹³rý½ãºL!»[@ÊÞû}”Z¤îÝýƒçžùlí¸RÔÿ©Ê¢Ñô£5¨lQv}V»„KP)–cã´Ö”Þœ>ÄiJ©‚¨}:TR WjÀ¸R2Ãg÷çH³Vg>S숅?ŸPuŒ9ÕÖY £€ho܇cWdtk#.Ô°4j‘\Ñøá#qÉÀ³WY­ûÊÅhƒ<)¶Ös 1Êá³Õ÷pBqÁ¢Tû·y⻄ûfÞÐíÍˆà  Ç_ÔÁ®â÷·HÈo¹É“…™U˜ÛÑÁâ-¡â†pk–aÙË1xÐ8úÉ q\-`B˜#÷œ¼ öÐw%i^h…IÔ@Ðýš•ÔyߣI$n¤qóü"òš¡ìh†ÊžŸfH(ŒáŒYU'ÿhñï¬~m'j Ó(®Ï¶JG°e› “Šn€H쨉 ÷¾¼B¥!»”耮"q‘&Ù,þ€ŸW§¯K@ÄÂÕû–Þ•3¤Y4¹¨Üë%ÛWÒ¦¦Â>Jª¹•Ë~€”ÓÀj»¾th—êÎFšnmówo\?ŸÿóÕ3ß´/è×3\…줬3š7‘ù:8MNcUnÛçZˆ†“Î ü®ú ž”ŒT´¼2éèx᳨x_Á´¦kѶš:囃yq.´`&ÄÖ*eì#!ôméF¾åÐ Ê‘°Ã=ÂLdÒ÷Ò#9Îùµ¥$ÜÎÇ2ÍßO`„ëè¹Ã‚§”vo…“¬è\{öØ*“ÊÎ_N½ºvX•^9@³’žtÕÄ$ÃÛè)?•|'˜ØÆUâJB9žÅ“!&äe¿8±•KGÇ´ò·/Î`¸2êÐ8H…„—ˆYœ^LÖŒAfë#;ëjÒëaotBü¶ãª ¬rŒª¯$]çº5ð,E§t‘n¥åòKr£ø3—¸ºÕ9s"bVP?Ì\5 BžÙQAÌa#ãj•«V“#Ôë -¿4§g´/àrœ·›ÛHbŽî„²õ¸;WÃÑ7>µd ‚¦:ëRúžŠLX‡xá ›L^èôd €K¨¡Ðÿ{¦À0qÚ0Jj”¨S%#ª‹þ©ñ €j€ÚòeŒWÓ_l\îÊ¥XS ÎŒÖ⫈çªáÖ: A¢–WŽÍ`íð{¡nµzX,—E8HbÑ|hluŒ««f¹j¢"ŸÂjc%n/ЦÞ'`Ò#q0›;Ä«IÎýü„kL¸Ð²³šÎe4ÍmEÔ-Kp -$zæúµ5Ö_*>¥î‰Œ›öËÊo™”6Ô¾N†8³d–§Ï»É¬SIž1ÈòÂk[1£7×”}S´­¨Ö=ÏTtX1ŒèÅ’+þPê—+Çǵ²-ìüx´Ñ¤U²'2…hna…}–ê€üŒáS°Ž¸¢0–<ÇKî³àÜaTGŠ(ÑðÕ’E_æý§žt^ó¸©'äh “ëâ`Õ†N”ñµ¤ö¶FL 3üÖÑ î¤" #ŽÆ£f,xÀ“ú¡Uj> {òèŽÏ°§üÇÎ9³IH£‰ýpOmq/@êÊÕG)cQ¸ƒgsýá»Õš^”²bAåÞ!+P¢íBcKU願ªøš¦u`&k?¹öÌgÊôÁWJb‘ ¢ ji¸G$Mc_`,[¸nó,+×;¡Õ…QÜAÕGÀW÷5 ™.ý)»ò8‘]kb#fy¬(6·p-ìžU+âR%?£Ñ§ÜùcâÑßÚ‹§Â÷‡ey[¤Ë½™ÇÜpäB1)ŸÑy„W!Tˆ 0Xú´ -5#j4 XX,}†ÿ„,9‘"-1oMÛ2zch7*¼jÝÖ’„ü’”ê5ìJˆ?OcvÓ°XÙaãéhãsl"„ϸ̥þïŸIäFQïN/ÓŽxÉ -FÖCò.ÞLÕlíwº¤¸S¿ ¯ðÅó°ÌÓË3{¡˜5µQÀ æ)©©æÇâ!ý”Ž×ÈM:þ8[ ¸}ݹÄ9Àûí”2Ô ³R‘CuÖz‡òЙã3“¶è”mØ&Z»ÇOKŒ,S÷³†h‰«Ùø6.®Í~oÌh6 ò¤AG»"²™ë›Q¯Ö%´{»Æl}#ÂfùÞ2ÎsÝ øåÌ‘­_&8ud|§îkz@NÏü¶^òžjñêʇˆUK„n¾žºZ¥ÿ*†É<¢áž×9 ¹`P$€œAõR |pâ…ÅËXº*ïêE¥Ì_*g¬Ù…›ä°ÞH1Æ6½õ>r]ùøô¶:læÂ%ŸÞzLt H}ÐFÝhž^¨CÜIt€¡ö’WÁ°¡:—8º¼‚õIG¡KTUäO YH©NƒëDgN3sY-T@B×…£ž¿¸×ü3!'sÉ —ô×€7Õœ…­¹‘ÿ_‡2IQºxÃË)[ghøLË)Á›øÕI‚PŠ%b2¿§šUá -#Šph4(„Å]+aa™eÖ&.ûï_ MWJq@T~ù=ó¼/Ýy§®Ž=þFb=`‹°ÑM>MË4ðÛÉZ»Dé0ƒ¬(xÙ¬DŠõI qml -ZëµTÂH$4Nns ä.<Ò°÷x÷̵ÄÔÿö¡°©Ä((¡¸¼K§ß¿*§0‰Ë:ÀqÅ´wŠ5zH+Â,«´7¹»gzù S%0ùn›QßA'T$á3}S8áØk1§K&ý¹ë„ï Ý6¶C<úЊ$2[¨b\öËps€[4Öi&Á¿ m™lÞDCíXæ  ±Ëvâô$çŠíV@*©sO¨¨ñÒ+ß8ã:n#²6°ð7HŒ8¬ }P'gÎe‚ iÎúŠíØ’bŸ³c8a¯Ê¸‚\ :qløÖd¦ÌŒK¢\,G9BeHZ5FÔ{6ð%ÀnF_-Þ+_`]øX¼)ëL—6­”Μ±6špä…ö|DN€Ð¢š~5ù‹jZ²µ5&ìÈ:Ú{Á¯ÊǬ·w¢ÆàUxÕoÉ5Á²¬C£Kب¹HÚæ¤ê8(¦BLã<~|B|‚·.õ&ÁÌG÷q{ƒµÀ]iH5õ?÷¢ü 0Íh$Èú“¸¹ÖÙ÷ åo Wx/ªc”FµAyBѾ¾¸œÂ¾À~âI“¶áNˆl°Ì -†Ôê‹×ÚÕ讄÷"MXQ2'Ã9Ûq$,ð:ñq§M7—JíÞ -8 |Í5jª—!ñ2!‡‰'Üé–dˆ)L Ú&u²¨Y`!­ªÏ/¬kø¬ŸYlÁL)”Pö¿­c‚©ƒvä °¦ú©t Nܯxm»×rëm¢€®b¬.U k¾N>‘·áaøatÆ…HíU‘ÎW2‚ÈëN¦‰ž£Ñ¿jâ,Öp‘¶UXâQ½ël‹¯a\@$Æ]fÉ’KCSy -רá·Ñ<ŒHh“!È¿@î{¸Õí&øÍ´(:P3… U!„*Îû‚R`³ëA¼uº’Æ`ÌcözŽXß ŒB´G Èèclq -ƒ)¬V-€!¯çk•÷¾èzõé;mi„ãô5PFùoÓ¼ä í™AÁ¯‰øÀ}ÆçŽ8žnÊ.Žâ½gì¹!EWx¢Êå¢;‡°TÀÒÃ2¾3ÏÊqZ7_RQK¬ÇV´©:0û4ZF!$XåÑüJ‡”€A%Ñ­ÐõF™w0þ}6GìNßÌð±DpT£¤ˆ9¡†Ó‚î³ aáʼüRXü¨Y»Ô×KJÉ9ûU¡;^°PØG>¹´¢¸ŒÌ–Vꔳ Ê, « -O"„®tH1.ê4M묳Atìþ»E§Ð*²3¡ÓÞ!Ü´ûàWKZ+_6»> E6z„¼#w ñœÐýª"éL’†“¶Àƒ\X´ï™)ÁR¢µŸñ+Íâd”ʶ7Öº÷]»žC>í«þ;&>5pdzDT—¾°êLœÌ¦ b œ¿HO€ÏÝL -×Û›¦ü‘|SrU5‚¾a¨p^ÀIãÙËÅÍ5Ú OËŸ±cÔ aŠTñaŒF¥ðö« ¤Ñ:ÿ ÎãDÌýÓ˜ B¹¨â¤cûèpŽ®€a‚ý gK•2Rî‚ñµl†Ê¢m÷ä$­GÍü$daÇ` nvÓÈ”"`w]›JpmVa Ëíþ`Ÿ½"ü‚ÿeÉô?ÕI¢0]0Ðì¥r³‰ãLî¦G ”Õ5̽J3¡§Ýâ‚sÜáYº€J@½$ØÛ‚¸È),Ýì‘8#Dã¿ãÔî/æÕ—Ú¨2hõ@œ‡>(fiü±êÑ£ïÃ+æøzÝȬr“^«¬£“0Uê+rÄ o«DNð‚✪­¿AØ«g›w¶ŒÐ;×–ý A±q 4Ë¿8âjÜuß:–ÈQz¶‚ÁÏÆ…Ô¥)f:=ZUKØ¿8ÎÞ¤yB;& g‘µíTZþ:jev,vØÕíP\ g·'8Ä@A1B£UŒŒÝùah¡Ãõæw"+;9y™+ÿVŒ|­áž¸|9@þ楉èaÒ•/_ãòš%‰çÄEdF%¤¼ù›ÓÌ—·´³·¨bOØúqÛ3Ÿ¼ä-•ÝZÓ˜äåÜrò÷D‰ÿµ/í!4ö&sä ©)ec´;S9Èû2ììÈu¥òWeŒŒ{« 7` -ÁîÔïJÐ$:r H› eaÅŒÓÈÅ%Ðp‹Äz,êÃï'±m~MNÌnÚ®Æ Z4J~¤]G ƒué#@éL ÆøƒàziÔŸŒBÑõf}¶ŒzÛˆõ!ÁÓ4„6ÌføÎf -HƒX°o’[Œ™›ŠÚVG-dW7íIò±Üri6`F÷=îÒŽe¼.OÀBøLÉ̱è1iÂ"“mF /—TŒ ®†âýT*eœ°dX*ž„lBâÖ$å/‚žCBx+ßo -v„nþvÀ} -ŇÆ\KÇÂf“3ÈO﨤1@zâp, yïVjÊ:CZóEÙ\×`]/ÖV’hιØZSS6K3 qòW9¨Cê°('&g¤úz©UÁ¢¦/&<*éK•à Ó g5oêlVÎùÁ¨ö³^Tª|—ÛÕˆÌ_¯v=zB½~’E”7w·0³%[Ìgó´ÑµuåµÛ19F€$¿¸Ø¾lsøžV%©ÞºVTÚàˆzÌèø ^׃R`6å È&·Ž&žeÓfJvÒ(ÞF’ßeéÂPÔ÷éP§ž ÇÆa¶¸2Ë¢Eµi|;ÆAw “‡ ^¥0å.ñc2†=ñìÖXHq²­Ø“j<1½®óµ‹•¥ýÕê•èçºÌŽ­½ É=—cF¨z½iíˆèÕ_êÊš-ÖJ@´ôét]RŒ -jVªðOçÕÅí,¹zẗ‰EZ¢Ï¾Êu4K Öd!Áß6pebå*­Ú$‚£¦˜/eˆ¤Eµ«þ¢;+²Fê¬[ë3ÆÍ¸/eC;Qy*×ä«…àE…bø£’Pk¨KìFõ#ÿLÎT)èvaowðã‘åÊ1å8Ëâ uàÌ!æÒ‡21‰ÊsÕHÆâz9;ýDßäf˜rô#d™I|…ÞÆ|DØ­eP0%“•Å»ìZۺ˕¿ÔzW2¡V&•öd¤u›ÂìpMÆ@'ê^åu)P€ý·LUnƒ[P%{ @‡°gèѵp€zˆ ×ÿÜBÃ#êf+L<Å_<5`p¨©µ­{O -¦Š"ð.µ–öÈ;í`:•øÆEÖMÚ¸–So5©wÊ.RS5$nù´4LÏp?NíQ¡lŠõI—kטiRxT&¬ç'_›ÿ˜{–iŽýNgÔïÙUxÂ?7²­sÝUfeÇÏ8…=7–Á³^'n²¦£†bš°“ã뼋Ùlç¯Òa:“}z–}ß³®ùu; Zm¬:‹¡„ÂgW -Ž {¤W“"Kb­éä!S_—kx²HfÁ¾éíáü¬Ä­ÐFU¶?sR°¥…O<Ý*á'ÁK!1P¢Ë o'÷¬§¯&N ?ÛPÃ~Qâ‹"KrèÀ´QÝÐ?ʇ`¢åHènÞÉ3† šuƒ -ZÅe1ËFT½°Æ¾'Éé'¿&ªóóÙ4£²:på[/gˆ‚«re íÄ©Šu‰ÂÊa‰»« rÁw0 !Ÿf%°¤Â±·ræ«d»¾*ëWWÄ’Z)=!ÎQY(¥rs¼˜Z:iVzZÉXI%F¸/ Dûd[µùê -c†*2„6x¯Íü/Î"g‚ë7YÑ´&åc‘á‹Ê¿o¶7î¨7@â@U¼è2vª2Ÿ„¾¿°0D}áæZàbDngî6°4ô4Öwë]jØòîd‰4iàg-À‡Ð§R::Ü}ľŸ@-+<äRᕯìx©âoÛ®viî–„§5…Q™JÄ"2À%¾aNŽŠî ;0ãqÃ÷5ÇÝœ8®2$Õ÷Û¾qµì†Š`9Ñ(±áߌÿOÃD}Àätù«Ió@©Â7ƒ ¨ª[å0=@ŒT›!?‚¯¬pÐVJ÷Vä+m=ůƒEÎ}&ÄÍ%[±|ª¶ž1Ye&ÚF‹là™^‘D½ Ë.D§Dˆfy.p48 VŠ%]§.|—QÛWöÎ60Fç¢{ªëªcÅx£ŸÐø« ÉŽ¾SªÓÆÄ~$2évÊõ=¿Í¨‰ª²—¿ø› D‘óõÎ4aù}F|eY)P€ô¢âg"°€Y¦”Â?‚vvÀUüfÕAñˆJV—ò HRy^½•¡êåíz¹’QR^ÉŒ«àv/ !‰ô.K;}ÞŒ³>(…ñ’Ðݘºu:¬ÌÒ.-{k'b€ˆŸØzOÓ{^E± øÒW„g)ÀJOˆE[o¯ýårÚào^2O=&Ú,1Mù¦B»o¹ƒ/Ñ+`8Å/ë|ºÏݨŒ+ö„N¦×Ô™© uÚÕt¯qGÜBƒÆn€0…Ó-ÒáòZ³mð0DÛö–™1¦Û©N£eIÕe€UG”U/þ{¤Ë ~9U!ß1T8ÔujZN•¥-ƒ*0Ò @†:eÒI)+͘l-°.„Þo¤W6hÄ[[>b<Ä5àø-¤OUHU¡¤N¥ ‘¶óX»H›[}g\˜ zß?^0Ö7Uû}šoÒÙ¿‹5Ži!b¶j×¾ -æÕ ²SË.9—Å0…¦õOüÅïI KWO%Àƒ& =,o)Æ0¡Ü ˜çL7 ¯Žá–TïKê:«•¹Åt:¾3p:+¦¶ôIP9,Zí4Y~_Èg-È.A=톰Q?~—"háý¤íÁêÈÁb`°zŒz:Ýi²ýR%€¦¬NW—-_wÔTâuiê~œÂT†NW@¼KtùË! UtZ²K•<ð\²:’DžÙ§­ëÀ°Uæü»×PúnrI2°F K@M–Ò -¬w“)gøK/ ?ÁÿõJøÖpú(}« n‰¤¹yˆ hwH”µ‹bù„¦Ç<˜ŽÌC¥r_‚ˆ®XSâÇÄÅÀ“º$'¶¶dªã£ˆYª¢b‘/áï¤ ¡”„wj(W.YÍSåýü±Ñ¼+¥,õØ„‚%“ƒ¸+P~¯™5¦Ò¾ràë”d¾9ð§”ÄúZtEÉ+î%k¤ÒùÌᓬЀ“@$:œIX“—tV;TIWòüLÒÂñ`-$íBöiá`$œØn"¾’•©' -ÉÉüðY\pSR“ Žxñ ×燸øˆÒôƒ=âØ?~GTm>ŒåËì#ºáˆÄa„"}‘P¨‘ýàçÎü ¯ŒxÌ3Fû…£†O/Ú.µ\‹í€àó‚ôˆXEÌP4E˜µ?ðˆ¢{Dv"rýáJ&š;‡eG’”½=zÿË¥°u´‚m »ˆ®-°cx•ä¾µZ¿õ&‘µâ3TõF 9TÃÄÃk ùȤžÏÖúgRJmÏù«Û¿§Åˆ9½Çé¿ë;ᱺ® ^HsŠ˜Sd…vžü”àW°%w¡¦uB¯òD(™<ŽyBÉÆ–¸Èâ—%U³Ë<¡ =LâãzB‡dfTL‡í ÙÖðd÷T}Ùƒ€PìÃÎ aš:°JZSHK `˜Bþ…ÃC/Kt’Út+ÒÅ\¬${ !¡à,2ý´½šc-ð ¡J ºâl ©Ð­5L Õ¹rà)>^Ý3ƒòwÊ oEDP ”l¡W”=m‹ÛެFQä”*í[–é³ã­>ý"Hξ#¹ºâlpؘ¬dâ^‹›~ÃÌ€Ø Êk „…'‡¢z®˜0üC§Šëø /PK*œò––³…ß…C“áÄJ±)5d»Èp0h®L"Wb2t;¸Ý+hÈÆ9çQ¢rr°/ðí¤ -œyŽWƒK—ÁQOÞX9?ï!1ߤ§Œ8Ä~Áà l¹ÄíÈFxpXh\à›Çïáôß#76Ô+ðt}Ì&¥0§l,€±¼ Jæ}ã4‡² í”Bo–Š7ÄêI¤×¢K< g6¥«3nÀ*hx›\4÷ž»­ÇD¶)9éõj_NmFît‹·ˆÅÏõ(6>Gó̱‰L š 0ÇiÔ¿4_S›Iß-彨)”®)i5¶¦¢£bèÆ¨«Õ4}p³E5™VXﻣFQæuìӸε­QÓ\ÂáÁýpz],*ÒÔ¯jÀÜ‹QÒwù˜›J£›Ãq¶Á [1Œ¥§¹£×ŒYf)¼a­8B|êX>¹=Añ¤˜íˆSàÕM€2Å)$\"‘EˆÜ@/‰¬Ó* Ô½`$uö¿3>ý³­´èÁ(sª†"¢Ê¬Ðô²êªœ‚@¢ ›»q¤Õ¼òÈJyi>d¼‹³>€A¦0pb’E=zÑ¿ü‰aEej{¿ÜŒ!°é…õ£¦¼-¡Y~²h÷~¥€®º¡½ß¯2Q4¯<Õ"@†„Œœ’bÊï)ri›oØTE(¸6€z3U°Ì([_ô½ÚÁ±X¦ÕÅõ•d'†ñp?ŠZšøK‹S°!ûžÖ°Õc!êØp—wñ„,e ¹|Ñ‚<AO`1µˆI“Á"£‹OZ‘§™šDÒÉÙº†K‡NL#ÔýY —C‡â[Xl¦fnÇFì¿€u!á+ÓH£,È·vDah­^䇖¥äZÑÁö›‚@ö–…²7¹ûEËÍxðAÇÞWýcÙÊ})¾|Yô(ݸgZÚ¿&:®¼f`¹EnP{K8ê’ÛíEB´Þpn—9 (ÖW¥N¹–u¾pq4 Œ-6Í£Âòùù_Ý0û¾Ô!$:Ì'™Â—RKêd›äjÂhÿ½1ôï{žº“£K…i†œ|Ç%_üI›Th}¼ñm:¦y…ĽœyꢼøÅnF‚WÐ=EN¢“¬µeÈìk¦dëa¥Ø%Ë i{â3¡È-@?UÙ -aç+^ðÑ›³üWƒ™-W®(¡ük_*äÔ>R‹ʃFP¸ãW´’‰FnwÆ›!27+¢wYQãlÉ"Á ?\Ž¥£g#Ö+…U¥?ü.`=jFƒ÷ꛂ&…ÜÕ1& R×UŠŠ˜xªaRL#§N1uA$ð£½({b‘“é“y¤Xçt¨Ü¬m}û* ê…×(ÊÐÐÔï†D,ä§àÓ{BOÞÜyRj9ßx'¶Y ïhªÓ㊶ DýšÂÔ?œ®i¨õ×MLXqz66¡>6õc¨éËg: }Y®er-µÆø€Í2Éxì9ö÷ÀÆùãKTY”ÒÔe`uã%49´B70Óðhà•:XåITy~㢡 -q)sÉŸ’‘øŒy=8·k`Gæs"i×2øiªï2l[Ĥ0CÀ$3ö‹Âzje¬É!<ö£FTF·ŒÄ°R\ì¹#m‘ü@N–Êeɲ‹Ç®ø.ŠrX :<0<²ª˜úHbv/Žoó/uÕ)Bb6÷ôšÕ¡±Cð„ت°Ã£—y¾‡CÅýªøéˆ^ë\¶9h^)Qp³zÃm<ÆGô$iÍ›'³?È›œ©¬ÇuǺâÅzœYqÙá ±5û¤•S‘ ±©ø­:/惿ã×ÀˆÍÄ eƒò;ª_p2ZìÕ‡0ÁR+ôZó–¡ Qrå -+3Zu3«3ÚcPÃÜ芲×ó{Ô0ôѯóïúDmò'¨\bä£&Ô4õŠW.¬³Øx‹æ@–±ú˜2ëë• ‰¬ƒƒT>1þÇ„ý;æK‹ÓºWØWx3'º›Ñ۾خInÍ€>À”Þy¾bè;[eŠ8Nð¿\Çß”$ƒOe°ñ(+z,0z–¨T¢ ~]=X.fæ­SDHÌwGŸÆÏæ©EKã¸Ñ/ý·ß‹ÕBGd¸h£Üv·Sц§Õþ[Ñ:1LøDׇ囊×$+\1×b67þ@ÃGä}Iõ#Áƒ¯Í‘°Ž>4É,ïI#§–ÅL¿­;*‘ãŒZ‹$asšÄWÅRÜô$Ôb]Ääì{ºì%ÖSêŽ+¢÷?O€XÈ*Ä^ž‚ÁƒCߨ«²Å8Ê0ÅWn˜h*d”KÂî¸à:èë´h ÔrN“–ś둕š§Ô2©‹[Œü$#züë-_<<$ž»;†><ÇØKgðè'X`{Ó)õáúHÚÌJË~Uéw¢¯šÔî•Þ‹à{Ýÿyç'Ö‹òRðœ',™•ôú!a3Z‹_ü •LK§Èpq<$#ÆG†Y´wl–AÂl<ªÈX -ÓÊ+ çþ@UNþuã«ó}¦Y;xÔíüH• άIR½ä@µ£ò% (äL×|cÐðãØfG)$«Í’º0=é‚'ÔAk…¶ªŒM°”Ó¨©/Ÿ†¾s9«XΗPØ©Üþ´H ±êªWË/}‘Öv{EH“Ú=ö®ÔÍÑìUù;ûê•sêyŽsš4â/sv‰¾÷…~z=–*ÙZìg£Ñ2{Íd‡¾Kôd 4žkÌX{®[{ñðX5\áãÑiLª…"Õ¢gêq©­Í§’F“‘zôX#Q=$æÃóá©(bB.æBpDRñ`!ÉÓ¼XI…ÁTn÷›þb…äîšåŒ™X2?-«Ž¨¾¬d_ V+E?ß-í‹è­Vêýbi¶"ÙŒ¶@ C½sæ..5F_ªPcGa6“6•#ŠF?‚eþ[ªÂ1²8'ÆãϳêDçã¿o„¬¶KœšK#V]oÜòO_”RÍdì“&áçÿëçûE«PûÊú3EÛµÔŸk‰4Á,êîd­ Œ÷8eÿàK¯)xm²eÔe=wtµ^Ǿ9^²f÷¶ÙÿŠ4Â,¨rò§Ó__¦¹ïýß@õÞH’o©0Àø -v\ŽÝãÆÑ<½ý¯z×};^˜ÏáOg_™»„"å -Ëc(À›~ñ‚©µ´x[Vã-‹øàjHÛŸâ«Ê« !µ(ã‰ÛTÊøGo9î?M,8Ó4kur4÷zêCs2QÔƒñŸ:ÃcTøsÿ€úþ<ígòùY)§Ã(îÝÛ&ÂoZ¯¬é')ù©&â¿ü\™€¢€1§X–þFf>ÈbK97æ)u¡ú€ÍºS=©B…àh»Šöç´ì„A&écAcáãáS°óÌ?b‘‹âD ,ALnÃÿuá˜"Dzp˜°3°À|‡¨Ã"öíŸ*…©¹í’*ÒýØ0BzY|lŽù7Jɼ$ Ì¶º¬€I¥‹åEóû` ×ç€ÿÖH8:°cŸÌ±dÚð¤c^ÍŸé_]¾2Žòj¥Ž3Û¡(ϰÛ!§+Mõ€MŽxSKЮ!鄺NØO”Cž®fœ}º[œt«P~.2tDÅc0´è³(@‹´ú,Â< ²>ö°Ò² th[d–ú}Zª½Ót5d{(ùÅ=긆rÎoR½áú4Ç%Ñg«Pg±“¹ÿ|BI,B1מÌmPON!âÜ7!;©e5,Q¿4@b¤¥jHŸ»²ÅfñcJ‚~å ‡"ýؼŸ`1óúáP ß¿Ç—èâe~&Ø\î5tC&c {švf»_µ:{BãGÜX³²ãwº-ãìM…Ô¶y\hèÑÀù¡w˜5 æAž[ßó|FažÝ ÓÈÝPù•UT`q]tÔmBÆöÀøØ‘k*á³jY~QúÀì<Òã‹@)Kˆ7½8„~#3:)DרՑEB;dgnLË<>OîFijJC¤ÒÐŽ¥ºµ–.ÙóÖg°{}ÛIˆwlæ+¾NIJ_¡] ‰`3Žº@M\æŽÄ P:wk޲@œ%˜q}ã·X;̤‚ƒw“š§È‚|%WQØ‘ýFŽU=(\(Ð>H—bí났˜²”SÞp¬ë°È>b¸o‹ò_ôïzâÉ^©mrM,ÿ°ºÍFFI®Ö!1ô¨èzfíÞPÜÁ»V7÷šü£ïÿ NùŒ8=?r”åB–.È–Š¡üŽÎó ¬ó½¶)¨Íû.¼Él#d1+ñпØèûË©D)FËVú:Ø?¦ Þ5´½í©ok£vG“ŽõÈãûÕG¯‘†ÜÝ ƒ}ÿ4.öEÅ“ý4ÔÞc%蔯(9Ÿ©:¿ìé%/Ðà¿›ò-›€R?G˜wkÒîdH›jµÊεEŸZ°¦–æaF³à豕#°Ò|-‰Ô ÐÉG´™ehü°?øDml†ÎAŒsÀêß(ø­|ßŪÞF…C2úF ¡Ôº‰p]E^·‘/W@$dr¢ú¦U?篿¶Ôoÿ*&Zh… üõ Ó¯°Ø±©Ý‡Ž³ø¶Y:4ËÕ -nújgK[µs;·Ãòf¿…IÇÕ´ü¯z\G„&õ #*=O½Mlw0HãeÝÞX[ ¾º*âñ\zá9ri*­_ʃ0ÜA ÿ› iVœóœi•Ìïæî‰Ä²§ræ ªþ1S¬y' O/õEókI»÷oÜ0iG_I •Ln¨ÁÈd!פ£Òsó³†ÛîÇØ¿©0#Gyn¯ûr—Ôµ6Uåf öÞr_Ø=_W|-š£§n‚kz ,û;Ö³ÊÂ/IëUºÆ¨µ²ì™Ÿ? ìƒ - -ð &©g¯ø¶®7õ"¬ê¥1¸·0G|ËᯢVý©ä}UZ¨°Wp)¥ªn³.¿Oƒ^­Ü÷S"Ÿ²»ô¢ stà3å÷CœˆØ *Y=à­lœ\=÷GtÝ÷¨eð6´z>D":¥àœÃŠ >ÓšQyRSöyøkm‚kÆÚ@œËô&Ò›®ÊÀ 2b­™Ï¯•×(ü«PW¾,j#ÝhaÙ`¼Ð?÷²Ò«¸nZ×¹Z-i‹ýˆÐa{ê9B ™0Íb94P¯¤„“ºžhW5}Jh)2öƒ CÑÞ`‰cèƒÆ¸4’IUäí4€ üK3ûChž¨¢åò.ƬÔ[Gˆå¯ú¯¹Ã×ÜÒþ¹ÜjŒl¶¾H-0G‚Zò• ÒX­Î —•¬•ûÔlѼð‚+Õkj×lqGXÁ¶K)‘[%ç1Œ·«•|«¸èin-Ï/G1Ê}ØreZ.¥Ð}1 –ƒÈ4ÖÇ•³•zo`åŽ*L\}z²N5õxS€aÏñ·àуG­ÝÄZ¥{,ðaJ|ß‘¸ùP ¨&¢ -â°Bo*¡ '¢þú¿*-_nÎøýU%Å9‚KýHÇÿù‰…Ã3q€0CÔ/S¾‡–³¨wâD‰€f¹®÷*„Þ ºí«Œö /ŒÛ4ïøÞ¯“‘K9MDFJš˜˜£¢•›¬á½“;›'IpkoU ˜ †(>n+\î?ŽÅ\Ï*Þ*ÎÝC’ÅôAPv¦²àr|4L·†ÍÚhƒHKJHŸåó©b/¿aµ^<ùI ú7èÄÇjôÿðȘ(šû×Égðísz›·&ЏÙÖð·éʤåÀõŽv^B~·Pü7B­gÔ¬:>Sót0Ø•0d¹\ãfòà}O¨M³õ2®ßf6—-x‰!Æ b/8«ôË3…°?0Ã’Ù;R€l¾P·ë1ØÔW)G@'„ýxŸˆŒS°IÇPÿfè ¨A´è‹à²}ô¶»ë)Ç*צ±K§ñÚ£Pç>Ã×C¤ËL9$Õ{®Èž¾ >­á›¢GÉ©§ø¶rË×ÌsDø„^æúˆ㜬©¤~TäÏ0•ÀuÂïYga›Î5ÒÙyËéž a¡à½?u.Öä]YÉyîåÑ»ŒžË´Þб0ø\Ä9Ï×]¥ã•aƒVnÄ›ÁÓ6 >B€ï6ÁšTÙìšeÕ¥¨-²¨ŠPC¥¹þÇ`1P|ƒ÷p´Ø»€©¹ˆZ*<¼ÌÃÅ" ø - Ñ -È«ÀEBM?À£ß}û}'ì)ÀÇhfüñòÇŽŸ Å <õŒ¬ÔW› Þß7aŠŸ”mN&¨åÄ,ªâ¬FU8SÊ=Ÿ ô/ ám£×1Òó÷{wCýçÔkƒw¢éÆ0žø>:¸¨[P„óÀÃ=î´Ø@&ƹ›¾)ZJø³ÞN«te-îæì§lÖ j–?iõñ[Žº‹{eÿjÏ›± ¼œ®ÀxL ¯É"Ž––`íܲc -¼.cÉEÏš§Kàö$ð¯¨K`ŒJ¼%x3ôá¿—.Æ¿Ée“±%ølþžÁX0 -¨™-Ñ£uÁ—ßÒ_€Šq}õ„bÙ俉Ø1Àç <â#`'6dÔ‰dD2óQßÌ‘Ô3)ê;6òÿ%ÕÒ§†~P5l0êX‘âÓ@(£§q³Õžê¬7T½k'Ý_åó=ÿbtT–¬oou‡wåÌPP¯5pÙ¦p¢<”ò¦PŽIÄêËKôM c<òêh|/s&¡=CÄ=ëÑû'nˆq/# ð#[É -?X hüô”u÷½Qð/»Wäœd2 †YêÞò[&u]7ù«fàAS“ȸsŒÖX© os €àu`¦3ç?%–6(D:Ä ÷ûaØR‰æÃRww÷›‡*¦ŽÄEµö¢|ª0øuƒ])¨»#2.£ôvQ2­ŸUéÛ;lS<­Šª„…Ó@ùãˆqÝxüƒ™¨pakHŠu‘oU¾5Gh§Ú³„Öйdü™øáX&Ö°¶ûu¥÷Âøº+¯ÛÇè×âÖ¹—má’º9zWU/:,½„'Ô­ xÁŒÑ’~ŸÝ -׊ê(‚©ñ—A±~ù&â/Ð]½•\áÚcç±ðÈU›ÞµÀ¹¢vnPò´@ˆq^¨5d/2éŠãŽ{¥3ó¶É¶Ôâ²¹f`ƒ%äägÛz2‚‰•"Ï7. 5FÄ>#~-‹©fBž„öï+Aæ|PA;'Ç¡ìÈÐÚã´ÚÐÒop'mÎöX$I¦Ù` jV”¬Ï ûž`HÍúÁ2dº¥·6T·§7ÓÉÐ 1ø²>]õ’Ýuê téM¿ÕnV:zàþÚ‚Wªà='dŽŽÞ~ˆ?uÖÓ%ÿKWÑ%0]5¡‹tŸkbçR`s”¹º\Cª\úœ\#×ßãú5.™ÅE$®ÿázz$< ß®‡}K+“ á}ß·^©±ì HÚúœ­§š‚Îø%FN€-¡«ùåû€”Úß¿Hþ6»ÁgèƒáBy‹õ-uo¡:D­ -âÁ°fXPÑ}(,èÃØh¢¶<´åë.;—¼B¾ïÃBĸ e‡óÅòGÒŽ.Œg”ÿŠ€ˆ=]ÚØ/fC­ZSàOY îK›=]2ýTY쯷Œª‚•©ps0'è!BŒŠð·ä)¹RÉ«üW'Ž cº‰’Ö!2 ®ä1ÞM\¼Ô­yÇÖÞño¬æ fÎ1æ|€Î¥u*)'E/Aç qbH«p²™Ek— ì÷dXïÙ' W¼yÓ­" w+?âÝhÚ ‘<ÉF4' gÖ9`6ÐG[¨j h¹¥ªv«9©0ë­×xc£18k˜Â¸TOKô<£;‰CøÆ‰Õ•še¥¬j)᥼o1(¸"”ÚŽ«ÈöyF‘ÿDÔM„¸D®“È;"za‡Èq{ÃCšq‚”û¥ xW£ÝSÐn8•JZ>²3ªæõ¼„IöãH/>U êQ9)} =Œ)5ïÞ€u!AÔ³ôë‰Ôga/ Ê„ñq†…û$Á -ýWÆj,ù)š²¾W‘†Úƒ÷™õ^e^~cNBxõd|¡D¹¿à -è÷ò‹SX€¸ ZX¡±x®g’¬ @,ºXOMs¨… -êÌ3âíð”8é5ï߇&8!=]‡…VSXt þKg0ÉÊ0qÍUÑ ­œ˜~^èþµŸÒa¥ùäÅîä:zl¥Tk Må÷*‹׋ýA¥—6\y\Ö* )÷ßËù°ƒ·q[´¡r¬=èÿ½Ò -ÏD]à2àŽÐ°@ôÇo½‹0ËÜñ‚°þ î!©¡Xœ{…uäÖçßbL™OAôwÃÜßøFk ‰Í|zP ç¦ÛrCj·í¤esÊaP//ŽÛÞ¬œâ†ÁYðµúq…X;}_Mh7ä°[ÑN¹7ŠòÑ×Uן– ¯êç ·$uú%ê=7a:ùø4Zó:õ úüܺ ñ|†$çLn¾{5 ™_ºÁœV-Ÿ¨C)?“óŠYuDNüÓCR!ðñ'i Àqü(4nfqv>Õļ…TÔ-š‡½öÏ^Öîò¿wc…±ªàT| ŒFºvN‚o«ñƒWشݸ‘´R®agºvKy?PÙÜXØAî=Þ"ìÖœH:5'±Ô*ž`®~WÜ­ü½F_›p„5¡ŒAœŽÇ›¶P Zì’£ly\´£% ÓÂç²ã[6_‹®°Ð²"øX¹©ਆn -inýB™,Ä¡L| «96n -8ËÆŠi -ß~gÿ«DvFX?>ªbúðvïHn®€$j•DJŒ®¢«™…ÈðKLŸZk×*A&ÊÌ«IÌ‘Â,,øûk´XçQP?Sè§\Îx,¹:þöxHœó¡ñ¶ÚX"B†§?6ÕVæ×“^rø¹3z -è«DÓG ÿ‰±–[3¥”ðBú«‰Ù6°xJ…iccÙëñ1bq\箂 > ývt¼8vÏâ²¼¶Ï ¶;ãë.x:¬‡¦5«°ñìçœÍ¬xåu”½!æWøÐ+¶â€ß•¶ ÁV˯—ߤW‘1ìZ©ŽHWð®v ׄäª%¸‰žr®ØZÏOʬVt¢*jy™•xªÿª#V.®¸,8‰²Äú›¯ÇÆ›¬¹ÓDÖJ?ñ/ Ä Ìhц³ÁåÃzÅ3hL¤]†ñ7.Ä“2³î•z´wÊéH/2øEm€pðc0!²‘‚jŠÆøq%ÞZÜZ U–¨³aï͈!ZÂl%Ìö`ˆkì@šbhÐYÌÑß 62vPû‡£èx–—ìäîW¿è+þ…z÷â]›ghœ ¹ÇÊÕ‹ŒŠ½Åˉþ@yÐAòp¦²`V¸‡]Ezx"±§p‹•±(ûö™~Yx G1P|ÔæÍ™Ý“{%9r%$±Áø *ï®WœÙnñZ\;«¤‚6W€c±Š·§Q'^òJ½¡NÍÛÆ}6LÆ´ B‰}Vl¹Pxe¬Ù(’þ€_öŠ`}*tÀ"P’·ýÓ¯¥Ï¢6÷¯J¨Ht©D¤¶aÇFpsA;¸¹}0sùÎPEhr"…u9T\¨cK2´üPF…äJ×5ä åÃ/å6Ìž}š5ÊÇäÔzAFKz„ª—-³æ79åJª¹tB'bÆ€ÈF‘O…õÊg(‚70Õ#‘¢›+á• œ€Ü¢ž}œì–Šöÿ½møë‚Ö^–Î -™áNFŸ€}cšÌÐ57·Úw­:Ìz¥W)̧+aÏ]²¯ -c<9]¢¬ °Óò‡Ro$¨Ÿ›ü¨êÊu`°º*Ár{i΢Í*ÒZâZdŸUlžkY þ:Z•`Jd‡'*4ü€æ -ášW -&ijª©…Lôæ³»iS[UÉÆ -/‡4¹âÞô=át´æ¤ŠPmu|˜¯5ˆ7•¶ªè¸Å xã$ “àÏú$«þX¨sÕê®;n€,?Vûâ¾° -üM kÐ3Ë7ä7bÞÎuZ»ðÒHübUû¿Þ^‹$Ä\ ÏÞé‰j—@EË ËR$ÒJ]²ÒL²á:{=¥ ˜øƒ ô_ëMOã¡­´.IÒ‡Uã¶.5A²5ù³\bÛ_¯}$aŽè÷Ú£~ïw«:"×Ï›f7²Þ½<)Ñe‚ ï ÿ=ĸò×§’là'¾O|}#;9ìÞ•ŠƒçO‡×³L -ZpÑm?>¹–&Å×Ïlqï”Z$^@1a4<À£Lfiв€³_¯ž¸HBÜ@a­Ç$UÃP½%ù<vðe}<›P0Ð6 :ž:Zn ÖÝüÎw"ì¾ÁN­'!)6›É¡1Yftirl#¯še¼nŠaJœ3µŒãÜæ†Ê§ô7mg AFzo`®L¿ÅãÄÆÄxõBÄý»ï( —DrÄ0M×BÊžœjÅ>l ®XݹÃÝ=7} 1›uÀK3†àð_Âñ¤KÊ ŠÌkÿü»q›Ù]`!ÙÅ.´`«ÌÕÚ‚“ä"ªºhDÁäPà3 ‘2UÒéæ“`·òŸ/Zþ?5U£yù©†:Ïö碌 - Ð4Ø.Üèw–l¨²^³µÓuµý4u/Íâ& õêšNt@7iîMU‹ Ý&«³ïpL“6ÿj—ðÕƒ6q‰4†/ípwv]Ì(øö8‹ö¬9‹áÚ‘‚í†ô$Æ+-G•wëËèÉÀ+™+`“:ot†)ÿ‡Šð?¬M_¬ÝÑÖÿ^±ü4?ô¹ ÿ4ªºê>UP €ÀBÇÑ}@3<_yŒ”2%™R ¢gîY¨ƒ±I3B%B¯!¡Îè¨vb«‹”*Tqbt™ -!CÄ:—çÒN•¦.šLŒjÓá7ó ‘¶üP>¡ ù%U4JU9TUL*ó -Ï2<…06O¸ ¡m¶EU1c#£[ôó24_”ÇZRS™0ô$³Ø”TÕë%®¢˜ØÉSÿ˜<Ùa\æëaL/±øA|Od.¶CÜ!~¢`shú¨^)ŒŒŒH…Æ yðLÙÀùç}E/}Lè|¨{ü£ñp&|6ãùL—0„S C£ÖKV"Âo2F¨~3iÂÔÔÊá50WE©Ó؉f1ü}Ãíû&^Éõ¤ÜDí!q¡o5; Š™ UPÔuªÝa¬z›ˆŸÔ™…ÈH•œC±ÎpÌeÓm–-„Ä£ªrâTVIª6Ç¢jtÖ ûX§„\}¬]e«j(E¹Z¦`2!!¿èáD5 è˜RŸ§]øKQBùýø8ûþ9ƒ,ði§Íó‰Ù¬*ÂfS£†‰„‚H46MÐ->#º¡!º¥>©Ï\ òh?‚<È)AÎwJ+zGÑÀ¢ ©i5ACÃÆêU±ÿÄTå˜)ÎcûTaN'ÝœN>çU®ÎKf¬;E‰Mw¢–'z9q‰ø÷8æ›?Cs8 bÌlŸ×˜âV¤4¦_Yâ›ÚFŒªÙF¦fVt«… _ÖdvãfÌdŽTLäÓ˜Ùb‚2[hMhIZ—‡ÖC«%§Ðº?.™gˆJŠP -†Riaª\éÔÄ$F¨ŠÁ5«\sIp]ÄŽ[Œ7éh•X½ñŠšŽ¨(ÚÊÛ"ªj*¦ä¤lȬz‘$B}µúg2'Žó¬¨U22"Ÿ¨Î‹k{Ÿ˜W´%D,Ö/vSüwâ¿ÛÔ¯{~Wô'ò@ÝÈ» -ÔµêÉØs(Ç둆 ½m©De'°,1P‡B(°¦IÌ›­L¶Ê‰O‚+!†Tj¨XYš Á 1Ð!™BI*D)Â…"‰!x†Gh„¸b‚g Q!… æXåb¸_a¦B•ßB0(‚­P¡B -2qáCÌô!BB˜Bd"ܯ.TˆGˆðÚÞp:èà†–ÃËï¡u)‰ E»(!m)[¨%"UKIOì±X,&û!<3„íÙ^‚MñÛ¦íÉH I MS MWɈgÁR¡)aL#›±+ØîÒÂ]@¬N8¦p¾²À6ˆ„IHÉCH¹PBe¾‡’ñ?™zä n¼Ø@¶Éã -ä)”å™é¡Õ°ÃT^}'šËŽü$)²xû7ážTqâpŒ˜RuèÇÝ1Khì9Ñx¾ª R5’ZÇÁÁ! $‡TÇÀ [„ëõ I98ÇópÉÛ:VƹF8ÜyýÊ„7 ãò²ó¯4Îw…Æ_¤¢†D‡¯”ÄP+¬Ô‡4Ñ5˜\£bò3-R0¹‘q)DÆh¨,¢–§¢Zm˜ÐQ-)&¤{„BYåk&ilNÖ¤º¨Pdeˆ6_Ü“•©±“KÕ!kuÒeTtpZ¡dô5ÎnªTA)’&¢Ñ”g TRqYªrr†—¡”ɲS!YP¢œöê¤Ø…à:wæaXEEœù caÈ¡yÍgaxÒÉ Õ9"C÷§Â™ÅF ûÌÆC ÓµnÅçW)ˆøËî Ñ·Im­£q䡺_bYÙL¨NN‰¹¸.Ó]ì¨ê\ó ¹Llp~Oá^H”…ZÂMìH”<ìú*)"8¢½Û¼á·ÆŸò‰ka)ý.ø•‹f»</â …k.åÖüV²‹ÖÖ”öꌺ0ål}-;Ȭ³éäQÕõ&¥Ä³è¹üúÒ÷¯Q¨lÚ¥*£*_Bd ¹HÄ‹\Y¯¿b&‚trï¯×+´ûÛ±âñ!Zˆ‚ÿLÝÆ"³P_¡ìÎ×Ì_TS%úk¢"¬+Åœfè¯}݈ÔõFƒÐ>EAÙÅCÛ+ ®UîÍ $®_᜹#VÔ"8†¢=†¬u$¸Ö1:íÎ=H¨ÃKìå†EâÑ\úÔ9‚Ö›A¦åÿ,¾`ÎL¼;#?Dá´)õhwH¨ÙÚ™êÚÚyÛé§ÄA‚ò`E9îÖP<Ø™V|F*ˆ&CÞÂ@´¢UX…Õ+¬ŠFœ -d»n—iWI¢4]¬   ! Aa‹0Âb(œa %+å¦á «ˆ‡AëÃK c΄áh"PŠ@+ š=adÕà‰/ØÄYð‚\¥$K"Âyç §Î"+AÚj,TÔµZ 6PË•Ž…’yj¾ÊP×!¤/$kõ®°—¸ö],r aŠe„‚Xˆÿ;ág\%3y¸éöŽKˆSCBÜñx¥J¤Vá"bÖ„jCB[-´-Ë mK! mÔÜšð’ÔC5„lê/Êaø˜ -'«ÂyžÎιÉÀ`ÊÜM =Q8P Ç0Ðèááj³ áÕ -!ÊDzm3Q>æ[«^[‰'ŠŠnOÑÄDÐ_ŠŠZÌ$ŠÍÄHHc1Œyç˜GGå^†”gg½*F,›áËûý³‚†âb! -ñZ± -Ï­ñD<—UaÙXòš  ÔËâqÏ11míCŠM™I•ü5œôóñ…çH~Úd<þgÆwG5Ÿ8y6,•IÈ̟ԆܲjKs‰ùn!yEKI¾d~•F$.Þ¾MÜÞÇ¡W#¯Ž8Ù"Q½fZ}\K¢ =Š4[¢9sÓu.½rÐHdåTlb(Zµ™Ef1¢˜2r6.fT½Q«ðYMñÓÖ_IuÍÆ)¢™ÈÙX(0qWøôàg z‰Â$àa½R§Ù> §êEæ!JŒ R ˜?‚ œL(m ·ˆÀ ` À<  Pdr@A„élÂÔI -8]AH ÷9 ¦ãú<;îŠbQˆ-¨«Š'Ax>sRØá¢*‘y4ª–«>ÆXs8NJ-Q݆´ìD6·»=- !i–ͳRCݜѢºd°"w«X á¿ø˜ò’!/RAs )*¾twD,4”" ‡“¤/j5ŒÚ,Dë°¤FU©ž+M Õ=ÒÈÎH£ -N¬®Y¸FbŠ•x®’kª_2×\£MFÙl~K"¸q5R?¥ÝÒ àÌ,5Ÿ=j\)¦ÍI¬LJ6QÈU1ä2‘]Ó‘ÏÚØÍ?õÄäD#ó"^„†$3ÃÚsãæ</Utz+ Z÷0uÅ *_ùd§ )Ó õu޵)”?&š Ï7ŸùG\þüóobr~dT³7³ú}ì ‰Ž}¨<ã’®>N˜Ï1*RvÊ“„p®°âŽžã)¬’ªØsÙCæqC¤}HÈ*Ãúâ1éÆ/‹ÿFþãÞ;OÍùÓ?š!™c’Ì¥tS¢3º¹b cj¢ø2Åãœt²ÓËÇYcÆ-¨ª^SF#«ÀàÊi– ëѱE½&IhÖ'lÔÆ+ŽbJ6ÒY]ƒsL B!‘¥€:Ƭý,(¼,’SSÈ|ÛV„ôF*½S-I¤R%%.5Dª°ˆˆX„³TL‡EŠãT¦Ð±jåèWÕ^å'ciñÄT…ªÈe’š¤Á:ºñ«¦|ê/[¬ØØ®pÍ»TW½„]T rhú¡Œ%ót5"_1¢I-JëtbZ;i¬?+×h^)Ø­¬a˜áׯ¨ÊîÕé3ó¦>Y´œ -{~({ÌæÕ5*Í<á*í"T»:#ÓBT‘*—T_TÓ®mF‚¥éiw|Ä,’ØÄ:¬™ÄßÖY„<+,3n³Xö"©‘ðºácO)’Ý-RC!Ú'/cÊ/â Ⱥ¬hÔU¤cúJÞ†¶q}D9Ÿ¨àß}‘K¦Ub¡/X‹’¾E36h†DâAj ×Ä(,µ‰Ú4¢Ðn’VYü’©Æj—¸ sÓßïùM÷Y…DG1 rMÔ ¯/ò߈سÔc©øâ+ýP¥2wœ"]‘µ &YFù„,S¹\> ‰åïè1béÖª™àü¦ÆD,¦.wÉGåµÈþC©N l($‚ KæŒêl$ K¦¦’‰‘cã…x$fQ-/ŠSØÓÇAT#®Åd6²³AùŒÈ;Ö.©¼bÆê¦j~ÍÝšŸ'‰ŸŒž‡J}Ççô2-‚ps7.‘§Þ”ͦ” Ž~®‚¢ápBÌÛtsk¤Ep"Fc”uÊ”ÞêyµV¨£¶ -‹£mW E{JâZ¥Ä®då}ûjRªrQõÎæmBÂxñ)~Êõ8CyQS.¤ry´¢rY6 b‡°ªÖ"…ú+ùXA¾Ï¸î*ºâ+‘)ùÞÙ,a¾\£ -öm2¡+bÍŒ3±kf Ÿ™D¤Ñ¹ifEȺ”©Štt‘y¢¿ËØ(ýž­Rlá‘ük8Æ…ƒÌ¿¢(#×+TðGY¦šDÓµ•*ȓȴJ†Ä.•i°A¡Á¿Hêv8Dj‚H$¹ :_Ü«‡‚²—á’ÑÁµ¹¤OI´˜WˆÓ×JÛ´®Òè¢9\í` R4Áb±Tpû`éûP)RZ†ŠTJ£aEhRL›ãÄŠ’Ð0‰b áˆ4ÄÕªíj«5Õ^mQ¢¶S×àñtÁÓà·.“ÃÛª‚Ûàv,-AÛé%´íúª-…beÅ¿Æd;ˆþ –å{sc=ŠŒžÇº@CB­R"Á´zM I º6zI˜õQþÃÅÄ}¥ïu-à¯ܣЅ‹¥\¹>xk¬Â;…X'ÖO}‚‡ ö«PÑF+J*Ö…WÜÄhû!cÊèt².«„u$|þ 7c’Ê”°ÁÉJx]¦D - u³5úx,μ1:4Q|F¤@w¬XÈ;E9"à]°bØa|ÉgÄ3È/tZ -Ö&t>NèÈHeØŸ C¶X©1¸Î - -"å°ƒ§ôpÆà©”,qáÃE %ÜäõŸú(|Š23~ø ‡§Ì°œPÃF9) #ŽÑ@šÀ!1ØA‰ÑBÂOŠ‚„±M?˜~Μúˆï‡8Z²«2ÀgF( ñä ";ˆ§ Z ¥¡Ö¾ˆ4U("#$D±ƒ ö4Œlù° ‡ÅxÝ ³âm \=œa‘Qá­ ?ZÒÉ-¶¤(u¡ú°µàâ8¸xyÍT¬È½W­ø)²ƒôPÅS#Q1W˜P`«‹ú„F;h‰ ™A‚*ŒAB¨A‚ŒF+LD°Ãg¢“ -@ÑŠvðsºQ7×f¾@<qðV|о`ÃÌ;¹Â¬ô@ú#!ÚKÁj2¶ƒ™‹¶¡0J4í@Id„²C¿„²Ü>ÚÉú™íÀ,³4$ §­0õ—N0J¦ª# )j8!ôÜ+ð@Œ¨W(’5¡ÈTì<Û,FˆBq"¢ÅY)ãx3lX‘ºäÀ¶äQ¨íà Ò–iÛæ-½Wx7+ -ßj ³ª‰ Óõm="¡úyÄT†ˆ†þI•ž24…(‚ $.¯h "ÿ´>ˆ´Dê "áPA†± –v@ÍãU4 ô`q¤ï¼Ã-LUÂŒ]\•ÂÄÇ•ÉÐH+$0™<.EÛ¥Q^P‰”tº[1B¸œ…‘ -%-‘é€v@$3&¤ WXô&ÊSû@µ#\¨"ÐÌÄ„©¹¤#`IG$˜0%ét%‘gÅÔ -žy`´Ö]iÍIúµˆNдE¢B«D-1ñj¨X*.P‘Öè#°+¦hd¨‡:•ÔIîà•‚ƒW’à k/«Ìi–P ¸â›È-‡7Šh{8©Â}nj&]°+9i53 -®’¢à'ÐÔ/ã KµÇpá# 3³™bx-¢X›OúÃGVSsOøôŸiáP2FøºD¨šÃŒD¨W„zI.‰¥¤^%p¸¦¡HhB;˜Ó„úŒÌ4у‡ Dì€&Îo‚Ne‚H0ŽVˆ:®ðËD˜²Çb -ç"ÌÐÃ9ô²k¨tT¸ŸBÃ`8 †C‚±¤rûn4ŠJŒÃ!PXZ© €M݆~yg¶¨éßxÎ!ñC¾ºqZ8¨Ù]>÷¥œO†–ü.ºî[íºÙtË:‹‰“¯¨äm‹E¼÷Åy\“JØ!ABPÕÓH¢[ØUpzf¡¨Xh*kûZdn9lÚ'ΜÏA KÿJJDˆÎú®DP~ŒÝÛ„{ŽBù¤‚f²³3 $žû¯û.º€-H·îŽAt‰ ‘›Ÿœù‚#f„1±°«þHb}¼þËWD¹‹"oŒ8p}™÷Qj+Z³ƒÑDÀH È€øˆuSŸºn^ú&†b¥û.tvÞBÚz:”‚¡âe^8ÛŒY—;'¸‘þ–a -jÌm¬-2ýÑJý5“§µÄ&'éZø -Rì‡ômQ`§¶WAW.y˜}äeÐ%Ò¸u”#^aä>\ºÔB®€¶Ó>vN‰þ}·]žHŠSÜ–1‰\³Õv55ÛE;ƒ@E•YÔÞx0ÙÉ0 ƒfÊÅc‚ýBžÍyöðŸ·mt†ñ² ÌNãX^±‰ÝˉòGºÔ -ʾ’¹O»JŒá•r³¤%ˆá)þ4 ›k ºª:žñácWó\âß²ìTû6mÍ^ ô×€Ç];Ê”%m ¹,QTX]Â}1!-~•Çëir¯-.袛(†°ù‘ùºÑE,¾awwèÚÒ™½qOĶEš­ÁÐ:¼æɵóÒ›Ú í[?•iwZøÉÑb”¼uùâo™í(â’¡ûåµN¬i4·‰©ý÷Bi­ÎÉ¥Q—a).=hh |ÛÉ®.d[’"¿·øb³tÈÁFWaü%Üòz <¡Iåï2.´ZФHbBÐÆáÏoxi¥`{c¼kMþTLœ ¡ÂÙopNUï,TUäî€À± -“T(ËÎÞPBžÚ^$ëÒ} ö4S“0\eHnÃêQ30˜xÁÆŽ¼é(]ÙíúÁ|h,ôâ¬Ã&çÄ;ð 7lv©w‰f#8qLùyDX©ÆöÜðz¸€¸ÿ/)RbþŽ©_ó£”ÍèF1Å…ŽqÐ?p(p­6 ‚¿.¤´‘I~¡éRųkÔ“©Ê"Ûä©ë¥X™þr²ªìdàxd×soâ‘7þM‘3ÁÏeŽÅ®_\R—åê÷!!óU¡±„²^@Ý8°Õ+‚’s/×®3c;¿…«Ÿ¹¢\:;y$W |”&¢±m>‚/){$ÇAµQ<`ïÖ–±—ìEKJ^oÿ0Q7hÇ6‡s¥§]Hed§ïˆÖ &ÙQ–1ð\_¬²Š²¼Š —*p*E}HÆb·[‹-…°®^Õ!töM óÏLjo4‚ 9¸ŠÊðøeiÔ„T‰sæï†rl ÉHÛ½°ÇšùŸSL*ì“/¤•5‰—6lìgpSÞÁ4gŽ9ã4 2 @—hÀ;—Ž^ù7Uú ¬ñÐqÆZ6?jÄÛkæÂͯ‚åV ß¡zùó‡L}Ô5{ òÂðlWÊØ°Ÿ?eºöÓºŸëèµ] ®~E¡œ»=sã<ép#Ãh1©p<¡œôgá¶ú¶9­úw×…1ê*M=Ǭò¢Ö“±M´pRéÂÁ×'ífFB¿ØÕ’1ôܨ`07¬B!rYbh -†Ïeh¦þ •Dnˆeø,®Ó6¿+e+ƒ¯éè*²ÂÄ^ÆÚ¼E´€B¤ÙFýhÖNib×#Ùçž$WâE¿©Éû'"K²å•…§|Ô)-¬Ó¥øïÙjvuªPEã!Ð!£€ÀqÊËÑ“ˆ%DKwÓý Ì ¡DΆ°BˆËü `ŽÂ¤©Ãi@¨•&ùS\.®Óîctƒr³¦BÑÉnD²4›‘§îHóñ®©Â³„xˆ±'ë1B÷@Î^ ¢C`º¦úûšóÅIö?e=œxà¨ABa!îh z`ÁbŠpÌÂ`Ó!.F5ù_ï~óîU4 k²¤vz€šQÆ,D#Q#Ëes÷.Ž0³{$h ¯áuÙã…Òê¨cŒÝtó5WŽ jÇÇ…™ò›¶Õǵ3]‡1í¤Ñf'Yá`TZpŠÅy œK’çýo.ЦãWäX®ÛOa'àP‰v0ž ’¿© QU•Í7™Œ¶ª}hèë¹I„>e“!4˜,p¡ÌÑ3 .#¸ @3Îݬ­øþöÊ.]ÙR×ç^Wê­ýPD%È9‹iìÁ'ßNèì÷’ÎÝù€Pë'çîÆ4í—BÞÚ‚h }i °—aryý -º×+;ƒõ/;A¼­™ =ñØ+«Œðï¶ -†K¶Ÿã?YèFülp`0ê†Í7zë0å×1Ù¨ñ5ª™%ß_ ÏǰßàCuÈ™HÔÖ,Æ\Û ÒõðObÉahÓ““>¼¢æã§¢+ô+\‡ 7ŸÏçÑ=OŠPt~¦scJßÕðÆäÊ(Åøhÿ®õ…­B·„¿¨û¾6}˜e -þqa¢¡˜Sô„”­‹¹_¹Ž¡.íjo:ï…¯ÃQDˆàBºæó-íp£&&a†ßÉR Kñ溇=&vî1lxAp'®™ðÐÐDˆ ÒY¬žCÓM).f™G§nV•‡ÐkËF»l$I¿Æn%)#CäÏŒ~ùƒÍœô[ÌÍC„À*Ì™ 5hü—C³b¼ÇwqgTq2–¯¶Õ -ö‰‹‚ºÂ,^ˆúy4(Û Ã}„_o4}Öȱ5Œ‡Ð¸­x -¿ø÷¾â– ¡ ¦ñu‰Ó`’ÑUÒÛB4HãÌmt(ܵ&cÁ>ÄI—]†.e%ž@LYBШ/€l‘Š݈æG˜ï¢9Ïn£g}ªb<Õ$R;;¬€øœ: äC\ªž/P$ºƒxCû¿ûòle,X„±òñÈùç8ñþ©ìpeÓªKâ÷ýùÓÉõ3TJý ê3§HfÆs{Ø^Sî4/øÎ E‰w!ÇN4°^_¥'ÐǾQSb¾b [£Üuq[0ÐÆÂo©À8¿Ø¹â -VçÁÓg¶0Ü}ÛÏ«è‹Ú-*ºiégL l+‰ ÙO2Bæ"Œ(E2§z(H>çš¾ˆ¿ˆø’Ñc°P¦ x{‘`ŒE`{Kÿd -' ¦xÐyXçÀ=lgR&UÒ_Õ ‚ýÎÑw<—c*R&PRâËâ ¦­½¼wÁ§a»ŒÑÓ—zI†§‰·¢f¯ÇL  "Øë3ѨØÕÝL”æÁ“ îweͳ ÒõnDŒn²ï=å¯‡Ñæj]e–i/Z8GS9üu <¤"¼ü'§À+†£¤©âe¹¢·"Ïm{D’¬-qópäêGFÍmÆ[sè¨pˆh¹™N!èƒëì+ QãÁéëó!ðÁÌ+ÂØ°'<éÑž Q·UÐó$lüÛ·Ï 3¶+…3ÕLfûSlÃ:ÍU6)Ùb©ªk‚xênÜÀ»ˆ‰FSé-¾–vÛ§so7Ä—íÜ×»”¬ t¬ ®g­`,«9üA?„g+¥)€ À4äâ‘A=Ôª iFÂÀîàÊÚÿFAø¶p‹@»-Î-@ÀƳlòÍdÄÑÎ%^Ès÷„¢FÐ?=¾QëâÞ]PTí¦ · Ý˺ÏóPÙv(;Ø“X$ `I·ƒ¼Q+çE›|0¤}…lzì2ôBª¢ÖEŸ ÖSCëÄ«'5DXT[š­áksul O‡€œÕl¯æ˜\'äð²æ£2>U˜œ‚ùhœF¬ HÎõP0–÷bR/«‡jhõ“óßêæŸSÅî0YwíAƒÝ“vTãJ~uedÛ$δ\ƒG¥ª¸rå}~©0²kŸPÛ+”³‹CÕ¢µOu©@Âu»T\áNÿ2Ïó4ö¯§W:KÕ6ü¡¶ 9Ý#õ  +â]þmóký-^(Ð=sy4Óø>\!v ª˜;“CZèYa=A†¤~¯ï}‰|†2“hë4z¯ŒêºœÆÃÝ$ç>]>X©V L‡[6ð¡é7qNèç`ÔÍYoÏ€)X+ðe˜‡ƒ¬…[Üù2ƒáÐ$„åÈh„ø™û»®û-¹JãÒ« ±É#ö¥0!Ðflµû8¹Á¡TZRUñªûm“уk - - çæ{IóH=„ÉÆPÇT<Êú%´íCÇ?I 4ò‚"™Á¦n%‘–¨Éoß¹V£fLÖ¨·Âö*›wŸ‹œ æÃÜó'ìÌÜ}'•,QW½&|áI0£,Åȕئ#?@¦ µXwß~OÜ]Ñn÷·Ì®ÿ‹ÆÛ½ªÊ`¢Jv9O 8,Í8W´LÜq1#Á XÕN¡AÂ? ¨ß-²¥`²ég 0Šø>jE¹å9–WÁø…]úäF'‘ˆöu¨ß.¸¡Ëy0g…èr/9AkNµ,jJg85|Güˆ†à  kUK½ÆÖ:ù}­&â»[ù]N…çÑïÖ»’ا㒔’í¬$厦ͱM[vÓAsäMÿ×63*,âüúAªyTô†8Ä£5@ɺùƬJ`4hvWø™V È.ÌêÙâ˜N0bv=¯!bl‰’P -¦([®qó‰“ÐØÝdÉO‰y™Íú0ÕÞ1ü:~î³Ã#/»Ù}†^ØU(;.-.Lr‡~D¹Ù½dRœÎ è{Bè‚eâð]cëŽáøˆ†kLÔÁI¼fæ 5ÀX*óÝx ¶˜.ËD&éøƒwí5“ñxFS¶†m''XkéÐR¤á*VZƪ`³âó,ëÅ™çÖy~ÐÕɧòËÍ!£‰1ܯ@RŽ{ZÇT‚ô¥íwƒEåÓÕëâZ5€ ÝÎEÂcz‹üwî÷£s%É%å}Nk{ãú¡0•xŒCLÉ7e“…Kî…ì«åmj©§™ú@O¶^çLÉøáTÈÆÃÄ_¦ÚÖQºöÊ÷[†-¶”ùJ4á§Ó7ª!(û¾ÀBx1dº •y¾¢ö7­«s¾Ÿ²Ò^Úô -m‹æ\—™¸šá'W¢É…IšõÖó‡˜D> èÊhslΆQ£á侬îüô¸÷hÛR&¶eðרvæuc' -}*ÇG5Â~Ô!â¢e6G²uúÖù­éŒy?EÚ•…· -»‰-MèÏ -/Ì×»Ñ9'ÊQoœ@ÿÞv  Ü4ЂDâ« ½äÐÝ.‹ec;3À‹ÂJ/uÁ{z­¹|,ÝÆ_9™€8À¤#|ú–(ä«),–Ìp(äìqå¬fVdñ»Óík€[)IÏùA+ ÷3s ‚â;>Ú†^%‘øì–tÏoZ¥gy›x‚–†Fj’ñçÒNˆXÂè½BIÆÎÀÈL¶ÿq‹Ôt©Ž6”ðZ{~”¸QlðKþÈ9S_2dÎ={@ùç,£€ñH÷sS‚¨¹æíà?)î ºYpI ´øƒÙ£5„.öçõ$ܰlùÏD“¤¢Au=1f/ÍŸ#­·Â™Î0Eþ¡ÍL‡ˆWIþcPh ù£ŠD4*IFuu2ÿLÖ¶LÆC 6®×»VC0ê_l¥¦K ûpá{“~ÿPŸ½ùE7„‚k¨ò@¾Ô«:í¹*0#†Mñ‹Ü"fWÂUÅÅÊÚKátqÓ§}»•"f-&Qs>hG:‘Sòç±Lƒ¥ûÈnw½·ª“9c»³Š'à5'“$ |É^Êbâ¢$Æu¼ -?gÔU]T•%89÷…Ò7¤ÄF¸åÄ4*:,ö±¤¨-7 Á½žUœzV!N¢ Ñbõ5øè¬‚Ü?Í3.ÉüàDýA &†uR;aCy¸¸Ë±—©>äàF/ÉìØ+ù¼Óîní“IcT1Éh€éúEGX£µ Åöå·úrµ>9£ˆ\a鄌qè}ðf~x7г8ËÌ7Êçq8=×±Z«ö¯ðw°©yH®ÝGÊü¨^ˆÓ÷£èÝ'ŒÞiuðöNXNCPÈæ±€^°Ê,ˆ÷¬ŠÉBKÐcí̼˖–ØúÏGj’ó¶®EÅxüÊÀØ–Up v -ËLºÍÓ±‡L-ä]·cDã½_ËÈ»{²T—eü1B"WµÊ‡ð™æ+-ëLAº€‰ÌH¤1".Þl¼$ µË’Ü»i€.ü±:DZ¡ÕaªYØç"HJ›’™,ØÃ”²M½´¾>¾0M áV“àŸDd[žÝùØ ?S‡`’€q™Ap½.0‡âð¢ uô"üÐJzbÜ;Ø¬.jùfè·—kCؤ“Voin2ý™žÄdîhZ§èÓ[KªHQ‡Rr–½B‰./±rŽ×k÷ÕÇ•ù&~^‡Ž1m.µͅ§wI¼óÆÂ]0 -edºˆ e/<²‹o‚PI§ƒ­iwá”À¼¦y–p HÞ¤·O»QM–´‘úÁõ`ø$RÄžy À°¯ñx/ì—µŠ<ñ-Më„ay'+oC\z‘Ç€B6-¾ÙôtòT–žTW넹«Ãñĉ7é:„ùãYœî/4ŠÚÏXKIë 3ÃQèù|‘à“úÐÂv+ï݈lîPy9M¿N_é˜ÁÕ:<)Ÿ§äcoŠÿvPYÞ˜¬vw;¯ö™öANUÀlF@˜6úþ?aí>r(ZyeýtÕC˜¡Ù¦ q” ÙNÔ‚^sKéXÆHQbŒ„h«ŒlìZ¶œb­]¯¼åþ ôù!•&éÕ¦MLÈ#¦‘×»ÿch,¸öòû7–¯ÙI^F®’z€ãÑ©:¢ÀÖEÐ{_þê‚Ì9 -SŠÄ>˜¥ÜŽáª[&uè1¦)ZÔjѨó -ÙqbÖ¨ÿé¹Ö}ÙÞ!+R- Ô­&̈Ú²/¥LpÍD¤Do±’ ÉiäB×v¹B­}£0#p{…[¸»häçBºÞÙ)çL›Ï;Ðuç d÷' 1¨Žâ˜Ð"¦ ñ$¯“pÒ?Ø!Æ…ÚnœªO.Ń—¦èüV@hÇa˜u:i‰Ý¿8ß´Úu¨i‰øóʃßO#^w`Î7óAƒ_¨›|æ$VŒÆIš<¼z0øÏœÒŸˆûX‹xH婞Îyö¬zj §ð &%[ üÛ¤-†RÄvÜã=eÔaPp}™³qPžÀiv­%jùÆšÀì Å\¦±ú -_ým¸DÛ îCé¶úô¨³SXFn¬PvqÆ¦Š´þ;Œ,!Qø+8{mYC‹€y$õ²jÖ ¨ØEqf28Žß9Æ<=Mÿ¸ÎÓä]xÌZ+û‚ÔØöÞÅô‹ýL‰Ôç£(REd‚ºEâ14ÆbÚÖ˜¶œÝÆ÷©ù•†d2ÜÇ:Aý¨CõT[˜JCÙ8T8ɬðWÁˆ¡cËÁuÑœ@=Žvݯf¯Î4¸K£ŸذÖ%«—)Œ¥v‰øö¸‡ôøåù§pàûíQKÂÿ‹ÂëÛ-µ(«¢tOçdÊgð‹Æ!üêp9úGÚp«Nüÿ,¡„nzÒþ²B‡=nÜÝq¹“Ø8Æ|÷R…î^½1ð,Z,]¤R…îÀÄ -ýEÑ©»Tá÷GƒÄg± à~9H÷U…ý÷Ç{,‡Eª9äN}·´“ G‡‡R9TÚI¨ƒÊ:àM±ƒídVíp}˜;Œ†{˜ûÞÚtROx_ÈáÄåzÇ©‡Jööî†ÒÄŒÛ|ª>`§“¸÷¨ž@ƒÆf˜µéÄ£þáˆaÎb3 uB”‡b£6A ð b»sÇA(dNŒ D´sò$!Np)Ä’èäØBÄà øÆÂ™Û¸s²¶Cœ–9aÊTQ›!ȉ‰HIÎD *£ÁÅÉšq¥­E¬J¾p!¶pr 8²ØˆE?–«#dóJqæG 'KA"÷>Q”¸•¦à›‰ãÝDóEâDAcs“–’Ðu›(’IäÔ&_Nâ±l"±s„CèR‚ ›4¡J¦h>®DÔ,K@¯&M·Ä[jv—8« 9218M¢H&@&M.èE˜Ê ‰gB©gb”&b˜k‚zœI¤|¡™Äœgb¸^½äD`e¢B:‘o2ÙD&ËíÄÝ1ÁAž8eL’öÄŸbÂdŸ8®ôŸXÊ‘ÒsúˆC~J¸r`ÂúýKþÅ#@ž,ŠÙÔ(¿%ßèiÛ%È4…ž0$?P¨“K¼`)⿠Æ{àےOêu-ÁÍ)$¥%‰mF±ÄY"*.’%È£âN,錩؀%´PÅjr܈o¡]Ì Ø®ØbÅl+YœùâZÁ“•4W|¶JÔ$U2žWd‘JæüŠÄOI±`¡Ù”8‹¼¥dñÅâORâAO‰™²¨%uì;Õ' »³{+-.<ùû¡q%æÒâï{ ”ŸÜI‚R‹-å$ü¨ÅlnXg-ȦI~a‹p2ɃÚ"As ;. =ßbÂ’€ À]ð)Iõrñy’Ä@g© éJ’qÙÅ #‰ŸÝÅu:Ƀ$¸™xAë‘ìša9’ËëEXIVÁê`$ºO_„€~AìŠD1Ë_<'¢+ÀH7" °ÀÐzHä{ -F!bÙTH‚Œ3„Äç„q ¡X$:_„{ø¢Ä°¹Ö>¦Ä1œ ª¦º5.³=Ò¼Œñ¤G`n $yäûœÁÀ#ü·Û‘Zt±NdÌÒ¼’ ˜sdÙdÄIŽœ‘2R‰#µ­ pÄÔ–‘Ž\¿ŒÞˆ2ãñm‘ÒŒ;IF¶ÍØ]#Î#ƒôyóqAøòqA¦½\W$,ˆµõñŸ‚@Êž °¶©¤ðû1‚x’Á<Ò4•ØÞ~ˆã@ÚÉ24½ýHùbÿø±Š/ÎW °¯‡¥Èà']E Ù«Qó€ì¾$V{‡@Z* R ?¨žB22 ìä{É ‚, Ì&ȬÿÁ -ÐÜê ’i?OG1ƒyŠðæÉ$ŇƒˆìHð Pp „lÆAÂegøk?D &äCíf -r`ÅD@+†|-J¡6!»6sŸ2Ö™[ý2Šé„@˜þÇ%ÏRÆk1”¤÷£+Iû‘5èíhJкr!‚ˆ d£ú±.’9û§~øäA?Zð ºËg2øšìVÆ9~´€áÇâ$ôî}¸¥rY‚Ó>(7ˆ$ØG(lõ1¶"jƒü4}\`CÄÜ ç#óD®5/)µÎ„òò!ÊÛä£täøðxÝ çàbá ú÷\¶÷Øí¶{,ä3XÎe5!íÙA®ÿƒ †©!HÒãµËÕWz%‰W©ÇèÈéÑÕ/*¨š§(㌿ÉЪ½d¬‘Š“øNm”GưY‘Q·›!C39DÁwÔ@ðèɉ<ûµ…á=ÉcT“=ã'ç$Ž‘I'Bk uë$lÆØcJŒ±öåňl'‡YŒŽ†*†o.£­Èab µä1bņ{Ê 5٨èan':[ -0Û‰è -#²uB0N`Œ0€É{0¼¤Cpt’dÁ˜2Á˜¸20’¬“£(ïÃQÊ©Ïþ¬¿°¬ìœ’ñ‹u"Zûâ‹åE_Àk#_È -¿·¢“,†åäŒNî‚cèDn½(0“^¶m^x2'_±Pò"Ü*ñbÓx‘v99å]s²Ç]0¶hÝìbs’¼º(B'Z§ ½²è"‰Ž.6Y'§ø\;#{t2®¹Ý)ËEÜ&‘‹É°•qQs‚¸°¬“ÿà‚bíäó·ÀûNH½Å‚ãI®…¸ 'ƒpöéká‹OÎl ë“´ ~BŽ-Æþ“Ì×â [ ó€¢mµÐ!(|Ô"!Bš· ãH ಢå>¢…}ú‰ü³xQ²ro=QB·í‹‚­,NÃ(‘&‹Ïj”Ð$ât”aÇbÛG¹R†2Ï) öªáKŠWµ:”r\X«RRžŒh)©‹z/Eä_¡À˜»¯¸>qê´„±'FJËéyBÒiùªñ÷ðïN‹•ï` ´(ÒN´E‹¼ê„KÑC'æÄÓ0,Š9!ÇÎ[rJZÄ3øË‰\B~ü=¹Ç‰NKœl§ñ4 5µp0'ÎÄM¢§–{†µ<8Êä¿zÖȉ®0©E ¸Ó²ºü£©e.™  P…œPKȦ¤˜«E—Ndd~ÜZ-²º‰œvmb°›È@j9Ïš°£– ¨ ¨i9z4‘¼iYûLpvi&r1,Ðê‹‘ oQc"2b¤‡0aà´Èÿ%Œ'-y{‰s¢åd—ZNãDËW´%j„N´LLÑ©ƒÈ4ŠdjZ ––U‰±¿¨Di—)¡P´Œ %XÖC‰D Eä'q”¸„°Ö&±Ómij¼¶$dV)‰V ’„ké„·P#‘L°H`•‘pwA åf‰!1 ±dþ(ší#Œ¾Yî^U{DêGñâf¹ÞŽ ß,¿.qÅŸtD%8›YÎÀD»,ï_Õ#ÐÜ̲ÜÑã›ÅpÏr9݉ÿAÐâZñæù{ÑbË+9F cJ‹gP;-,[; -§æïÔ"Æa-õÖ"ʶŒÈ˜¶L##’´-ŠòäÔn·4#*û3#š8uö–U}ÿV3"Z.ÈJ\˜•ýqÄeÖ¸(™VD.låÄÁ–˜îi±\–EV.°¯G rº·ŠFt¼~YÝn_Opåq·Zhi.e–ËÖ¼ŸhD!(4"è®3ÂöóB#"‰Ø˜PeÜ– hWr‘DI.øéK’B#@“‹püž\`£®æ 3¢¦å/¬ëq¡$‰<š¹PâµÌ«?&—ÈlÄRr ªnq¹| lшI33¢(ß/TR -ð7±aDœ@(\“.›åºp”£ùÑËç) }èÅRßöÉ儊À¬»sø]GÎá%Å'â òr©‰ð4óòa‰@^>#IÖËY#‚vµ—'"­ïFˆx_’þ!¾†¾dì!êì‹®Â$~‰cø­_Pcˆú ”†˜ú/ÉdˆLþ¢÷£d×ùkYÚ¤ZÚBüÁh­*˜¬ÝØ%…°™4!df0+‚‘3#B€Eòâ¡&·ƒø®0 DFKaIÄlAÜ“ÃÎo¿À)¶/Är¤š Ç#'¼½É©L„rRË k&ä /üÍr&N(À­°óÝ+8Ž¿»àeç^®íìŠÕÎ4­Þl‡1O–Üíi2Åp' VÈÀÜQ?WÄ’Ò\V!ðTB UA”ÿTX,w‚,&ÝF… ¡BO¸sÖSH.w6N}Ц%ìK•°R ™fBÝIþ‘6 -/Ï}êÎUGÁk‚kô‰’לž>3k‚…õÉŠ&LaŸ¼ÚgŽ™°ç>(ßä[ø/:~ΞxfÊ…Ï”—9ýpÇ„ì'Äàšå~ª{ …ðg‚K /ÎYÔŽWÂàýI«ÆçŸŒ)!þ£J0ò?„7ЩÐS~¥(€’°Çè¶)ÍZ>|”€î Øt`H¨Ê ~o@'úZë#H$Ðç?wQ ø7É]Qz3§êö*ƒ=ï! Óe”³qËZIQÕp -¸9/{'Lpn‹Ý¬å÷Ë$×AÚÛÒö[?Õ °™×(X-´ËÓq–8ÜU¬¸ÔH¼-[#P‡*ñÖ YÔ—Nøj›„jBuåj[ºb„Âu¤ÀMðÚEHS›Ë½b aÏ‚  ®¶¹¼FJi®ÏdjÆ[ð"|ÉeãJuåϹó"œ?Ot¦þ ¼ qTS(cx¢³àdüÓ¾V¶/ÂL¾*t‹öW–/T]¼|æE˜ú”©R"€©O^ÒjƒÁ.P¨î"T‚mõhYÜ:´‹€#ï‰0„SbÓëwĺ@ÿTý.‚ ¯ïWÇÂÇ:H¤šv]뿈° ,ôMQç„ é©¥ø‚öHE`«ÕK)Yêlæ%=ðÝ¿óÔ…Ž´.àrÞ€T‡]Ý·˜Œtæ_/ÃÐà¡P'ýœŠ…ZÝ,Ê’ÝŽ0A?¶ƒ!³êxÝ0âšÜ™aíB,Dã¶2_w[Hf ûê·œj -qÒÁºòèঊ®ô?æÍgS±ärÐî&w>òÈ%Ô1dÉ&Âtmµ&Œ¶~GÿߺÑtîe(Ô™8ˆô9~èm½7ˆßðoV­Fo’ß݀ﵤY•5Ó`˜ò~x%7˜P˜Å -Fn †T #áxÏ*‘m1wKHLÃu½?¨$màÖ€¾f0e&4¾ ;A46À§ç/Œä¯­6Ñ m>™ÓVƒÊÍÜIRƒìXaK½…F$›¨Ý¸àØH¼›,<ïJ 1Ût:~P4øüº •táÅÚóUÁ‹lÌc•­µ­ 5ópÚÍ€ðÝSk$úÃa›ÀÐ]¥¹€¹ ZÓ¤ðÄ(Q»¨CB)"¤JÝð/šY⎃ †òõÙ.oÑÛ¯ó¬NƒµÄ æFÆ(íéZM ¤ÈiÆåÀ÷ï`­ÄÚ -ƒEÓûuîÔ–ÌÁÃÜ%¯5†Á ­ÃË á€Áh0–vÀ@Ï»ªˆÜiÅöúô »‡Ò‡ÅX([¥~®SÅÑ Ø¶åL§àqßE²…N ^ðMÉúù‰8¼`óç};I%¶–z#Š Ì¹G¯OqÃGU÷RPÚ‚ù6 ¿Z\?-9œ¼À$Z°QüÌO¥7|íA›îbŸž^—<Ë%å­lͰÁ°àuàyÌœ¢ƒ¬¯ÀûbÎ*Ï’A»‚ìzœdv¥­`‰U9ÀÿV’¬`’_+ÎFEÛ$Ø^a•oA‚$é|•‚€ØÂÈ#°Z$ƒ^N$cpàÑgAò¹È2#~˜Ã¥^±Å@% –KEY+~Í=ÃÈò%‚Œÿ½j䓚,D€Ï͉!#˜N§Cð’œB1™Xl£æeB -Á ø.oùÊ Kƒox3C"IÐ+2ËzC !Ï!QÄw@V‘^Ô½¯Ë7$R@Àíwïživ]æÍäìÙ; ÛÐÔˆèæžÌjX~ Ìó+p¯é˜>@ÓwÅ»…4i X-ߤ‚Vè^@8»"Ò7Wö€–7›M—-ÂÔ”at=WHÖwô@‡ö„ 6æ‚#`¤îõ[·@™gЄ/ SnÔ¶:C±Ñ$Á²Nè…9jÁØAÈÉH$ë -l~:VàÙ¬€´•6m Z* UÍ—“ð1+åß)·~µ d1¯È ¼Àc@^d0—ÄÇöÎÔ( ›¾õk¡@Í ô&:5‰9‹Ë‚†ñs;fç0â'Á´ ÈMx;EòÀ°(Fã Þ’L`–^qrRÎl±%æl„¦‚d%P`Ü -޶7±1DؾÅK!ÙÒú¸ùu€ó°°6õ[ C-²ö.ò[Á¾‰€ù[úNDQ››µ†ýÉÑãÛ%qR…€¹3unj¨<ÈeXgâ™ÕA¸ô¾ž9‡r™~rïSDó¦]|€iQ ÐA|vÈiÍ4u ‡³ Ä­¨ãw€¡„ÛhdU„u@ÒÍu€I/kÖ9àˆ‰‡ß¼ŒÇžZ° •V¼t1ú0À“h¹$Íőد5ßsÍï y¡…Ãô‚îÑYÁ  îxÖ¨v{¡ÖJ1Ê'lþ ‚5¯'ƒI¥/@;_;3‚‘^›Qº"Þîr~×k¼<7NmfsR,€TA×èÚ˜fÍ:g L¸Éuø÷DQ•j;*•XÚ½T+À eE¤‚‚ÈLG°AÒÖõqA*ThŒÙ³ïˆZ¤RåçHiÜæ7þßOÀ¹áÛY<.ªÖðP¤³he9冇úŒYüM´|*Ï…˜Eù¢‹²x} -)Á*–ë€<V>¡‹àZ!!^W’<Ÿ€ó<Èw|3g‹O€ ´ʱîYÙÔ÷ŸÒMŠÕ´x·ÀMHñ ~M€%P8)üãÉ5k!¿“Â@秊€R•aO#˜¢•ÜÂ_g¿8E"HIê–vŒjb®@¦©‹ø1vɳ‚¨ [Œ6ŠÄÅò4~ÂXŠúiŸðŸ‰â”Ýu‹c­­ZŒÇ,l[Ÿ§¼‹€~MÀß‹œßGÄôÄ!ÉÓ,/]Ù‚‚}g²^)yâØÅh(ÿ5ìñT䘤X)i° -~€µb¬ Zƒ`PË•—%ç¸8Uhw¼¸máî“1ÀÍÎÌtÝSö²²¦h -@±”RÂò|ú0žˆPh>ˆ"1¬3@FP0ûQ x?¶ –¡ºÆ.@,]d +s¹ ©²k" €#í{:ÌrSÂÏk -5`qYsšhW¢>(¼…O¯ùWbä6²ˆQ¦ˆçôRRE€èáÁÑÍ UÇò(œÉ„6®0+9v0¸Ž2‹¿Ö`N‘”ÑÞÂÁd|€˜Æˆ -ÙiÅ-ý˜“RS -ÀFvj±ª„$¸³ÖØ<½³b- `«å.È»‘œ½´_á1GPF{õÚ`®XeY÷?§Õñ}/b‰ž`ÀòÝ“³u -ÓÕ?óïÕV´”–)â€7Œ)6ø_Žn'>ù°xÿ×jbY+ç,T~þcOã:çq4v€÷ÿŠ›WŠ‚”2F·ªÿK–ì5óeì¸íÌLådþÏl¼WS³‘†ÿQ07Ï%nPèþû×Ò›6åû…Êûw™÷ï §nêôo.‚K?Dòü§ÇûËæùgën…(“±ò¿µdÇøkÔ[t‚BoÆÁ¿ùOzgÁ¸Ðû‹äH¤º²qÜAýô‘z¡ýç¯$˜@ÕÁ öõ_4~k){¹6¯Õ¿d›IO›.3¦?…p‚^àðÒ´ýƒ{T-ÐBv¡bÌHºÛ£óŒ„ýT…?þÍçhå“ÕâÔQÏ¢5q*­5ükycÀPѱ þÂ>Fì‡.]Ì¿û~!ž0÷gÁœ©¼„&ÙsL—¿è~oû9¨t?‚²2Q\t׊mYSã×pe”Öþåëx𲥏šý#&ã/ÌTab?QÚý&ØR±œŠp¼ëî†ã–õkw\I¸`ûRSý²Ý ;Æä4¨zÿªØ5C¾An -ÊoÞ$…Ou7;ÿÑ/î Î0ôKÇ0vRd–ôÏïKÆÒB2‹“Î?Cæ¡’%Êšø%‘¬Îõ©˜¿c jéîØ²ü(ÆÑ‘eù Ü­f‹P~¹2ò¬Îz9(?çáÖt_Ó=G~Ö]—ÁÝ;?Ó/fAà/à kü¥n¹ÕøSª| ´SSÿ| 8Kã¥ÈŽ#~„'Ã;WD¿2UEèúW†«ÎáyþïÊ‚ôì°}ˆIðà½íŠ$çAÀ_Éîk¼ï“8dªo”îû¿Èqš¨¹W÷ɬ¢F=:ò>I•éOû°±÷}û…§½}Ýα÷{À+ìöÏÞGWëÕ Ù‰½¨„ï#Ô0ÕÙ•H0·ï{K¦º¤,ïïWªÅb;„ò\‘ý´! Çûä¡$Óôgc%2Z†¤jÕmòRuiÚýÅÐÐÚ†Yà•+"ˆ´ûýÔîoÉëÎÓK6x(W»_ÂõÙ!i÷ir¿bó(y“øu’vˆ¨ÿäøRèZj÷ÃG2U’ÙýI/>%7LvŸSÂVÂZ¯^¼#»ÏĴŃžØy„Tk¾…ãã~™ ·Á·!y}ûucul ¯¶ÏNóóì+ÔÀk_vA×êÖhp¤G -ªšýöåÛe¾VTdè’q·â ì’Ó;XÙzUþõÓìÛ'fb×_™kwSuTø­?ü2›s›¤DŸTă‹¢/¡éê« }¿Ä¶“ªODoÆ‹0YêG„j„úœöTà9þi kpúÜÛôRe-Ðí &û¥ÿ—™Á{‹‚5é·¯‡v@÷%,˜vô}Ol> ÃģĚ꧒ƒÝYèç.6.[yÅc ÿ„/`4×NÑçÏué¸ÏgK$ªƒÕu”çüóK®jq´7QlýÞ| -XPßÒö–5?"Á‹oÍï4¼æ,ˆ·fþË!¸£ -óÎøi¤íØ…U1?ÂgvÝt€»üÇ!> - Dw"Ë/­ôxõrKm¤ò§ `*P~#¹MÉ´d¥°–ê v mä¯Qe•„#»ˆ ùOKov4FÀ=~?”´›çjJcy×õbhæ¨z¥ñI+ìe#ä Æ—Êéù]kä䟦 ºù E‡rå&Œb#·õg¿ˆïèœyŽ yø¦=›á“éöFâ -] -`óNYBøÅâv7ïJþ(ç®ùKãñ€Œ+4yIKݰ\¶û€¯¡6µÂ -§þûšýX­ž_1OKýžtÖ Dütqô²ï—¹Cìhú*ãÁø^§(7°ìµmïSb“Ã<`ñ¥÷©Õv·Á¯’¼OgiuÅx¿ò ÐÑ/ÈÄ!XqŸRÐÑêüÈæÇF"ÕJ¿>£··b«†OnS¹=ý)N¥+’«´=Ì6  `{š±.Åh(RkÙjoz8Î<›Þ²hÚ—ŽŸ%çDûÖÑî£WÀwöŸ°‡*°ÜEsÑRöeöâÑZ¤²¿Ëch©e9Q¦jjøÙ÷ò$¶Õ”Œ½æ Ö*ʼ±ÿ`}­ó=ãS;ÁöÑ„^Ÿv‚¢ ÿúav ”_<Zõú9ôÛ×ëG8G~ó./~»~™WXÌø“ë§£÷ŠÃ0ÛÖ›´q`)}or™Ö_>hå-˜RÖøx˜A=|so°Þ´W+ñÏWo:c­LÔùRÑ«~9N.íëU)H|Kd‚<¥z~FÒ÷UwêïÝÍ -²O©§-ż«/SËŒz‚üÄÛ0E‘|ÅA=¡Wçu{í §§a V9½±Ft¥KÅ=`ÓôHŽS€Ì4=ª·lǃ.¡ßD áhR®U¢Ê›Wz*ö!ɹֹ£õà¤ÿ,EaÞÈ'Ò‡†8!) „Q/±£¿îµÍÈèU6JË»…ÔRÑŸæ¥ED©bJ…ècVq‡Î‘²}cèWŸyLUz8\,ÿ7°‹>BÞïgƒ "ZŠþ<ÆJRŸ1ÒçíˆrAÐ×ñËq Նˇóæxmæžûþ0ÄÎÿy ”‹Öî.ù G„Ì`)r h8qË?‚.ç9+Üo¾Àtí>·µÆhós­W;õ~ø²¯æ7lCzÁhÑ|5M[¸ÀkæOsÓ$[u2ïE(o)“>Ì“GiCÜÑÈeÅhÖ²E¯{,êòlªE‹ ´VRuLŒ3Àe>$>;–'?·Ù!´MyÛ¬À³%µòÐc] ýþ/Då½/d· RøÙDm[îîU¾È„E4WcÕ&oa´ÕÁü»»÷–¼sM·“jb¬#ŠcA¸[8>0läidÂü*I©$š$òRWÞ) “'q0!Og*Îr¬ - M MÒŸw(eX¿D‰ÝãÇÞç˜P|ÇôŸTl¬)xŽ·‚*ZâËÄÕÐÄ:uÛtSÖx²s"\wÆ7<¥Nûî1^c=}ºF$/þbö6Ý-·Íâ4ÉJ]¢Åßr3{L3p¬ø@’Íó:A¬£øÈž2›dFñ‹Ù¢+M¼Ž_aH@âÅ5”.£ƒ<->:Ä7ÍÙ>ÊiÑ=U™þ)¢ðz~¾ð™|Þ %”fÃ#;" \hDj Oã?·D _ò‚߀4üƒ¦«ˆ– -¯”×­^¦®š#|LéÕ¼±ÃÔ–Ðþœ×à‹àÖ“õN~1À‚Ïd íÒï‚k½Ë£Åþ2Nx 싌Â5Û¥|³œ|‡<ŽÀc¡°ú^9WðW¿ü¿£¾Líï# õ?„—öû‘àÔtÎ(øÉ@ÚoM‡ø.]À³Ý{ ¬³_CõúÚ|k's,ƒ©÷$­¸mìz§ëc } zïp/‹dÙ.ï|£leNÑîxŸˆ‰K~UGK¥Þ+³iyøÝ‘_OQoD¨º»ÉËM–ªp+td»5÷‹¾`–Ý'¾ aP;6¹îBÞ,Ù ’j÷r}êN“lÎ -Ÿ•õ}î¬Ýé¾2Û°b޾ÔåS¾Ü`‘™î)¿ª¹³U”qˆåþP„Q‘q ¤n¾È¶/_3(6²,wil•1”Bâ®Hü9"î¼±tÞ¼s.‰ÁQØÃ)Z`OQ¥ŠúëAŸau§Ä`­‡º½ýµð…-P(Évû*^©‹Ü¾ãÆ>¬Æ¿¶í©šÈ‡ºr{E-mwÓI‹äM°æöMïI¶ûð4¢›.°Û}=bHˆeL÷Öþ°¸uMm„\íFe‡ØÂ#L‡X¡®"ö!ÊeZD‹Jiß7eKº,Ú°+µö‡ §÷ êH€Mòì±N4†ƒ·9.)8;ëd OüA—:Ñì°Ö€Ÿ4êxÙ»"(Þ (px•½7¼„5«UgÚö!ùf!¿WÓÀÈyjû«;J>ÂØgn - ùµ'ö’}5“Òê–Î¥Öpÿ·(ìºq+,;À|ôº_ÁØ7)ó»‚ãæË®›¶l¯;&Q/Xü%‘×_Õâݤ‰»>Åh®¯£¶âPÉõ­iF—ßÞÿ·ë3¥y 3öÕÖ­öž³lµ.å¤~ Â‹ðŠ¢u:¡»_zpxZtß³b<Ö·XžcÃ:%ÀxW_$ I„®~lO-ºF;á»Z= C„wXaJJŪ—ªCñàö(æ<Õéw7Îã8#t‰be*:Õ·§ŽZèømUNS§Ô?¾ˆAsµ˜¨+õЯè‚CX©‹B0 ŠÔñZ²érz°ÌXòò{¬ˆ‡ºý×Bf­é1 f‘Π®<þDEÔù€ôÈsÛÉ+¨GߨQ» -êfïîïŽÄ~:¢r”‘AkôÓ·^XôýtVyí×”kPƒºqm›§¬jPw¼OmÍ‚Ôï9m¶*ùK;‘A½ÈJ5ˆzZ›pˆºø6½™Ó]Þ>¨³Ki«,Ñ_êÖ©Q¹nÎ9¨¿{gL9;Ûiý³Lê+ -Í\Zxç Þ/JS;õF88-MnôAý˜Î(sݤ›Y`êx†ýAX$ïN嵉ƒ:¤l¼G/Ýf=¾á îƒ´§rêɉa¢éæO§„q/`¥êé(ú½õt÷݉þzúZºŠÕÓÕß°žyü5f§~2ÙÀ }œžÃH€T³«h²éÄ!EU¡éÃÝH¸Éxü靸]IC'ß`LšŒ´ø©¥?¡–h<{!OÈJ?òe…(Ýæ9J.Uæ¨;~;iÒï¿8¤ åÃY~’W´H:AvZj”‹HŸè\ž½Jï•óб£G^Ý'„¡AVÙ½tw?÷PGøHÑy+[K-:;¾‰ôw¹äÊŽ¢çSíidAwµC¢[“LÜB ®Íú2ƒ«û‡õm’r“ ýg­g¼ªÐ¬ÐϨØ^åÒ„º*h0_5Ft3èÛ[ªÓ è’ #9 G}8¬óŸ? Ç0_íSÖÏ- ©eÆSöéÈ>çäï/oÒ–VûÈçJ9”òØY[m{>Ù(_È©Õ#=?¡èË7$$ÏwÙ;?o¯\à¹ÅÓÛN»!AÇv¾€î•rØ¿»u^ƒÂå.%ŽÎYÚ÷3ã=Nšs{ý­¨ÚîWDÎ#ÃöÏš/CÄy 0ûjàû¿9´u=êi7fZš¡Ûæ#ØYí¼î=¸ÙœC*?Ï]¤ÀoÍÿ(gk®C³¦©j¢V©9<ú£ïR±(%˜¤y¾AÚæWÉ»] ¹¥Vá -J=åH‰2ëváA3±ÞÌÇ•‘Ð輤F#—¹r½âMؼ3J‡„2~Õ 0Ç0)W4%s÷!{ÞB9¢TׯÜ4º3ÆIÌ_¿† F6µB˜Ïã6{2t]IÕÿremëeý—KýKéKð…õ/×·f38³ÿòDŒOÛó:gþ—c¬4Hªø¿ü]Ö¤”Óù4&'{ùX9Û¿\Xö¥YÿË÷Ù\u;Õ®ú—czª}fÚtmÿò+ÖRõ/ß”¶,Ò?B˜K+’"q2 -Â|c“ÀRM[¥k?¿ÁøçHÙæ,fàq|¦ÂÜ=?„l×§|¤ -"Ìk^j3ÕQ¨æ;5G ò<æÞd×]åCe0·þÌ)ä¸qÙ¼÷“¤“ÂÁçaŽXA˜\•æ-ጋÚÀbžÃo¿‚Viˆ¹ùöXhóÊÖ•Ð%Ñï;â!æo*ÇžeQÉc1ß/‡à˜ A {J>‹ïLbn?…ïöGˆy |IÝ 'BÌ9;Éä2æ;»h…GMeÌYv”¸ïé3æ©y¯Ì9yÂ×aÆ|:)£ìí}®Ë1wp«Þ~csãŒùgö‚¥7^!æ -¯pý¤`Õ÷¤ó˜kýg† -Üi‰?ÌßÊm²«ó×Ô~7Õ èÆ`NwÌÞèa,,Ρ榶ÖâI$e$1 æé™–oáР挋äa¾ÿ ¬§ž Ÿ6vÃ$†2Dæó+ þó ÿaž`GB2ÊŒç*îa¾F*µÜó‘± ÍØ±+ƒy¬?\«ˆÒ æQŸTg0¯y®PŸ» æ\jŒkpu»–5˜‘Zäb¾xÔ' ÃóíCÌeÈ“1O¿[ ç:cžÉŸ !óœŸîXSV1æib“faÌq²69Úðf¨…˜ +TÏp7b.ÂÛ±³Úõ`~Ëô¡7aE 惞˜ÔçY&l …¡—Ó±óYa&Èü+ˆ¡[åUWUl,cà Àr…ÕZ¾`’ôX>}Ì 9‚¾Ü}åH×ä&ˆG@³¤G­<)t1t*ÒuijÊ5ÉÖ¸ÇùC£r_*«B.¡†£²t5åy¢\Ì.Q»5RE,{²[¨ÕŒ(7¡%ä¥2T„þÉ]ü”—K§of'ÿ%½š‘öî ›³6yIÊé* “WûÔxÖ_9Ü’ÿì5Í¢XÉHå‘4™ÊÚ“äl•š(3mYÉï8„H?„¥¹¾§îR±Eþ²”÷Ñ÷оhãF&‘oº‚'‘ëN;,Çû熼uò°Y¯¨ÃženX3Õÿ›Ø ÈŸÕÏ ”ð ÿ¯íËÞ¤“öq?/õj²D0l{\žH{n,£B(yon4ŠßT/w¬&üµãm3Ñý'^AO¤ã -+-*ÂcØT“ãdq‹ŠŽrŽGö[ó›Òmœ£!ÿË?×8…>#§4¾*èztµ< œñÅ‘BE˜ê,ãd|2€ -XaŒ¯ÉP b0^ä,ˆÏÈÿ#´O/þPå®Uu§‘íâ÷íºNqq‹Ú˜…g¿›Oœ`1ùŠ«ÖÓuÑ ÆîXq´üYŠò½xŠ -endstream endobj 21 0 obj <>stream -ÞG€›°Š¶nßZV¯ýà€ÑžøØ‘Fal£ÃAD4ñQ„eGêÞr"KÐã’–8“)÷DoE´’ÄwÖz¾°ËüðBNñRÍDâ²G–ôHôëzå%Ä à²¤^kG¡kÞ¸§·$–M)võ¼`ÜÓÌÜáãÖ¯3¬Ëá;îg!+‰\ÆÜpc¡V5ú¯ -ñ` ¡?öæ¹ÛuÒ8Ü"¹$…„WŠð¸d)ß§`ø¯÷^Ï8°¦”¿Ý‹y0YÅ©áE¾Â}tŸÊ²=74S¸˜MotÂÑÖbé!%<‚@1m¿gc=¶I[»ñx„s 0› ÿ!ÞK© òïm•™l„î…€2™ -K ¿ë|¨e|ãÂú}Í…Aªô¨¨Ô5¿ó¸Ñ…™^¹¿{JR®¼'O÷=ð]ãMè^û¦?`)©ï¶¯^ÿÍâ3è–w[ЩŒŠ\¾¯¦Î.Ç÷e±9]è -ßf ‘:2Ž(ß;¢½Âü£lÜ8cîTRy¬58µ÷J#9xk -{[{ʹɽºÌĈ<Ö;ú¹'­­SyzÈyøÇS…Ñ{ÙÞvA˜*8yÞdJ¼Ö<îÌ{"ÈF©¼ á¦ã·lÿ„¼aŠM®…X`]ÒÅx¿ˆ‹Ñ0x½áÓÃ;¦l˜‚Ýÿ ÓýàimwTR7R-Ãñ®z7¦åÚ4ÙÝçˆ&`c½hÜ=Jt åç«¢qÔ&ú”CbÒ(íÞ2299íF…Jþk*#’Ý{ Úª-`w±€'ßL£rë®r¢‹«ÛŽÉ”š»Kݰr]ÁŒË(O#:0Äc0%Ý[À¯U –ÑD÷UZAÖ ¨ýÝîÜ‘TBO—éxÜÜWI†|CR™{ñ(Yù–{ ˜X:Œr\[©3@Q4k&¹½¯òTÅ\#LÜQy¡”ĵ¹qŸS+ñUC#_S¨äµì&6‰»:%Ä ÷Ø—”z(ƒ)Á-sxÅßa ¸ý‡¤W¬£‡áûö‚%Wÿ’Њµ¹·}’·"Ô(Jåí…°DR¹Û>,çÙWѦÛS5ˆuä”ÜÞ4EÅ)> -àö# ð3, ׂöŠÊ²•tj×v0óU\УvÒ6ò¥ÿéf››"ñö@²M¢Ý9%¡ ì‰í¡ñªÊÑÛAqÛR®ÕðE¿Ñb!‚°p›QÂÆ²jI{Ülkƒ9{3õXx²v5b¯§ú๕ÀÁÖd}Ê£½°wdì3© ëWò&ÔÞ« -2o .oaä´ÉšH6õiÓ$9!®ßš´ âNƒ_ý†v´÷¬Q¶ÇMŠvGQE‹o¶Ð>@8ýKÉÚ‰j¸F1üõèÑR‘‰ÏžºáSŸñïìÃ4HJ²ŜݛªØD)J7{h"(Œ/ÜÔì‘„ÖØm©ev+b1³$éÈéMsîiÐ0{{“Ðã¾B}@—-›z¹8Üôb*–-OøþÁÊðž•Mq€iaR†Ažì‰"P$¯’}Jô Û ]4¶£ã"ûGƒèm+…%ÈžP·Jb½¸35³B£‘pÖ1";ÆQªŒífFSNbäbûåt ¿O±1®iúƒý°*± Æ3bA±=:ÉN÷'@6>Û~÷ãÃY¼é¡è ›B¢::‘LØËiŸ°‡dÅ)0z°DþFœèR­gŸ+Øâ³œ€X°w º;•Øßl`´EF—’Ÿ5Y§ƒê¸§ïxœoûþú -d'çs婯ü:TËñÄ -[úÐטÆ}y5ßë¢Ë` «à¿l½ÑYh4)¹ |óº@]m±=âuÚ{*Aw=öc±+Í ±ë¦Â1"åÚˆº¶è³é¶Í ë°‚ ,!¹¼\]âæ-ÀŽkª{A%¿Âõ†˜¹T¦:N™o=¤áòçÖfý2#O‹º*P[W…0&1m[ y¹p^ùͰÖmñg§Ó¬f8 N5˜348³hí5¸(cO„<ëÿœÎÌZYªƒ©ØøP¾ÊÚfºøÌ Yæ–¢2Óëô©KÛôS Ïi¬¯¹*¼U‹Æú*çvêqÅOŸElµ~d§~ØZ”ëŠ%ÒЄ¤±^´\CʱFŽ(xA¬‰šÿÊ™'ˆ5µÒt² ³¯™ b=—gZ÷ -·[µz{—QØd1«ÐCš‡ÙÓ‡Õä ·rës2hZUW]Ìó Ó¢±ê*qEÐr‡eTµwiï:´O50­YæÂÎ-Õ•,q~%ëÍG 7ªÉô¢Ô¨Ö4pyûÕ hÃßA5S±Ü@Oý2àöµ­àoaÁC|\ äîÍ‚¦Þ†Š_ÊM zûƒè“ð/µ¯­§>¤¥$ø¸6]æ"QÔ¾ -ê0þ](.Mt¸ ŠÓGÑ7¬è/^Ò¡ìQ‹^f]Z_”I÷Ǩ²¬™:i{ÃF›Ñ€z÷1Égt: -V.<ŠtÏM~‰ÞGÝË-©)HåhŸCªIËFŒÌ¿‹”Q h6HŠaSc ë’))ë·° dRŠoØIéDãÏñ8”:ùŠ3ìSú!0ÀY¨J#§ûJÝ5@ß--}¦—~륩cÂSÿ ~0~–%Șâ[Ús(SÓ¬HÆÎt9¦iM!Œâ5UrýY¡üì6e…ܧ$gÓé§Ñ­ø}yÇ 5Ÿ&-ñ"9R*«ÏfzòðŠ´ûMcßš"%»]Ê J>öŸÒRƒ9Pà¹"ÔïA̲-Â#ꛓ-—EíòÝàÍFåÁ-ÑG}p‚‘Ú~IäIMäkÕt,ÕÊÙ0õ-ô>ö-åù·Ø›SÐ íS¿†V«ÝccÚÀ¦BP¦cx8ªWŠ&—©ÄÈ#¨ú‰ÔÁOUÄÃOP ã›xVF°ªFÎŒÈU/¬aõ!ÃTV«È£xÓ*¡Žõ¹UL¡h]®‚á8uxW£ãÝ«õ®ÆXíÌ[ÖÐ×6Mèle…µD=± -©v1ÇÚsÎΆnzHƒì~±bíªµ›•*Å©Ú@kÐ|÷=eÒ:4­]j] 8b[+!ù­c,lE‰ZÚVãÍo·†™¤—ýÆ·¶•7¼ÆÀÇÒ<¹ò!%šëãFW«3LèQMH1à¼æñ[‡+Kõ3ŒWŽçÕ˜iÀ޽r¬}y‡‹S΀úÊ,Þ9ЯD‡|¶ûW„GË€µê+ØRa†Ty7„± ¡U²ÔØ€‡^4ÇN¡kÝäc›SÈ*¤Dúެƒo[æ’-`¯@Y´Ñà‘ÊæôÚ8úOȽ ¯¹ò'‹Émo³É.;9ò@‹˜íϪ¿¬=rÕÁ?fY'xfÕšBÅf3álòSg?åÙï7´…ŸUß,k à -Z~ã{¬„;©”±_´D§E ­Œ§³¦´¸)­VdZ²;®ÓN›g—õ¯jւ©­>ÄT¯Ú0˜Øäõj]~ÖâÆo©äFí²çµ·–`›éàb$cËPr2²²Ý:ï0ÕÉô:Ûiì—¶ñ€å^[g©u¶D¡4n U‰ÜF“€WnS¦Î¥éöC세[·aÔÆøî­qßÎs›Û²<¶\ÒCJ îÑçíK¸DÙ^×yÃå•ĵ]Î-.@ ظÈ};ÑÚþð<Þh²D)×þÉÙrÕRïœÌճƀÝ6—î-!vîmm8 ãÏ]P%©.Døt u¤{„,JÓ…°]L3êÒDbeuáÔÔѺŸPcL½®÷ªØ¤Ä»oÍfÚó›xÒ °]bÃÜßbÛÚܵéOmŸ~w=}B^â»Cð’ÕÐÙ)¼;PÈÄ›è§>ãxç\É’×8Ï-ï× -Zh›wLÐü¼W#e©£·£Š ^_"WÖ *2NAìµßµ—@›ýðئÃvVò¾W„áKEþí<¾¼É¨ª}ù ¯ÙhK¬~²”}í©îËç~2G"ü-¹(ó+ºú°'nÿû}ã©–W7}Œâ_•׈Ú“"¥6=­0?`¿¦ZÑxíËr;±ú¦Oø˜…°Ž[Rb©¸ÒYLÉ1óbÄö2ÁŒF4é}Si Åìõ‚Ù­Þgð:—ˆ;z0æÇa‹°}±Í(aNØbd•¥¥p@+ÀjÔ·ØÂ^ý ¯þ"kѺòm†ÀhžpÜå0œi–îðH޳¨Ïyìç€ØôÆ&Ä\Ì †4ðð܈_´<ÞFÜÔÕªœUf·W4 ›‡’88×p[â™ø&î:P<$à7¶4oÂTlîH*¦ü¶Èý…\cÍ’Åcñªr¶ »|1z]ŒÏJ”÷»8.>1>…Œ÷r}z¯Ç¸0›åˆŸ†!PÐx{¸î¦Æ9‚«²±…§• íÆõéØ~‰cíÓû9”Þ&ñ:FÀÍ'&B¿wLëÐ#3³ÎõoÃDŽ?£(H p@1IØc.¯ý=ðӱγkÎßTcRMidý-G‚ {Ý 2áŠvÎ|ò&Ì*³á©jä G†°&g ²—f®|ÆndLu¼/!M+Èæ@rç²…û‚|ÖQ†…ƒ¿›-ȘûE `f³ÐtâVh ²6iÌz6F$À=Y 6^Cƒ* - |ä6‘s' ;ïSöp)›Ã>qù‘üFYÎf~L?Øh\¦æÇBù¯÷*o¨’ù±!¾Ê×Ôšü'?–½cô(\óc ÿkmù‚é©9ÀQùCR®1~>’Íc Êu,V*«yª³Ö=Ù Ìcç¤jhµ«^ §sÆ4ã@>G—ËcnŽ¥ŸfÞ㣒ød±{,l”ˆ%¢±T`+ý|ôòX¾Ìw<ØÜ‡F/;ºt¿ZX§JÁ ¼uîx§Ä(&œ|·c]ûÉÅÿR<*&\Ç “¥Àv|1'¼ÞC?p$×,&Õ ;™lK,*!ÁrÇTþ™*Òóã;îøV©Dlºw®„q N#DE•2,@C`r+e…¬ÈcÆYæÉc䘚JºL¯Éc6¢£;`îÉãP>‰cN¿ÄŠíñ÷yQ{yè;´òåSxï߀5Û -´«r†Çµ Aj¶5L^É¡Áý‡dzÃÇSöå!K•W5o%Iô?îîk”ïf é<™£ÎÎk>Y’‘hõH‘sêìb—üÇÚ"iàL‰"P‹=zØ ·[¯›¿MR™HÕáR‚AVÙѽ²Âkþ`v²Çj£š%È܉³kxž¬¹w³ ô?qHRþ -rg£¹Žq‚|Ïo‰0Rm+A.}Ó%†H51âϪê„:Œ,“ä¶¾GÙ)U˜ynÀXïu¤=ª°í -ò4P$¬«Uië;:od¼G@a1·rÖõ8ï…škç1® òM§U$äQÚH@&!;¡ãþ3ÂÎ vðO› -¼©„ P§WdL!6À$1c…ü×v_(½4+dI¦üÌÒ Ú(Ù8 [Ê:Rö[ËÅ -™²¿@¿J¼Böz´5µè4~ü¨]«é«ô.ä“érÅ(S1d (â"/kÁH™¡gÈs¹«DB¡”!÷¬àô˜†LУ†l#KQGCÆOÞì¹9 y¶Ì4¬N•ÉÂJþ¸ È«äª/ 9# n“†üPˆCCFtÁ§ñÁp¼k²iMý48`Õ2ãCè²>ذÚeÀ˜jÈ‚"²hVd•bC­0¯­;Ê@ÉæšÈÈ¿šIaD¦¾jK %2,l{ý'µÎþkpº+WuÝ/‘ÍEqKd4Rh¯ä€Û>N"óÜ, Fä3›æFäéPoù6ÁòݬXä寵^ú‡ô ,²êx$j"ã™Z•cÎᨑó -ØoR#¯9Kenl2Bb¦§9Eò,TÕq¦º]þHŽ~ôv„³F¦—´F­Áíøäõõ舒ÿÍEAK.O–}0&_+ Žl²xH,¸NÎeO›fùÉií]à¡lèI¶±ø­ý@àñ'ב2=0¼ÒAD•ô#e–xƒ’)ì„Ý‘²úa­¼H28R†…;á ·Ô‘2!×'ìFÊ8oƒ‘2¡guÜðËq¼Yω”_8‡óu¦Ü…¢Á´tÖTʔ˦©9ÁÂØE`_a1EX¥. ½·:¢€g¦<Üߢ-ˆXÁÒ} XžýdÊüE΋)[ Ø©Py&7 £ªòíYyUEÁ++3µ½XF¬ŒÑ1™eÛÁÂgyÊ-Sa˱¢»–á2ª8ÖÒeœrÇý„¼¬×?Sm_v9¢!`®yÂ:µ?Îé 3=Þ•³½”…Üxþ±¢÷ÉŒ32ËDñÆ_X96&lÈ\tæë±64ò6Â4«n€~æ?«f[¹Q÷šá¹[Ÿ;›)ËæÆôß2¸™]Ýÿü&ž -; ?ª]pÖÓÇ\œíÌ{Á$šm¶™Õ6͉sv29sõ2/œ³r"¦téäªr¹Îp;Ȇ¨Pà9[±’g÷ìÑq» oμw•‘Ï Þç/Í”ûêçn.Ž,÷ŸQ^„n@Kïà.5+hân“Æ {2ìËeŸ*ô”[YehˆDZ-#'¢­ª(QšøÌfxE+쉪`ôAÔ4:@ï%Ö–Kqt-ðS«MƒV„t »Xh¤ë/Ò’v# óOÚ­Ô¬›œÒœöOi+ýQÅ -K7äË(c±Ì¥+— 4E˜ö÷2ÝtSÓæé‰ò×ýÊ™ÓçôNÇŒÎm|šÐñ¥Öñ »Oß`á¥z|š7êÆºï"P§…8¨Ñ¼, ¨¥Ão[šrPgpljÉXá¦õË ¼€Ú†Ã‰ ´€*™©½ñÏ~K¹ ˜@Š)Ô•º/ >‰Ú¥¸âN¥à“ÔMd¬s?m‘«òNØ¡<*x’ªàt«Â”[#µÄ\MpÃŽ‘zœ ™ÛÓH¹øEUúú¤F 1ä)–ãßo+©Y)0›yàpÝ«‡%5n’ÕJYJj£ÕÀÃ(©¼o•GRg~W2Dj_—Ö¾Q|W¢Æz•Ú#Qû¤ŸT÷$Ç;]°Š«P諸"jz”FͶÿ¶dú¦QÿàqѨÓA§ùkGЍYA&‘o®i–:âñFà…GÔNDŠÚj›¾¼Y§ hNöh’fU!1h_~!BÔPìÅIK¬'µÙ j„²¼W#D p!àŸ™QÛÕzò.ô¢ ¨î æEYœƒZ·³/Ö|?¨«Ðua$¤¤ ¦"êÒšúÁ-¨7‚}7Æá:žÔ«¹¸7Å^?Kt†d6¨U&‡hC4·DÕOo â -4j,7ƒ´lïæI£¦ aÎ…­jÔ^ÑHý‹©2d©;e55ßcŽOýcœ£ÚZ_?¨ºuÕW³ê7‡Õúr­[-h ^W»KÎÚidŠÞêõûÕtƒe†ÃQ/UȺ²p¿­Í¼Š¶­+‰ütµ"eì­òíHbçŸëjÙæìúwÇgñÚ`(«²^óÂf‹ùº‰L7ï×&ˤÀ~{ˆØƒM•j¯öxA·ˆ"H}wŦ־šÆ&&Ý߇{¦ÙmÑ|(=º"1Á•í}Ep ³ë¬¤ì$1J>]lRÖ©;ü@,óÙËhø|vþB›-aÉÑÖS4éœÎSëä¸zi#ì¯W—vBziû´iXÒÊ Ú âmÙX#h»6æÛ ¨–ØiY;s¶-MÃkû5Ô€}Û~“¦B·i8hï+ºmbbóXñ6'1ôm¢F®] cPL 7®à{Ï&îýw‰ˆPro‹L»¹Ë-º¹ë¹çÝÃ%ÝŸ"ŽF"¿‰u{™ÐrsÖ”ìÎçhf»Žßt·‹p2仟¢=‡Â»aðÿÛÝW® H_Þé3•?ÐÛ®­Y7õæù{ÿ¿ÇvoøEDšÅwˆËËùf[è (®oˆÞ7 -8ªˆ Î Eþx1ì¦ð­Wp_mÔYg´d¦ž§:AEÕjJwP·€ _ ¢ ¸V/àÉ~t:½ -à9 ò+¸Ü “¼¸º€Ã Ñ£™ÑzV ZçC,¼åߣ–âÿv‡}Œ{Œ/¼ÎžH` ² ?°¥€ƒo©¶6¯…;’>2š -’)àþk+ø`š -¸Öie5Ó€›‰%*àåg²¦(vx«tx¡I‰#'ºSàìÖœ^4QÚÚ…'¦€ -|&A ê_ƒS+KiDXƒg^‚GŸC¤Ú÷ldô+Úþ=6Z¹,uªQÅ¿‡h×1ño®vs¥…¾ß诱x¼ßÿº#½«ù=‚—˜±šßÿ¶cóû#4I Î×ü¶»oPùí®Dä -¿»ûÛ‰í•ß´õP~ÿ†ß©-c˜å÷ÄE©Êذh”ò»q)Ü o>œ,¿s\D¬6$îÛÐþ‹ì¾i:'Œ]nL]¶æp%Ý7æ-ûçáiº¢òô²/æà¾_½ÙÆ–kùSÜwþ‹Û‚Ü÷H—MaI÷ý€bµ1ˆú^þJ]°áßv¤¾Û¸~qØM}ƒþ=ß!ÜÇð*ê[ñ’·| ÞK^¨oÂæ:Õ}¯\Íï<üý@«k)¦!YÞ|¤c,থ~AþX8e³€ ­9 -½ð;@é.|Q‚kaÀºà˜ -|{À×8ÓÖË'Jpz€ˆ.8<ãp -Úà ôÌù>Éü$$|m¯n“Âï!ŒœláózÔI$Ãy—•W2<Ñ53Ã1þñD†÷ЍÛpÒøDvÌWÃlâ–-Bµ©ný€ý‡K4܆eiµx ‰ÓÅÄÎÄM=[ÓóB¨:M|™yOÈü@ÏùQU ñwï4ñŸÖ©wÄI‡&8ó·~·b&.ØtÔ–Ï' ‰Knp æÂ ‰§¸Ïfâ¶ p‚(ÊM&~<ÿ«%Sç`²™øè·+´ÇÅL\ðy$ð¸ä ÊăˑB`Pk¨;w¼áøHg w-/8ˆâ ÃÝ¡÷µjM¼k,ûR…¦ÚćÔx>>±ø˜,¦Mœ«àž·«¶QPù&îÞÁ1ÁäÁ³d‡[ÁWg+‹€›8ûûÞ“*2LØÄ‡éb7ñ•SºX÷&ÎÇ(i¬S€¦›x «z¤0S©iÏa¡Âˆ\$ñ4nU®x'å/%.™ENš$éPâU3³›rMI¬KtÙ [‰GÊ+ΰ‚î ¼;<ƈÛpÆKßɈgJ¶rqÄ1â,Án쥽¢„dÄ!? 7K ¿qWs†ž*¦y3âLñVÞs-BcĉÞfƒön‚ Ù">ÊjWº%ç°"­Nâ5'.f{äƒ+Ysâ"ZSŠ“Á“^E”.¥øÔ~^ÔÒ—è)ÞŸm ˆS œuJqQ0%Wœ[¼ö/0þØ¡†ÑÖ²ú?¤:îì³.Œ‹æT1Žß+ð²ã=Ìg©Ç#F3Žß€ øfèÆ»>ÈM=‘SsòÆ9ÚHni¾ÆÈ’¥Â²5yóè”?7õÍeÆ|Õ.ó*…Lª¬üÅòäªtk9ÄÔÎ(]Sç‘ôå3ïpæ< @â) -ćMˆ™ïèQßp˜T ͪ¹ÅSÍæw‡»kçÍ =’À[Ÿ£rÎ¥é¯s‚ õúhÞ™ôªîƒ=f—Ø…¯%ÕÆ>ëðÙ3ÎBIö.zklÙ›ÚVL`½æÜ¶Í^Øí}¥]ëÔ^¯í´7‡âÙ¸Êv¯ÛΗ‚€kŒàžA/C!î]±>×}PrQî|»:úSµ=çȺ Z»‡(‚ÝwŸõÇ{å ½ª½OŒ/òÝô6ÉÚ¾Ç )ö{¥úq-” _9õFŽàÅ¥+üa 2Â×aá?ޤ†×+N«ÎíÀ'âO›øÉ2äy™¡ì˜ ¸P½³Æk¨…3>ÇG ??âŽÀãùTÎ[äßôE^"Jž,sSÖÉ¿ÏOU'ÿºœëŒLyþ•§†8bpùò x0¯»¹Ä)óØKÏiþ#ø”›gB--ÊùÙX¨;$ß{~øfUÐjC‹ô UoŸ·Ñ6kÍÑÓÅ8‰’Þ¹R•¹Kÿ¸3ã' 8ãñ¹a:Š¥ ÈµîA铿Ќ˟F÷æ\©1Xi>XÎG½J8ñùÐ"ãÆÐG®:ÔG?é†écô [âP¿Uõ­Y‡!}ÖŸÖ®Í{}ž2hzìo¡¡ý–½W5m‰û_©ûpEX˜÷g~¿?° þˆÃ…GÆŸ=äï’ ²Î¹NÊX¼1JaPÈBì»y<îòn¢}d4XÎ&+¥7Š¥±›ó߇uŒ¨ûJ\†ÎÉ×70t8ÚÍù¯EG‚Ê\ ÌïdÏ×ôf²‡»?±‚ù“ÅU(s~ôúù@›NR„~>`{Œà<„þWµàg¡?á¿Ö“ ý P0® -…~0âDîçúi×q5<‡~0GŽè¶Ç· ýº›}g¦:ôÌôÏ¢&ßtÕ¯¸~9Àrc¿™kŪ9Å»¿ø³Š?Ó©lòv7·4é?Tëß–~Ëmÿ+ô þíNÓÂDþ—ÆìsôŸU íÿvù³1¦1ùßjpÜnÿyˆ€u³·ý_$êÿ$”ÿÿ}@ΰɓEÆ[ÐÖñ^Œ"w!oêÓ¡nµ°¼5äÒ5¡!ö¥(@5þ[Ôèà -›ÈñŠ0þÓÈ-™EìPuõ`VÝù«/G ¼n "¼22êðœ(À7ßÝWqŸ¨P@ F >%…L/@‰R¡Œä*Æï`†ŸQØ€,öžÛaœ¿*ÔÅ(ç1çfºL³àÔϲz–D?0Náác0ÛÔ­WªGÀÚí}ž.»îÂÂìœ@„ZBg÷Æ2Š›.Â~jR1aìÞ+ðߟÁŒ -0¼>l…žN!…“–Ÿ‘ìä ÜÛjvô, €ÇªÖ@!ŠÛ>ÚЂ Ø~¿l¼rn oa0|ª¥ï\Â4ÿ!Åw&áú§š&ìñ¤M\GUÝC ikæ0uÐ3NµLÙ-#°ç$Dø„r%YYû+ µ0HØÃ‰³Z)ìo bÅ_ké|Òe96wAf·¬5ÃÞ€ìÜšžàøv{0šæ,ñ¥dö~°­¨¨; R@î×ùl×üdÔ™‹QèÎæÎv ãÆÄKmM5ØIë¬oeM‰™‰]åŸl#¶'+ˆ–à7T°T¶ïÝ1i“²û˜œœ¤F¿¾§_¢kÝßsŒô¶Cæ+¸ý×Q$ŽDäËý¢áѺÂãÏ£!õ5'rk·*\È ––ñ¹'"ËÔ¦Á° ½¼nŒÈë˜é¨œ¼ÃØ)®ªoÔø5í×_‚u ÷CfAsÙ¬¬\ø&¸¿}ûÀ)f)¨(+zuHPǶÚâuŒ].Ö‹Ë›Q­ñêXÎNMi¨n©õÀÌesmdç‚3÷5+d€Q -,ë. Å"?`qàðÿÿ ƒžuV~éïì ƒ?3b:é!’÷½wï½O 8aGpW $ѹ!l#Y#B”‚ö‹œí’VoaìÐæÉ¿Ž`Äc-äØcðà¶/u6—׸†x˜ƒ œÎ ! ÷ËnÀsµ$ÞL3G¿Üu¹4…q² b\í’Vo91>F6–}›e™?5óóP®ŽžBÔ™ ìwýj™À¶/m¦é“«iß<¢ž=„iÛÖ}A»:çË×”ô¦¬Î;Š|}(“°WѸ¤½¤˜Ò¨˜ÊU/*½O$ß×q´s -!Fú{ªŠ‡Æåªx/•~eòØjA·?„ ØíiÌ»aêÎf˜¼³ÇÐÎÖ ßÝE“…gM¡à³£K¯ äxï|ùn£LÂ;Hrðï,â½ìu¹.k\±,M6ä9Ho(‚ú-1­‹, m¼¿ƒ¨gã€ïºLßZ s·&ûDþÑ^Å>+'ÍÅãs†ò ø} ù:Ž÷® UlgÉଜ˜¬‹2 uín›@:ãµû>ŽžITl+(ñHÓ7Tùg;*ÞPª‹7’ü³—BÅ6ׯ;Ákä7°*ö@”€ç{×s÷þM¡Ý¯ „û3}ouŽøN²ÏÖëù¾¶qÞͳ¨geü“ùc£•P½žI4|ÇØ©u—³yëbw.#ã2ˆqn™O£ß‡„tŽ‹ºí*{1Q•ü¥•H»E›…ö” ÈAh¢ñ#…*‘"zžE=[†O†Ñ3£sÄtß(³°ËŠØr¼cøÔè,\wûR×eüØh<´íœ­„›sóæ¬œçrú Ì¥m;óÇÆÝyÌ«…4síj!MÁþcé×kçz Ý[ÏÛÙEœƒ÷Õð`£UC³öŠr:oP¢ê¹p€Î7†t>F -=ü R@ç -DLëFHg&&ýRiøû@ò}¿¶ZæO¾Aœ«V¿…XRïe$ô/™Þ1}i5ÌÞÙ„ù÷•P½þkâOýþÁ»Ÿs¸÷‡*ïžF¾Ÿ£8ƒ‡Fsyl,'—)­z»^·[:Be$Ïï'Â$ü4q=ËÖ•o¼söh¡}cH÷eüØf Ë¿.Å‚’žÀ¤tþŠ=킌Î" k$P°²üGž‡¿0IôÐvbeôS.*i¬œtƒ–µUDðŒŸ[äŸ õÊè'?'ØNâñK±ôM¨bïÝÿ‰ôû?“L÷uí>Oãž×ßý°Íã˜÷"ÿ¾ãžÍ£¨gׯù—<{~¹ûr _›󷯽Ãu¨t—ŽQî†)¬µ;“qý_BLý“+£÷qô;°ºè£^½NážMçÔªøTm È?›ο¼¡Õ:â;©ÓkHýšuÞ<Žy=b¾ûæPîÓÖÎõ¢ÐAß´*öI£`¿ÀäŸ:QÙí>×[¶Ci׳xXv HFé©&»Òê·ÿPúù¡L¾@…dmU“fÐB²¾š‘Ih Û ÖõžÆ½Ä öRÿR)Øf" ª–~AŠG4égÛÒý@¹_#(çs¼u]H½.Ф߽“˜Šª¶‚«Ü PPå,œóVÅ>ô)¨€D¤×²±YkÕð¤¯b`ÖJ¡`pœ±;ãÂäÍ;â=ŸàÄâ·€dôWj/¡‚}LßÚü‚gsoÄsuQ¦áWP‚’æÂJ;±.ÚF^ï´ªø™T½6“¯oòö9⺓—Æ•d“u$ïh&ë.ØPY+Gçl€Ñl¦Ï­Çä¹ÍM¨bûiµñϾÕ1yi3OxÏ^2 ÷,"ë4*ë­Ÿ3Ï™AŠHßtšø„€Dbñ'’ïû<úu$PÃõaÑN@"²?¹2ú$ÐïŠüû<Žy?gèrð3•"ÚM¦áÛg1ðëìù£Ïÿ$ -¶‘>} õî¢KC»Éñf*E¼2 oŸÆ>›'¼gEÞE˜„÷¥ }ÔIxÿLþyJ=¯Ãh÷aôÔ¸2€h4Ía[Ÿù¶qk -çh$ÑoÏ`¥uî*Añ9@AS½Ðœ‰2»Ï£ŸÇ9Äó;ˆ{_çpïÏð¹õCºOtIø´*v(WE›(3ðÆ9¬³oSo%Po·FÐíÇà­ÕÙ6› 3wV×¾ù0©ëraìÒ¸A—€^¨³Ïö‘äëC—„ÿèS°‹úýD‚ÞÆ+×gþÚj!N?¯ …£Ÿ‚QI# ±è4ûê›pmã•ë6„sDZïSðï<âÕ2~nôÌ_ÝÃØç"ÿ>Ñå`Ð%à!Ý‘3£_äÌæA9™À´fÏŒŽ±K£m å> \kÊÅúÁÉz1Ù§`H"~;P¥ßW:û%$ý” -ËzŠ„¥'ª<ü9‰wý\×6 í-š=‚Ò‚QÚKèÏÒ¡I3¡&öF>šÆ7ûLöÕM©Š]k(wBS™ŠEf]:è.ÿº’*bÍ5d³¦¥”^ ²ûHòu¼4¹Æ G™ -z¦VÄzje -Ѹdî Lh2ÐŽ -ÑøŒp´‰. wñl£LÂ;Qï†É;›aèÌf»îLc¸öyó|!\ϪÕÛº{Ë#‰çmãj<3†/‹¦û5…stN¯æ‰¼ó˜|]hÐmúE½.#¨FÃà¥É2jtM ¿×Ñ7à8¯Ãx×oÀv5  \d ˜ó½û6†qç°îÛÎy¿¸ƒ·VÃÌÍ2|k5M \ýrgsy—CÎ ëð2÷å¼µšsÅÀ´vlÖS/&û‚¿A K¦Ô°7=LPâÑ_½Ð¬Œ`´‘@¿‡6–ŒÌîDÔ[0Bê) í]°œµ‚£…õ©aWBû-,k KL箞4Ó*â§„£côØf"OÂŽuòoñ褜€ìCœ†Nž„›o¾sGQÎX{«•‹Ççì5e•[!ŠêlÁIꜥC“FÀêø›>o!JA›0®îyôë\=@çAH稌E–…öeàMtx M -ÚD–†ÿhÓk/‰"ÚI¡‡?)ôû£>8þ"¿’¨×öQô»o éþŒŸ[½£ˆ$ùgë„ó>ηnG¬÷s¾xöŒ^›—Á{ë7‡uÿ§Ð^ -õv‘: o¦RDÊUñf2ýÞGš‡=Œ}>Fom~±;Ûî,îÕ XPÒŠ˜ÊH¡ßžuûZÞÝŽ½Üu¹8a»šÓ°cÁœ9@„¼ÍB¢îàä}ƒ“Îñæ}G¿ï¤Êø³ddö¬™]‰Q)l+~o8_Sç} ÷ì1Œ]wžl«gúàê¿5½3. ž™,Ø6Çä­Í/s_~ÉûröíÖfázYÌš,3È&×¾Õ8b»š¦ð­†É»e5_ÆÍ¶dÜæ–½ÜÙ2Má=SÈFÏÆÑBœ€~ ÑúF½ìÛç¾¼ue?¶®ãx×m¼r=ÛÖ¹Ù´z›¥»·1}Y;Ï}É»·1€gÜì[ßò0 ‚*•J¿6Rèa% ÷‰ìó6ß:z'q¯.2ì<{~§iTÑHÛLª^;i´Ðþ™üó Go¡Éê\æÄC×0EµÆšq‰cx÷wÄ{þk¢o ¢²;µ6v É?¯#¾³q¾u@’}öÐ%aæß‚ ü=‹}6ФŸ-T hEÚ@“~7Ρ¹k£eöÞ:`\ßu›Cºz'Üç{ÿþ£ íÃèwÛüÙÙ8„ww¥_7iÜEê<¼4í¢KÃ;l÷q ñ‘~èÒÏï4òÑ;Œz=ª£wà#”ÎÚY+PÁ¨³h÷còÒê—:3îKÍ}©»µYº^–«µÙ8[ëÒfeãj­K[]v UÑöqäû;‹x¾H“ðYú¿6î‹ÝÙ¶Æ Gß|çzøÎã€ëºO$_ÂüH¡^Æó3q´ŒŸ­ãx׸Ší¨Ž>èr°Öi´ë:‹yݦpÎ×¾yC·®Ã˜W#‰~*&û)â¯!”ë1xm²Ìß›\S8G]úù­‹ÝÀ«xGÏç€ñ¼Ž8¯÷HöÕH¤àúic€Äc/Ú<ì>}°ÿ@vH¿O¤Iø+m"ÍBÏTŠx?µ6v((é,0é'$ë¥Òïíãøçq¾vÞ¦pÎÇè±Ñ2zmHòÏFà¡ñ;­*~!JAûçÐ'u‚í(^jE$PäŸã½ûë7ß9¯³hç{ù¾Žøîç„í>cÞ¢ü³‰4 ¿O£ßÏùÞÙ7Þ:ƒH×uñ<é©~È2ðÎùæõļã½ë7†tè’ð;µ.ú/$½“ë¢ßIÌû5rÞ&îÛÊýo]·ç1ïþ‘ì³wóþNbÞŸÑ“£_âÐæ93:'l÷…(mG¾_”iø‘>Ážçq¯ŽÑc›eþÔhšÂ89q¯îaìó>Ž~ß'²Ïë$æõG¿º‡±Ïç€ï|Ž8¯æaÜóC›‚ÞÉuÑxUìC™„='œWׯÕ:Šxþ'’ïQþÙD™ƒêâm#“V@"²/™‚íŸÉ?Ÿ“x×{"õ|Òé·?½2þ¨Ž~éTì‰8 ûÑçá'â$ìE „=ÊÄcÝ …e­àdáØ£B8ú&Ôð/ê,ô@”Éóû¡B,z«ß›H“ðm -~"ÍBoäiø•BÁvÓiâoBÛG^ùgû<úùF<ƒhçwó¾å g"E´›JoŸEÀŸƒˆçyõ|Ñf¡Ô ¶6 íH¿ïó˜wmzm'ÕDÛ@ªØ.Â$¼ûl1ßýÓh YÚC“…6æàã½ë5„r}gÏ¢üûEwåŸó½ë8ß:[HÓÏ üF›…¶‘§á üB™ö§¡ä鵋* o È¿Ï£¨'„ùãègßÒÙsväßý„ÊhyÞ3|mÆ~a»ç¼³ú÷o¾s>ËVo³m¶¨Òï uò} K?ôyh3‘~ÍšPÃß(´Ðׯõ˜=5:ÓïG™PüJ4ö¥ÔïÇY¬£cþØä>5™F®÷8úÕDš…¾Èsðã(ÞÑY·nÍ \]3(WÏì½õA9_3×oïúLŸ\…³å,Ü=ÓÂyšÀ6/˜ÖaöÌh;´ÙÆ0ÎÓÂÕ.h´Ö¥[ogßè K@?Ã׿sñ|Ðd ™üòfË0wh2ø®ûDòýžÆ=_C8WÛÚÕ5ƒut"žÒÔIÔë;‹zýgòÏÿLþuÄ;/ãçFÓÊÕC˜¿éÜM"%¼Ÿ\ï,(»“*ã7€ªøZ}QæáÇñÞuœ/^4 -öR*&ë§WÅŸ$zh3†¿Òç÷&º4üL§áOÕ"“¾šÙˆô L@~©b›H“ðM~ŸÇ>/„XÄ9hë(ÞõñžŸüûFž†Ÿiñ~zUüP­Œv‘&áÿyü:â;›§qÏ eþÙA–€¾çQï= -Ú9ß¼>£çqëlE½OÓ7×cîÚj›@:ïÃèw+zí(Œö” ÉÏ ¤ý”Êh'yzí¤Ïï픪h/‘qÚG …6ˆDŠ5±{äiø*ýlš¿¸N3èÖ}ù~’ç×>ò<üG^ÿ#ÙgÛÊù ÉÀåªh'Áh(]´"ÿ~ a\]3ç"ýîpÞ§áƒó6rvbŸ}Äih'u‚m›Á¹ŸeûÜ:[†Á;“m¾n¶Î¢ÝÏÎÙ2Ïpa·¹c>’{§ÏËü±Ñ6ß8ÿÙ÷qÄv5N¯Þ¼ë8ˆv^¨óï]úùžÆ=¦ë1gó‹Ý-¿Üu¹7†tÇq¯®9„£eÙèìZ]ƹca/tg\:¶ù%+÷VÓ¶ù™?·S§FgÝnn¶íæÆä©Í2mõ‹çò.‡|ÖÐ!WsaìÐh®åÆÇ0€eÛ¾6GœW…ú:·z¦ÏÍãÒÝ@•ÿÆîÃÌÕ/vÝç[÷}ý>Îá]ÇñÞõA¹¿æûC–…~èrð'…~?Òç¡}¶«m çjœ0“x׃,}Q¦áoB 'ÖÅoUñ?±.~'Öðêõ8‡xßF°îÚXÁ]$PÂ)ôÐ^:û­á 5ü™FÃwÔ‡Æï¤šhiÚO¯âûiµñ;±2z%Q°$9ø ýþdŸƒˆçq¾u?Ç›÷{÷ìȾ;ˆòÏîIüû=Š|Ÿè’ðÚTíí§ÖD›(3ðî ûÝ7†t>o­¦ ”«yùz"ž·)œó8_;¯£ˆçwõl0ž-£×æeðÜjïÝ'²$¼¡T黎v‚·Õ -Ê;êƒâ­ä‰hmÚA“ÿðAÞJžˆw• I»A IO¤Iø…2í Ì¾?ÓGÏìÁÕ>Ž{6äß½“˜÷yõþÍ mcHç‘: »P«AG/DIØmçºLàÚ,ã§Ö…$»A’w  œ}CHgû@æÝA•ö 8îÃØ™ÑY7{ûrgsoÄqŸP®~±³¹.iÜ1—´-Ù‹Ý-ׯÕ6‡rŸ¦°Íß|å¾Ì^…ëeÙ8¯}É»·5`·þƒÙ×k -ã|ö­o]Ø|™‹]æ²&“Áìu¹6b9G‘ŽŽT“g ×j˜¼4nîÞfÛ¾–we2µy+ãÇ6×ÒÕ/u]® ·Œ×abÜ‹uÈÆy-Ì^W†Ùër³ržûrçµ0}÷6ÛFk9† 8 Y6OvƒH×J {Ì\Û‡™;£qéîŸGÀÿé÷iüâ:Ï"__ýÞ>âÀ_HWÛÖuqŸOòôÞP¿Ré÷÷4îyšÂ·:ûÖ·Y¸{‹ƒˆGûDò}"MÃŽd öÓsÝØìXÿ’©×îqäû8á9Ï£¨÷…2m(WEûI•ñ+zm%Q°Íèçm -íêC:/´éwO™ü B8ÞC–wbŸÝ“ø÷uÄvw [ Sç6ó4îyÆ=O#×eôÞh›Â9$ùg+‘ÞG›^[Gñî×¶}Ä=_„Ix#qv‡*mÃ¼ÚæPî×Òù˜:5úÎl~yëÊ1wkrŒ c§&ë€õ<#à-9x=þÝ7yw!^·è2ÐŒ Ü]w›DÅݦ‰wÓ(bwgϦé›ë5u]Ï­×øÍõ"IÃË…åïš¡i#uÞ5‚rÿHóÐ6´eüàæ¿¹¾ƒ˜w9ÞGž„·Pdà éwqÚL¦ßûH´ÐªüûÙ¸.7ëvsqÀu]Èrð/‚»F–†f<Š|çî¾ñÆÙ2m4ÌÝMÃô™m³p^~¡û[™Á¶ÙåL&ãc6pßaÃË^·,;÷˲v5GLW÷PîõÉ:/ˆV»¤i;ð± ¸ïö‚§VÖ3©Wgãì-ߊeåºÚ—¸.—£¹´qDzs^󗯵Y„“máh/œì’¶%ã.|ñNÆ!ûÖ·2js Ÿ÷…îo³oŒs5„q¬ÿ:¸¨ÉdÙ¹.¿èÝ[={æ6Y˜ š–Ì¥­lŒÛeb.lõXÖí&˶}²ìYŸ_äÌfœoã½û;‰x¶ ßZÍó¸Wuz=‘¥aO¢ßÿyôFš‡vQg¡Òì8‡wýÅMûRw—ÑxÝh KÀþcÉ÷{&÷jE>ÚÔ°7±"þ¤QûǑï÷4æÝ8ߺž³kߌ\ZUû²Kw溬Í[™@6ZGÏßÞÑ<{Þç‘ÏÞAÌ»uÄu]½6Oó÷fQþÙE•‡Ÿ“Ð^*ýÞC—„ÿÆðîׯ}›B:_#8×m -é¼Ïf"ýÞT&&í¢ÊC›ðÍÛ Îý"ÏA¿ƒ¨÷aðÒfðœMt9h/}†o&Pp×h³ÐVúüÞI`»RÏÆ9¬³wõì›ïœŸéƒ«güàê¢ÍîêíI -vƒ"oœo-Ø6»Àõ²3^ônî ¡uëe\‹Aß0á‹o1hàw˜YYÌß™v&ÌÆ…ÙSÛfãþOëÀÍ´a1lc6‰q\0ür‡V£Ç¦Í¾Ýd¼màd4ð2¯ ¼ÕãŠeñºb.r³ï6p &ð1¯¯,žMÓ·¦•!lãʶqg Ûf™C¶­ËWË×^ÀÀ}˜—¶±.jeb.hòX6ÍwȺÑdY7šÌemÛÓ6ð¾8½AƒÍ†Ú&‡KK« -‹ÉÚÚ…*&®*¦*&,&.*&ª·š‰ŠÉJ‹‰K«Šé¦º²Ú¢’b¢b¢bú69b5SXï`M ®íB›œ 5SS‚(›œ<¶==4­ƒ»©¬+ª,­-ª,­-&«¬¬­;/¦ª=42¦µº/›ùªK+kª‹ªk+‹ªª -‹ŠÎŠêJ+KK‹Ëª -+‹ëjêŠK‹«Šn+k+‹ëjë -K«J‹jËjÊj«ŠÊŠËJ‹kŠjKë -KkkkK‹Ã–Ö–VWÖ•—…-.*«­-..*«­©-®­©«­©-ºª«««-¬- ZVYY]Wt¬¬®¶´º¨®èÚ´¬¬¦®°¬²®°°¸®¨dUYVYWXX´²¦²®°®°¬°ºè°¶°®¦¶¶ª°°¨¶¶è®Ô¸´èú–—¬.®«,.¬®ª­­ª+«,®¬«-*,®­,.«¬,®)«¬+®)«¬«+©­­-¬¬+®®),¬¬+¬¬­¬¬¬¬«+­+..«)­¬.¬-­,­­)­,®,ª-­¬+ZYWZ[YU[Y]YU\S[XS[Y\\S\YWWWY\YZVVVZ\Y[WWVY]X]XUS[ZYW[\YZZYZYYSYYW[Y[SXYTTWSZXYWWY]WYWY[XUYTYYXS]X]XW]S\[X\SYZX]]SZZ[]š‘24Ã;°øc²óþ­¨x‚%ŽÃq8 á/†ËðnÃo8¯á0<†Ãpžå.ü…¿ðÃa8 ‡á1|†ÓpÎÙ–ž^á¾€XÃ`B¯‰²xh_¦EÅ)hIñXTÜKËŠWèÒâ`q° -\ÜÞFÈî]x¹{˰CY(Fa\@XŸ²l5slAë”qe-rÈ_È¿T1–rsPI -ÍA%.,ÿbwx*Yå1Åo¼@™vÜdƒ×p=!‘ˆ-ì˜ô‹5`Ò/vKeà›`X×ËÂ74y¼ø„ò¨¹ÂŠæ,f›&¦°uŠy¤jzu¼Ðï¡ ÖA‚œ#Ef¡šß&F'‹ˆCK@;”²¤»mÁQ³@£´’¤‹µd©3AHiËT¥ËŒ„UÔDÜB3ì#U±ª'¤ÆÉ!øu LÑz{l@ò@FôiÉ¡kˉ0±ñ1µñí RfB¨ÌLð¢H?“x~~2éu}Bç©¢Jf-fŠKªxC)RèE*¨=[ŸÌbùž>"<%eÒ療J['Ž*j˜A²t?  Ò6 -š0Ó«ƒgGÑÏ!‚£™D¼¤ªJò(•\¹ÁCüA(HúwI9¤Ê}ú¹Dðë(cMÓÍ"†£&šÄ9)r&Ȥ‡½Vs†1 -2±›ìq“‡ $ 'Y 'Q ó P–7@™ÚxK‡zœ̱„Ýã,aöØ -³ñ”{c”iŠ ÒÆ‰Xô3¼ÄòóuŠœá”+ó'@²ªØR1 RÃ1Ò@±%bY -´Š…iŒ-Ú@böš™üyBŠÛ`‘(´Û&erc(eš,°¨qŽâ6IDXåJ(+r#|' +k›1®¤y–ˆâ&êÊÄî´56o6V-ø0„˜×ÀÂ?:arK.‰rW.±rk¨¢F™ÃJWÓ•I\§i’¼ÍÒ$x›C7Å;X7Ã?B=‡D~f1¤t‘åÌ{À²ßx-]°”Á­«`ö,QÅ­ÓPÉé% ’™„FLd~ƒ¤f ‘98d†% –€Jp°Z ï âƒ(é)¦´©Šprça²ˆ¤I"•§$–ÐIÂJéâ-À„Ûa\c¬ÃXGï-sh )q¤B,IIcùF7‘rŠw¤v*îø u2é)âÉ[Üx‰v;®Qöµ2…… é)îAúiIäûi$Üùä‘ÒG$çbMIX)]Â"Al@%>>à‘6Ý“~‘H‘®b,ÙÄ€¿éJܦöSóðG ÎÃ0>½=dh™‘iÛ"³pH ÌB"!0 ‰„Ðüý„L"•Œ ‡–F"¥WúÈr—¶6¹ ñüüåŒäLQe­2 ìÌXÎ:m\YËÜqåŒT„“9ÓÒ%|ˆKbý¿â¢ÆÀ+w+Éèl d9'6¼æ'h§šE¼§B"¹Õ˜QïEÁa÷-Éq³=aasc]m XTe Z\¹xKtüÌPÐ$w(9 ÷øq–Ç$‡­FåÄ–E…ýµœð^ã×m‚—d~ ;Fy〮gäENÄ ¥œ` ©œà!§›Þ)2 ‰À° (å `•ᤸ¸÷Œ¼8ÓÀ* åB\? 2ÊͰ€ëÌa¬B¨EIÍ9cÊZ$“,6å,·§ˆ'p›)¨°QÂj¹;M™Üq†}¤nz˜Øüþpõ\‚ ª‰„Ps…µÊÜ—7¶˜mš¨ÂƉÊÄ®òÇ#g¢QOÉ Šž®Oæ—@étJdܿɈ›,öC×B£ûhÉYŸ]3%)~Ù’×?3ÑݼøŽ=’˜®h—šº„tÄ:NRÔÔ¤°›BþlMs3°2ƒkZ$n½Æ(ÄÐØÁŒ%â;iHYë„!… Ç4MOÔ*u@9{Û‚£Ö2À”l©€/×@ªøkõФÁ²¬v0-¯ô„(¦ó«÷ÿXêÙS0$ëX¡ €®ØÊ–ºÒ†3NW'rŸ¥Kò8AôŽ&áEer'*â‰\§Œ+k™:ªœ}‹0éxN|ô3,4h@#°_QHÛ±ˆ–ï9 (Š)o£œÐ–ˆ—¹ƒ -ZãØî·È‘O(DˆÝædFïSTÔZ-+ä ”Õ ´øpN\ØuHdØvJnü¶&3z§CîFqÑí',j4"%ÌÔˆ èš))q³ Iѽ"£Ûd†Y›’þØu˜f­#›s•4•ŽKyì -ˆº[eE={€í¹‚J›%‘nG%[<¡Qh¸„pÛðC>3À-Ú~l£8¡#—T±™`ñK¨üJ"Xº•@¨t“<ùnXvÌeãÚ¯ÐZùÔ>¡€Ü: ¢ZfÖ„EÇ‚ÃÆûqã¦"ãŽK"ÃN›Rƒn“2£ç-±aßÑñïŽÌ¸ù˜øø‹7ˆœùqÙqë9éñé˜Ôð„L`íÉMΗø°m*/êy -ÚÍ - פE÷޳»%2n -ZPå - ´rÙ¶Ìèm[jÔwT|Ô~RŽÐ±PnÉ&VlMUÎ>QDq£ŒÅb eæ!åÍs&¨dENT&vš®Nâ(aµØb,ZjF,èJðŽTУà%l±%}`{¸B«)ÐC& € -î–PnÒ*¡­D“Þ%µaA¥/TI3\Y¥Åš°ú2(®ÿÇŽ¸çŒÄ°Ø8 çð‘Þk¸#G7Žˆ 4¹IkwÖÒï@Ñ­ÖO®—\·´rÀ n˜#ä ˆØ2`AYc8zûÉhÑæ$Ç}KIá- àƒVªÈ¥6h2ÐvZUüX86ç-Ÿó‚“tÐf MÔ9è©`\Òð0³]©Q JIR÷! dnÑÞ™p'•l±1}d1SŒâùš$©×boÐžÉ ÏÅÂBæF91ÿ+1f[ -‹º¦¢¢¶µÄ˜ó¤ ©÷¢©í¨ø¨õ¤éwUxt6Ø »XdÌ3òJŠY~"¢w0 „ €3Úm -›~BÂwò.£2‚®›ðr@^tõzÈ8s¢;æ¤Õ[Â*‡9q­»’-V…mCYÑi)'êþ$E¿p€ªáI©¼a‹+͵R‚F‹R@MdÈwôån„}rßQR£€cö Ìàš)Pcf#ŽõÝ5^•µ[–4Û6ê¸'7º”|Ç‚î^QÇQ±áñžäðÝ,/hn,d(Á¥S"ãŽ;"ãŸÅ¦°µMHФ¨Ö`NTûTƒ”Uº[$„ÛhÜ"«]²X×/Ö¤ÕƒUYí–„Ò]E>gùŠˆþfDEw;åƒwàd”û•@«Ü-rÂÆëÁ ÐÆŒ4: *ÐÎŒèÞMJü<%3º‚IzØqUlø4Ô mb̉CÜ¢2ž¼i™rF™DJ2J•?‰D‹íâIœæ +k”=¶Ü`°Ða°Ô€ 0™í0"7NÉâ%d±ÿ `…+7ŽÕÊãd -ઠ@ª¶+K(×+×­…*§ô†(¨ JêÏêaÙ”`üU3$}– ÌAˆ(­ÕC“F`¢± q -Ö ZH2:cÐÒ:ÏP>ü¶'2¼’? -Œî›¤èýIŠ^–%D=D}¡‰*íÀè,Áé̕ÓΒ±YkÕÀôO¬a3E½³"ÊÂÛ€(â™TñŸzù1gLH¹^QNg&$ë&ÖÅzÂU®)¬ H<ú§WÆŸ$NBÒ?µ6v&¸n€ÎT*0;UŠÌz ‡'­…ãs¾šÁIoñøœ¯d\Ö„€Ö LPþ¥PoWÈðÖQ´ËŠáIKb:'ø ¹dšØŒhlÐÂò)5Ò?¹.Z¹È¤ø½Ž˜Ò[78k'"ÔFûɃbWŽOúJ†ewb]´•H¿K¤ˆÿèópŠHß„ üD˜„Z82»”ŠG;êÕñ;­"Áè¨hü¢^ Ôð@iØìÈ“ðÖ ç}¢ÌA[è¼D“žzYÔYèD }Ñf•ŒÊÎ@Åd/ú4ìB”„£ˆwÎ÷î¿Ðm³u6†ÏLꬷ€tÒV6,ë$ÓoÇÛÕ2|m²L ›lcX'Ëø±Í/vfÛ˜?6.ŒZœWƯ­æ‰Ôë6_¸.¸6'Æõ›°Rh‚WGÛ€ªbGý~ Ë¿ËÂ'×EŸ`£M”)hû@îý£QÂE‚Ñ¿ù»î §6÷Hîù.#£Ü U\i,›té÷ñlŸG¿~ZhC…`ô VDú"PÂÞ3¹Weúu©”½‹‡èü`H©|ƒ“Ž -Yõ¢ÒGpìLªâª’¾ ˆ¨Üt–Zé™RÃ}iU\oé•-4i•/4Q¥µjtÒK§b`uÑ'Ù ˜ìY88g¬˜½JeÙ<½X54ë CLå JJç,œ3Õ -Kïĺh eÚEš„@–}*Ť߰DÕG"Jû4öÙ7†vµÏdŸ‡*±Ø'Ä¢Ê`Q\ë -FPç%P)’¾ -ÅåÇra™Ä¶œŠo%Q0‚VF›jE¥WPâÑò¯gñ¯yþ¬‰_A‰Çñž¢ü3Àþ‘ì³@ qÀt>s°~ò ø°&z(‰¶T -È_¥bÒVðáÑ&Â$ü>}N­ê•ñ+‚}“ªØ/H!‰@£$ß?-Ü ÷0öù È@ûf°îeîÎA´CB-ôF<ÖX=(=Së÷ÏÆÉY73mî—½ÔisñrÄ{s ÜvFðmF*5¤ù›£o¾s^ЭŽÑ[›uïú‘è¡_€"òjÆåPç`=Ô9X i -þLþ]ÍȤ³ndö-šX22;“iâ¯rqY?¹2æ„í~NØî#@‘è;`aõª¤ÎO#ë KÀŸäù½8 €p¼Ü­ €ô?”}¾¦pŽÖi´ëN®‹U28嬞s‚AGõÁ±)Ѳ,ôJ¡`KFfçÊáI?…Xì@™~=ÇÑnÚ ¤ŸB4Ò[?Be DPå)—uS*øñK©¨¬§TXÖ JHz?’§×&Ò$d`BÒ+  "ÑFbÑ~b]L*=üLªb/¥b²;zžó6ß8®›E•;/áÁˆ¤~*˜X06k®›]Á‡G;I|IþÝB—÷haç` K¯ Ä£G5ü8Þ»>³GGÿLþù¨Ž>Ç"ÎA¦Ò°} UÑf"MüL¦ß;Óï϶Õ1~ióÍwÎi&Ù¥RD~'ÖðÝ£ØgÛÒýDëæe4n™UE¶$õKXb*iþùº3n Û6hS¶Š‘IK±ôA˜…3Ð&àœ” -® €×H£‡ÁÈž‰jÍåÓöôû8ߺTZè§`HiöÊ>$jø€Hì -LHÖU/.ûSk¢}$Zh#áè|ô PHz -A>?Õ -K6_V/ñ½”ÖM­‰õf_Íô -ö¤¬Òe±<(¦²Õ LÚ©UñI¥/ !ý†ŒÚ|ˆÖP¬ŽJ£`ÿäšxGxôY1:i©•þ@k¸ªåŸBQé•:Åv’h¸+ Ù˜ôO$k$Uo}³8'Û„éf¦W°ßúÊåÂ:7H1é—FÅX48ç KJé­Ÿsȱ]t è‡0ÿä_7Ò<üZ‚_ëFfŸ ¤”þ*’Z=A¥¯fpÒ -NHÖTŶQ§—fЭs.X‡˜¼5™ÛÄD˜ãÆÛÝ ±­²“*£úÐø©T`v(ÖÆ/9hï|ñΆ*ÿÌšNÁÝ"L›‡Ï>5ô^CJk ID»Z5<éÇÀÞÃØç‘@¿AŠÈ¢ÍB›'‘ïaÚP¯ŒÿÊEåwú€heòýÃ7_SçwÂx¶Ðä_÷ªâOàáÑ~b]üEš„;‰z~G‘¯ i -ö ÌÀÞ¤ú½¨xü PDzq¾u@”€ 3ü#óîšÀ¸?Ã'WËìÁÕ;á»îMa c‡F»¤}-¿¹cœÃ0>ø-49¥¹lˆÊI£^I=#;(Øç„õê!RÀzJ%ÍÆ$íeŃv‹Ûކ ´ÙˆˆáH©‡ú°8”IH·³¨×—TÁ¾ -‡%aÉé§äóO¥˜4*þK£2|k5§µbY¶Ïýš‚Zcí蔓T½5’©aWà±î2:3P9C‘`¬© -°¬#¥½bM¿Œœv¯!¥ëg]ÅÂÒ;©&ÚK¥áÏd -¶}ùî É@ÛI•ÑsÝଵXpþ¨ŽP®Ž~)4lCµ2ÚQ¬‘?’]A‹E¯ ÇHóæ¡Ô›“R—PÅuJÚÁS®×“UyVÂÆÀä´gñð”°À¤…,=ø®ë(ây›CºúÆ[׋4 ‰:ý’*ØkíФ3IJÖ”œÎ\6He°"«^̈ê}áÇi?Àšø¹­%ã2„%@áØå`]t׈ÄðŒ|¨x˜ì=Š=(2ðöô»!ÄóA”~ݧTÅ[ F»HSðÞïEèáù¿ˆ€Þ^B@?ÖŒKïø“¸÷{ù–DÁ¶gacŸ²äK*Áh7Hy?¡.ÞMžâ®’'¢­êívÚQ"íª™uÖ OÙ*Ff%²…z}Í`œÏã]Ù¨ô€Œ~BDé#OÃßó¨÷´šØBáx…Ú6‡rßå¬.ã3ØX6Îkwõ:GŸUC³6ðñÿXúÕ1|mrÎ.s9«Ë`îÔ¶9‰y´džìcÉG‰Ò ^HÒžIˆ­ˆ‰;ì‰k­ÁHéçŠÁé$ (ýü àó·Æâ¤­j`Ò†ˆv°žÝ‰5|ÿ@úå|ï†,o¨uU Ë:Á H0&i¨‹5ŽËùAQJDâG"5üM®ánu“†@¤TžP¤”¦Ä”¶kÚ-õvˆÒO¬‹6Ž×îËìµÑ5pÿÆnÁˆG Æ¥g¢Ò3…""Y"ÞS"&í§ÓÆ›GQÏF5´!, ¥! )•¡R0Ò5á8Yð;cø6ç€ñ¼Sëb§°dUÎÅusÒúÁ¨¨z GHg«™µ“ˆÅš‰U\+PY/PÙ¯fdÒ <<Ú@’€v"žÏAÔ£€€ì`H\k -EPg-œý‚R¯ âzO€…¡C«*ý~Xìªc¢¦ráÉ•:AÙ *ÚHŸ`o¤yøiåj>·šÉôÛݲé»dt~¨WÆ/Wã€ïº“ªøŽúÐø›PÃvP¥Ÿ 3—Vó[Ö¾¼uå™?·ù÷—@Á÷‘gá­#¾û0vfsîo³mÛøg[µ¸ôS"*í¤Ð›f/îž¹s³mé옻5ŸMóò!Ýg¢²Î0¥•Þ%µG R*3¡&ö£N¯'Ò$’ L -ýÚY70ë °¦öØOº'R¯Ëð½Ñ?~ÿ‰uѶZ1i7™†o<·šÛó6ûö¹AšÑyB‘RºiUìãú/˰g°àÅǾ2dálí x®æ©Ü›}.ýèE:iÕ°gùȤ ¬&ú›Ã»nhçwínš¿6›fЭ#uzm*—]iTìoÀvõ `}®£ƒ.¿P& Í#λã~M`Oâ%§3)­ô‘h¡?ðñ;("*{i9Áª¬ö PLk#í¡MÁ¨? -ÄãU ÌÞµ£³?€ý¤V?P¥_6îÏ/pg´ _›—ás«wÂwfJŸß»H²°ËÞ³‡" o%Np×éTñ6`šh7…&ÞQ¯w޾A•u’ª·ÎÚ}1n&Ówo@»„#¡u×O+Æf­eT†áØ(ýRk˜æ*c¢JAYµ·JXo BP¿“)£-4 ص9”û<‹|]ÂS, k¯RÙŸV¿Sª¢Í&¢,´jÁIS­°ôK¥ß9Ø¡>,ÚZ38k«˜è’p'1ÏŸÕ³Ïm¾!´ó8‡vw àܧ铫cîÚbêÔè—8´Y¦o­¦ù{ó6‚rß§±ÏºüëÒ¾u>‡qà4šÂ6õañ+~o˜:µ™wzëbVÓ.f5ÍÇ6Œq 4¼ÐÙsV Íz\ MTe*—µUÅ®DúýK¢ˆ¶ -I¿…C³C½2z$Pï?€ªøTeøÖêì›ßÖ ÆõH¿XHÈW9<¹H¨_š‰U\/`AI{eaÝö&,èÛI‹šÛ¤DÝÁIkÏ åUöœpôV50i ORi,™4S+b 5‚±G`bÊýÒÒ*W¨Â*gÈ"bkÁ[)–óéa¿A¬“_òºZn¶sY“ËpÂwóŒHŸ@Åc¿ÏÕ/w]®ÌàÛÉÔ°î>”ôÌ`ÛÐÊXSP⺣¢~‹ñë–àø4–sBh½®¸nµ±$è­ßk êLåⲎúÙ/4Q¥Áš¸ÖŒ˜Ò” Ê\ç!OùIUì°À¤À‚ÖPÁÝ@·;»ÖM ›  ›-„é×E±/H鸀ì@™€sŒßZV®«…ÉsÓÚ ÞÍ8à»“ÇÆÍªÙ[>oŸ–îáÁÞŃPð¬ÌõpÞ:bª½‚ýÌ®Ùcœ[“çÆu±XWHÀu[AK+·ª‡&·B–×-Z·H©ˆ\̽í©áÖ ´jPjÐhO`ø/^¹ XPrB¿õ•On™•ó’ÞNˆŒî­$…_¢â6#2¢;ÅÕwý(åJ±°ìR"Ê= B\ç$æÍ4„s²—nÖqÄ›w"óh¥Tp= -ªì5e•«u¤SŽJáX•Ö4à·Ù…­ãu‡°˜À³­g`¿ ßÉÙ9¯ÍÒÙe7Žr2Là™6ûF½äuµ9Žv󌲅Te²*%h1+%d RV·N#ç&ŠôÔ Ì™*Ʀœ dUŽLYAŠIÚèÓÐ'Ò¯Æ ÛÕC ‚ô¨`-ÃrÆ`€9lKˆùA,)7i4LiÒJ¦áÕºhC©>z(ÖÆ"²az9=VÆ»\m ÞZ}´éµ«\HÚ€x~ ªVJG¦6ÂÕm7K4”õ“}¦ÂB¦ÅƒV*F&B¬)wì -ˆz[å-FeÄì5e•ûUÅu‹¢“‚®ÀÄ”~„T^bR3â$”ŸH8ÎG§_Gœ'×ÎÉJ8ÖaZ^é/,¨ôÔIZ©5L+µ~éL½9[W—¹ÀÑc3‡m3OåÞl”Z8óTæÍ4_89ûÖÇø œÆ!+7Õ„ç¶I®aÙÓ-M¥ÅÌæäF&…½Í¢Bæ:9A—9QgÁvÊMªŒt‰IÚkJ+WÃÕúRùQyêÅå<´YXï<æÑ6â¸9B“Õíl…D߀@‰-ÖÐ-ê—–‚1I?bÊ• Ã”¾Z±Ù0?OâÞ͡܇‘ëÖÜsµ0vg>E³C>»ÔŠÆ{Él70Qù›J¿fY´.—oeEàH< øO޲9À¥ °jç´BŸ´Ëš¶×àÀ‹[ЂÀ`qqî—…žÏ½í‘dF¬`­Ïæ`YƒœZ - ¼j¨˜”˜¤©f\ÎL§‹u’ô–MÚÀľôŠHgȲJïÁÆ8Ôq!ÝRÐ⺭±ÉÒœ{&ÿæŸÊ¿‰ôK?}ˆœ³fxΘ´Ê^KVåBBiC>k Y@pçØýÓÚô°yz -LBkI@g$Ô/ýâ÷¹üãgÚ0Á·íPç`m€„¢<$*8ë@òÉP*g!QÁ9†mË?Y·Á²q3Ù¢7(”p›B¬50r+!e0Qö€e_P1V–e…lÁ€×­“Æú§2pNBE¤ØÀ”½¦´r¿Xï&%ì´'*~UM9;g“eç~™‰3…,­Ú*š²é wªÆ¥ÜmBÂV¢âæP¤µ+…‚mœB<¯λwÄy·Žb]—†λ˜õ9fŽíó0âÙ7`»úEî–]θcY·¯åca8ø…¸’OÎÃøÏŒ.6ÁKÇROëÃÙÇuY#ãí›Ç^í0—:Cö¯»á‡p ˱%ŽdA¤…Z¢O¯ dY8#(!9w¨RB΀@.'§[/¥í¥eUN£‘fP@d-†…õ#Úè‘Fʺ/ôUI]aŒj`IXûÕÆ¾dîH@ÒK©âš¨ófr]œ-Tñ°½‰ŒèÎJ@Øš¨Öˆ r)ÀžÎ„ ú+“6Pd_æ.­Î¦Õ[—³ºÌŬ‹q~i¯)­\žÇ¾™w9˜À(èâ^¼²q3Ìß7fPM›Å³Å ^Hn3ŒS”ñþ‰eñh0'VaHÅaX8žÆ0ÄÆÆ2ÈÀH¦tÑSà‰0¹»VbÐ[IFµHª_Y'‘ÖyÜãVXàÃvΉ çdG§­¬ +$ðº`@ëÖ‚´ZVÈvFrü3)7d Y>hx€”—Rå¢PCš(”>25ìA˜ý(ôKK­À”7`q¥·KDxšI‰î ðßȉ¿Š‡¹A L9j„£ÿqô»uÄwöP&a§9„›ù½åÀµ¨"ð¨§-Þ¥EÁ…Í“õXúqƒD¹?ž„dWN>Ëæ,*æ.TÉ~8½cE«‰c€‚C}€e÷„”wˆQ§ëÀ«˜–Õ1*Xв øPf¡%Ȱ˜’(áÈE2ÏF¢ˆ²rR*¸¤¯”¨÷˜Ø¸)`•‹i·ýéô“«zhr)ÊUZÏB†\ ¼ní(&þÛhž¼ö$ΰt‰x?‘.š%x£9"žé 桽¨u?ŸÇ¶\ìk¯Á‹‹eÀµóüB„ ‹¾B~kã¶"ðöų٧}ù»ÅøM–M˜ƒ¨ÆÁ) e‡«ñˆ ÆIÀÐÆRÄÒÆPÄäñ²p”qP Åv L®•²ƒ'¨Z ¡Ý;ÂãWê€röµµ†…”áI( –…µ§!IqßKT|7 0î±%º#¤³˜’Ó»BUYAŠIÚ‡2PÖiÜ›Ÿ>DÊX7D·bU¹ RTÖL§á/a‰©l÷a¶Éj=•bòçÚu¹ŸµœÖŠñî–ÌÆ‹Ç¥›:“)ñàÅž|¨kï¸üAW>¡ËÿÚªÀ;Pøâfa„Z¿bjã!ÚH' -ü¿±Ú¬1Š 8®{vRøe°q½ûêqQˆÂøÅBhá&°EÖŽqEÉõÁä£ €P¤»˜˜n·YHЃîQ6ž!6æÁÃ8 X‡ñ– ö8`bã,Œo`Àà …º -àAìÂØ†± -2­*¨c j\j³„j1hñ sЂ~ ät”9H×ÖÉC¤‚s•N-€˜· å^=ñÔbP—~BÂIAð)'¡.r%PqÕf@Àƒ¬…¢B>KÒŸŦ°ä ‰&»<^¼´ŸÃ½6ŸÃ¾µ5ûŒ{UãW -$ðO\üÞ‚E¹€”£`8r4-ß0áBOç·+à‚ö“Ä VYR3PÚÁåÍÎÀÓÆ(ðxøÛÀ5N±AKÙP7^€¬o,mà¸ÛG% tMZÎ{ÄšÕ[^ÈW°¡Û#SD®B”A‰íF±bÓP<Ü `åN½°œ! ¥+HAˆˆ¤ƒ.}%awÛÙo"­j`LR?Œ5‚t”ŠI9 öSF - Óœ[VÆ·²4ðí˜'Â<;àŠ(W{þ5AŒoeaà_:¼ÐÝ[œÄ:&Ïl›d*ž¼¸äæ$öqcúÞÊ€@É¼Æ Êêq ­WYfD˜ë±° ãØ/^/>FÅ›n„¸ÍgÊ âò/ŠjŠd4bj ƒÝ0öeÊO!é¯-¶|ElÜÞ?Ì"kQ 5‹+òâΠåuN*×M¡Js‚¢¶p…UΪ!ʽbá9cÝÝZÝøÜVáðÜ"ÒY´.7‹vÛœL[ó`Z.Âß`ACdbNú`H‘öϾ™ètPN crëÀÊëÖÔ1§™dI§‘eM¯•eB«`1›Í½ ?" ¬œ~]Qd0¶‘A¸F©q CF(½\.Ó°8š—>aŸ± x—UÖkWRñ£Â2*¦µuì©E¤–ʧ¶ÖCöCbà /ˆ‹³1*®1ypܘ>µ­Œ¡—(Up†š¹ý2‰25+1ú›ݱ%$f(VKÙ² …"’û%€[°˜ØjÀb[(Dˆ ÷Dý•€‰2,›µÑbáZ¡`› ^]Ï ËŽ¬¸SN„P¿2 x-û£ãJ •ŒŠŠ'Ù„1Š„¸"‹^ñŽR #jÙBKÀUà ð×Ί? 3ä¼b\ß À¸¾q½¤ºuùühœà5‚am*Dê¶@å”¶’qYc b꿤”ú¨Œ^P®1”ã€ÅÃäÞ\u£sÛ¥¼ ãÐøX6>e¾U7J9AàGN¸QÓ×r“ZÙ#üèôP¦`5œA¹´ì™Üù™¶Œo-hàg6IJqpp€ÎÆFÈü˜ -‡>ÖÖ6F ÃÛØ1zleÂñ‰ 3"î ð»0Ü‚%ž€GˆÇðš ‹ -gs/Ì@ÈmÖOù”VYëă·¡¤ðuGbtwÀžþÈÑ¥‘´šA€ýìP¨¶Rib'=äfñän±˜ 1dq•­lxr™P»Î㟶P² pA†ª²¼y½­y—ƒ <Ì+LˆTP¶µ¨è^&°wxÉ»nËŽÚ ™M³–#´¸I–î©¢J[¦ -hIÐÃO 0F)·;˜„q Æ1¼ŒªpRp‰ìrqî~E„Ä^xx Á*jây àlæqð,»a´ã>Øbºõ3‚£ë·¤FWLõ%¡t’é·óˆû^æº2ç–…½ä™m<ýä  Á-ÃrB®¡À˜5€Ô L2+)§bbccÆ,:$Õp ›2€Ì…Œµ0sª¸²Vú xÚÚÏËcÉ×pEYÌÞ¯êÒâ(põ¼ -nèã&Â[˜H`–_!³Ç±ÌÆY8ä(ëŽ £0raG†¡—ËcïâÜ 8Œ—€ éÆUï…qŒ°´lÌiQ\ø/Vg RZå/>p%hq-óƒõaÏ1ÙÑÕžÈèt±4ì?Å„çB‚YÇ ¦qu&ï¸ -ðA–p€d0€ibük7(•X$+l²¤'.¡âÁÆ;8PÁÉA'Ñ;&ç7óf76´ù866Æ!&x 7¼DKMycK7D¹Á ±5†1 C(¾lNé4 ÅHÔa267žR68ÖÂU'!ë0öÁA“ÇG8pÇJÂØÆˆÝ@F7^€, Qc~žLBÈ’šaqŸåÄ£v€øÇá/<Æ)爓Y1˜‘l jÜ6‰ÓhÍ´¨ðap¥¨ðúžË:IuðWÑÀ¤),A•¹|xÒ3naã\W^Y931 -ã£$Ð'‹(`@ oLE‹6ŽÃ0¢k¼"ÃÖx?®f8qÆ–Ÿ9Y䫉(ä3Ó Äƒfæ‘À·1:|«|]x9ÇV°Ç €± Àam,ó \ã!†Æ¦t  Y ’ÙW^ÔsvUŒË:Fn­æÈÄFI@‘+E]²÷IBŠ(ˆ'rß,Rè²ñŠ-Ñ/—<ˆ­lÁÆ88ÈL¶e¨É¤ Cº!©álL¥ƒ˜ÊõÚîñaÚ1ÆÆ `ˆ@ 0ÖÚÀ"àê eƒB _ðõ¶ŒÉ´ã`P0Î1¡‡fÌèÜ^8wq±¼Åé2Xñ²«'®utÄn~x 7šùá=ü†gµ˜ 4m!µÐ9)D\)+d´’HXìdJ+Àî=ö¡Ôr„Ž„bÀçœAE­Æ•5p‘(½ðÈ’n§E m,DKŒ‘a;`A„1 R -Æ@­ú¸IØ`à* Àv‘ÿ2”¶ÃÑÆW:”‘€YÁ`¨lvvÍ´Øãr‰”µ¸×bÀ1DEñ/øŒµ€ÃE˜â|ðD­ÄÅç¶ð³M\ˤĭ|„x 7zz‰´)”wˆФÎkrÆ+Ò¢{_IáÑxÑÑXñËà¡{ •+f€ó›ü½*?<™LÌQ;*É¢b79$ýˆÔàÇUÂÂ;è}[ - = LÃ8Ê—Õ¸Å$xzý4q” ûó®Ëe³‹Å!ƒ—V8­$‘ ŒGHè©5â5–1!iü -AÇÈäÖ˹+nùðE™W”§8^œ,jˆ- q -DCœk(ˆ7¸Êò˜¸øù F#ÄcÜRÌ>ÄM”yØy…8=æy9Ä»ÖáªéÕÑ‚SQGh¦g¿¿ñ–­Çrøã'¸ã$aÆG2 {° Äd’Âqˆ ÆG*H[TÈ"v0cP‹†‡aNÇ,&Y6@³bd6€qñ×€F‡øªÆÇ£•ŒG)… øe8Gq¼ RÕƒÄf†¸ÿ©!‚ùùñáµP›€ zèéWˆ–ÍB±˜„?`3 yÀùÅÑBÓ«£EæaŽ™‡9Xt:ÂRj†.É£dMqGÞn|YÞø€2¯ñ‘ Æ*¼z‚ÃÅt`lÜdƒfGQC!RL½Cª"A ´ÉÒB#SD ‰0éôîðÑ ¾AÃó‹£çâPLÈޝKÚæ ²­±/«± EãW9J*³^JÈYqɲœÎÁ?£âš†¸—Ñs:âb -ŽxM¥Äo+%.ædÄÃœŠ¸…¤¡;C\é¨(ûø¿á:¼†ßÄd¿T_•”e†ŽR:È$Kèà‘,‰DÉ,üñÓkãç×FN0 !šâ#6%iXR¢±KŒå¦c!£0VbÁÀx„„›#Š[ÙmR<¬‰gŠ9qo'>WÕÄÛ¦˜8š;`င¸ Þ„Ä›n~ø"ÞT3Ä…²@ü‡ÿñ¾4Ä À ñ4Cœé&ˆÁüðÞ ¨èiL‚Ââ ¾æ7k&!$˜„°8>C—ð}:¡ÔüÞˆÁùµa#5±’ÒĈŒ6®€q™i#,YÚCï0ÿ6Î2–`ì‚ÂŽÇ®¬ªÏÔFñÁ/%.ø•Ä',ñ¯…'ÆàÄ%@q¹«\6°Ä%q¬Ÿ"Þàfˆ+ÀâQ5C) Äwpx·á@\‡ex“Ìz’qáY£¢c_™¡Eö:½9l| -yòi„Ч!ìNðœ^-8}¬Øôæ ²éÝá#S2Ç#&fqe)¿¿Wèª1ì„ TBȾP«â¤sÚpH±'nX¡‰ßi%ñ3+#.æTĽЏV‘· -â p‚ø™N”ÝáDY¾”õáK/@<éå‡e¸Ñ‹/ÊúÀd7,xŠ0>báÒqãç!¬ŽRÂ$OL‰E¼+hˆKõñ9A|Êgˆ+À)âO7G¼HFˆ÷pžÃw²üå…ËìpîÃw\x¶,ëÀ=.ئxGªèá#£…G´|ÉâY(D‹çá(š†;j|"Ò !Šx£‡h¸FPq?6!aˆJž¹[4±DmŒE,Ã8ÊWΑC¼SÛ@ƒ‘ÿ -âcKD\†"â³#þq9,¼ ˯ãBÀo©'.èˆ7è)âQ6Eœ(Äwl`hx6ËCÄ\ÈRÊu¥à yÈcÆæáŽ›ÞG6 }øÐô戱‰xƒ„&bÔNE¤šâžœŠ:B5¿8Zl6æèÜt¼Ñ¹9ó0F»ÁX…œ&†¸e˜¯ ñ MAüëhˆ“9ñí"Nv ‰=q HEK‰cýñ©#n fˆ÷pžn3cÃg8W^ã'4}p~þÂyÈcF§—ÇÍ/Ÿß9>½8x|þ" -Îäó‹È'ØÐE'6g|Ö¨âÕÆ tè©ù {ê³\J»÷bXÀT¿€DÄ­p€¸TÍg0óã`‚øRL?Êòp®Ãyø ßá9|¦‡3Å åðÃk^v´ÆA*|z{È=„…-ÂÄôÐÈ•Ôï,ª` VVÅ<®œ‚y@QM¼Á$5œÃ '#ÑÍÄ&8m|Z®¡“±¤ n,e,jìá‹«Ù_³râ^BFü -GˆWÙqª>uãÃÌqª žå#Ä·‚†8×OwdįtˆøÍPωá3œ»du^ˆø ö* -*¶ñ83™f ‘ùËD³°ŽÍ°ŽÕMñÖÍD©šá¦™‡9^l&â`ÕT›”¡Å,Ö»Ó2Èw“Çç&#ŽOÍG˜‡7®ôã^15Þðï\ƒgPÓüèp'˜þóײ<üˆûðžÃ…\vxÒK'réá7ü†ËpþÂa^¬,ÂUŽ ²¦Ò©‰è#usRâffÃÍÌ †š‰8L7¿8T|‚q@êíkŠxˆ(ø†ŽOÄ2:eŒàtŒAÊ(B [ÛIcÖ.£ö÷£€s4q,"nÄwø —á25ü…Çüäñ{BÕ=ÞÆ©¸C”ŒÃ§WNjί†@Œˆz}Ä–"æˆýîHêݤó‹Ã‡(¢ #›§Jìuhv¦ɳ<Ñ„ p\…+5!fDœ.×¥€[ñÕ¼ð~Ãs8çá;܆Ûpn#“å/.<›}!*Jš±üó²ÇYÂ4S`Qûµ¼4’äRH̯Ÿ–AšžÀunì„üḩ¸ã³òÇã§e0ç©’;NW'r›¬Mæ8{Lf‚wxdQÍp -2†q YT4-.÷ Š_:âN1=œˆçð~Ãi8 ‡yá/3|†ËdùK Ÿá/<†s^Ãk8ßÉq­©YÁ6/ Š_ZcøÆÐrŠaI3½°!4 ƒ˜Øü -aåd 2ÙéKéi)¬éÈ£rlƒF'âŒà2:½6ŽØÎ±õ±mc-b= °3 Hé<ì¡dó{£…¦WÇ‹Mïš^38Å4RlŠo¬r2æøÜLđʙˆƒµ‘ OÎ#€ŸŸFþ8=4Ë, ‰Úä(]E+RúÛX‹˜‚qˆ¯ 'øœ„Š&ˆÓpÃc¸ wÉò—îÃw8¯á9/\†sîÂiø Âaâ"\!Õà¼@7ÀX¦— &%_" ”K—  G6 €ßl}"·™ØãSÓË£Dæaš`#@)$Zº°‚ö9)D|i¸Cf¡›ˆ<\7Ã:X1½7plŠm¸~~h"É‹Í6>¢=o‘ýÆZ´BD/ðµ¬)Π‡ˆñ®“•á:|†÷¸Ìð>Ãi8 —ÉrÎ9çYþÂ9çœsÎ9wá0\†×ð^Ãqx ŸáYþÂgø Çá<܇ñ¨¢(gAlLEC§7¶ÓÒω K@&4<;›ø€ì˜ï(=4rH#&!¬ŽMïšß$4¿9Jd‚i´ÈüÞP¡ù½cц‰MñÕÍD©œŒ8>7ytn:ÞèÔt¼¡¹ YÀg[Le69u69´MÎÕœV••ÖSUÕ–”V[WWU—VššÔ—šT–šÕÚ–[וՕ•ÖUÕVZ[ÛU•W›Õ—TWW–TÕV•šT[–ÕWÚÖ–.-­-¦ª+«,&´·»9¯ª¬4ª5¬4.4*5+)«¶®.)+«,,©*µ«4©­¬5´*´,µ(¦94,«)ª½«Eæ_0"Ò¶!¬ó9‰w]‰ñ;µ.Êð­Õ5u=¬ù÷£B8z&R±¶û0pi4—·e\6s×FÚ DDyþðœGõú%TDÿé÷uõê›À»¯DúýL¥ß›GÌwãxéþ¤ß_ "òC©Fö¥Ò0’¨áâ´oÀtÞÆ0ÎpcÉÈìOªŒ¿®†p®V*MìX6:e-Ÿ²¤rTˆÊ™)5±u~ÿѨ·qRµÈ¤·t€ÊLªb/ó÷&»Äõ1™B5zgQ¯oÑÐìzÖU*44Áö“«cg2MôD–†~HSÐUÖM©ˆöR©Ø÷DêyÀ6ùEïæÆªÉN­‹žªE&Í¥cT¦J‘Y+†‹6 ïŽ@ mRè÷§òÏj†æÌåc”È)‘&¡oB 3•*.™"ú8öu鸬Ŵþ-WÛkÉé,U‚ò7¡†”€ü€ŒÎˆˆÎbIç,˜} Ê®Šø}"ù ô^GLi=F‰0 Óiâ±YPM´&ÿ”F o)–ž -É#OCŸÉ¾NÔ9è‹4 ‡2 » -IŸU¦wb ß7…v~G¬gZèy÷(¿!]=ØVaö&í$ýÓ«â -Ñøµbd~¯Š8†w_GO1ïÏôÁÕ;ŠxþHÔð'ù§XüPþÑG^ŸÖóüÏZ¾¬L\%#³Wµ ü[82;ç ™v£wVã€íêñ]ÿ±ì«cìØh!ËAÿé÷côÔú šœÞkÇèO@ÂÑß|ç* ½OcŸ}´éµŸ^¯^hÖ•„X5.k:I›{„¯ ¤´>úXŸ‚ý ÍBQújFçÌeCTÖÀ„µÎ¥•N0"²ÏºÑ.ksY–­kwÄ{z„ÖQ!$k¨‰N¬‹)&?iT1 -Ä£L ¥û[@6:i옠ì ZlÊY3>g¨WF¦Ñðm´YØ#üE—…¶‰I¯ äxŽs°ÎÒñ)[ˆ]¯^lÖRÅöQç÷ Y -ú¨‘=ÁˆÈªb[ˆR+£-ÁGhàc´¦Jqó{ ä³K²ú’·ØA—~?&/­®„ó9ß¼>…BÒƒAõ€”ÒJ ˆ¿ˆsð&ºtÀ£³–:yCµÎÐì@,ÚL¥ß;)ôûŸ>ˆm+¿‘§¡çaÔ3ê4üX2,=ØÏÎà„¤7êôú¥P±ÍÀåÓ+ãG0Bñ}þ@4ï–k áj¢ÍAoÄéõ NHÖ XLþ«á˜9·:f¯®¤«qíꜰ^ÍÔúýY>8ç)‘XÿTEû*ão ‚Òå–·3{põ’)âÏÊÑIgÉÈìL§á?ØFó®vË·`bÜŒËÍÂÕÜ›ïœçyÜ«} ý>S*Øöqäû0sgt6®» üf|ú*"?”ÅOsèÖ«\HÚO¨Œv”êeO5´“@杖ß+Ii]!H*]&„µÛ¦c„Ú mq;V m‹ˆð;^À©6WÐY«F'í–T‹"bž‰ˆøˆœÎO¬’5‘&áßQÔK@âÑ;¥.ÚP®Š¶“*£—QÙ¼F&áØuCtÞšñYK™°ì\#ƒ(ÿì"ÏÁ¯tz`5lÇð¬¥FTö¦T°ÝD*îKžˆ7èwñ/©‚½è_-#¸Æ• lã*­~{‘Q. £sÕ -Kô ¾’‘Yã„éŒ< 0½3|mž{-¦Î¬WrZw…”¸í$%ì NPk&({ŽRé÷eÞ F0‚€¬™L?‘f¡‘æ¡Ý@EäÏ¢qé·ftö¦ÓÄ HÀ{g -D¢…ãÒG•`ôTm¤NÄ IAc³W½¸¬Rý'Ø@MüR'(»5‚Šÿ§’ïÓ²y™¿µ:\gUñ/ù¡ZsÀxÇ‹çm íjžÇ½¯ˆ6–ŽËÚJÆem€5Ñ}ö$R¯b]´¡>,~¤OÃÛ†p®ßxëˆ2ƒ4ÿú Ý—ßt¯¹e¼“•eÙþ “wËB–‚dANÍ,ü(í@~·  œÍ³¨gë€ñì¡ÊA[æ­Ãôugަó"2Úààôx€z(o¾sZ7Be -±©r#«l‰‡>a—a½„˜ô1tmt‘gà=µâÑn:w›VÅȾ Å$ÍuCtŽk: 1õ^°¤=êÕQ ô°Û£¸×ýqô³ŸV?Ξå"Ó~jM´—L}“颧Jaé±^tÒ]9>i®œuŽIŸ‡·âŸ«ÆgÅbÓG}p„ruôJ¡áh?™BBþ%ˆAëDÞÉH§‡Ý€kbgBMì BPÖ~˜r)8QåÒJ<ܘœv­žsU˜ôÐåà·)´£kåêð\½³¨ç—JÅÙ¶šæcÆléì -°¦ÝiE 3‚joP’Ú5PAí|ŒÎ€„z(¯Túm°â²–Qé‰. ?O¸Ï]z½‰Iß…cÓS¥Ð¬yù¾ ž[-³×Fã|í¼%àÍTþN¬ŒªuÑ^PBÒGxôB”‚¢á۪ťÇrqysè#©dzh3@!é|Xü PDÚ ŠfJžˆwèáýé÷‰6ï(Œ6U‹LškG¨¼¥£“žjQIh]ì@™~½G²ê¬ ¼Š;i¢ŽøNiÔðÆßuš@¸†ÏLξu2—´-Ù‹Ý-ç âyż>¨æi -ßj"NÂGPí$({&á õÊè‰*ï¼µZg‘î–T«]Ò´e¼Æ$øKÃÙ53n–­ÞÖ ÊÕL§Šµ„"¦²œd„¿à•®rqÙœ:z¦Qp<d¹giÞE–_åêȅÓ¦p„´ÞzñÙ‘: o™½6.¦áƒû8†v -H4ÞT)$í§ÓÆŸÄéíY~¦PE¬¬VlÖL¤ß»f0®ÃÔ©Ñ4|pÇðîY~%o¬0ÿ• Ü%²,´*Á¶”IûÉ”´Ð† $t¦A„“cþÜ´3†m3Î÷®;¹.z -JVå Z^ç2&¯?LŠª—`„ÎÚÙ+09¥!ôðìH†]›Á¸.ÌœZý“èg–CÓ‹Yµ¯Xdv(m KLå>Fg+˜ýçÐ3•†«^\J(b*kÑøœ%𥿄”z<@k¬–ßÉCøU -z¢LÁ$ΰ݄*Öë 2Ô‡¥Ö0½5”û%Eu&kÂú¿‘]nÖ;ªõÑ>º$4+Ê<»ñÊÝHš†Ý -°¦õWÔÅÚø}ÿ:’è·C…Xô D8þ,œ´—SÚÀhãÖ Î:ëgÏ$µ“iµ¿€˜úª”ŸéÔÛÊüûL¥ˆw„¡]‚ÐŽÀC㢞4øR}”Hêý7†u?Æn­–¹[ó5€r?' wv8gƃØgÿ@òÝ3€mžÓ8pzƒÅŸäé½aêÔhÞi®‹YMgÍzÍ;€‰q 4dßlùjfß`„ì›*W½¸ì PDö§‹¡‡>JÄâ?Àšøã(è“6… ï·.͵b8Í¡G#+ËY´óX:.ë*–5Q'aÙC“¹½ó[Óº´u2þ·²l~Œ{¹CçŽÁÔ¡Í7ˆs5LÔjãÇ‚ñI[½Ð¬Ÿ^sÂwÿ\×£R$þ1+­–Ujã§¡]„Ix I~Í,Ô ½»jhúDò(M´™NÃÿeî¦eúÖ¼¥Ÿ™ŽØn&PÍ9ÞD–wQea·HS°[´Yh+y"ÞJ¡`[èòïö‘Ô³gøÜ: ]·–é[óA“}]±Ý 3w6Çðu¿…] ÈAÿSÉ÷aøÌd!ÏÁYCT_HiÏËð­Õ0vjòN#„zx%C³nBëˆïì›Ã9ÛÆ ÷œˆüdFZm/"£½G‘ï×ÚÑ>“}ªÄb§ð$U[â¡c ²J/&*ù¥FPþ-š¶’¶‘¥×Nâôv}ù ˜&Ú[3:»Õ ̛û^hWó(úõ$ϯm”y8ó÷ÖcôÔ:M`›Ÿácû5€pwÍ ÛMÈv×Êùl›—¹öKŒwÅÆH }Íu±ûVÃÎ ëiìó€ŒÎޤn·x|Κ¨Ê– Ò -L4~!JAK¿;ÉÓË“È÷wÄz0tj­ÖåŒÞÊ®Í8`ºÏèçL}ÔÈÎäÒøþ1xk\—³yÌ%MËÎÙÚ›°Ýì3É×gã¸Ù¸³2™?7îRê÷#‰Ú3q߉‰ÿ6¤E·Bm쇙ªQ40XR3¨ÔÆ»gñÏß|íj#ÍCÛêfO:-üî<Þ}(ˆ]-–ö’éá}†û9Šu ”ðVõÚIšßÛç±Ï=Ú4‚pÝÇóxgCy@ìbŰüJ¥…]B6"›?:Ûf°®Öý?·šÛcd¼ë×5Xq¥Ã¸ÖI˜7„vv Ý[ÇñÊukéê"MÂ/µ"²wåø¤¥HLú"ÏA!MAB@áü¸Ž&ê$¤#4YÝz%(üXVÛÊ…fàõ±sÙÈôQ¯¶‘%¡Y˜ïæY´3ªô³*ýì Ê¿,œG^_#8×aâàäÅ=£LBŸÈ¼ûægÃÐuk:´:†N­¿¤™Ñ/ow]ë3ç^èà’ÆÕÞ$ÎÕþ(tðvReôH`;ç{÷…&!•B;WŽRn&¬Ÿ è 4ù÷q¾t_foÍÛÒå€íl¼·5{›m³é93š&îL[æÔÚØÇ Þ–”Ò@˜}>ëf¦…ácÓ -ÖY48i)$}.ûæ%Vqí$b1Éz «íCMIŠÔԣK¹²ž°d”®Àä”ÎàµoX¢ê¿ˆ~¬™}IœÃ¼åêè¥VDº¬ÕÛì\­t›ŸXm NLý# ·Õï=CÈÖkݺÑ'á_2EüK¥á4)è4í¬‰ÑÎgá<7KWkgÛæ LJý…$¡v „é÷•R½J¡`ÛÐÎçî}!JA;Qæ –›É”V¿Ý‚¸öÚÍ5ú$ü1~k.$ë¯(§}›dÕŒl‰Ÿ‰j·àäˆÇú€ªØFúôÚDžœì؋ݗv‚¢ÒèqæÆ£E7ƒ“WŠÕñ;¡6~ GÀ[ç°î,(²Ï̉5|]Z bZw8RÚ…„tVõÚ<Š~'qïaz§ÖFœo C‡ÖeüÒzóî›/Ü­#¶»³r5÷e®scöظ0}j[›ðÛXS.X”Öz^2Âk¼þ DNÿÓ«ë¢gPBÒï|÷ì=µ^Cw„‰ø™DÅvO$ž]­ƒxwöËx׊ñ _8Ø×Ç?Á j͵#T>5ü7à:z'2N"×Q#=è· -Ö pPÒS1,g [@hß`_Ü}1b¨µÁº¸)(Y•˜x¬£J<Ö fLÒP(é*—s'£ó“ˆDDZˆÕcs¦°$U®@Ä´þ*’ZƒIýbBLÍ6!½³^pî„÷ì<´: çe>—uȦÕÛ0žŸráh‡-5Ã`dÔfZEü2ƒm3 Ÿ™ìC¹çS\ÒR'(;Ñ%a í‚6—¹°un"žg ÂÑÞ°d´ûUDÔVB{¾4n¶®omãj¢ÌîÀ¥Óªâ?êô~›>|“ÄŸ#¦û/vgÜ?µ-Î#Ý e¢‘~@dtæâ:;¡Šo>·:ænmnB Ëü±Ñ/qi²ÎWÏV{©’µÕÍyB¬©¼aJ냧r#«¿,ëuæ ÆÁ¼6ØõÑ…Bã“ѼVÖ€·Ï£_Í’Ü3ƒrU´§R<ÞF›ƒ]E<ôyhS€ýü`DBÍ0µ·t`úÅÀ›Ã»Žsh×ãÈ÷….ÿî¤NÃî§á=tùw+‘ÞD‚~Ðçˆïú ]— £gÏ3ƒmsR)x É -›ìÉújF§ÜqóºXF.m¨rÐÆÒqYk bjO02Z}~žÇ»ßÉסV»T)"ï#O›F0®o5pȺÕZF¼ -Dãbÿ£É×eøÚd—·>ÆmîØ ]ZÙMØnÆa¼“y,óh¢PBzÊFål¶ä„Í$Ew̉‡nÁÉ)}àu±6=ìO$»„'§òת4Y”W6%õ'8±ø‰:ýâ>µ‚²K™¸ìY;0ë. ó×ÒOi5##Òj{ 9¥«RTÚ5sÿå­+Çè©õ!IÁ®!¢Ý“ÓúB”SzC’Ò[“QúÀ‡Åš'’OˆS°–RQYG8’ʤ”Fòü~šÂ·š†ðÍeÞ‚„Ö˜œÖžœÒŽŒÞ]A@ç¦ÖÄzç1ž9l›wùè­Œµƒ!¥\ HRH}Pf`gr ÷.#œµ—•ÓyêE¤çqÜ«³o·VF°k„*X7yÓU1,k'$ýQ¨×3©†»‚“´*ØßÚÕ:὚GÌwë„÷êD¿:'Ü7/PAY“Ñ/ I¥èø¬Á†¤þúÇë™ØÑùg¿Èuk J?Of¤Õ–—èY4F·S*,릎=)q¦/ŽŽ¹S£—J¿7„ŸýAÎÿôÊèsÂv?m¶9¤«TÅ·Žv“ªØû@ò}—³Îå8„¹˜ÍÛ˜½´Ù§ÑÏ'qz»L¤Þ.Ò¦¡YL][ϾùmÍa\Íó¸×”`¬PYóDòÑ´6÷Ç^êδ@•ƒ´>hç+(è1,$”DÃÝ&Ðîë|ùz’h¸+…‚mñ^¯ŒëFœ^Ï¥ƒ³æ $Õ–¤”Öc›}"ù¶d\ÚL¤b;†Žmæµ–Ì…­¦ ät¦°¤”fZEô6b9ÚÅMã&\à@à"x¹ Õc2orNäìƒÙ7ß0Öq•<ÒˆÊO;Î7oéT‘ÎAÔ£‰:i±¦ÜW^{X–Ö:‚ÒèÒÏë8Ö%HáX7­*ÒL¥‹=Jdß²áI[€õz˜ÖV).¿‘¥÷VEüS%(ÿƒ¡uÕ¯’z6Võ{‚ê/D!õZ=6k*{Rê—nr w.žt#¨3–ŒÌ¾tî@’€Ÿ©4ü%)¥9 1½9ÄšÞž˜z -MDûT“G¦‡µÑhaTê­³rpÒ¢°Öš”ÖNkÀ69Kwo2ýú쥇 $t–r!Ùƒ4ÿzŒßšVfÐM¶9”«máj§н+èì›vå•»ÒZ?8BÊ]ðJù ˆ*Þ?€f.«³¨Gg˜Ò:k‹¸Ú]8@g&$=ƒ·‘¿©Tl]~o'(;¦3O¡IþÀäŸÐƒ´îÚÑYaÚ1{mô·®7`Qé+н!àí@8úšÁ8Ç&×üÝuB»{fï­ÃÔ©ÍÙ4¿å¶\öòÖ•³h].ŒÚÍw®Múí(ây>¦AçfÈPsX·š‘ɵÐ$u>úüv>—uàÛ°°ìݽռ£‰6 »ƒ'¡ò? v%Fí• ð€rq -ó¨T\v DLû#§= -d'Ê<ìL¤‰þ©µ&ïlæ_l,ænMî‘ÜóD–…¶£ßϲ}.·µdY¸î¶G²v -ÑHû\úÍ/shd.iÜ1ÎÁë‹kIuñ,¨-n!ëïcbüÖ¸7Šs² `›œ­ûe5ß8ù&QŽæ5™ÇpaÒg¸…ú¦Wƹ‹ évÃW®r—’Q®‚“ïö KPe1'­,JˆÚëGiÍeÓ~;:WŸ¬¥NPz©”Ýê…f¡Hé'3Âjc‚ê¨È¬™NÃQ"í$Òï²üó?˜ôN£Í™×eß¶>“~µTÅoôéí;ŒyD˜†é3Ü•J¿ÿÀ+¢­dzhÿXúñTæÑ8Šw´ b\ýrw¦ÕQÔ£™LÅ2€q²KZ'ƒ©KÛê0âÕE…³¯Çô­Í1|kÜE:3ÎIÌ£_èÌä—º®œ£Xç—PÁž‹è\#ñ㈸è~%$~„#¢ôQ§÷×ÒùĽ߀&mají ÇèÜtšø…"oÆ<çÐHóð/!é»t|ÖK¥á/cWÓÊÍB™€¶ÔI»AŠIã½ë1wiµäÞ?€ªø¥JP~ª™õ”‹Júô°ï0æÕ<â>s˜çaäÒhî·cÙ83îOäß·®Ã̱Í3|mÞæÐn²$¬>¿=GœWgÛ>×nÈ 3è¦}ÀDT¾P%uÞqÜ«¹–ŒCÌÞ›Lô9X>¡`œ1ŒI”õ¼˜Íœ´ðaR>ÌK¡b›'‘ï38!éi&n$ÄÕcsF -õú(HhÐÇè¥ÍY·y³§6EþÙL¡ˆÝG?û¥®;» qÉà~ï–q2 ø=¶áåîÞÆü­iy‡ _œ Aç‚‹—ÍNòœu÷æÉ<©Ô[ÿ`úÑ/qfÜ´3H2°3( ²þW\ÔvMvø4&ø1* j¬Ÿ\¤Ðo¿¢‘Igˆe­»BB˜ˆÁÆW£€4®‘ö• ͺ Ê.u‚²jf§Ä”ÖpDµþŠ=í`Og§UÇ>„iØq¾vÆN›•ëÛ™A7ºG’–\㺬ÙcY9O6#7×ÒÍÙ¶¯ÍÊuµ7ß;ºèÒë…* ½#^ƒ—6sO&Æëa3ƒmsÒ)b6î¬Ìå­&£[ÛÒ™‘í8öÍEŸ†5'aŸ l«]Øhmö­.ËÒý1 N¿šKˆ(·IUìkéüÜ™üwÆÅçÍMLô1+"è«™tNâ]ÏAÄó\8@i IP¹ (i ɾžÅ>›³Ð6°êeÄ”öRZ#áè çêF½þù÷ý¢_ºüH ß¨‘½‹‡¨lá -«Üu$T†Ñ(óÇFóÎãÜbüܸDŸ‰ÔÐû<úõDºúÑn®9¬ÛòLòÉ@št£ž “—Æ…©KÛöXúq£R8ÖB(Ö5‡s² ›]öcÙWSÁÀ¤£HDÒJ«ß~ D"í U²m&h­–ôOy'Üçgøäjª—]Ί´nwÒh˜žé‹›,ë%T°â ü?”}þ&,wÁ¨XÏ5&ÒÄ/¨Vsµ21®6³—F–µ»Ç\Ú¸pÄxO#k~¦ÝÀ¹@àd^hã´ -ˆäF°‚ºÝò!Ê­Ò¡É‚¡ÉÕÚʽ°Åö.2Âî"*ß)™q[Úx‚ÆøãÉ}—‡MÇ¢è]°¡rƒ”}ƒ’ÔÎæÃÚ^Œmp7N¨ÉG@ؤ¨VÉØ”x\@"Ò?¥:z¨WÆ&Ô°”ŠÉ ôûaòÐfĸÁˆÇ:©±»ÀÕxËÓ×¶ÍY¼£gßèlœ­½ùÖÑJ£`ß`…e­$ö1}j2÷ex _\L ÆNa -ëVÉx¦9”ãÊøÅq_ìθY´®å·V¬Æ°N>ðA±G`rÊ5ÀêXgçî-¿·²xvN> "±¾PeU~€„TN -Eì8Þ¼nsH×wùzR*¸~Ðät›a‹yƒ³Ô -Ì)ôÛ°&z+šs‚‘©t±Žt è¡@4v MTëí‘ýNb¶—¬ð „ ¬ˆô;⾺¦pŽ–|“_ìдÙ63.%àßâñ97ˆ1©TŠØ´°¬)Ì]°¡2â_qK£‹2 ÿÖˆïÆCE·Súgò¯w¹Bš‚<‘x~¦ ÊUñæ;ç¹™LÆÇ*`pY#ãàÓÙÇuJáÈ5:ýÊX;:å SZë -SLiH:.Ÿ°%ϾŠ^ ·a1ßMJ|W@ÐX><¹Dœ†ôVÇú+QÑeØ@“£˜¨Å:Žt!{4é!âÍ ¸èbSF̬¸Ò_CTé @RûöÈë VDÕ?€¹n|ÖU-8i?J¹– n¯p€n¤˜„ò ø—P¿4‚nˆEÛ -†eWðù¥RD~ADeBBç ËÁú¥NM Ãg¶¥)œÛY -Ò@™]ˆs°^J w$Pï7ÊØy÷:÷a8 -_Üg£ »ÉW;4çOP¹V7>·?•‚ò ]š6ûfo_èì9'ŒWC‘`¬»Š„ʲ€àF`rÊE`"rþáäþxúÉE§†²UMî†DȆ¿¨ãõqL -bH€@`@†”bŽAkC€0@ Ä¢Òéh~Í @A‡á®dˆd è€Ç‡Ó®SM|g¡Î€› ¤e8'Ù‡8}WaìÜY³rx]s–°—Øc4î¥Ôk)-þfÛMû›ÁxÙáT–·÷Qì˜ùîè¸ã±T(»QüYQû1Y8ê‘°‡)=Ãßÿ1 b';7y?ÆuòQSüþÜ'?+òŸ ¶nIæ­py ½9$¿¿s\Óˆzÿô‡f~ü2Z¢ü¬‚ÿÔÉþbðþ³öž†ûŸ…+ýϬ?+>Ø ù¦ 0/ìW{¯ÎßëñôõƒÝõ ±™@‡¿µÍøY+µ@³GœVä=òÿƻķíá¨gî¼£:ùƒ 8ƒVE™m¯¹]ԯź:ß0 -޲•â÷<¸Þ)=ç膳£Ø¬‹M›¥ì±YÅ¡üðË?kv>ÞÜ ­k†5+¢ŒÑ½ÊÇMß¾vò"Ô8ò®‚±ùqÿY‘gÍù¹åô=0‹ïë;õÚ"°îP9F­Ñž7´a2Ã%ïÜVD¹:ÿ‚tñp!ÌN£çg=ybg.«)/xÜpýßú7î|•Iá••p)jüg5qsƒ<wgTzIÞ˜·‘?«ò¡N'ïsÊÜ«X—€?çò¶ÿâI´Œ‘ù¸©aŸyx‰ÃÝHú³þûª©-VÜ¼ÆÆ‡Œ yìn¶$Iú ¶¶ùuæðEA­Ãh8ûìÄ“´±NBÙþºÌÔ#¿”Ó줗÷x½%s9¥ØqÈíŸd>G[ÝM)¾®óøüŽý„îòÃkì,2·ç¹bpïXkE R¤7{D"ëEÀo3o”Õv²dñqCs-aµÔÿÓ,Zwf¾"#_ŠÈÓAð:~@ÿ²¯¨÷_ŸèVÚþÎ'c’ÏŽD÷´Í3/¼ÊëcÖIÐÕ!5ʶ–ª,_¾¾ç…ä»Z´ö8äç¶ °y/§³èwÈ-PíI¥»çaT=¾Ë)~zuæžÆâÇ!¥y¡Ó—[éöù¾´¾hjqK›?`òMÔG‚ˆOwʬ$šlneºvðeß r¶´3åN»¢÷A/¨j“„вÑnz[É €äýUü6Úéø¸7õ쟺½0Œög¼A3ÙlòûI!ö9ù)!ÞW”´ÝKß9÷žmÌ %ÉöZÝ`/)®“›žø*NfÏ>[\œü øD\HUnŸ¬[“_{6ó^4A^줺տAŒ’oO›±uÜÿð©Ìÿ’isýôêH»QnĈ‚‚ʹ*!bÍþÚ­²ƒ¶&RLÿý©øï×&¿Ð`ð&ûÂiu¸‰}X/êóß?’ŽÞ¸][;ù.CÏÕ[”<‚6êÏ à)Óÿb鼟ohõK¸o|˜L]tž î“Éfxèå¢e›Ã|VjžÐDåZ+3Êü=U’_Çîœ ÍÙê·2s‡6ÿ’=Øý›#´=¯Á9¨8Ì>{þôZZmÞ­°«(†²qù\$e4ÃäÓåâó3ß­FÑ áŸd`ÓÏ\0’‚v0Í,¦°R…üÕ3÷ü™± RÛÿÂÿÚ‘±›äðaTæ—$J®¡îuŲlš*¾~‚ß ›"dgó2u1oÄRMŸdCœX?²}˜‡º”Tsÿ©&-³0f‚ØböN>‘½¦ŒoõNû·ÞU¾ëgxåÓ>þØÜm¦Ý_Ÿgß Í߇…{eûG•û ñâ™öHí)ã›mÙIøˆwËö¶œÆGÈ « ³ -òÁ娫9zŸ¼Qfà-ó¬d +¸¶è>VvE)7tû¶`jm(wëZÜa+â±9XRþh'ºÅÂ|æi´…4/´R RæÖ@Ú3Ê”WøÎRs£ˆø™ÄŽ{ÔÁÓŸ'ÕcPõì¢þ®ôr´?Õ¾wʧÁ÷ë4´vO]6ÒÅüd~î™å”/ ³_,~‹À…i’t€W'åœèhÙe³™†ö{§¾óUoðj^£ÇŠïoOêܨùãùÚC ¦îèÆÃ>ËݧE>îÂ…ÿ1Ððrãñ…Ç84xÔÆ K¼Ë¥Óþgh´IIÐFUE縀45w -Á?C ÃE%{Eþ!ͺ[ &ùÄ™ û¶(üTÙlrî9·=l<ŽÎ”™*E¯ -ÔAÄ 8 ü¦AßýŸ[ϼ[m£dñkr8‡@â]eaÆ7ìC+××î;ªtŠe~:žf¯ïœmk÷3·± †Óf?ÉÏÆÊ?}Áqyxµ½û¸q3ãàÅ<{ö’ Ü]qö¼-q ÞÊNǵƒ†Ú¹;xÔCzÆç`ôú °­_kž€ ¯ÓŠ}MÉås¶‘¿)û«-o(8AÒŸÙ G™øýEÚvu‹^qÿ£ ×'s`wdzÐêF íÐÔ°R}V¿]ÂÿŸvhiþ%X¶¿bO²å -ç[•f=ËöùЃÆÊÌÕhCŸª¼’ûÞËÿ£,ùºáÀGÌf¾hÆwÐ -×Ví0`òŶ|ÊÏ/¡ýúÉ!§¢ýâ–£?Ú¥fH/Ù|ã‘lóg¨]ß/1,ÈÖöŽúŽy½ÆâzRׄ¶ê¡ ¹Q7êí‚*ýü'E»ÿñ÷¼à×݆®ã/ËMšDˆ#|\·Ú à -ÜM¦V¾‹ÃßMÜ gRû?,=†5§ÙÜq¹#Ͳ[ˆ È©f]ç ÂJ¡dgà·4R¨A8™ Ï ²¼6ŽAèø%Ù %‹Ñ¥.Ëxsño~ÏG¼¯({P‡z±ígõËä èx¿mzôüÐyI_?ÆbèÚ7‚UµNÈFK¯…ÍçöY¥È‡ý¾É`…œ)ªûL¹,râP8!TrbB«ZnðœV’7¼y]TRü¹È΂aѲ}cUz>Hý¬nß…ëëÜ>“"êâ~Ù’aÍ÷èË®Æf3™ Ù”©ÅÖ‹.s>DwÚçåc~/—î5?FíŒ4"º×ÃNH…cé!+C£]1C¢6‚ŸBt}œeX¿wp!4Ä|`9;…Ç÷ü’ÀÎå–°¥Év‚é¼ÌýþõÄvê…¹.>ÜÄNÔDÎÀß½Nw! QkÝW;QÂ2 ãcúˆ=Ûý˜GNI2 Wr½h€Ab/hÿûèÌ g£%‹ò=9æ3ÛÔúµ¾Z »8³ ,•„íý±÷DÙÕðféÀ -ü±êù¤qpÌ,%Uç 3'F«óËu.ÚFWË'ÿ¡F4s¡ Ö¯ ìS?4âøDzI±¦ŠLÝa´PX?-/–Ät‚·ª%^¨ƒ›‚Z…;ÑR¡ ÷âŽxƹç½Ý¾ "áRÿÞ¨ãúhñrJC4A¾Ý±ßÿöËJˆÆj0ô_ 0Õ@/b–Œ0'~Òi@ÌjKG&*GÉ)¹­ U¶ÝØH&´t$+Ÿ“ªz7ÀÅšÜXµV´'ª¾w ¬ŽêÄ Ã[WÏ:/90[@Ù2âR@~¢EŠ–!¤É‚¨zrÂ%d€PqTäè3!¥‰'({wÔטâjâ¤Ë›'^vãY\š¿ñЙ"|°ŽbGL ? Šì”ð͇£)€ * Iþ%<œ±÷oí›ÄY…5kE¤×;KSñh úW"Åj\¢FJ¾+1ŸL­×@FÃÍÎh䓨É*¾Mk±MFGåòðpë+Â0Bž¼kýØÚïwôÖôß‚'\Ýâú—¢ÝbuR^46~Ý8Â¥X­;}¡‚œÜô·î ·?„¬£IÝÓ) [Øóð.©ÃØ ó*pÆã›ß©¤×Ø@-ÞÉ '¡g09$0È«°_(¤GØ@bÕ)§zZuªÝ¶IÖêØJPľÃ|+%Ó.òU0ELŠù>Q)¶àÜvÑ„4ñMÒL¥&ãh…B8Ñyè{(˜<¸˜…½M_AÑŒŽwM%ØÝ_#Öu;– ƒAØh -´ -336d1063-e4b3-4c2c-bf11-1cab41a000d99172551d9-9ef3-4ed2-bbc1-3f2ea79f1f8450 62384f846b4-97b6-42d5-897a-4f6e51d87d6483fe3bec4-4b95-4332-9b12-a4179f8af2da034638.25212523713- 1 !#<ïøZ* §ê0 @oM ­éþX,\›“mkœhé‰g4pƒ°$Ö wu’‡¸ó6Ûp ›Œ3á#/L}^zéË—Ϭ‡‰§°î,ƒôtÃâ© •kT²L§(äÓ5¢áá¼› èÂ"g ‡ÓÊ(…ÑÀ‰ø¥'襗>Œ cW\Ä9ÿdd9630ac-5672-464b-bdb9-a8e30fa3deb5e287865f-b4ad-42d4-ac77-1898149a59cml10SVGFilter -/ : -/XMLNodeArray; (xmlnode-childre(feTurbulencenodenamevalu1typ/baseFrequency(0.052attribute; ,numOctaves(2stitchTilnoStresult,feCompositoperatorinSourceGraphicinin2f(o%yw10xxhid)AI_Alpha_id/Def ;4fractalNois4GaussianBlu1stdDevi2bfeOffsedddofePointL-10000z-2zx5xeSpecularsExponent(1Consta(urface5specOustyll-color:wharithmetk1k1k3k3404litPaik2MergeNod2y4xBevelShadowMorphologydilaradiu1.dnbby-dn5n22DisplacementMap1yChannelSelecA2x(Rx3s3b3Matrim3414animaccumu(nonadditrecalcM(lineaNfromrestaralwayto5tobeg0sd5fillfreez1b58ccnccc8cccc1ccccnb-15CoolBD_6erErod664_(_spliRNrepeatD(indefin1 1;20 15;200 200; 15 20;1 1 1removnc50 5PixelPlay;20 20;yellow;green;blue;indigo;violet;red;oran5Dielev6azimu8eDiffused1lre510022xred6881y4x1320.0.5ta0x0.54oFloo12floodblack; opacity:nsC35(Gray0x-OCompBlurTO1feFunctableV2FuncG.7 0B1nentTransfXferFire„g¨L!"™€@à 0 Pæª(«ò@‚°8,a0À `€0 ”…s[6¹«í…µŠR?vµð¬ÕÑåzË%ÒòYQ?èU?ºE þæ#æÉÒÎ׈)„Ç\÷ì*Héy…™vØi”8~ImQ£+%,ib^Ü^¡î¼ó¬Ü¦]3Zx›°,Q‘ê­Y²ºæÇSŽ{Øñhæ¼±OVßH›•iK[B ˜òšl~?]W‹ ø2€þþoÏ.ERì 6Ñ 1é ®ˆLsW7g bû…eTIÉ ÚõTpmLgâ[¤³ {ŠlœŸË}Q-¤˜Ž¯´‚Ò™méC Ž@9û$ö»ÍµT­¾0î2Œ#ZMŸä-ÜMËL2o_‚] †k Í/ê66G‹}çTñ8^°«<úÅC¢Tç® žlRª'5rÖ¬ã5a«¡`î¶v,šq!Íû¦<¨LxMt~í@࡜àfÂEã™:ócCÄ3a¶q37³mM‚å˜É(«IÅ‘/kÓšèò™xNû+[E¶åèfëF†Ã2"5%½––å9Ãjª¡†¥Ù¯4TµJ¬Ùh<ލÐ%¾œ&ÈU˜ôÈ‚ãV(QY•ngëÖ¼¼C¶¥¤45Œg¢DkW†”Ph¬ˆ '½Ç‰Í¿õÁýynÊ/Äoܼè,Q°)×›òÝÑ”ƒU5ШîIm.‘ Þ}R®¡ho5‹ó7Ár’MÎý~mïetP -ñf‹j"+( ÷Tjá7XÙðJîü¨7=³$[HàB«ÐÙY¥R0xÅï\a¡¸ I=•‡”ÌŠ§AJ W| S^‚°ªÊïjŠìž¶9[МâŠfí˹Nà¡#Þ9nÿ6Í‹:VÐ>ê`ÑVFÄýi O÷Í5í1“-€ÇÙ´•BZLwˆJà~ž±uàëiÒL”6 -cª(´†¦ƒâ^­Cì%Öº–x॓|œ%¾>'Kß¿:€C²Š;³Ç÷ -o$«—P˜£DͬóÜÏE¨ÈúEœ‰À©=+¶?q GtU¶a ð‹¾Ny£ï?îÞ¨wÃß‚¥6§÷1ˆ6No›‚¸D¨V`Ò®V]NôðÈ Ú†Oó8¸×y &.@܆:n¿W’‰±u§ ÞHÍ.¶C·SåË7à@º;/D«ÿó…Ý£-a¢ñ$¼ ¢¥…BrÝ“y@¶íga-óÀ7L -ªÑiG e£¶§1œ øçf«A·©jVÑæEÈpÿ8ÐÃ$$Ûpž úÍ-„¢y œu~“‹O^iIrÙÖ© õÌ_Rí7bÝÉ -ìQµ÷™vÂEPCœ>/Ÿ¡…‰ëJö?ŽÓÃóXhÿ+;Ò<d¤®¢vF˜ããÿIv„T"tA1ŸDÆ(À¡ñj\T[ì–VáÚ½É_'㥲µ³6ۖάÎçB@ _µ¾jžX<߃÷RÒêŠýÛS%áÊF B(A†ß-ZÕXçÄY²°¡Aƒ›U³º\ÌSýN²!Èv˜xÁ‡^ë·KùªðŽïüy=ª'/ÁÔkù šeý18Ž–Dät\©˜gëpV ¡n$g44|íiq‘ç§ÈB‘žBŒEäy›b¿1ï /±å¬§¢ïM­J:kR¸ñ \¢¨‡¯ZéõN¬äÛˆnÚÊ6oà¸ö¯zý¢ÂÅ/¢š 90°ØÊoÄŸ¢/»}!—CFÃÕoU¬òŽ8 ØÓâu}·¥‘Dµï¦m£ObêØÖ¶VÉg®PI½U/˜›F~À(º½ä¨‚OèX$>þB£oÂ`b컵҆üé_±`ÄúîW´†§%ˆ( ÍîN€<˜¦qeíæƒ}ozf%—ÞÂ?Xljɳºksû\J0bÞ·z£;>Á™d]Á–‘x ùcöBA”?¡k/þ$@Ѽ„x?æ%p`Á”¨v㩘¦{½Š0Ò,¬Òi= ·Gà;ËQ;õ"ƒŸbŸØn‹×ËtÊÍfƒòÙJ9ò—¼˜écoKâ) a±ô5à.pë—Ýû2ÃâvUtÿÁ÷†PæFyá•]Œ^Šæ• £IsôÏD=µÜHüLQ ‚BÆpõßQ¥øO”Û¬ ޾Ÿ•|'1tQ£w_ãÛ 2“>öݶœT§.Vƒ/;EÉ -H'ma¡3S¬çwì,W¦jŽ+­/[|ú4rŇ'QhJB¯)Š kß6áO¢¦N][Xî¶ f#,Ø*¹‹ ~GäDCÎ&Ó…bVï8ùfªTô ÷~²÷¡vF)‘‹UÑiëSå]£%=¿Ò¤~@;<õ4 ªKÏYM§õKàê¹É¡ö¶øý夼3jå:3…2mvacOí²Ü%3=ÛH Ù'xðȃl‚¤š™:@Zí%} -À¾êΡôŸåå$¶õØÙØL YbóóÈB‡lû+˜ä6غT²Å,s,~(ÍÓ,òjð¹é#¹½ç!E¥JèžTqi&7RÖرtk4®Fë¢KÏ -RoaBÛOÕ\b»ÿÄÃêê­0!ëùЖ>É`±4M̦OCfúçë«y¤{,ûÐÝÌøÀÔ©]Âú3M§z†Jï•­ð c܈Á@}'k¸Ê@†iV¡€ ó¼3@ê nºøÿâ§û0è‘sHÀ¯½PJ¦Çh÷Vá›,øYu®ˆIra¼ímÆ |¢GÑ‘â$Iéka#HJ)¡Œùÿ‹9ø§“ò#](Ø_&P-ˆ'te -²Ÿ1äRÒ18_ö×Zÿð2 Ý{ûSÊ‹û ƒ ôKø¨gÈbVrª¼é"Ò…;‘]AÇSCu!ýV§Fy)%j±DIå7h×Ìî1Úuó =ÆÉ9€äAKgCT2½ÃË6 ³X‹&ž†.G -4k_Y:mD(ºg°]Ü‹ÚéKמ³^-ýÎ@¥”Ò%\røìžH|Çò.Û  ØÚªÀÀ ë–ûæea™ Òÿ‡ÃR:Q¥>HǾi?eEÑý€n6 [\ÊxT -»Ø ùe¤;9 iV#j2©ÅœÅí¬iD¤0“³öqhGõmE©jdIe«Ôq.1,Ö¸ÞP¸ãq€ÊúŽ0Û$‚3ºü * ±;nL,6VÓ"ÙÙ”.«*É&›ÚÅMÔ%bA úýo˜oFÊûO¥*xŽÁ¯; ‰0 ‰ã[ZȘÍh5Ú1LKÄ/Nõ%ŸJ¶±x³žä<Š ~É Îq­«m6"U-,tUH µ(x÷ÁЃø“TjËMYLì2óepKí €ðÓ)¦XÞë6G\¥b6q5lѽ:M3RÇÓÇÿ˜m‘é¸ÖÒíLDðZ -û$—±•q„²ÍÎeD¾#Q÷E~… ²²Ãî)‰½‡ë¬ªtšÀ/ËÂ{[ÄB”$HÂü: (윯‘ª -"ìdR²[ø^¬š<œH„å{a©a}x-mèðmêpäÉd)?Ž L…¬±X€¨¦ëF?¸zR»+²~€ ­À‡-vÃTܤ<¼ë¿P1XmZ¼ùKKò˜üþ4á­îl7&t&Ôpá>ËxRy¸?}õ°–P/×YgtPÖÀ<¯=ÒØW_~6Xgr€ý>‰¿ÊÃPÄziàî „G¨Í‘šª+RÍßê;¡br^¤p©¿k¸ -Øñ‡\ãè± ‹\5ã`„*èhE0""£t¸–Dœ`më’féb°Êël oáLk2fÀXFìGª‰`åßh"|'…t ¡ÄîÍôîtWF4)Ákúë.F„D¹ôÐî…íÔ`HŸv“”W½©ÈÝô‹‡ö ÎÛÃc´¹è²– Я&ØMÝäðº0­÷E!uŸ5Ê¿“…<Y¬bÎõÑüJën"=A³vWTú¨†D/[‹òiÀÕÒ:ÏÆç—¥®—>ƒ‹¾Òþÿc/ÃȵÃLéä ge/ͦ-ã4‹h8¥ï˜6¶tÓ6œ¸ ÅÛU’ËzÏ %ˆ–Ì;qê˜ÌŠú£«²B @6œŠˆ€ˆ€ˆ€ˆ€@tßݽ²i I!Å”­¹ÆGF«•`Ke#¥”RJ‰©#¡`¶;*EØüÊ  -) ^見œRfÌ`%>{Îô5×\sÍ5~0±Ö´ÎJv\—ñÌtožï÷NëFB¿æZ[Œo¾Ÿ·Þ¼ß¿õ³ÝÜDÎVb+å}ã¦$ð=Øýzsz¿Åyí²åb½â{+¾õâ{+¾ù;½Ç6gךiæÛv.[N[l¹ÎÕLµÅöZn^KU^ÉGå=Øš7Íö}¹ÅÕ:±¼)¶+­éoËW˜æç8×ÙùµóÍ3ý­ÏYþŽGìÒËi›;úï˜îh­sé;«ûŽG×ûÆ•ZËá§ÿÆVëJu·4_Nw\½–~î´?÷\¦Ö^ºí´ÝN›w¦›Ó¿•òï<å—þĽ<Óßöë׺éÿèu¦èúl/Ý÷K7žùq·ÏQºÎë·t?åŽGçígþŽGÇjwz¹ùëÎs÷çÛÙµÎÔþí¼^;ñ¼·âKñS;Ú\9\y§ÏÙαî¸Ò›9¬µÆôr3[ËiÇ#vAŽGçu¶œ{[-µÜÄç½ñž¯éž¸÷‹©ÕÚò§yö®¿Ó=u¿´>Ö–æ·8ÓÊí¯õ^Úâœ-Æ6wªÿvºmÍ™jÇ#Ö7š·ã1³lˆïr·'ζÞç© –ÚRÛ v«¥û±Öt÷Ÿ÷÷sK·}®_)Ÿûrsãz÷ž–wž-þ§·ßßOïìýq¦ÚNÜ·¦vâJïÄã§œûçôÿ;µÏÿçý™k5z߉ç¾;};7ŸÓž¹™óÅšvÎRÍqZ9ÍiµÝ¥šÓž;šÚÙùoM-§w¥—Û—ÖyñÔÓç«§OmçcúÜä5WK·Å¾üù¥ukÚ'ÎÏ+½²ÍM}°Õ®VošWÓõêñ÷>óå4å{b­s¦˜;LýòþìxÀ2ÝÛr™jnfúzkÛúïb3ÓÍí×±Üm‹+½úò]Ož÷g9Žã¶îô/ÇõÞ”wtæûVûØRl¿Óv½—›örÓþ[þÓê›ÿ­µ?¿ÅíÛû¶ÿw]sr¿Ü´ÕÖçx¦œÿæfæÜ´¶ß>§å<Ó^-í±~¹ùÏuó7åµËTãMùå8{m,W„L,eœ¿^j;.Æñ~3ß•SnrK1§öb¾{µÜÔß‹ŸWû·ëpSsvrŽã¦žzò¹ŸîÉ97;çxt³Ï>õì\çf×twnÞÝ;7µã››\“>R„uR°/ôJ½ã¬/Ýýqµs—s¶r[[n{íØÚJŸ›×rú3×m»}‹ïÝÝêÊéÛû·ÃÏÍ{ïSkoÿK37o½1QwN—Úº.Öéb]wkít]—ÚºÔ–Úº®KmŽG'µ¥6ÎîKm©-Ö·¾ZOµ7çõÚ¹_µ0§ªÖr«¾ÕÚªg±ú³Xõ­î—»üë\ÿs:g×qËÖoãÀ›k]ïìvZL­N×u]×q<º.Öuýý»ÓÑ~7ÇöÍ;÷ZZ¿þÿ¿îãÑÉXgNõݶۖrÎ;Ç£3û×k9½ŽGW)Îë~iæ×bLë}M«Å–Óú•ZÛi.wÏû¥ÿ•~Çñ®óL3çxt6ÎUS|3î—bйVÇiç0לë¾;[Óãþ;ùí㽯ÖOmçRû\g1§½µvs.g~{Ï•[m­¸÷¿•òÚS| )Ö7`üH œb9ÛLц’Ú8PjKm©-µ¥6ŒUœÔ–Ú2Hó!jª¿B°»H¤¶Ô¦Y{¥òX–×^9«ÂœÓ^ÅœêvÎÝ«õ|Å_¤7š(0Íþ«®úX+U¹®â<ÏÃÜJgçå¼ñ*«R[*µ¥6 [?Åë¬wZÌíæ(RÛÞJm©-•ÚYF¢¿¡H&a¦òHÐS_¤7€nïºçj{¥Ÿ?kMës¬ÅŸõžwkño¼wå;[^¹ùYsû¯7ÝuëºëÝßjluÞÓÌM]5¦zïö»Þ{ò¼1þ×ú7¶=W‹í¥ù¯þÛñÞ½æ]o½zsý×Ûÿnž³æ4o®u¶ólù?Åzokõ­ãk5§ÿrÎ~wŸã–Þÿû3K ‚(þv¯ã{œm¯öó®9_žiVgÎóÝ\ÛúVsÍùݵãk¯¦õnní_[1¯µ~ÅÖZÞéþç]×étŒ³âì[Ÿ÷ÿÚ/½WÿµóûîµÖŽÛúœ›šîÎéžëSÎquÇM¼5lÖïpµfNëìÏáÌêx´*æ¬8sól¹icsknZËͧÕñÈàÌŸµs•«â8žõ9Ž«ÏeM97¹ù—Ã[÷ÞiŸvgM{­³þ¼šÏ¿óoíuãîxtÓÞ™çÿìÕÒz»É-7{ï”V^-ísr³ój9Îñè¸}Ž[Ç#cÖúŽÇÌ2~ÄT(–åŒ3ÀÇÀÇPF‚°SOmއŖf®µµ–êÏ œ…>˜Ê kj{(GQFà–î‹6©-µñ¼ïwœþ;]§˜‹=Õ3Û{é[ÇÓØ×ïÔ¶ÏP 7”ùŽG˜ÚR[jKm©-µ¥¶Ô–ÚR[jKm©-µ¥¶Ô–ÚR[jKm©-µ¥¶Ô¦–Ĭ³v.­Õ~§5Ó¿õÒêxt¦µ3güê©{¥xj»s®–ZÇ£ƒò¼õ_ÎñèìåþrÙrWÊŸÛÏñç:ÝÜÄ–Ë8_º-7ñ¦ÛñXÕü4ÿÌúbýŽÇª^ŽîïukZ¯ãÑMü\s÷}éçM1Gë¥Ýjnn^;Å–›¼[Þ¹©óÍëL{çxtìÍ™b»·æôZ~ß¾½âwUìs‚Á¾ÎåðÎóWøÀ`_Gÿåó/æ­¯#¿Q;ßÊ•­¯Ã¿÷*#ø@Ç2ñá =X ÷ýÁÀ–8–\+ÐAŽ^I´ye„ ‹Ãþ|þÖ<µ}¾nP‚0oæ03B0üÊ.ÚdÌr&¾Vbø"' 3æ«ð=zc9»hóÁTó+=˜H‚sþ‹6.òÍ.ÚÌr&+g¤ÙE›«úysÖã´“[l³+4 àØLö™`žJ„…8`±=Lå=|1¯æ­ÄŽôˆÆ¯ E+ÑSz -°ïdbcH&>Œ"L씢씲ï*=Y*#ˆ#èŠyái²FOT•£7»hƒ*[_Çú>$çøÉ<Ùì¢MŒ‚2Öe$Ë“é ÂÞ·ó|¹Íøf«÷ÕºÖüý-½¸öúõ±½zª¾Ê|l3œi1¶…šõÚÞ)ÏŸ3ÿÌ­Ö¼ê[_×ïÞ¶wÌkµ6š¸v\ùsÛ÷×ü¸ö×=ã­qÿ¾ûî{ïÚ·Þ¹jÎ_s\s×õ曳ÍüùÅüîÇßûͯ-¶o?c¢X[îöë¾÷÷®yß\ùÿå{óŒÿïž÷ÎpæÞ™ÐÜ»ó[­ÍY_]¯ýÊó¾ý+ÏÛr½yÎ=g8ósÆDÉp¦¶™ÐÔýÚŒ¯å»Z‹m×ÚÚj¹æ½ëªí¦ά¥ù³‹ÍN.ÎÕý+­–k^ï~«ùïËõï»ñÝZ½gBS÷›ùÞ¹Þ]ëÖ¿ócúo3¾ý>¶9Ûª¹½ç\±¶6謹ßúã]u×ü¾îÓä„LŠ'±*9ŽG‰ŠEUš_Y~0¯Ä -?©.Úl_-JØÌk} -[KÙÌSšãWÎH×nõWnóÆXgÍ­íõ^Û;μwýµ×ºï¬scJÖ…o¸ðyÿÞÙZk5·úÒº‰°XI¶Ämó¥•+C Wé•&ßþ·÷k˜ß Æa+’_Këì›Ö¹µý{/¾µÚן;ç¹Û­mÝ]Û\ûÅöiAO¦z«~SE×H®VžLÌOë7Àñ Ç5¿Ql}œÉ -=ÏÔïxt§ÒGÎd Geâè™2qô|Ö¼òþÝ~µxÛz÷¶6cmÊà“&[áºÚò>9ˆ×|Ÿ>9~á(væEPX YÎH”|ÀÌJ¹úZ­Ïü€Ý¤|0„™•ÀG)?C1 E°œ­>Œãáx`XáãȦÖŸ¹‰¹Ý´î›õ¦O1+$ aX¤ððùH •àŒŠrôJ˜éxÌi@™ŽÇ,ÀŒ$˜ý^âXžV éq^+¯<ÁT ¢0󂉙!è¹:¬p†ù€åjóż̬œB©‚ - † ǃìvVÙgí3— ”ë¼µþ¤8©ÒƒRºÎ|ê¤=Ø}°’GNJ´™wfZç½´NZ'ž•âxTêWçùuÇ£ò³Î:1˜:ëÄ쉙–âxT(ŽG…Î -&æ}§9~®Òûºo–Š“œ”99,¸ -¿Òä&ÌW£çê¸H×j&>” 4i)›¹>Åñàfà -g¢iÒR6ïÄLÖHšã…C¯ -cå²­6‹Ðæx\*¢Ðçr(S)ÐBdIR ^_¨»0 R#bšˆYÀÏF«€øT,œó5Ìç4Ây6® ¥¤Ù@ÚÖLbÀƒ -©Z…²]†’pz‰á³Ý&"]#ä s: \¦ pÀ#H#ŽoT,r[Ä‘µ_VƒÚ ¡½9 V¥o+,[2Ñ74ŒSéÔÉô OH+`<׋Eo ÁF®Ü*WHˆ¼u:¡ Ù=—–×%“—ÄäÀćË‹†\&°ddð¥SbðæxTRóŒNã& t‹»ÀÙ¥ ‘;£‚õ OžÊDº »Oˆ¨EÂN\t,ì#jìe’±vnlUR_ì¼êí!~T=Ñ»*§Ìc* ÿ›ãÑQDÛ¿¸QXóuPÕOªFJåBy¡¾"·l(”ªº(m`òd …¹X€€¹e s¡0ë`r„Å1*“‰ÃÜ.À¨ƒG:  èæxl™+ÂTMGœ ­2fœËD_Ü(¢ƒ»ʼn-±Ñ°á6\Áæ.šã^!„‹x©bŸ‹±"¸%‹ ‚¹"€ òC@!r "%àDR‚ÍñØ&Hy¡|¤qÙHˆw%F˜‡ áÒªž‹ -¢`pI‰Ü^,2*• EJ,-àËRáÁT–‹Oœ°x¢ÄÁò \Ë + X6<Ú¡PËeóY2‡mT6ÇáAV4£ÑY¨°^´T!=¡ -%/*š®Û•Ò¥ƒ©¬>Τaà”]90J'[`QV^EEr -(ÏeD‘0}(%×ÈP -t׉ޢ-£™P6Ç!áUNR¢.6¹LèÖdäš]Ld0b‚ ©(MX'’h‚EΤÂÀÁ`B-Px"ù¸ AJ&n&¡žPB‘¿ «'Q…H2’Iø’IP:$ÙÊLP|©@bÙX"‹I¨ÄõšH°ÇÒ$±UK¶•0R›5XÛÆ v±I”‰-îÓVÉ0Œ6—ƒ+´Z•³i$ ÛeSê-ô~«˜Ì.[× !Ù6Ç#33Ð6*e3ã5àbµ("Þ@ …©Ј I`È—Ñ·¹ -“÷t4ƒf`#UÑbZÐ`0¨®ÐÅe £C0h!  quLads<4¬F$vÊø"£Wò"Y·ˆL*‘‰—Ñxˆ`‡ŠR$óŠè" zRˆ<¦„HËã Bz1¹\IŽð‰û}â"*°q!`Id`$Rd0‚xŠØÆ—æ¥ÑPÀµ|6ùy¨¦"¶7Ç£de€0à´)X÷Xj.àS Àj6pu¨û\ö -a#á»ÑçR ;¨ƒÖ$è4Ëc›—„µ9¤ -pÀ‰VÁ‹ƒ¡+8!‹„(ùd^Ïåb#ƒR6Ç£@Á|8–ic0Á =m¨¸áäÀÙ&ÑDÓR$MÓ - àKÓ´ †‰¦ šV`sª\–“»¦ieCƒñá 6Ưú<§iÉ™¨'˜ì|4MÓ4M» ¯-d‚hš&³hšF°¡“Ðæx<€¬PìŒ'ã3ýè±B¯<Ù¼1ô¿ab)KòóüÞ’ɼñÁÖ>d>¥ú"JÒ™À=?ÀJÄ/Úˆ­Pôex%è…ªØÌõð•Þø…_è5z£ñ“ãŠü<)§d_´¡¡bø -g“[âüÈÙ„ya˜’Ÿ'MÒ›®ÕŒœ+&“y³œ‰x°éÍœ%8§XNÖ÷…s&0Š“œ!èed„` ²¾Š3ô`²9øHbR§z“ôæ[3ôfFðÈ~.&™‚eù‘“5?W9¿Ñ›ù¹(–Ö×èbàø2 à¡ÈSúm>L\M -Ê“%l6úx§ê…§/I°›¯P´¢% {…àÕ"=¶™`næ©ô™zŠ­P¤f‚_†' =˜J¾Hñ#ÇoÀ7Â`WT%j`0¤)ÚL[1Ó€A9KEl²¾åwµ )šÄØgº;“7!Á±#Ù+é/ÍŒ‡X!ˆÌÄÊøkêFï!W¥yV%ûÏã©ø<Áç"á:†ÿ *>O0¡¹„¸ Íåó¹¨l,o`¡¨2ž„µ€&%ÍÅ#Ž<”ˆ²©ØXžãÊ$‰ÏÅF›]ÄX:•þñfs<^žÎ"A‹hMAŽ“¡ÚkS¾ -ƒ „IdâÂÆLÝP;¨Ú Ælœ¨àØÀ†æš>WD"a8 œd­R /‰èSC T_!L` -˜ "âa.•@z…àq{r” ôîÒ“‡@ë˜<襹h›ãA5\Úƒ†‹@›è œÖyi.Ú§/pÚÅÝpÚçE ¥BNË m…ér!d¬ÑÆá#þAêòc§iÀ|dª½4£M‚l€ûÙCµ_ç’àØ†Tu p™˜˜¸Œ(‚§©"Uc*¤¡”‚VS—Wfb;›ã±¹2ÛQe&¶£pUcJ‚‹Ø¨Ø¨Ø¨Ø¨ˆˆ¨ ÞK@¼ï` ßڨبi.(T¤¢âók7&­I«Ê&B(‰KC!á@Q"JD‰( ­´±ü¬ëp/RD‰¨æž,ŸÆW?¯~_¥|_@)hÅJ¡X)t’(3 -µ³`(` …Ú¹¤¼¯ÆJ!Ó cj¬Ò0è á^Í¡á cØ îe@ ÜÍñ˜8 \d‘ ½ ²P×`f €RЪi. w£Ü;[x„ËBŒ‚ îæx,Ä(w!6“õK.<.=”ŽÄƤUETHs¹H ;z@!\‘†„RZPD• ÒÂrLžH£Ì -l‡bª£‡‚`"ÀUHsQHIpìæx8¿9) Ž…Hy_• ”¥g¡TÈÐJÍÅaÆ’àØ7aU… ‚k¿¢P¨ÌÄr¨þÒ\L¤)r Ÿe– -Í.2[ò—¤Á±|ˆÊ\D;‚x•«Â@”_MØ1Ò\@&H -â=ÇäI´†  bfVµ9 Kâ-t»Q€e(Á„¤‚1ùVý\˜<Ÿ #‘M„4žŠÏKBWFà‘T0FÜÄeàÌ,ìç‚B0ÊLìd–õ—æò‘ÐÒ ‹¦âCA;­ê¡SŽ5‘Ÿ#^äW-¨O㫱RH£Ê€Èdûh:ƒ»9 áCA¸xHAðAðŽ GÛG£Q˜ x¿9ŠP×8X"žÏ…Ù<Ÿ Ã!EÎÅn$l,ÿÀ¢È4Û–jÂI&)i,³”BÝ$ -µê-¤¹xH‘SÉË;t,\‡àC ¹8Œî cª¨"LlG"Ô5‹'2ŸR,¸lŽÇ¦À‚QkçÎFLÆ2ãJ™‰° ˆÏÅÐÀMؤM ˆ8„ªARž¼Eté€T=„Ü‹ -†Q P*®|GÉžD$6—øÀ W´X(ƒªD“ˆ† ÕÍñ¸2„¬˜°¨˜ö@D,T¿c6´ºK%*xgL„|„™ èh6ÇC“:¹Mi!¹Rfb!£ ¡“ÈÆòUÄD& …êh&–ªu&%&¡º xfã§ ‚ç´ðE< Nç_ž‡Œ‚§bP0`+àfâÙ ïtB¡Ûݼ8Âpá¦JÖ(K°H,¸~s<舴°í”0ªÆ€B×È*-c< Œ¥6㈉qH"ŽÍŒ#¥P®C*3Ž ÅrˆØ "‰Ë¢¶>¤5H| MÉX os Ï/ÆUÄ 6è™Åæxp´Ä8ÄÉJ å±)>ªå]Ôx'“RAl"b «nª‡Ž…Øqrb …*k&°•D4‰¡›ã¡°jjÉà†\!Išª&ðæxä¨HD{:{p©0 ¨(c6ÊÄ )Œãæx¼6[Ç -ÁIËy&­ê„8¹9å†Åˆ1¾®Cöh ÒKXÕR`!XÀ%ÄÉÍñè|)Ê cêÈS±%Hƒq$;Ï„„Ua¡¬¹¨0&f6ÄG¤%±D i.3Þ]Š)¼ŠÑ¥M™‹m EÎes>stream -, -2HL‚éãD|2¡Œ®I }y²æ‚°€¡P&:ÅRÕ¶›C±PEÄ™A4›+F@ws<6ú‰Zm0HÃFÛ(JN“”Z5µåñ2¦ˆÂ+Ô[Nù€p nö£ ¦ÞÒ…pÁŒ.˜ŠQ¡.#k.ŽGIà{øm6ÒëÊè‘¬Ç µ9šôÖV!CÛ’Q4aüèÕFˆ'ŠØÈ ¾±9 ÚE”a¤N%Y„T­ì@£r‰WaA,é&3³ -+~ò '2 @ö";$Ä41 HìûÙŒ;|`žLƒ|íõbÁ$ý•eÈ4b—Š“†hUÒ›ã1éB¢Â4¨T`p_0*†)¹ B‡ëÒDò•‘’œH¢koÆMh½Z3‰Rkµ¡p[&ƒìãÈ”¾\ðW¡@ÅXc]9°424Ë1ˆ+Š'O«Íñ@• |eRYFU ÅB©J%“Ê¡$šy§R‚/•€àU¨DÞª¤¸Àx}ØÁ˜‰pãâ’X¥öSD©MAX6xÑ ‘."ÚÃö Zt' UAƒÅæxH¨…f¡‘©**€[§B[e*Õ‹â"ã2PXÈÖSt•OL€X@ð ¡shž&€[ -‹ „…gb`\&V£W†„åB’аPÐMkŒ€l\@D+c±9øÄ©Dh|$-ÔHã¡>s‘Q/ƒ‡Â!á$¢€‚A­,ªV™ñ@¢”øÃ¥¢=È*¤‹“Ê„ $æ´Ñ3!`8Ê´5.‚©–0SE_Z›ã±Q:É"‚¸Ã¬e¡9”eª4«@•"žË–&¯Ï‰`¡ Ùzá!€F”ä©8ˆ54DrDÅGo\ûÒ p4F„xu8 f„Ò¾2Ò @¹:Ëfrê6ǃcS™nbä”®\ ÝûL ¨ ’‚DaÐ|(ׂ…ëá´p‰|š…;«,Œ¡®!ê¬( D•ÊF¤ax eÀ,1ÍÇ%¡ðK›Œ¨SéS‰ $¡RˆfDHÓ0x(ɤrQÎ:d¸€gT.€T@2•c¡@$1 £(ˆ‚d1ʤŒ™šª÷×¢þ¦˜1B'‡DzqÆs‚e¨E §K"¨¯­"™®´8ÎÂ/(W_·Pš×`q9@b‡= í‘ÝÑ6 ”ž9yp/îcNu^ÐÃ+hÙ§K˜‹À˜ `ä¯Vš+fíœèþ·Á¯^r¥1ÄLý4== I|¿ ¯;!±·>œ­MèÉꄟ*ë˶ìàº0ÞòÈg ´H†žøG…Àg£³dè ǺH -D?†ÞÐϰ:{¬FáÚzb6":ê[Eë,}©˜àÆ®.†œä+Knam7OBzÿ4Uf–ˆ¾lajû´º [ œ6(°£S¢vÝ'ÿŽ n°_q¦(ê`¬yBb§GbR‰¦æJ`ÈCYê€ûV#p[Ì;hÉJoŠøï†[ܸ|maËøÔ#¢•^–òTÄ×)rÑõˆÕÛ¬¹ù/gƒ.WmEÍu'MP§üiº„3´;Né´x"¿™xgQñÿæ»àóCÁÕÃ赈¨€•]HÏé@®ÂŠ…ñÔcCàÚç *ÿ· Â+‚§<†G¡Îš­ùNÇ' ÁÎW/]4K‰˜`+ùÞÊ(ÝÙÌDa?Œ -QçÉŽi¹X‡LÑ:ÍCKPU]7ºF|æH/¨€Sõ¤yBý¿xÚZ&mHßÒé¯|*­qÚ™· †pÙZ÷Y>ukÉÊnEº™Ae¸*—Ê ™ñè=H3 Êä?òGïÔxt‹tò0ŒcU—ê·0|0o÷Àl *wi8VœÅàp;cNq¨q$—õnÐÝP–ÀFVŠŠq¹<Í'WHŒ.Ñ¡“r.³Ç97—tˆ(r(×TÏT}à"õ®J ä㩪:&Ÿ>:ÄŽ ‰ÁJ÷ˆ¿Î{óÊÆ~Œ]pCS MÅ#Œºß §XC„7më[>Š”ÍbÜ y,qžSAgpàÁ\˜ïð‡-yÓ (ǘ³(Oýtp¸£ÍÉÁÑôò1r«Rƒ\£G Ì0W¯¨;r˜ß7½×[€\2³N7ìGο' 2õ± GFã°ãì=_[ÁÌÓ?VŽ#ãÛÛ‡(G¥à>²3€ám®û‘†2#€6±jM=Z¿bµñ“‘Õ}é7ÙÄ<~îtä~ÈÏxÔÄü¾.éžµ$g:ø(½ccVãÙ5¹ºµ=$_ªïþ{ƒcv±PŒ²Â;²F(yXÁ¼1$¸MF‡¾Œí¦€-?›F?u ÂŽËùp,ì9J=^aê¢Ù¶ºhÒTò)¹yó+Üã;‚ÈEêúÖå·ñ•c -—JÖ™;OÀä2rµ6h+Ö¼ H‹6îöGuÈ9ï¶O…ñFÑd UR.]âa„“AY.Ä*×Ãù"d 'Á+ 9*DuÚ§F©¡("1šYCåçbs›.RgPð—­ -Ÿ¤òÝáˆÓöôÄEâðîx¢Ø$Ô„?ŒÇ…OëhÓ”×jÙŠÇ F&±†èÚ!]Hõ ªkkÛM8±¦±½èჃ"™TTˆJÉðVdKŒæu¼†; Eh1Ñ1å$Õ‰'*U¯ Xb]a›Í“-yðPaS?7Q>þæx —FçlS›ùÍ60¢!Kİoá#(°A í -1o k4\4ñ3áp+9Ãm¶ÀºA äl‡Ôu´_8q÷æ<à|½l¼™Lé|¢ƒ‰TÞ¡ƒzùajÓǮ[Aï–ˆ+ƒéz£>fй„›£¸Ð½± jš<ö@« ¢Œ„#¶FÂmu}ÿ7/ޏó–BTTÎÌ\m{Fûæ6üð¨mK8Ö`)iñH¼é}ëß›ÜÐðÚä/–YÈ{÷庀–Ì}$Ñ+øŸÙáó´méy>=„9z­l]1â!Wp:÷ ÀEøøœ×¥ð*.T<Ž±Ú“Ó7|—ðŽÑWhÈvé®Åƒ¼Eø…Š÷? -Ì ×þ—ã7øf~;¥+ܼü,çU:ÅÌ„ih¤}›óûþÜýäÕY¶™ky)ûÚÈÚ–%/¬k_yJ×;Œvh4ÔRñ¡Ø5@+ã,¸Þ«æ• -¶«lpÈÀ”(á%ïµ,¨¼¿Þý{wĽ”‡ð×\ä =ÐÍ~3),0 D!~%<í1Æ–$úœfìñ+ llu—¹Ã˜tæáѰ$ÎÏ‹OkÌS1®ßVé¶'KcF½?q]ê]àp´mIÜ4ÄZ#J&ói&aÓP6[M¿Š”ê½Ø’šÅùöë#QîM¾Îò[¨…Dkü·…ü$?:‹Ï{·NQA9jô–èÕ]:k¦-lÍZÍ­†ÛÛc»Ò²†W.TÜáˆFT'h,Ç–L°ý{MÌÂ$Æ$«nˆ‡:à¶+@ãÌÑNm8ÎCôò++žY¹¨ ì¹øxw(c8æï{ì@ùì1S2êc†Ó`¼‡ Ñ0æLn‰)VÞß³‘J“9,^†™ ù÷(4¼ôÜñ3““béÅU™u(.Ñ (à’/"É“½Ž ÍM[‹}]J½×QÅãçѨu¶{îðeSß%õkaìYÅ1(£ÅÈyëÎ3|2ìš$Ñ¥&«±hµBÆJf¨ù#~:ì;9Ú8 -Ðøƒ@íÖɣТDCYYn=™m:+´F¥ò4®ØT3 -Ú Âhq zp$ î¼Å[âÙÆ—LÆL?~¸èѤïõtIk'ÚÚjqŒGKŒ;ŠC•¢ >#óÈwª&2Œª3¡ 5Zõ(Ý~["mǼÒþ~ƒÓ½r-"¹g‹f¦× Õ)³ád»º\×ú¯•§×@´ Ç Ÿ*§-GœÖüýæapk|Òs¯Í—Vyž t!yÞ·–§•œš^Fº:ÙHduÚ6gi%êÓ©6„gú¢*ÁÛ-ãÐ:ÅÁ˜3•ã¿V–à( -c±”Ü_bŸu,)ÿÊŒJƒB8š§NMR"Îñg“‡©›! ¼g(kD;RÞwv @Ü/ßéÌ}c¾vRɸ£À½EGÒ;ŒðuÂ’+Ñv †»qä¯ïœ¦ì8þ#p{ú*^X®²\º­‡ãj=Œwk`Â;*|·b -ô¦ðù 5´è(R`k}µËï5±,7’À‰Ýp핵`( 1«Î8™÷p"ÐÙz³,ì&`…-ªñdÍМ‰Ü·ÒÃgé¦"cƒ -º N}i¨ ¤D@üeÚañ¿,˜sJ TÔÝ1u?ðññ8(×ÕHˆÖœOh¾vt¯,Ýb Ò¸ú3j¨ìóÚ~nmà×5%èãÕQÒ ë¾ùSTQÿ@ï·Ú‰‰¯hÜ"«edÏÞ]í´Œ½x MƒµO]þ…AµãrÎÜRÁ»”߆hp3üq™z€Ò*HÀ(ªÅð¦rš/'šn>rs—ëŸÏƒNt"‡OÊDç»}Dº9iU• µiSW´]U×ýÝ;+^íÍQC³æhè×–„{ä²C˹ÇïPÑ÷™÷ììU\9Hþ:bK©¶°šÉ¿W ‘^ÒGøCŒ.õÔãR=–¹ü´¯K†«mÂÏéªòҺɻE}Ê­N‰üA¿¸ ŽNæFé3©f/B¬²0›h ít€Þ»ÆçüWÆ—˜Û5+a—3¨/GRdÄ‘ Áœ¬ÕñOÃë xIé‘ö4aªå—S¹GÞ÷$i~LigP‚$ US±Ž)-*v§þ¹¦ÃÊÆ^ÁïòËd.ŒN© 3'y£½æêk¥xꀨqÁê;è¯Ò“ökÒCV¨+¨^¨ôü¿÷‘'ecFa”Ë]º$™HlE-éx£ÉÒ\Û.m¤©»^•„ˆôô‚´AùªÂ~ uJ1"oÛøñÛí¡ OÅ9ò°c4é4’8DF¬*û€-܇UW‡?T=ƒ(/Ú†{$ -ãB¦n ®S†¬ÚRÊb=óñHñpv\C³^žo8t4`®íû¢]Fëqƒã_ÉeΑ!¤ôÐìÙ©l\þ8È8=çÑ9°O6_Óˆ; ™‹Ç­fÿ«‹2—§žTA -Ÿ©Ó¹a½XYOmDi|ó!°ÛV£Öfçµý1Cä“klÄ»öʬö Ñ~y3룰E-ý¦ê‹Ù,ÔF]¬²š¦r¿V[“O<Ί‘²é@×h æ²Bµ©·Z^ vcãòŒ»1ëõ¦Co«Nÿ&Lp#52þÈIíb…ËkÔ'~Oò72Æë¼;B×¾’u=!Dê| N,èè“e²e¾M{·X𬦼Ô:{É"²ê†V¹¼’Y©ž&b)å÷ØÊÞFñϲl«(ž“f INc}+t¨XE.Œ° -"fÙItáÂ$ˆ‘Þºa…ù~+Êš{0cš :d$ìÅ€‘—ÏÀ<á%Ô¦ýLÙ¸åãUlu4ßÔæ¦SPÞè$ü…-î*þ2œçxtiÔ±¿‘Jn%!¶Òñ^üÉJÞŸÏÐû¥’‘œœ8R®Aa`r‘˜…éê…ÆÊ75L)5Ðp¯Jo ÏMt‡c=þŸyøÜ° —K]Þ2&%jÊêimgê•L¢œÿÕ»ˆxάј3N•ÜgØv¦ë‘EÉöµÇäP7´€~´ŸÉÈØ_Ú><7qþÄšäÕ†iÞÞMiî´Y½ÖœY5“2ȃU5o-£G…×ñ˜™çñÙœ,13 „fe­lY™$JÚˆ,½¾ _5¹%6C |ÄÈ›„/¦ñN|8t§Ú"Áâ@íÃJ:€”µËKÒl,Ÿ¿!=¼£ï–ñhšÅâr’Û‹}Íà÷Ž’S7`R}|Òi#VWÏôÔêçåcœ—ªd£ƒû†4&érã¡–±pŸ“Ýi‹¸£—Ö¢Ú ö‡P)/"S÷e*ÎÌ|[1È©õó^¤àœST~5eÚ] ~ -eb9whÝOp¤xQÏc)m+¾é…ÛÐR;tm'U(µš@`­Ù·æa9H¬£hz'tµyÉI,&[]Ø6LV˃µ0তBüQ|ÆéÐu - èûdfD@b»)Ñ_2©­’“{­’R_B^¹«rW•´•J­–¬AZDŒw: -ò:¬˜Ê@Ô ;Z[ãV²ZK’(3Iq™RoþñiºÚ/;eÞ&º´§Ž1<^̱0lEl×!ÓžoáÙå–â¡—zŒÊÁr…]mL¤§ö0F†VÀþÕ›GtaŠö/Gã¡%’üXh"{¤Äû:jÀ_yëò"Úa—{LžL¨{‚X¨éy=|ɶi:Ë'ccwr…eÑëÒIßpì òü¸+½»î˜nÂÑ`ËÓIä|¡óÿª$èí- - ún§JµŠˆ‹êÅ;†¥ÂÁðá$ý&j€B<äŸÙÀ¥= É;Õ×å èƒTʇR|5%Ëæc]9=*~ÒÔûÝÎôý˜÷¹Â„½Ó›ÿ ‡<}ÒhÍ_ 9Œ³–!Ø ¢h§nÃM"NÕq9CÅÒYãÒÚþìC¥bIó… N§ïTRµã'm½ê…JìŒd -¶ƒÚpGoÛÊ [ƒf†ºGùÏ -°ŒïJ/‰Uz ¶ Ž.™º'ÞG3ù¤,6×ìp›y*´_Ùè¤ÄôO·5.Y¿Þ\bx†dä¦ä8êK©˜Ìí°«µ£«xòZ1óPØ3$Aò6\¯0ýÜùTk‘†ž5”Ìí’$Ùû첯çËq+vS꺟¸YZйd¼RŒwîLR½ž‰a닟p_ç.Ÿvü‘ (»Ô›Ì«ù¸Ö½íô¦3h`|Âtµ‡%pû½Ð9-°âkÕ•`Ö7 0’¬‡Ü1K3﬊ÆZŒ„gúSžª€²ÕÀØMKŸ~O$gèª&ŽÌϸ'W¼×ðiNžäá„kÜ~ÊYRK -Éd#Ì…zL& +ìú¯Px-¦³LÓ¬_9m™¥ -VÛ·c2쳟jÖá3S¨­‘L?ã!fMîh+ä(>]öâ†Öµ¶2FcH(ÁO],NbÅBsè‹dÙOÿîË‚(3„ ’õ†lï§€õ"UØ!J¾ ÙG$‹ xPŸè•[¨`¨_Ño/&åØF°Ö^‹øžŠPÊB¾)d;n™Æª2Y1Mmp‚ÕÔ“ M¢š¯š¨–Æ×ÍÞ…Wt·üƒ¥•Ö1’¡YfidtG…aTBŠy{xQAwv`_*7=ÈR~mÐá9 ,á“þPµ¿@+lÑ8ògÇWq Ì¡%GœaÓ’ŸäÀ÷–4úc2v”I¼5jäùÊ/»®ÉM³¤W_×· _%‹:3 *‡‚kÊðò{,çäb+íÅÛÊw%„“_~-£dP´Ú·QÐmúÌÕd¬2p‡1]Þ-f”.ÝaVp­áÆõ%Ù¼®$ˆ+Ýì£&n'™·Ó)Íp¿§w -%iºýw=LÇx®+e¸f*ñ[Ž) Œ4Q¢/(tô ¨øÐ®—Ó–btLbÌbI Ø(§ó ‘YóßÔœæL§Ù˜Ž0Ñ‘‘8GoZˆ¢ÙVlô°Ö§ƒ@‰=ä'h¢ƒp†`;\s¬"‘š¬ºf¨o1h¶ñâñ#`¸¸[ä»8ïuß­_¸é¾-ÍØmvª<·è¼Có=8¸G&Øbe‚CÐðˆyÿ­o-¹¯1'CbWHü Ä“XeÜjâƒkRý,<‹J#lV=_#Å.ßv‘иj?‘!4&v+–°—Ãa䣆#¶%‘ÐÈÄܨå˜% ._”$•+á—Ë_ýÕ"¹C…¶+ÝõÆåÓÏs¢F¯. f?Ó fM4æßpÏÆ9õæÒÿô(>ySó¼·¤Äïí2z4ù ifѼc;9A*À<šl‹å¯î™-U‰±ÎÝÄÜÔ§82‹|ÂsÎD&&Kˆ‘¼^Â7öÉaVúUà–ŠÃãøÆ~ÄýðqU‰®§æ™Õ4È=x[Fb86Èg|1X¯Ìâkª¸øücw Áú›£ÿ–RH¢ý¡ÃŒ°dìãI¥¹Õ‘·Ý”tÙƒ1nÜ/¯M"ÝK$x·–ñY _Ê& o„šÙo&±E:­—IFcµˆÈ¢î¾4¥B]«j¿Z8ÑH´ R{60䢖eÜ©ÎÊ"K!c -‹hE´&íU¦6«÷7ZaàKš=óš‚p m¦»•DÔ,<—¬×b¦kúwO3½IÍ ŸiÙ¼ôtL0üZxò%ŒÃôI ãn‡8à -7˜ù ±î”yf2åÑ‚Ä`;Bá¶ËŽW$ÊÀXeXÚè|²z•©nê÷ÒÈæAá0´ -ßAYgv¿:;,Þ¥Œ033ç ž•<â²5ç#·¬?Ê›¯Äù¾€å‘Q¤‡—‚WÏöÖ>EQ~ÜqbhØ€ŸÈ˜øÙ ‰Oˆ¬3tù“?`Òq˜·ZîàEÈDÙµÈèX ;ŒðR âôEFƒL·ƒíUM ãd*s¼U*Á…É|bÙipÍ+Žt—æÄ¬Î”Ïœ\Ú€Dv'­Ùˆ-)aûp¢.¢¬}vu #SÞðŽ~Ýi_¯wŽ‹aúªUðŒë]¸4vÓÕa^³çë\rpý ‘Øa%âP – cc³S¾­r¢ý'ÆÐ«Gʳ‚DBPâ -ÔÓRGÖ!“䓞ˆMWÀ0 ÝEÇ¿„& ª"Ãø‹,Ì‹þ•С.õ_èл|N\Ó,œ”±M×óÍb}• ÞŸ·þÝë¼w¦ YÆRòœ]r©\O2!váôE‚á êÿˆºûÒ•÷ÅýÒjaÖˆèèÚŸ&­wQpŒyd‚ż&<žI—9x|^F6ž'G€A-ðlE‡Ó -Z×&†–‰$¾4k,˜[Ë÷…&’º¥tšVg“¾¡ÿ¨F‘J=(ÑCSãØŠh•ôÎðª`¶•Ȥ{‘s ±ª0 Ä÷î³™Ÿ]/A1…!BÌÑý6„Ýà©é—í¿Š>;v$B(ö{=‡yö¢í¸•¨•NðYºOç_ÄË=¿8?„Ñ¥ZL´®åËeãîwS -t%S*Ù"—$’¥– ÊC_ÿ€á¥`Ä"î"x8knX? Ž³€ørKÄD@™L+6©!/…R_EgytÆ—н3ŸïóyyÔ=Õa®"ûþÈ´B¸€"K¾/Ù8.2+Ïø4]Ǹ=yN]²?*‰«ò¢ZºaJ™X ùÜ%褾–svIÍǰš“ޡД–â“+JòÕ‰ÆÍד -Ÿáeu¢öEŠ& mŠ9ëZá ¸²‡.ѰW:6²Ç¼D†iR>Á½·_•+&Q¡ßn43ÑUvc€»å» -5cMV×|S *À²,NßiŽòßmŽ•…6–ö)¡\Lüw©Ãpµ'¸É{ Nó‚çu~OÒtŠ\}Øø>X•îëDgWj·ÒDU(YU$ðAý hÛ×IÿÚß3Æ{Q ®¾ñ-ÔGxè,ãÞŽ Š¥€^Wéòîb«'MãsÂÅ1¨ èðòøö©ÔîU*Å>þŽòö -®œÜƒø•!Ö¢ˆ%Þ÷¦~õq‡5\Ô°€ÚÄå˜ãܵaþ”¤Pµ5QÞôØ‚¹>›åËQ–±"”Å“¹8<b1çņaáÒÊàñ¦ö ^ëmr…=À ôtõ94ÆÖÞ¸ú!ë½¹ï¸9öÉM\ÒëÙkd3« ã„¥ 4¯ÉÝ ¿dsˆLp¬Ö²˜êö˜ò[eìe`} ûj¨˜+ïN[ȇöÍå;ÚÀj²‡‰^UêGñØ;\×ß@¢œÆÊ²¤øh:L”ˆ…X–ò¨PTä JZʰŠ^˜‰&ô|¶ËzÒ«œÿÅãD }§fàWGã ûò(­ã—;ã]ÊvI»/…y~êÈ?ÉrÕã/šé!^QBKޤH-¶&áï*è\ÑH"Vú1sîþ… -¹‡$ ]ðÌF"žI4`ÈvÉ'¥WŒ0$ÿ=8$÷\˜¾´îq6XcŸ„r”iëB–:bs©Ÿä åØ5†ú¤èWÃë鑹_ÁÂdé -LИ‰ŽŸAí kYëõ™ï^M(ÓŠz€rÑë¶ IAë™ˆŽ¤Ûí~¢ÐB$¯§ó ˆå ÈD?1¾±6pŠšµ°§Nˆ*¾¤ŸVQ³»÷üªÛ±”km„%‘^ù5Ùq+´Â§pqŠÓô0šE?KñŽ ¿»©ªÐ?}‡AŠ8œµqÔ2…¢nð$èªÐH1m ¹5”lKéËÆ·]xxhÊÕ™dÞQ ¼n.)dþ<ò—µV@Â}ìCƒà“@Aw7\J{Bª4®üÆç[žÈ;B -«Mì~Zëõ vØ´VëƒûR˜üþ‹3qN®‡eÔ/‰$öµ¬Ð¨åÁƒ¶–O!ØÈ[|àa.…ë(2ˆ_∑LL·˜Â&øU¦Ä“ j´Qñ3JØ|Ûk0K†iòøŸ¾þq×ìv­ žD29’M!(ûbgv×uVUÎþO!2‹t - Ë^(5Ìn ÆÜääÖžïÓø×c«½OJºÐŸ%(I·ôÒ¨q¢8Ê£¨«‹ ÷>m0æÃ–Û1•5jÖí·«©)"1`¦”ò‡­èþªU¸•1«Ô:Ë•fœµÜÓåú1Øïa~Ä»SÄ*¸ûWl豕Z¨ - 2˜àõ·ÿ…+ÈÙì×áØ`ŽÒÿRͻ۱‘²*àÎIŽ_ÒBzM…º“}w«˜(„Y¹ܦïWngÜT*õ>*$öj¸vˆRnJ¹GqͦíÀåUm×SWC—(Å¢Æà©üäTçE¢ší½›°4¹Ú ;¢å'3X¬Æß‘Ý+×õ-†5 WSxöRwÌOzÉ5IӛóRq³K¡RÊc×sb®Rþ=Õ'уu?A‰†D“±S¬¹ÃPVh$*#ÓÂMiJüÉ<®b{_zÿè…‹;; ò°n¾[o:¶Ô0‹ÎN"ƒŒ»úì~}Æ òÇ÷Ñèñ´ ˆœÿ’)´‘ÑʲrÀ2Àå: ì$ ̨{}4Tͺã¹ã­ïÕˆ1!>˜ß£Lpڑ岨ݧR~4›î¥hˆ7 { ξ9 ~š>w ¡¹HP%€I§Pg°J”[—Òâä*W]¼+]ÑŠçj"Âûˆ›N!®nœT¢^Å#=F’®‰ñRœTr>ôš^Ô•€+'¬›X4ýkbF»yz9±ð´ízM¿Ðàöš3í¸ñÙjM4·Ò…f¢zM1}mÆ(7 .½áC°ˆu”SÏôœæ`ª@0U -¬éA…‚£j%ÍiÔšE½]žáù!Þú‡²0v%dåÞex\Õž ÑSÍÆE?«,‚6Å[)ÞNìL,âÛÖÑåi~wÙ*j 6ù_Yç€vzƒYV¸õ"?¥Ê-þjKa]}ÏU”h]ª63ýZ*Z“Ìùç«Ý5¼”QZ¢s‹tèø,_ ž ‹3è䛣ÓÓ§ý8YæM×â_þñNÏ£nUÆÜèó^ªú{…qqL)C6}„îæ×ݵÿ¬ =gà„{i&ŒÍ¶×ÌU/ã&?t’ÉÌ÷Nµ˜ÙB›þÙÜño?}^\ª˜/¾óóÒV¢Õ€ÀLQ–1·íŠS­J›y&;T-àQÅ­é³_XÕ ^ŸÔ·rsssë_§z ½ÑѸ aØ•òq¦RQn2¢ uR -Ægw…ÜÑãék-ÍöèÀK÷ü2 ÷:AkS0‚Eë:ðŠSÁêíÛÇêÿ‘ýÖLªÊ`½,ßë+ŒÐŸ$6ŽÿGP¯#Ýîð¶<Þ‹ÑJéÒ™‘[£úË…j?@.¦ÑnúªnÆ&ÑÞ×ü!Í Û¸™sk°ÌŸí·§~对Í7¾Þk›Dòî$çyÀMˆ{ãNyÇCŽuþ¹îŠàh+aò§KŽwìÓ¼¢Zïá’!Ÿ‚O?ÆA*¤\ÀZ(U9<ýL]é™W6—èõ½˜ÇÒ“÷¶¯ºmä°ôQwƒ%Tg)™þE$¸õm9X@hjŸL]áç5:0CÑ_Ô½±>uÁÁDÞ£ÝH¿@fý*‘! -@b2ìTY Ôˆ(s±Z£¢YíM«À'¼É­[(sgiee*žœ¼´º'VŒòmî@Æ}çyc*èŒkYlý%£Ïõ"ªbÀ˜S: 7q 4 $`ü?âLs)(»®âçñÔ–À¢6üT˜²M»C'"Y[ý—0&‰ôC8Ÿ}Û‘/ºƒÙ5â:éÎ3b0 ~íÛ2êNNˆ­rA$c]ÊôÈá¸'öÞ¦#Luržmoð%™ ¢Ç/Ò(Ñ~’ô…_KÜ…r¡ÕbùüCr+PU§¦vÉÉ+v „CtšÀiò3I .$•^¨K0„Êqa0ù€Žlk¬•Ñ7“(¸m®žmtØË ^‰½úHT.Æð‘¦êæQ¢RÇÅêušÒz”$à„½:ùʧ*xhbÊÛ¶7å-­{Å·‹­¤g:/w9içèʹªzÅt…U%ž~.7Q7uñÁÖwaZ%ni5ŠÂowƒ¸R§yÏl„‹Nn[j’깉SNìÆÊÁaUhîÕ¸)a沉uqÃ]õa(p)½&'Ç‘¥‰ µÓ-ŸÇðæž…QûÉY,¯ ‘ÀòÅ2.–G£Gx¬½¤RVì[Æ0F;9$šÔ}è’X¢`ñ’-=ióë)ËÐuäè$WVßõEõë8`DÜæq8ó*ˆ„—saõG‚ÑÒTdE<Ä‘ûÂ*œ\mì wOÄÊY6U×W\²%?îÈlµ÷_³$â}!Ûñ…´BDó ÊP‘^†½Ó£hÑH_ëÊk§™³éÞ±±—pÃ=Ÿ¹£ð Þá›9ôÌ—-ްè; ÊÆQö¢x^^º0À€¸œlDÍ«¥Pvà,oB‰›î? !•ú‘îoÙ_nñò†ž•7ô† æz]x6пl(2‚ŒVlȹ Äa7ÈNº<ªj*`ô'÷_åY*ÓŠàj•AÞB -ãø;ÓÝÀààšÁ‚…‘ié ·bÓùN‡~íZe³,ð`½›+„„õp6…ÚQØ]º ¥|ÆsÐi¶žÔ„¦×-ÿե鎋°­2Ñ wb}"‘ ŠOŠÊLGÀt´‰F%¸j½ aâQ@Nƒˆ‘‚Añ-<¹ÿõ&Ä#ŽI”vãw`zµ^îá.ˆ@£fìd·­dö9Èé~@ ¤Lƒƒ;Á<9 (T#Ø»ð)½·ýÁºD¹f£Y9¹¥€ÇǤxVܬ…Ü-õÆ¢¨‚'×§X'蔡Áàu.ù±¿¨f+×/XS>sFÁ[Åj¥­IAi Ä”l·¹>¸Ìì+¡Cs½ I@šÜJWºGI…O«œ8.Lt÷‘Ø&d˜8Ù¸¶JÁ3dHunaVvqïáâEŽN}¹ª<ïãþçy•²Äó— -ñ`xW’UnÑ#@5+ØSFM‚…ªÙX’îo¢‘z©T ÏL5ßqŸ·:c°”i¹¡Eˆ<Çqœò›¤K =ÏúõŠò°WñoŸš=Îh…† .®…5µ›è"ž‹Ð°?ÆRýží`,©vêGYS·ãMˆáüð‰¯ÌÉ0¿¬_²l‚Ó Ž"ºïø‰ñï }!P á2¤ø!H(à ”/LhØ=–ífUÜF û(T_ö&/_Óý^·NªÌ:A÷ø÷óTçïômÙ‘s¤í¡.Ȥ¶¸ÛtÁ *Á@:~þŒ5.pJ¢¦°žfß÷‡”rôáj\0iµ^PÜaŸÎ Öé„ĵO©6ÀI|wÕh¢S±>Y‚Ñ͆L¼÷¤[ÑÖcâå–Zj -ú¿‹?®îôÖ´ç:Àv”Ï&)а8W₳ è9Ë Þ—œ¤´Ô‚0¦®‘ÿR§ ã·;{~&Pý -%®óÄ| écèVá‡V_ÒôÖ÷âêBú¬2*-{ކ”LÕnE“´Ü9Ñ{½§q‡ÎJ¡‚Ev‹ $bm`¡k2ï8“€‰ú ˜2(^[‰z%odp]´%y­ø'ÕbeH»Oßs'<’Ôàë›a)ð& ð}L¸bzXæ¾ç¬ÿy(b>L·Fã1× °Ô³÷Y!wR— Ø[ÿãçÖU—öÚ:´8‡­Ãa…7Ò´ÕÞÍË ,Í µÜàW‚Ñ­m÷T¢'ò„h c—‡u~|Àþ+K±Ö€¯ÿ»}7nìd 2ŸZ|ºä4üÿ'8ÜI}Úå}FoRÕðpòÞñ'~BßÔ“Wx¢#ZòêkHÕŒÖãyºVò|¿·Ý׌Q a âÆ§ƒd0Ýh5=_TÈ.ê{]T=õ󀘎Ε« JÉWÞ‹I§fs·Eð¯û6•™M; ÎÔ—í»bÑÅ·ŸšÅœØNäf©Lö§˜§Ë`tK -‚iÂhfˆÔ¬å•ÝiëªF¡µ.O)Áà -÷(>Ðs”×xN‚Yë±A'Oö|¨‡ŸÒË꼌X@ÀNñ–²{û­œáòiU,]\5†–¯}1DõTQÕŒÎÂ9 -2­õþ¹¾IB¦wð %$n0'÷Y\ƒQs]ÿ`´ò`+%\@‰¤ÛR`9´ ‚ÍbsÿdC£3wÒ¬ÍU~«ö™r99ѯ’Ñ0Õ 4¡/Ñ0´8Ô:æß” Á’³˜ý8W/Ûoì± «ƒ…³úÓ ªqŠIñA~¡`¦=J^øo0\ùY“ hm6Óˆ¥{OŒ¿ÅD-• á`!¬)c-»-m’©q2§ÍFT_¨ŸCøÛ<ÙÇÙˆ…ÓZ–’ŸæºZ3 -Œåvð‹õrUÛ -¥VËÜo* P>â‚I”4¡±ÀÖ dÏ‹šuž‰8Ù&CÌåhÎ0fn'gJ«~º™@M¶Q6މhÕaŒt(JˆCŒ’J ]g× qU–͈ݵï›.Ó½¸ìÒBŽ&ÞG„""œÌ:"›@ׂծÖÛIí¶Ò‘\Fy©xÂÞδ}R –¤ìmïÊoOÈ#/!Û¥´½ÆEÎF|†4¸+­j5•ÙËà6¯QÙxàÁ©d(b|Ò´Dqµ¬ÈÅéñflF~IÆEÉsFŒs [¨¥Ïš"7 %^ÜÎjýÍ%ÁrvIiÄ·!g>Gâs=¡ó–$„!¼Ù§èXçqtj¹‡m”Ÿ*§rF}g ¹­7s -ebËëB5IÀÌÜÏ:EäÉÒèÍÚ×ÖÝG×¶A0B|3%C„Þ6œJè%-Ýt¦ž›ü=f¤‹s´¼%j€ñ”­£·•ÅiN Ò„v’¹¡N¼¯)è©‘ùܬ0œp¢YÅG•ysÐ[ä6r¸,ËðM½ˆ8ÛB›yL:”.ží|,†¾i42Æ;©OiÛ2qQ™´Ë'¼$.äîePvÉ©]‚dì}^Ñ©‰]®a¨­C»+ut‡ €oãF+œÑ¹ž -^2w1ྴCŒ‰î?$Žæ}¾’h‹t墈÷eaçÃZ¹fò…?û(8PÀl5“d¯¢Û}j”«‡|ëQ3»Jô5jjaÁ÷bŠH:°:Ö@*Â! ¿‰€ŠÂwÁx‰¬¥TŸ%m¼'Ž6Þ©–¢â—fhYÕ"´|ÊT hØq§õÝ_ä瓆šÃ -Œ$²ëldÉÀ4€Ç^żSpW˜T®s|Ë̃'cqŒÅ -Y >n˜6fÝ#°¯¯t¯\ûL}‘ê‰]õœ'5’`>Ñ«¢ž,QXi—¾b¥«g¯¡~a¡W6µ (¸Ž^1£SÓ”bNØc¿„ËÃ4úfƒƒ}nz ¥!jƒ•¦Ëì >|+èö‰ ¤Å]¤µÏ,E­#X- q›Þî ’?C0 V÷7¿ryN^‡i,°4d%Ý&9€–>YÄîJ  è7‹†ž†SsÐsx¹¿ýœ9Óˆ@ fŸ.r -³ÞtrŸa1ÖcFæh™.ˆ2왆eþd7  ?“m?Ó$5K•€ñ@æèý "ùÇÒž”Î!ûNP¯7¼Š½±%›Þ[æîKñ­ãjÞ£?üX?iär Ô‹oE °<4HeØâݘ¢ƒTçµÝ“q0OÜ4"Œ=WÙá’ŒŽ_D8/Ü~L&ÅÓ:ÉÙjäùÖ>Cý[‚!‚"G™×ïˆÜçüŽØ)2ŸJ- ‡³»5·ÐKi& AÄIšTUº#Ò^¤ÑË£+aVù2*ïtTû”$çÉ¡$÷Ù]R†Ç]ú°±›†4bT³dU·òaª÷ÄØQ ø½ôºôÇõR‰Ê厶Zn &¼l"|&Ãý·£Ã5@DÚé& h!(Îùü-ÃnsZ4”g÷L KiŠ&"…:À 4ŠŒ¬£á¨\‚ÌÇ?d ´;á£qÔí¨ñGÐ0‹â¬ÐË•F~9k;ÛTèY’ƒ»èz( o±´â: ‘ûˆÅÊxlNs ,F.àfÀÚI41e:ƒ2ª¹.åÞ@eØ žÛ+;äÑ8¨½à·3:#7¡¡õkÆ8Éå§Qñ8iðøäË -ªE -¸`E'.)Ø-)!B‚¥‡Ô®6þ pN:€º@§?ù;n¸2Îɰ3w†òQ?‡µÞ„å›/¹èWމL)CBà"~0ÃP`¸J$k_{G‹M®Á¦íO}ÍÔÇ ®]¦ Uªn?§_Ƨú.3Ì$ˆOìûƒTµrvô͆oß”EB|ƒ%ñÀKJ°BŠ¢ª~UÆ©«AñQ`–+ÀÁã(hc¶kÞ{ó…Kæø(ÈbñsfÑlZ 7[€:•êC6o­8Œ#/Ü”ByŒ×Iñ÷2rFªþ©™X·Íâ~»2¨Tc -.ä`éšµÀ(\ÕkáàÁ -«¸œ‰ˆûë"Z±;vÒòÒ˪÷p)ñ™Ày1¿[™ÚýB(µf! MaëížËn"<,© ³É[m_-µ8ãZ’”Ãè#S³ûß#fnÎCBëª*vÝ[fF¬Þå¤lÑÝ‹pT•ÐO/õl÷óϱ\ÂC4šC8ˆ@•ÃVCÙóEm¹šln4”¸†IÙªHÐ)ÇV®^*µ€ZÿÏÝP›×gùÊç)¦ë[8ÂvÔ¯àÈU° eVP£ò@€ÜaB .Ek#™sà:umƒ´óïÅÖ«f÷”´‡¬~ÓCÿ¯w5µžü8(9p9&mÃC•cJŪPê¶5(º Ô9âpÒÖ[Ò=Z×Dm²æé¬=ÔÛÜ “P,.&‰éÀÇÚÉú’'¤Ñ ,¯œVȯ¥£¹£ ÂOÔä$y¯;'­=qÓ(,[ðˆEU,dȉIèV˜z©…LnV¥.ËK²ž -Ã=$×µ,OâJLKá˜ÄY•÷×ï«K¢m϶ŽÁ®ïÇ‚««Ñe¡ÌócQõø±BO¬7$¥—TƒÈÿì@¡•?Øœù‹ÑúÄnqtþZ1ä[±×Š¢pJm—Ñ]d7mÅElŸºÖÔ„Dظ_òr+Ò0ÜŠa¦ÛŠõ»@W¢0P!š˜9˜mÔ‡¸íñþ(¤L܃¶ðSç`·¼Çñ -ÏÓáðEžÀW‹c£LJ;At™C<,ÆúÂ.ĨÃ/o_|ä~]­ƒI†W-ý!,B¬*8öº (ã°Ú°zAoN¬üm:#€ »Äw)Ç®¯'N¨„,¤F$Ìc^(4[芢àJíÆ‹{¤~å<¨ áL–Â3¿‹>ÁyRûxŸÜ£þŽW°;ò¿6o"Š¥êËÿoÜ´Û ÍÏàx‰ýë ya‘¢ŠP N[‚ mÕ … ×'Aâ©uÞíÛ"|$°¸H¾p~{{MîZº dÉ«i¯n}s®‡g?­h\æw¹ ~€qyï vþþñâñõ“à§ÕïšÇ´UªŒ®Ôÿÿ%ÕÕ7›«D\ePA"ôùÐÍš¨Y'+õâ;šEûˆž¯òëc -üÎÕ óaßXaçä=É/LÓyÚ ð{󯀴àò½TKŠTâê€ô$:„ãIð¦‘À\Ë¡!°Õ•ºU"N(IÉŸéTS¬¶š=¢FB¬1§µPÍ{—Ÿž¸gÍTõnDöÛìøÒåÑà­¦jôK\'òl91 ‘¬Íe¨€ÃÇKgÕœ'MKÔËs†deå;b¦Æu=èÓØ{¬oµ©ìì8•z?5§“,_UºXre‘h¾¢™ŽpUÅ 7AkIÜ_Ô×#ïúM,õeâšå%f±’±EJNvš´›‚‡ØÂŸ  ¤q©~>¥M=Súý!}0jX7…c‘˜P€Vªõ)Èa &ØE«ŸSE -ÕûL0!qŒ1D»é–®W€4L{Sˆõ«:1˜ø aßúgí`*Á6¸•sE¢î™jì#_Á鄆e®+‹ÁU®Ûß?ÉL²=”C¡ˆ “‹â^dÐÒ›jmƒ”KÛø PWEªÖQ=r?1ôÁÆ)Á¼€ÄòcAo`œèšö Z¨‡Ü” Äÿ¦ ð½ëo<Ýë— ÿÞ`N2ÿxWìaÍX|}Âñ7ìÝiêgž ¢äYl ß¼¼¸ûÞ10.|í½CÅýc•ý@¶ã×ËH1î -+ZYmᤠÒ@š›‘îûÓÈY -bXJåoL1IZê!‡.Dú× ØbâRêüëÓN;Äd2Ñm„abÉ¢ƒŽ±2µôù.çí‘ÄÄ´ù, `Ae…’ÜÑéZ- -kéæ•˜¤N‹u9V³KŠXF -v`ÂUv¹ß±7¸œ -sQm1¢bþWp 3l܈-¤‚[§Äfø­ÄàFXñ[æ=ÀŒ®¥sÊD†f“tè~Ç[ËjC{Št§ÙýMm¬™Ô¯¯Û’¤½‰OFèÍ©Ê/¹Ôâ¬Íž s@üð]çWMÃ}ª|¹·Xïjkâ^ý™WÆRm&K8Øë{j\If#ª÷Mûw(µúæØ±áεъB]3×ÔvÏI}Ÿ3ÂGb$fË£Þ €44(fìÂr]ŒdF¹Û,Gš0w —éñ˜ Iá0]pIxgzdüîʦÏt™­Eê@“5¿EXˆÏÆÏ)Ýù õ²ˆ81¼ÉbÛʪèçœß˜Æˆ¹4?-ggTJ·¬1{Ôʺ¾–ˆÜ*|àÔ?(XJt_,k‘êÖ¿†‰v»èÕ€8 ë´´ƒÂEgdœž¦=\ûAȉði¶¢õßÒ8¾ÚmïQ{«¾,ðxï6JÂGEÍ÷GtÎBZˆ|—ŽH¹÷ÛЂMÒŽ} BXñÊc ”yï™"eâÞQcçþM¬dW]D? ÂO•¡çˆ0#¼4„ðî‚aðõGKq¸ ¤½*ÙŠ\ò›ÇÒш€¨uÑúÄi¯ÓüJÄ6MS˜¦ˆÝ©¬Ø4A¼ ö×g¿k4 ü»OŒ@¦âÅ4;{…ŒøÊ]UajCRˆDS›…ãnñ¿*/r²íù§dÚVʸJ9¢¤Í>ë+dÇŸœÂ(Þ+ŽºƒÀZÆg$—5ÆöCq`©w+½b6ÉÑÂá r_š‘cØOë—+%þC¤mä@”ë7í¢9z^©‰ÄÎòÜh`<œÄ¯#¸˜m‡‡Å™dDq~ˆry£¸µK_Ç€cà¾!lÃv· cÉÏõñet'y¢€f«Š0£>‹ùÀ'’Šç#\î|¼ -¢gÍ.+e3Ÿ$ ¥°rçÂÍ[f¢7Υʥ-:H¯“ÿ³øi1ŸppóäK‰ñydÜì‡MÒLBôÅW#"¸œ×\R¿e' _t‰úôOYÝB}z‚¸“Ç ÷áS—úS¨tjùí*7R$˜й…hÛ1ˆ#´TE ðyD¿ê)yü úˆD >³ÿì¡âô¸Iž0›÷†§wŽswJž:BLG‡ûšã—œ0?ŠS¢?ÚÞ„²¹¡‚µ±9”¤îÝpœ¢¯T$úd¡l$&U}11CèÒ*­_žû%Òº7° £LŠ7C‘AM]ù¨TdµC¶[ï«>îØYý–êœÈò;n:¢ Æk\úµ¡}àžšIò] -¬õ0æYê§1 v溥TIün‹åeŠ˜é¿RïI•Ú• -–m÷'*¬’ ½õxÏ+—a"­+†]òrIZÅ]IB ÇÉfI°‚ß -±)X6W¦h¦— -åý¿~,>$ìýÁËܹ/«!&áŠ)ÊËáxÅäöoeàp,-q ¼³“ò_™”±Rfƒá2¸=vIhÖ”Dô9s’¿+%æÄ̦-Si”B\M†ýƒîÞªˆÄ×ÉHkžo(ÈñÝÜ¡á|2‚bv< øÐšq»¬¿Ô pê}H”¥î@Nº€!|*Òí«¿x’¨º -”ˆ† ÞŠ+^6»`¹L¡ÐRûµ² … ¼/‰M$QЭ®H:È`PÉõÊo\²Ì%|p4·{I³º{ð9^çpàpyTDõžm±"µ_5·ýõ‚‚8Åöñ‚8[Ú‚Yë3–ƒN(þ1Þ’¼È¦Ü¼ót‰¢Š«k=³Ž©‚-fÞí¹=í¹d½bfaÎ&$$ÐŒvßÕýî»l§–ý¼Âö¹FÛçmŸë¬Å%¸}¬%°¤9a>[‹ÛZÜšœÇì“V"Á$˜Q.ûÀ¶Ïµ`EpûXÃUÃ#MN¤N85Îé‘&Hp@ê„Sã$@ê„óH“óþ¨“Mj{(n›¿‘mŠìûªâäüs#[tªâÜôØCqÂl”éî‹£ß^“{r»¯ïºîxšß—ÞÃöv2Íœ1)LmŒWL -“ÂxN˜IqyB_—¿˜ R?HÆÓmñ¹˜jµ"~ÙâãÅT·š“x::áiÝÈOÿB“éF’ê[9žK=æùWŒÖÄŠKH N9lL‡â"§Ö8S®MÅ*È9S$d*ÓB4RÌ ,­ÑŸï‹Ä.1šd婊ói©FŽQ‰Ü¨¥9Qª4r ¡ËÈ}GäT¤ƒäÞØÊ9läŠÈÝŽ÷,1)uü$¸£MRt3+ÞAû¸˜—µÜ‹9+¡~ÅÆ@Š:¾iÏqÆß¿…åU™îí¹»Øb–¬+-Y—/Y—w@Ľd]dɺ| ª%¨Ö*†U­U—'ÄðûòrÂ\N˜Ï~._‹kqÜ–FÛçmŸ«›„TÄ/B*âgcöI+µ´RK+µ$XŒÙ´c6íEšáfYp\´ü×áÝŸ¡J¦Ï3TÉ´—}ÚU‹`\®\ÏògÁñ÷hrndÔöPœó'›f)UÅ©àüÉæÜÈÊGa†P£aÐÜšûNlÕ^oZÇ^o¯š‰Ú•»îËt_î*e®ÌŸ2Wfã`°%r¿ -Œ•;V©›!MÎ9U@_’‚ÅœM9&a2X9a>™X¹þsTÄÿÛNþ%)Ö}ƒG¦¯Y¹¡Ì¸ÖV÷T°˜¢Hò™d©“ÿx9aþ˜X¹¾ ÍÝËÊEËËã;{Ä*!Sqᆟ£˜š)Ñd1¯i£ ³Ê¨Rã4`ì -² UXUBbxRÅŽ„£ÁâÉ0`¬+LÑÇé°œ¥'払ëGMÜ}X*Bs6šœð§{»e£Ì?ûЧ{–|fù~º¿‘šO÷cZ?g?[v½Ij;O+â÷ž¶÷·%35…ù)NQA°åÃÄÊõ¡ÚZj¥Éù®ÝK^eë“ÆÙcǯѸ`ææ.rV3?~Ž)Te`ÍìzTB§b¿4YÅkÒ‡-ÆÂÜ*É…¾$ ªÜMWÎmŸ+tÓ•‹4¨’ißKÐû[öPœeëÞVJW¾¾^ãwtLL¦æ^E¥Êtÿ»¼ÀB>+~Å…†õM²:lr÷uÂ&r.ܹÖY!¹‰ã¢àJBâÜæë$G¡„#×w‰­œ+}äP„HÈ-|GSúPø²P±­‹‹¹°hz"D±>… …æÍñdÎÑ•É* Ó+áŒÕ×á´Oºò­ðÞh”©p³NºòZoÜÆÄªk‹k5$n/Xj÷R¥O4Ô”€ÝBÆäò-x*8ÅY׋»¡²ÁQÈæé,¼Â…8R²ºÙgK>q›—R½¿ºy5«òP½ -GêmÿûWÿ‹N¢¨Â ‚ã¯ifþ/Z§{• ˆb Šw@ÈJœ…¿üC×Q 5Gj2á'ÌÇœh÷ƒ¥ :Z¿OfÄIÖfÔ9TÑêCÍE¦×3Å:R(%>ô'ƒ Ó³:ÜÇX?´—ÈÁ!‰ËRKئ[½ÕšÍ®¨Š]$B]‡©ÈÊ{!qåg¤FåáòFyÑò—y’à½B±©•¼mö•|kf yËD%òéùÒ;ž¥`z½ÉÒx}è6¶ÞE¡2ž‚ydüYCÀøÆ!qJ-Y¹Em€ðŽH59ˆ&r¯~Ú˜yœw@€1Š´ZL —`IÀ°-7«Œµ¥sÍTf¦¦p1Ýò£p-­Ó¿ÐIcÚ`º2Ï•ÆF1ul” 12pQqU¦{}Kôuù˜Ç%\«`o&ùLT]U¨º|xÎ  ‹#¨º|§“;Üéä´û.Û©µ`±û.ÞýZ\‹kq-îâæ³,ïÚªÄV¬[j¬¼sÒ•—ŸÄ±­÷ÊA΂u»›®\¡Lµ¿´='ŦY| >­ -÷s5ížF9a>šv_Ú‹O·`§x î´OøÍ: Tºò”·ß°U‹óáuV™NG–53¥;õ”áîÞ’|&«õå»{òÛïSw÷,ø^” Y̳uVª“K™óÙZß9ó¦ëž ÅÐÖ)ÏÝÓLÍc5Só7Í݇šwþÞáá¹wÒLzf•ㄪ!4Íчãî[š‹w@Œè’ic²³NþÕ'"‰•óQºò3&êôÓôIŸî6ØÒ=ŸîkO'ÇkÚ¨c–,t }Â|1óé^%R>Ýß8Òäü¡¶ûƒ2Ãl1ÅqÑò¥¦M±­w@ˆ’ö{*/ˆâDÑÉaÉ º–%ë»ïÝ4fÓ û¹éJª`‹™Æ’ï$SÈ)å¦}閬ˡgäÜ’Å9ÒAr - ÉÁl³®íwtÓ•wšÇ‘sÎ;œóïðç«*N±£ù±Å;¼{ï€EQS¶ :]>ð) ÃSüÍbt]\v8艳˜:Aðóˆ/îxXÿfÆ<“ó÷ˆÄЕ(Nh©½ây&ò­aévÙ—‡1B’Ž®NJâñž%Ì©2Ý/L6Êq÷,¹›w@´h'ÿ“)¶Ô˜NãàŽötß=Èru«[¼‹‰69ŒÁÝûWªý íé¾a‘…æ§Ê¤"“æÌÐÒOL²Íº¾Ch÷²XÂmL……í3ßj–öVèt]W®€¾.Î’…NRÒîm êò¨¨“ÿ×H»¤"~ð§§žX¹Þ>¥+9íÊËqÑò¶RÊ7üCU¦Ë6雨 ØVHñÈL$éƒ{>òí²éX0“šÝ)›ÈÝ)4}ð‹xwJÉfIÀ &m¡~ÎFryð£BZý -Õ ËéÖöû'0iü5Ñ÷¡(l;sRRŒoÅ.¼…Å jWž¢Ò•'<Ì© ð$BÙžëÒàÊ[ÌóuóÍ óË„X©ˆ¿L¬\ßMwä5 ¸e@1‘ 雽ÔE$Dƃñ<Ï; è—\«€³èšvÛtý: _r¾å:²ý: jºaA®GôKþxï‘«<•Ç@TPÓ ­™ìª*l–ÿ×ô=£Ùò?¾ã~ÍèWUéÙ«ª rEÄë@©ÿ„,e8¤!t¦ÓÔ| §'ÏVÃA¦ÿ£¤Éz°H׌>ÎJ{–ŒÒÞ%;~&].ùA~º’ŒÓ?ȹÕrÌŽ« =  €4Àp@ ÍñÊa.USÅ·|ºa…zþÐâY‰k€O7=}bÚ)fÅ×Ëâ®þ¬ÜŒ9ÍÆN" «>‰Ôésƒµ+GÍm­já“£JÇo0Ù¶Þ -)šj)°á¬3ŸµIô1æ@S²R(A_ƒw÷6Ѹr¿ör=a>wÇ•“ë óM„qåá'BÝ…{Ù&ÆÁø #ªH+¬O/šDêº]P¯§íº¤ã¢ǯ´ne~(—”b“^¡.š*gÍiL»›¨-í»ˆèòŽ’l¶òJê†2½5RV”¨®(÷{¼gù(Yœ;f$·6,„\jÑIœÛÄÖN&ANèÀ· JT¼<™“·çýÉ<¾‘Ç_×Tï¯mï¬yR¡^« ´ŸƒJ˜•XÒ}™Ê£Ãµ -9Ô§À¹Jƹ4#9™+KÍ?¼W*¥ÓjlØ,ÇßBÌo"2J±Ph^¾*'hÆ‹SÄi8—„·Ã17KM_¢w@„j -XÏTféÍÌJ+z…zÇ£J) Ý´q»É¾óS 5P*\¦Ñt¡µf$È1k*\ê¥æÿ2\Ðß6Ì´@‹Ò•{^ ʰYZNºò gN½‹°¨Ô5öá$Whf@M㊅²1‰–«2?6&HDV F*0Çâ`@‰sA T,Ñ7Z!Q)(Hü:µ2:¤Ÿ¸ðæ £Ý§›Ž‘íN€õÚ(LiýÚŒŸ§v­ßðeŒQ -œìgzVè2—‰Ü»Ë6£³'Â!íÈEÕX…òï¶vѦ+º¾4¡]p×$mšíEA§ S-8êB^ÊK=­è\ïY×­­²¡„™¦MÞlxÑà£: hèžíÊÏH]uD‘{Þ>iéî#gèPWî"6šÎ'çsÕƇî(ˆÐ¬sûè‡F—0Bä5é>˜LОèvßœä=t=a”n€²å[nÍá€Þ9‚ŽmZ7Ìq€îú±sÎQnÜÜH§çV,=7Ýè¹I§óuËño«ÀÁñŽO5 ™÷-6ǸWI·›¾—ÑŽU¸¶qØð6ôæÌWôœA½À™CWjg ¦Í‹ º´¨G=,lwvDÇ’Ôbÿ´Ê?Q£zf*Kê‰ÿzæô×&6—jÌz:=Ò4¨GOþfjß7»²¥]ÝꢓЃëîzåúèúªGº¿ztM³ÑçÎ~E/QÑw|N]À9ŸtW|‘¡UBœ—é—h˽_º¥Ñ«ý~.ƒûéTZ¹Ôqì3ºEt”ÐZ5cZvÄèÙ»•AqNßÖIqÐ÷xoAï× wââNךּl/Þ]YtÄû¯CÑ×KQïõ˜›ÑôÆ%ëTw¼¯¸[î¥ïp絓ÞóïXnÄèû{áâ]—Þ1‰" -ñN4ÁåIŸ"Þñá›ÜËÔ<%A¼/ÏHwÊÖêÞ䬪?ïDÈüb3²ÿnŠèÁi²h‘ÝtóƒS×Ô|tÄM¶Â"³eÀÐ/|׆Dôµu (Ñ@ôéudÁÉΞ -ðÛ\^”ðL\#uÒՕ˜®"‘š‘h÷¯$Ô‡hSÏ™$Ùó¦ v%z{""6˜ñÙ˜ûŠ¢u<çKÌ•…÷ͬ/ñ~x{ËA& ;U0Á4ÿ•¾h2Š¡ˆC›fœ:ü¿…Q‰Îш¦iüQkÛ_MÀnE†ú„‚?ME¬!\Ïaj3´è=B³[ª-‹zêc›~5Á#Ö™gÏñÙyM¸Žu¹¤@oƒ5T„ðPiÓ—H5WVxš¥-~ˆdM?\A8æ5N»37L<Á²)ZâÖÓÀ½që(RpA ¿è'aÚ#j 0Àá¬DÙ&C6º²ïõ††!sÛùh*ê4©ö«ÃÑy@è&ùÐlBpèÚ€7¶‹ûR\ÈÁtdO“Ôf.S>ÓIº«˜gsBRt+Û”Ž0òœË•e6?Òåà h">±O§¨ZzM÷ªÛT]tP&/=d½.ƒ@­> ¿4Ù|,#L»i £©"äw–{ºg¹H=£ÍÆæv²>¾ÍØ'}dÓ™Û>|]Înɨ +E?ŸÁplO)«;tvN«p‡—1¶={IœHÍýE‚háÈž€ï7AÃu8N§ÒÞýäûÕ§ ÖÞÉ^•ï«Î×Oì]+ßÅ|ê)A‘ï”lïÇèÁôúndï«ùÞ -G°bïñùž¶Óµ÷VIêù.!šd±w¡|¯g4Ï—PG³yöè¤ÏA¥x{‡AúùRa2õA¾Ãzºubïò|§1FITì8ß;Z¤Ù;ýXÿ¸òvOû3Rðì9¸‚¹A žò·(šµ Ù4ðr€eõ ±ò ‚÷L¸•ò‡ÐçîOdêBQ¡€[›^ y¯3kÍãYØ'#:Þ2)µÀÖkå$óŸË C4ø57áNaú’–‚RþÇ t½ c®G,ˆ®ú5Ë/t@re¾«R‡ÐýŒˆú²ª©„6€ oœ’Ŭ B´ƒ„âU ýB1F*­*åL7±:PöÞ)´²«Où¨ iÿ½’cüi(1ª|t@K°p¤ù‰ÇX`áÚ–-d"|=³1=­?“r—ª'r™õ Rˆã™ë8‰0kfkØÂ(‹Z“‰ž/ÒBYÆ%éÿ45øT/ÚppÚ½®ÃùûX9—ú^WŸŽÒዾqׯè%øË¢;NødWhÙùýVšãiXl¨w©µ3í£“;Ĩ(8é¾;#°/@6®ÇaT”j¢ˆÆÝX½ "'¢5Ô@jp¢†H­ž¦*õ,aelþ ü¥Çtdî0Æ”1ùáÈÔÿ³€) .¥œ\_¶p ´Çô¥õ|` pjAÑ `U -äs.*tÅ &io„¸€¬:¬MØYùJniˆ™Ta¡ pÏüØöy“i@/`FQðnKöYŠ%ä±/ #wv£“»MìïÿŸ¢éïw<ƳqB› úÑâ¼ñ´@¨y-½Õ@DŽY€:¯3@hVÜ$Ô›ïß1ð1äМџLK3Q—ñâæŸf°);%‹šBÔyëÓ´G–—Û8þO뉈²6ÄØDYô¢ö°®rk˜LÔµ:b3d,,S;r fÔ¶6/K42‹{»õ‘5íháø ô8ƒ~¥aE1Édþ“Ö2Ä@ ²Hõ -QMô¤a²V¢r›‰2¼{ÄæGÑXë*ÂÚpx‹õ^ÆÛÑCú`Ÿ”£ÚÌbE”º ð“ƒm¤«!'â<•?¹+‚Ñ™áŒC8 WÏŠ"!n"Õ𢰠ÄOî‘ᨪÉLVZ–¯‰öV~oMÌm•Eˆ¾ÂšéLmR›òÙ‘÷ùÂ Û -s‚Ðs±Ž  Š^b+•â=óçà”œ(æSÝ·ö ÆÖÖ_ÉùI– cÅKä‡P¬0jFái1›â\ ºÄ‚ÐÎJÿƒ^Tc)øyÅ„C¸P¦S¨€dŽ• x‘1&eŸs$.üHÒLì3„Œ ÜÐǶùJn÷1øä>É­~Ý/ AÃñÝLMŠü&ÄELDd-zF–§à¼f‹­~gñ‡î«K;ݹ;±{ƒÀ» -ÔðÅôJGµöDPÅv¢¹ßj ³£ëz÷TkÏä÷¸}ÁŽjÜþ$l[·ï™¡/ã¨ÉEKÝÒÒJ n¬ujR¹Ñ÷¹„"ÐO²³ÄUwí£¶¥N1Œ; ©Ò–mQK‚PT†‹šÜö‹ÔRNá§9¦Ü©ÿ|†3NíóƒÐ½‹¿K2‰@pí3C@’}Ã_§Ý2éÕè1³Oº£hPÐ1”MC—)o¸¬T ÝNj°šYŠë`z‹B“øÉ‰îlŒ¤XGò£Ú®£a {•ÔR ¼6D¦j4ÇSÜœ :Eˆd•¶J Þõ€€r%´ãSJ&RUÙ(J^•Æh?È/@j§,¦µÊôÏÅBÑåz±¾žÕG½¾¼š¢¿¸‡ƒÔC¿ªŸ¦(§œwø_ËcÑbÂÕ±gYiú@&.¶¬6ÈÆ»ŠmŽÚ({KMØåD­Q£1`ÿʲé¬ad¶Ê¿ —nºa†,T9ãhpØmŽBíª %·c­DÚD°µ±Â Ñòå©*)%zÞaG£~‘Éap(+a÷ˆ$–ÖÃ[NdÒªÿurø`J“áÉ·‚R -¡ÊAÑ“§ÙF¿-h‰ÐK --w§+ŠÚÝækÝå[²·“©›1:Xô˜(‘XülzQÃ61€I§¿•[@ú7Ò>Àï<œ®cþ4t¶©b‹nÀ„L/PÎÖOö©=óY»r³Ü…xk׬ˆãÕ@7X3/Ö*¬¤$Û› ¢ ÒïAÂñœùg”?tÕëªsŸÁ£>•bU¤:¶ìÚ”Ñx/Ž£i¼C¯¡!b‚ÕšÝu‡¦³¤Â=âw³,KÊZ›ñ ƒ=yIyƒ‰‹ÐÓ8Á’Bë(d”Ÿå,©Å&½è€—EÔ°žo*{0ð{nâå—TwÖo´ ²ØXbq'63]Ð4¼õv\Jq“K¤Ô°x‹ý¢¾çÇýñúsÇßZÛb!{铽Ü÷Ê6_~ §€ÃÿëUŸÐ¨PœQáÜg´CàWæ•Ú‚”Ç€^3Í&KÚ5Û«¾5³éˆ,zý¡©+#* ÎNò”7 6w’Ñ7\½#…©>/¡wûvú„ažOk-.Ã@°˜"Rx¹Ø2Wú>þNÕ¦k.ÛP!)ĸ|, }ù{w€8âT¯qÙ ‚†òV]$bª AbW}fêÚʈ18ND †Ãl6²ïcã‚ÉûikX"Ûd[áÃÛdà5KÜk¥tjçî܃¸áÒØ&WÞe-Áojöi“K¼2u7™Ð‹ Êp°²\”¸N~1Š?Ò»ÉOÍÂN4–ÉR8XHòMj'! VŸÛÒ?Ý"«ï“£"9bmLŠlL`Ç…õˆ½|&LÁÇïØJ˜`Œ¯à%)ƒõiR^8Cx>?&‰?]ã?uºÐ¤úZÔOðÊða; r[•'ñ‹IqñŸë5Ĥh·"—@“òl‹HtkO¯&·e·Ô_0Šqú¼2÷y‚Ž}°æ³I1&qµ¥Öæ\ìøMbÍ+Èêa²{ˆ­ì2çx›ÿ„›~‰%/¤Gi¥3•‚)Ä'a‡-Ï_m¸©./¶‰‰Ôhm×s¢p#ƒH©ÙÕ–Ë fùœÐ<3¼ ÎBð61ñ"ûåUÅת\½’˜+¯#MWlm—¬I ·9xÂùË+ÂJ%¬A…è¾ÇYjÕÊýê–v!ÉL÷Ìœ¹Öt USZzAω´XÔ ~ à+ŒÁzñ[CëQ✢0wÁ”-å:¬\ùž@žlS=·þ?H HÉJ{Aò£phñÑ ½÷gÉ¡0øOm6ľyøˆø@B.ã¹rÌb#x‡(A°.Ýo -[ñ¶<ûѾßw^úVŠ0J7QîǃTƒ}s1'Ý·X5 -Ë%nu±æ/Ž~p£YØÕ8ãÏnu˜ë6¯ìÞ Ž•›9©ålRq>Ê>]ß¹QAª]&«‚¶$T§KÀ&KeÉÊãÊE#R>r„¨2CHÉ>¯¾YA-0ëš°ÔP `»ø¼¸åšk]°ÿÂîõ0!£æ¹»ÈF险‰X©á1»˜åMØoË`yñÆþI^Sé^* òõ/ÅýRÄT$‡Q»šnû„´ZAw^Wõ'åÀÇÑ´ÂrÒ³RqDPóȯÖm®û~OXH3Q1œÑR[.Qt}ì5k¶€(ä%˜Fäúíaº¡žvëBp¼ôP”Qýþv`šQy¢z¡JW‹pñ—ñ@9Hj·G¬$8Ô >ý:л-Z€QrHZ½fÚt¤®Ž¸sð`zä4ò’:Œ1«[#ãȱN4½l€S­‰¨-<õwý6NóIœ7HNæh a]rxÀHC¿ä°D9X…‡XšO.Ž_ÏDÇk3¸‡# qi‘ñà›²ÒÃ’!*TiD€B‰»ÖEÔCÜɪñÏ+¹-!Η™Î« -!^g€¢2‡øÚ'œb ^n|ˆkí#Þ'ÄŽ&Õ2Î Ê2QóUˆ&Uxa€R”fÍá"©ÆN€˜pÅyÃf+˜Ð¥Üï‚øýÞVçÕ"SÛ¢¥|Ï#óGòò$$sá òw>-N¹€CàYXî6O„0@ïµÅ÷FèPµ£üÙ@áä¥% Ù,¥2Ú4íRaÒÅ\ìGQVZ¼ÒT³Ôo }¬JEC9(ë“%9I™>ÆÈ¥O»Kø×¼fÒi²ÜÈÖvˆUx{Ì¿1î}»¨–b ²Ë+ ×áPÉÜ® ¨d†óÝ`bì§TÖÍ÷—b-¨lçÎû -2£×*% ñº ×wPº&Šgí­bÿ!hí>Ïœs¡ldQAƒ¡ˆ`^ó· Œí xQˆÏÆ6aÀED‚rÉ[çËŽ2 ¥²½£-O»´þÜÁIDø'>rò"×J†mŽ$àðÙgU­Tø :‡è 2qD5WÅ «€ù rÔM÷Mr>Qcà”V -ÅH>,ï¬',8Іæ›ÚgÎà˜ís?ŽÆ©¼é >j3jðojv/@Ù¢3¸K÷¢”8í¹ÙNo’– —¥¿ %–èÊ”i¨ª{ÚDÐVÎàkU˜D©?yCQ¹cídíáÛï hî¸Ð飚ÓvlâJˆôÈ.Ö¹Ð|"³HêRÁ"$9 Y~Mf -Gk'à÷3—åÆ%„JÈì7¹ÏÌ)5öJ@¨*˜¢0óÔFr€è"nts§]u´h€ƒÉÿƒìG8’[ZâæÚý:.2&Cùž+9|•C²‹B݉0mÕ¹$o@œ<<™ -Ad”¼a’Œ0ù°Ê9U›D±D§Ò1YvmÔŸ/ûd?&˵í?Hù¬S¥(“gSíV‚+ˆmlP±Šï ã ] ”µáž½4Ò„-?³Áœùá+Q ŸþX™ˆ»? ¦d΢±² ŒÖ^YN;8(`qs9D¤ŽÁ·ç©ÿy=,GiÝ-:ÄœC é°!/ñ3ËÿËnÀ<“4SÙdqBHƒäP¦áºªüo°B½w™ 79£PzƒO«î,|ªŠ=/’n¢L×;Àî N1ÿ ®î¬£™8o0é—`/«?©â¥R{½Æl°„!ø4¤?QæD. -h<Ú<êY’O°«ÆZ›ïlð_¾÷Uš7¸áö*eÂÃèÞNͲçîlp+–1G¶ ÓÁÆcy¿gÞ&Ïé,“ÍÕõG³«+ÊŒŠ™sZ¸,ÁȦԮ¾™v‘Ô Z0:5†’€z·#ÅB3‡zKw)î`d0S«¨Är$JÖ¹|°QßCÀŒM™ÞvceŒÏžÆëçðp/ñQÉ¡QZeÂFÉ»¹ºç¯Px›gj$§É‰Kõ“«´áGD)Œ©D,T‰Ÿ´ƒ™õép&¸Ôžj3öBõÎdöPqDaP³é ÷!#Úl =äÏÿI7ñ2þO¹µ´ßû0”–¦*飩MU¡Ê.³Ð5é]†bù~Ÿþäg÷—Žž8$û]Œž—z¶²Ôy·šte¡Û‰üÊHÖÌ–½vFá{‹‘³‡ã”àê'â+› 䬹MURJšb¯éâ<‘¥Jº(‚¾¹6ÈŸBÙá4"ÈMˆ MA0®T+–”ž¶çÅ“,¬•ÜJôú|#M¤|ÖUŠâ0±:/sâq ^‰fòËáæEš3É0³Yg;ˆ²Mo 4Ép¶A€wEÊÑjÍŸôãÂ5äûMew|ãK ,(Æ ºi­œ-“gÐ -¼¦÷'D<µñvg‰ªÌlElÈÆQ‡‘ W3¶¦ -`¹äº†°B€1)•Z3¬BÀ¡LWì7ŸbÓ1 `±µO³`ÁèÁÇéÏUŠ,¢ç©•ARæ§dàvÈ!1«‚‘L$ã¦XÅ?j´¹u‚R uŠ·#’£Õ·ì±‚™Ê[œcàÏXÝ Ax)\.u .J:ª~)„2/ÚЧÈÍ=ئÄeïq2¼ì`Q°…}"õ¼š—Kgcw5FÀR¤½”@ØuøÇQñ o9æÓoez0‹®KmdaØÅ׌wnBæd¬*Ò„ó%;¿rv\ fÞ=Z¶¸ ÅùÜ€,5ܘÑï÷so¡s°*‚3sÚ -uýœÎñ¢¹5 gú]kzâÌkÜô[l€"˜‰vã7‰’Òi)¨ê c¨eu÷ÓäïjÄ‹_*×à‚ kðç( ¤¶f7Z -tÑή¯V‘àò­¯_x#Ø$\9óD[9ÇDœÃ¯‰r|{1Ç í“õ~Ÿz;…w£È:nx¡:íN·ªŽ«µŠAàr˜7“þò@'\ÑÇãcãÞƒ¾…Þr@`"WôÈßwæMnëÉctª¨"œà…ÿœ=þÍ, Æ®â·,Ž£MÖÞŸm’õËôRþʽÐë‘ ³ò «ú®ay8£ .QÅìÕªà{œ,¦²›ƒ'ö—fa6ëHk&¨Ô‰ÖžH½Ôn¬µ§LíäŒ>Ô†μ‘Ýë’Qâ-AíNƒ¥jâžÓüÇFì0Òï7Soa`®kÄ{Áª8¢àaÞ-`„—-ÒhíŒ DÚÇ Š,‘ŠõøA)—޽…BýSñBÈx€Ñ|¬©¨÷®0i‘¾ƒ¾lo›n‡é…×Oé{¢t·½,[){ŒØ~²-¨¾Ö×':bã Ò×A ¨%玤ÇOÊfÃâ„’»äºhl„ØUtE¥ï5Ôgɾ /Qú²8ˆÔ)hîÄÏ÷ákñ¶ôMÃAÕ'P©ø>†&l¤R¹ˆ+á@¦^8zц˪FÙ/Í¿GÖ©Z"½aCW”I¸603á‘ T¿ÁJ"ôœ1ÐɯQq Éâ%;M9 äÊJ\‡jе`Ad9yÈä^’fw<d–?!CÃG -žF°sºî‘‘ÖÊL”À‚H†·@Ø.…b:¼3‘3Ï;Z…Ù¥ðžÝ;Åi-Ò½$À¼¹îüNVx>²ž'ùY±F¥ÍHLÍ\Y¤ãaëw™ÎÙ °1¶6ù3n7 Q{êÒ¸Ÿû%ô/îÅDê!|¾†d9ëñ'ùªƒ.IsŽfîº(b H£5fÐaÉiQXÐù"bþ¥D3‡C-ük¸’*Í=»å Øß×­dpRôŒù¼8oþ¨ÌˆÈàòçœÈ{s; xJ·¤‹{‹wHÔdÚ(&^¿MgKtèUÂÅ•"ô4Rÿ¼˜C’RA$ÈH›8*HÑšá ±À¢5 .êÓ{…Û…M_߉éüøJž¢I-òmzJ]ð!5'« ‚©¯…p5×'v;¼Íœm½¾¬îਦ¾.”ëËͧçŒàôúŽFµ6¡nˆúba×÷û‰¸K#žëë©¥Mp»ûë{õ‡Ÿ§¡ûšzV›i~OÚ}Ř¹lµàžà[lw{ÝÉSAíÁqwàèR—1¯€à“¦í û–­`¡¢lç{ÒiÌÅå࠙(—jAÙ_L·Y¶£ú¸^M‚cN–,KíoH˜joâÂ?8$¤ÚY¾ØÉ˨äԥشMÍ.VäÔÌ÷¸g>¢Ôh±c…™µÑÝÎÙø…ßwÉ i3†›DªuQ†ÚIزãùèÆÜ—Ïÿ¶g5ïo¢è VŽÄƒÈ¥]áéI­ÙæxhàìŪ.1-©: :7\™dMíÀYœ4AÐŽ`ýÚMø®S¹óCH #@*¹ÞWoîYÈÈ'€Óر³š3±Ô)íti&Ϲ@ˆ;v]²·º•ʸh‚§Œ/p0ьߵÎÖê<0È.AqÈæa2ÿ¸ Ìò¼|)Ú1Q¶G¼Oxçø*jìpÏ -endstream endobj 33 0 obj [/ICCBased 42 0 R] endobj 25 0 obj [24 0 R] endobj 51 0 obj <> endobj xref -0 52 -0000000004 65535 f -0000000016 00000 n -0000000147 00000 n -0000036493 00000 n -0000000000 00000 f -0000036544 00000 n -0000000000 00000 f -0000000000 00000 f -0000043368 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000043441 00000 n -0000043637 00000 n -0000044835 00000 n -0000110424 00000 n -0000176013 00000 n -0000000000 00000 f -0000042944 00000 n -0000205885 00000 n -0000036967 00000 n -0000037168 00000 n -0000039101 00000 n -0000043131 00000 n -0000043255 00000 n -0000037961 00000 n -0000037230 00000 n -0000205850 00000 n -0000037399 00000 n -0000037447 00000 n -0000038252 00000 n -0000038604 00000 n -0000041840 00000 n -0000038315 00000 n -0000038647 00000 n -0000039136 00000 n -0000039191 00000 n -0000041954 00000 n -0000042017 00000 n -0000042047 00000 n -0000042305 00000 n -0000042832 00000 n -0000042378 00000 n -0000043015 00000 n -0000043046 00000 n -0000205910 00000 n -trailer -<]>> -startxref -206092 -%%EOF diff --git a/images/elements/png/discord.png b/images/elements/png/discord.png deleted file mode 100644 index a037cb594d8c1029fc728591e01c8f520bb00449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56695 zcmeFZhgXwX*FJpTN$6D+X-aW|SWp;6KtzabG$?|jG^x&rpc0A=K_S5cb{$YqKtN{( zkv>wDk|34`QGC+VnCE@J@B0hBwSLc9&l(qm`#xu%y{~=ky|0tY zj=Q%j$!p7F7^XzsvGrFBBf&pOn5;DXhrW2_c?{FXs9QJfJDvQajT)-cbZ=-lGVVm{ z0C{)Uo>Ru|DLs4Qdzx=7HVTOyWPiifJ-9-a9a$7msP58!`hiplpERu>u5rEJBO#MP zkj%$xFZ#d#`@a_WzZUraw*?q$-wkj|#NKfcbWgOC zg>|Ry+Fp*JJ7BwCElp8KQGuVaqTRZDLK%X>zuVIwE4-}0)Ec8k-eNHo+i-$ z>0oQfdXlnB%70 z$$puR-3zU^51#fi79{(hb~d(C%f7v+S8x(xne(BG6#Czocw&IV%noyrq0b1EWM-aT zW>k8+VB++n9o&)f-jVFmtcjq=u;=8eUoS^hdV9kkb{J)^t@Ac#iA4gQc;$q*nBPPX z{dq<>#o!vu>u^*~HrSuCE|er1F8K4iTgch7XG7y??CUKBe;$ve{04uIxxbFZ>HXJ5 z$rR>ZhMw~G?c29A<=dZ~>~FfNNVl;0vR#HBz9j8uxw=U<#&Ss67D^Hq^}O-yoStX9 zwyWp4itWr$(ldMZ^{M7P4r(W;swXnEU5}Vw_EUprH@>-2C0hJ<$*5hhM%$Zr8}hm3 zVWTP4)zzG;?i^Pu+fFbC5`L)B50%jfCKVafJ=><3d?!KY83E?YIE!oD%I=u)am zQ=YfjGx$Tn?_RM!d(NdjKH{_cH=plOf2TOWD|+8jgC=|0`YhVMl}Js8F!ZwZMv}@y zx?fe4m6c6?szCp;2y874U2|_H68>+qXrwyIW>M<~GQQ|ZlF_+cx z!WrIQK79CaUPeYn<YV5Y7O&AwPfjqPV&iQgN|t_3=76BuXBW!9V#)LlX~wpo|csf zVm^cEwkxZs=xN=2t#b2qcg&;u?|+{^e?I2<0UI)*>jy#Z2f0L?WT$2v zr++s=)89_s_=ujPA*`LD*SwEq%R6Pe=r@7YZJDghXTLgqx&zxj9UK(I`{#+V36ICK z)m9@I%*!t;JHtJ=W?Fc{N=Qp4-Q6qKQKy)^#?NpnXvj$J)vbd8SvK;Qqr!K7EdPs= zup;WDA&DhOsSR@8LNGAtsl(mel|$6f~9vD*AK_j zzcOqq+iZz4-`@`o3{T%{}W%CR6O6A)R4_cU3Vm zF@`8ZMqCoa6>a0P?>V({xpcF_rJq(xx5N_0C!*46OYQsZdz|D7$s{t$_3yQJN()18 zk6B2~j2{zKs?_ucn`u|X_e^Jnr7#oIzpvc3r##uWdFPokXH2fW?(WIV3_k=fbpvC9 z4fS+&ZPX+$E(*io-FpvS4HCQTmTy=o^~_nWut>?wkQBdY#WLhg!TV3hPVr>mU5b_9v$2UD!&A_hk?M_+hOci@~-#|NQe$ znb6Qsp2B&&tdKA!6yV8z?`sFdOZp4!5@QJ=o6{cK`FL?y$rmW@Cm9Ffb*#hxyjUe( zyh%I|{~&_n`kwxr%qlyaSh;t>OOBJ1r;ehu%a$c+%dRBUJ~&d`0pwBv+TgnpouqZF2Gqp@)+sNm=w*24>wddDh5cPYs+ z#2>hv#@u^Y9QM7_JHahJB9>h9`fy^T>w=du@KhIA^8;;t`+Aqn8(0U|gdIaJT-|KV zsFPPMCKT?&cMve0w9c?)cwNUD8j-e&Nc)73JL5I5P=>mzUmbU{b2NLyB4t~L`mut} z;HkqqNVk2bBNNkk*M9l4WV0bFz@4=gIqf%m*Q0uw%_}LIvKg@d#eF5>682%9_?gnt z-3j)xg)~jqkU)ujOFw68k8uOP_wWR_p4uOBoABMU!27Sme7AVt)GuM8Jv#^&PB9)X z^UBTan=Vz?50JVfL&zjx<~KRwxTK!x`EUku)lwWaf@daCVgjrD_i0RC^_Su#a*bYr zvEZ2HqDWmM{K~`A8|>>XMy=^Z#Za_~Q{E_FedxZ(D(UmU=S>PGlSGodLpb}}>b*+Mo^^X6-Zm>jI&{IKwVe%cDm zr=V2GEsv}DQd8W=NS`yCwgN$%x{H^pF*X@tYMu8jOw?25Gh`p{>;0Mv`?Aqgl;%Z; zVQ%piX1X_1uSzzz`zC)tOsf#$gzLuCIr_M8*BNxa;B z!Ao!H^HmlP)ZkFrvE=E}c6n84LSq(Y^_CFqBena|h*;Fx+#Htq*r_AmP)h<)D{3$& zc!A zZj+o?#Y<}VN+Tj)v=KnJCpk`92q;mR#j9QffukI z7rdo0)94$N3b4)Ul*IJZui!)F^H6|hWrj!k`Sm<@YQbRf(#7+t#HX4Kwd%|%L*L#d zO}0X+)m=pZIM!H567l&Zt!DP(;kHn&a3eJ~sGo+}S7Y7g3%3cofX6C3N6=+A>4K06-E0ZjA^Ft2?gzN}P5kN2e? zwZkr~#~|WwL8#L>*jpSk-(E38pGe_ZE;~-9ktyrg( z87CR6@C+mD`SD2sk15UrIP`8q6a(dP$cqA$AB95Ub_kP)ydLGG#W!EGot(yZ)tg7P zwYAwU`lW`U?oQeVC(oER)|o0Buq|sm4@oyjVWyiSHYJ&+;Ho89!+Z>KR?6;235o=g z`4)FVhlFOmmSdnS4{2;){MWC|@A-ajo}B%eJ?i2&uz@!wJlo}PJq|BOZN9@VXT%lD z?tt@T=(+vU81c20O^Uq6obkpU+l%tMGfIW(<1sWJK`7nj-Mj>`iuCzV za8q}9=)7p`)mkiZzr@e;0|-8Jy7)t8X6^+NIAY#{ZNtAfIWdP71RuSx-aGDN@3_fYubE0A(FJXEzLi1T~aoZSsWq+#1 z(Cba~MN=_P#FkSxgTylDt3IK$=Ss8$AOX0v`%D1;42aH^W1yo|QC8NKmt!=a8JliC zGcgW1bKO21fc5|Y?F%ZSd2L5OnJO~VRIL0iXnrj&IC_;*v4V02jG%Gb>CH?KJDNWp zG4wR!lpJ5<&bWy@oPuqcQ1E2g6_d@)bXgJPKU@3y&@PVniLv+FCqJ6Or@lavnHd@y z`h%~{iZ)=VVXP~KWGr$KL9-b9F*w+6amGY+05Hzx-mVn%C#EtGs20C~IU((>JrhK~ z3udbB9I6Lk2?NNC-bzVU>=lIlry6qaMm-m)3k#!)Ga1E71O$u8zu%q?x+$LNu@#5j zOJnYIqgNC%b&-_-2b5x}9UvQ!*`qfP89wK|tfHs% zFDkB-u2ZFS9BfGGv~4D+He$OU)pOfRL%Q1$g?QaPTzx>9l0o>-lOKQ2a*d#9GAsL8 z&v|RM?VBe*;%>S%Lg4t)wA@^<>PwsV5{c*b^-u^|9x{xUqczcI(V z$pwGqgdJE249Dc69ivX!R8z72K5cqRAGQdoz>-Wn#J;3Ap8)>#Pl{@$L?fidZ~QE4CaCJpE1xb|`nw1?Oe=b3we zofV99By_WEZzsI6up95N9TS<93KO6@O*4GTag~CEN$1=qedch^7_&!>4)MO~&Bq@s z@d0MM(1?iK+`yo2-(p7xS>r@xgXtyBV>5wAR9wxBSS$)EoNA>3eYUQ?QmZ_CRDoYM zFmoIRlT(GR5ouwO!U?Lhzq;i{P7Cqd zJ2`(H&CemnB_5NNufI%nYSJfxBXSDl_l%F0+(B;q8mISu^Q3(Lt*7#44RJi}BH>or0vmX+(L(ZA7^^{j))Yrj#(m z&7afI>w8XIZ!?yohMAXhos}9L7ExlFM$4bwXv*kj|MruU>_*XQ?jNMP5z4LVCBzF= zj0f5sudeG%MqgpL>9Dt;%BOmnR(?szq-%wh51h=#Gm+LBnZ&MBQKeS;Z#6gxO5lTq`4=_HPW%sEe!}50lP`9HpQ2)`hlIiDRo;tO7eN)c%SgjuLo%U6Wk8*gK+Sy#L3@ z#vs$D`8WE`d&QDgG3!GW&ni(F;p>1I2nWXdo9G(*iJP6k2cU-7`M_R(x9o*J#Jdh= zC|}}8Z9Yk<|G_BUbguTTQm^26N4bv8TIa=@%YbOH>eS*5+6wirbdi$8j zo+NybU|ahnVRMjQX^oulzCnkI%+qbS7tt zq?;`62hzebzj^Z}uYGAxgo%#b8sj^TcPGp8J3@Q6QqRq=)Ek_-mLa^+?&LsfMg1Rp zAn0!xU{ErttB+CYiGb~IC!ae{@d*0rWWOzhr?trp`=x~V2x!FQpEQ;|)H;>=uz%UG zw|Q@nPFGU{8_=ItGGow@H#uygGgKlaOu9>GGjvRxe=uhty>hv~$ATAmKUvyZS@Azv z2caIxGw3E&2Nl<(^A3ENthhnm67!|%;~kluOXV9A7xfN>eONxP4k)hk;$YXK8vdEe z{v2b~{Zh}~D&11-Wjj(E*UeK^x#;=CF8iNfcP)X6XSLfmeWM}nwc6al4b;ox6`Sbp zwsiM8J?=;uQ2!^zlX0Dk9#Rrufyo#aXttmlJo`jmx~u(oxgWS_7^=h9_45WIw-?B9+HoHIf+4HHY{LQ&y za#b>^>bd;68*=B0CtIIS?ynW}=km`i&sFYiSq(mwRx4RfI*qWOWbRl0jdAN*yex+4 z|8|chEUG%~>JNJr!p9J_af6PK@I7>!o|F_UnFqI%T<)ZjY{9rXt?Tg9$ z4z@yHH!F|F-I?2DS~`e27m_|h`SwILX_}L47FofWs+w)EKL4%Y*r4Dak?1P-jAx4! zKwQ_Rb63Af8*4AoG$MB0!-vgrCp>B0zKo(ARgd&_J~j8&04-w_u-8PPnYfL&vW?U{d0%+8~gUI5~-;Oac)T2_4!hsu~H$=)0Xe4 zTem6L?h|n(Gc-w!VE+jpKJ$;);`|@2jIb@Fq*&aZNZPW7a+US%x`oUMDyfjBxBuqfc*N6}jlkq)@OW<;76S^*B=2QrW~z znZ$1@W=<+6sLIAkn!O{6y&qTPziDL@A7quo862r94#P7E=D)iy@o8^l+>*UyTYuy- zMnea&b7zO%IkBF~-oTlr{%5r_O?$e$y_+>uM%@TbEf`;{|^;Q~&eAYs*To&(Q&!C0tPS4lt} z^Nm5J?vGHVF@dN;zoh2-iSWaF##vS?WEL7qH{My0VY?;XUV0ZqY##IK-Bnn)Pbw^3wr2YXN&6^khI=yjTe(t8Ih*WhP>tWLH1FXdYxJ`h2I%O1Zdjt~B31ZK-jZlLnPWkI*L@)@SyuM)$hOOjmb2J-0*)nZ z>!3e7^>o-fok{n)N3SShelNDw4Q%-P1(W9M-83R9=7@ZiTdtlHR?=UQoBZ}3^V##8 z&z@g>YV4wN*_lt-kDOxhn1WB|plnx$EY=xizfvkGlhCI_DwN4)TVB>x>kS#137)== zw?LiH|HyEtsfTIcA~(}76pp4(H`O9nE(_`4p5SozbukgqID34L$uRH9lOUy%fHzZA z(TiKxtdpIT%--p^nlBGNci=pY{iJN+M&>hR)oU&ax~uPM)a_GuOjS3{+X!=mfiP3i zS*1HCJY8h87sz6tmw5&W1tQapCb`;Eq2GBoA5E9snYL(~u&^KYh8HgDy%}V(JKXhD znZuJT7-Y~hj8La~xT7jP>ip3i@@D(##V^@K;cL)I+E@qgxk^cJ!$+f~CxoM|r?xEd z`OwE25A&Nld*aLkAOy4n`4LuUDRkHoqfPD?FfcZ zHb5}YjVA#JMy*TVv*^ttQJAmjDn!KcVQ<5sP}qP;{{V6PFG_?$)ruTq=hMc&?b1@r zdaX>-9&gk4T3))#iIOmZspCckP%D4SQT8xfHuTph&bK)Ovl7Zv@%PfcU}i3=i&8JJ z=>BKCXQ)Z|U)Hqfh$;BH5L68%{vNrl_mmh^{)aSg*$*ox@?KdJX6(5q~yDQ_(e^8GV99-fLy z?+F!Z>53;;UuO6g%bY+QI`~+(mMv`*?>kEDZmbNW;h8w*bMRpUJc>o6~Ie1$&jT5SK66wK?s3So^wp z`EP;SG2U^^^z?H@?hOlrV`+FqY6y<4BZ-oZH`jHB=w6WHl8>?-`^)~E9;QbDBe}ffFw1xf`%`SCS^)P zs(V##KrhLe*zkvu+ze`PZyYj#eoVdmO#k1a@oJv{Zr)nz$fMjcPoH)_7Ii)jV+6Ot z&5lcagt;vX9k~nBv@xuhG+$)VVE7d7Q)~qh9W}JagjR9n9-R_}>;kJa z(Nk6NEwv1I;QJ+4?L-0*rNz1F z=Z>H~9kv^WvMXLQb*GwC!U>VFt&#m4sg_LQvuy1EezGNXN!sD#l!UF6@^$dIQ1^{g zcLpGcWp(K|H#zIJpvg$^=rG?YmQ06<7wX+l2V2gVQDbk`n+fxcYbOyRXOToPdnPJr z_qpX;Jh^$RsK+XR_Zl^ME_M|ExFkL^RhDE&x-cFUmO{Vn+iVoUtmGVmmPi*3xJ-pv z-m0|jTa-^w0vZJhEq>?Zh^f*u>!d^lNjLO};?f|K_YE~4artC_JW>I-hAaPz*KTb)_V^H-4N5H>&QbzBEMJI_{r(EGUC z0uy=E(bb2+yUek@;Ix6Ab*DZX4Bb=-=&Wm;?5D>5Xd1frE7v%G*P68NqkntJsk#u2 z?O^;A_VnlypHp$G<^^xAzPP1gmHs}h#u$>h6VZ$&FH1~!0-%b{Zx33#+I^7uhQYKP zy18?t3+Ct$vbyi5f*U7~Qe&-?Qp~jK;#Fbznb<;TQNwBOL>L&Yhu-wnho^ss+2Z}8 zTCD}A3H>yDxR{Y{5Cw6OwjGxK$~StZ=#JoZglKfBAV#IlQlOjA`H3jz9~2j#cje|8 zP>*d;Dq+?xB_;xSZOprBSPS~4aDrdmrujMr?g2W)-Mss%I(xTFqxn@r|SPM6qEK=X|Q z`_xIO^tOoo@-qME8lOEUDQ)3uY3&PxEq9XMax{HxSm8M;a>*`AszLIy1^Ns35&h*b zM((m{?zMjH5sSQ5=3_Sf1B014^r;P3TL{kg zRO%-Ci)qn2uNEI+6x-tu4AUNKvz}2fS3MbJY<&$|_{_B{(E4^37l6$l=o1G8OzciolPbVAtYmQ2F4GVAiHWxft zB^j%_vy3kZ|5*j`dX$sxLTs>*0@C`rdi~OU#1}+@P9|=pB>O`!ql8tMnoRKo!~;5> z6OGKnMc(zdnA^UJMjQF-+W3<~t3Sw3uMGQn?l|!}H8kc!K$4}Fsu8I#noOzCPNTUq ziW%=p1J<$R`w50P<`FO^$ZI;8J#kcfq~z@hak0BNSQ9L{gnDdoG`rGr*waD!MJgSN z?znL>W$!vxISsc5>}Bre96a0TwofU)>luX#ZGH_4asTo8S;Cg+nRkuz-oaU$T>c># z2N#ZOoZmV8BPsph=^fIf?hacr)MA^4?ogN`b=zB^qPk|B*cxbNIGT!ZBN?WvmlC(zuYYn#?Tt?VDe-H#bF=a#oNFffx;~+9(#wllSenlesMF;P0V5|$ks4Q zPp;lA`$CR^++EEv6(VMb4>zx-SSu4>SVS_T$+<2C5zzX@SmTu>aa>reoOs+_%s;~1 zHeZwkX&`drj@Z_vTb5KD_M+@v(_w0do>jen?qNQ@9X0nWynkDh zeqar8SjbLFlRbEgGRMc#_Ts6U^mxYU)vR(dD|r9|XeieETb%WDP)>~02I=2pI;*pm zT`B3g11BzwBZvKw?b23+)+P}waqx3fP1AN|)1y-Ub_9PZEWcuz(EGiUjPPZN zs8*4Gbtk0bc53Vw=BnC}m*H0_Fk%Imj;>;asHGj=$-tv(-GUwm>?Ab!5nx8moOwF=))SO{Z!jm~WK z{VO@K*ntg5=ClRGPm>N%&q@Sd=($!YGU#L)yC;}s{kmfsHn&<3SBQkgjYMZMPJ6-H zAgN-|+@0NRC9|i%--Fg1Pr55iPLW$lPyvu%Z)tgYnWEGWQxysU+ENm6!=?!5jn`wv zs&FC|pa&V(Dv@o7!wn2nbwp>%7yIl{qwHjzg_WV^dNJ{>7jGq0fx0jsig~~|pi9}Z zlCc8AI2WtvZ5}Q)boU{>gnyp|`>H)~-obw!#8(vzA+xY=hWJ}4*8m_(&^3n{-uz-B z%sr1mBcI)3lKWx{p0poVB$4v(EEA^kGD}3Bk7i;b#g$BlSaMi+^n*$OsU5NnO7w-! zr1$(r`YwXmJE?rbjz`f)-kQ$W50H^vNk9$qIkkksD5mT__dv}V3vL`qJjxe#L-g|g zAX6v&TnF4|Q3WmS*;1S@(q+e@;cemX0Hql(c7b5Xn(ckP2RADs6b4Au$%C{44xrgL zea1vySNS=T;s z0DVZXsb)E-tcs8a=3rnzf2m6)1Wj34pML*Rp~j3}it$vC_Jjs z8^$-11ku%Dn@hMw>iyaG9PV2JDozd8xQlZYGP%uB;zr~@?GPv{)e~HtP zp)QlDfy_TY^cLMxgvrmX1+wDMjksyj5%H@ZzqqTV9rAC!7DGsfF)_qjQ4s;AwxUi@ zBpBpC=*yoM51wc~K)-qpj!+MdP?Vk7H;(3^8x2(59WaVKWxa#%bvzbcT zV|D%7Cw`#5`B#XQwEGd0c38?(Rh8Ae>ARSDoe1qyar%>g9|+U=>#)U}^9d)rNnlFg zOCapxy-jbY>&xYXAP9+>R#L20gRSn{fYge0@AZI~d0%73q<&Oy&FcudEtt5=Qd2QE zy2EC-EXmLChwW0V&j~Y-Gj%^7dLRyapsv3!%qsd0Y)m*FN2acZaeN7g z6rD@pzhE$H1^s=vM+1q{Dxd#@!s72|-6G{LRHX!YjC~ZRCy8?-;N=7G@+_;Bzl$#$ zOx;|GJvWB2ZSaR;?R5|oN+d-XGV7-mF|hXwG=vlMJ1G0}MJ?1=vcnPZ2_?`!Z0XSR zxQ)Rqyta}#QD0a~VHwwYU6CQ^B3Yj_;gqWah`?Cip8lsqOsf)?lPFy8wSa5s#xPG- zor>vTF2_w*o)@p7#@d3XIdQ!w4_hu$7PpwGn&uLKCx6Ocm~W$Mx(|maO0!4|6vI$P zT)>n0k$zue%EAyMiQ$kRYMv9Jhry`Fp^F5wd6+n78P`@03i{g%sj+8u_Tybqi~@tp zp^7ArkX4}9!jig|#EVRH0M5o^0WW-G$$GD==oJJ=eDJ_WmCW|~eAvvap26)Xjwfp! zsbZ2SkjQv>cgWNyLES87q(E;!w)$6sel7u|X)uxp*jp2{szV~+i7sN;-hBTx7Notk z+xmq(wJ8~aXg}DFod~jqQOl_yJ4{jfe9#D#s9f*0YQK3?W|m>YgyRy{UB$<%-?V81B?Mr$mNDr ziNhSQMY^j?7J}&(!CCy8N3gW9sdNV*xgN47P%I^clYi6=XptT%NF~>lfSHnfo4I@u z-~2#A5#xb;T4tu-W_2XlIRR5-`s_je@^o2+_#AWsYU&GM_eR+J-_`W9rFMZzZoCMj zqgb+>cA%K;Ib_mngz7fcnHUl)lp8TQ$*U9$@<2)6Z?1^^3YmaRwOM_o>%61XEzpX3 zW@3kkI9HvTfESL>&<=!Mm>~+rGjE_5BRy0)5#n!DN~r8+h#lAFm+R5t_NFg zP(*4dAK&-=159`Hlz}xQanEu&0EOrKS;Z?D;5-0|_pI5evQ8M#;;85qj564r>%CFX zDIf#227)dnb@W(@`#vcUC+NV8!UI&gA?gyM0OriTK3Y2AATflEwMoyj^c4)_S{peh z3<(%2DO|NipBY9|aK{+v$7 zQ3|9Jdd^Z<$BR-StcUEt4wp#h9uu(qkXFe9AN4=W#E>fcC_Krkdm%W}riFhN4TkOmHR+A+JQY6!Rd zg-5Ey?AeX`)hfB*GrQEVQvGFOv|x5I1j&Xx6d6b1h~B?{zju5EO0e!u7)$E)>^mmz zm&^li4QDOO`inHcOO$V;7tG)oWUI~sG`nQ($0`m?L% z_$91BL_*04Se+-T{7+cj_p-9IECqrfTaEOeJ(?vFo1S{MOPvKe%0MKItf;7Xt?cK7 zAr+LxKHMyuben{|*9nwZa^U11F+fOD zKr#+ihV{9^=kVa!&*{xNUQ-q}r|PXYi|_?4^F`FuaB^}%o)2&}QhPNuwx#`>q8bRa>79n-2@6$kgmRP!iMcw5ca850_Gkq zvDnDWvkbHf3qYa2VX_1-u7`GX2>8(YZ3G62E+%*kz!5d$ze-qNx604|$g}JyJ~}_o z04a^N=7L;y0Q|cj5k5(({PT%1HxD=xgv1>2=7IWs9fB=u>$Bv2_=P)+*RNlP>PX85 zET1z-kOWMTQTHs+1J1VFLkg7VNXPvTC|r8~1%D4I)fNm4;(lRv3%^u^vpo)>VqcIp_zJ0Sz9ymVjOdj(R!k zU$kPy&$>*xWwbd1>7}8f0DAQmbvScTP>h2l9BLG{J#;f&9us;uyvH54@FW2~9FR%a z5&NYZQcC*wqzCdy?*c>LJNasm23_T31GI`rjM*&^T=OL81I>fOu5y;z*V{AU(Li26 z!YA>GajrFUIG1*Pr^BP%UPnc zOI9LEG{uTUYe+gAJ4(m3Spyveo&$Lo5@99U9+aNDkjt&ayH{W<@u;-^cGTRsq8vgs9uCBY|#mKX^0PEd)Hw zEQbUc@yZ?iL=bPPsQQ^CiDqibi`CT_yf^&-1CgPN2N-a0I$I@%{zCOIQ$+RY22>B- zVbH3v{*^e0O4rSo63_12qh|KcPiuA@D7nKh@cILo!!}7^)tr1fcmUlDS~r`1k9ju6 z;ON4JrZmWO&x{{n0D@7gv8cV2xzB6okwDek?d{ZH!I}LA4DL&_W zCAj-^IlyvpzbWgqVF&829575fz+ffb!T_JhPnUE4$6j^tM_c9|xfc$gdj$h51yNaV z%95-zpI0hxIXd@=xYZjJO`%{#a(G}_(KzAgU-8&%7CJVtdaWW-1-NKRgUtNxpOGLt zMYQDDe87qaN+`#49bf=Q%Y?N=JBm<>8!?+1EaQoEOYjRTFl4Id62eeZf2`eB6GjnB#4#iqAKSzn8hTT0dr3W9avB_2;g6C#|zuMQU zNTU0UIfzz~U=;L@pJMQ6bIb{&DEteav5yW}BjeqjpE&{k} zh`}MndBI3(Gg>loB3O+cP?(!HZbYt=Tm@;Ei{&7=opD;z2Z}h2ZNr;drB$PG6xXo4 z2TDF*-pX#1G>cg%wpMsW!wzUd40~UY98nuIEu8&{@LVKjzK=#G%F2U5+R_I3Y`Ud{---ZD~zL*cDtRy&ydQ(M5sM{oTWhC2GPg=7D?Hsf| z)Y+bs5)Co4%Nz_`qy<{ebHTf=p9WWfBD7j0{0?-&>fpNOP(+v@u{NS6>F5+nhZ@wd z**}>G{NJYl6I2e=4}U;Q2?X-Yxjx2>=@GQGqcn_p3u9f}HjVORO~IiGC4EKWH4X-M z5NW_Y~4{Zi6nnq|M_tcQCNA#Q;7zY)0 z8&{(U2jX|ipNJ-lC>sCeW?OZz)yA_v6PPq^&VWD1LP%B+jXx05(L+Q!uKL`N2EPgf@N4 z0AfZ7y0YRX+1-ABbOTSq0BZrHpoVRfW+oG#B%>(D=U5!+1YizlP~TQ3!^I!o9di;=X_ay2z2-Z+@2$Cw3OF^c-+E z2upyYe{n*S$7l1*lCn;7M(SZAC1`e4HE4%D3uobB>3`YF$n&xr z=BRDKSxPyc z<=#1u2yE=Z8aV$JtYx{x(MH^k(D9<7R&0p+UeqULwb>|JqTB9}p`zDgEm*$IoYiUq5{aO+NXW`1 z&Pcwy!wv)g51-}uHE~bjOy_tRoDUF=I%%K9`sQ{OVkXZ*Ns=J50ESS@8J1V591Of9 zQZt7baF}Q+gBiW%qq;uU<0h>i-SUNlF9LXBuK`Y?uk2_*YuSBcoQ{nA)TUqZj?;@fApdB?NkTYD zwrW1N)$r>Qx3>V^YPl#9;2d?sz#!;mF6tSipG4_;uC4Hef4>ABT1FnR6{V-c63c7$ zONxhMYt3`e^C4*-0)h<&`QJFYxC0gV07WXFIM|WnSmbJ)@%LN+ zC51rrgP%b?ntYP+S$59jk4KXzAO(b{gLH}5kA zkN2JaE#V}iNU~AQ*=TFc2Iq1HCS9ovg0))ve(W92`q(>*Z|`6(Y6}4k0MAASTaPv3 zztP~AVf&%zw56fIekP$j94In_{z21J2d?CnaR0r{$C8pQWc0mc(B!YN34e7Q`<6|- zjj_)5eU*Hxg)cWqF}9~VH)eF3%rKc+>G`UX85EmTaFoS-?{}p~zUHJ>io?}L9DESz z4Sbau=Gci}rfq9Z^3hFXI)@-mubwX7f;4wW^Os#=W*_0^$<=)FoVcfE>telkN6NN- zIR@VfhDThGrws5HF;H{$+dCX6%-CYTF2#r9)Gt;Z>w1H%?#2*Lp_|OgFbFzVpi*=3 zmH3dU=Gpn85`JXPj@1)psmrr$&@*$7)GuPd;X?}3YQz(Xj3P&#m?wBgId;bSJHF8- zxk=?~Xa2^Omjzb#^?AQRP29bto2e%X1^#Gd^PfqfHUM1by^muaZm`Uhl{EHk{&C-C zKf4)^;avt#uY7~M@7dy?o?f|15a({9pS8RR&tpMDD52`%vPxNW5*k`!;S}A-=B*!S zBDr~nHG}NiLmqCocZ}^a2x}ZzBZH85d_BtU%Ez&6;){=fJk2jpw!VD{57g06?iqey zy{HroT|ri~7k> z(4zXHra9(dcj`sDj;Q20e1Xn#Rpr45=HQpGiNDyl!`FnguQiO!4dA2m>to-B7xt$gunzLp%#(alKZ7Nb6Ql&FbS@78=e^ppsv)?+n4t?ws7X z_xbU^Q#7HS_dD!zRFPdil&o+ZasM?bL{r3_*f?qcG%Ui5uZ!rh_Qh@dJhiEk#dRFz zo=zWKQZ@=Z+*VHJubQ>AW6ZmZo zEbv@$IbLq2jI5@yac|?e$9Mj&nkPTz!van^SjnW(7N@PpN{NtN`g6N)wVznqbb^wn z_rAX>(vsogG|q=2i1z>do)_>GuUs8**pvktF~R5_y3ymo88=mihC3@(X~DN5#kBs? zq(0RYcNs3{@`@1xwDlPMR#BG^FGy2 z=S8=6WXsIhvu~&O*d_Sc37`H-Pe)DuKDj7I14jqbUx-qMg#Rc6SR>fcWaFr`>W53v zCmE}bV}*DJcdH!sRs2P&WakjmuEU!-pdvG7*?Uu^CnR4_x!Wy%BZx-Uq7fM&?HC#> zp^+wPZ)<3Y2EhTt8`nNBP9j@n7Tus99vf{&BzYu2@^lN^&nyScY_ zW!vuUO0#VpjA1YbP?%@gAQOuVLYI05dTehwpwu_#NVSwk>xjlsOhbu3X@h3D#poeIh5|Xovd7JJRi@j;7w;}j z{!-p)wfCc0#lvmCtd#z|))%sshF~p`aoSZ6(;}+sA=-6^EkkL< zY%z^a^(*>N?05&-`G| z_nGhdi(}!p$cbGcmoHE3`ml{@v-hu#lAbr2?-w*ZeaOE3QY$o7GmX7~qs~yp^3V9| zG0y&@?06PCsL1+CWLZ&`Sh|X3^2@Tr!S$iuuQx$r#;G(2mblE1?2la0DP zX#NF5$J2c%S90-qDpexLeaB#-1Z3$sm*0*=Vnme zj2oe8`irwR^s_dpwvlk_;dRRry0geV_C;B2=ql+QevFE$q+LsS`wb|+fP#F=YQj$` zSo_4l(kJI0X2tE;FQj$yHthY9PA^`@xA?y69=pfn?KM`f)!u{FEO{JKVbkg7q#x?mc-6ZV3O%*7uS6Wn=hXWrVYv zv92Yoz>ZNozaImd@d65oP9mk@;(hT=VLq_(!)Lbm#ho~8d(`e@lDzodvw=y&-q_^+ zzh=<)^_4{kCU}GG6$1B87!ICY#%I^iYnKk?zVLj3ojLy~?$kWOK{KBNJ0@!U&G^O> zJ<9pJTNa3mzjEcT8v%qgdFpu3& zZePkX4{5SEUHO-%72(BCtoGKIk;<4eHDS*Z7mGjC7toCUcstdvL-+19S-kb6-<9N* z{Wb`0?k|Tf$@1R`9}k;l&C~e1cE{DL02lKF>*4!497|BJzIig!%Eti2_MF9BWp-Gr z7K({Kq;t1c)GFQYZv=#CqKWv2a&vnvYNp-(4`FW}57qw1kH60tj3tb{B$7~;>Iy|M z3FQiDL70eJ$X=GpGN;{=7Tr=LQc97fWUXc*EmuMd6N$8tH6__*=KFf<-p~Dfe&65k z@jL%?yUjW0ectcazC2&&nYZ<}{;_Hqzdu&&t^zf%>)oFveS6LM64>^Xl(FJnKg^zP^e=9DpD5Wh zSG7FdYrlbi@@U7hue>U0&0+h5Xyyw8OL7nONxiC=*+_D!iQxWTR{J+kZ5m3I~4Z6Sw>_T@{Hb6^2vkGu`qqYQl& ztP*{GP;|llOD}CJFaBt;-3Mx5A|-smRIJJF(w?81-35P4ne?v6yS(7kPp!cS+p2Kt z6F*Wp`b)Z*Y-Eo_o(@0AS^t{#{y$m{v!0yyetzbv2D|Tkc7sCZlb#hD z!7&@pwWBq5WzUgt%{RYmd6dquIAyrGP-s)C;m;WCbNRv+!9@Xj5(=xHvS1Wmw|lj^ zZFj6m_`YV(U|vwlR+q6hD(|Df?L}J3_tryqKj%x>cMZu=V@&qUwdAa8e|xHEwOY@H zsY#mz4}F32`jQMQ`@`(QgMO!<14B8iD{E@6iekBIQ(eQHDv1&k2=2Q0Sjw3Ia#h`j6$r#PP4-^& zv`hJTx;FQ{83cU_KL|0F3BfsJE>#e`aJcIGS73BO-dKxCcw{pRben7H6%%=Wve?9e zjH9c(85uHJ^^{n#sySjZo+P(HlA)TnkYC&1@O-lEEGsoDx1L847i`p@aKE7Yz&BBW zl3%W)wZBz`5v5!kw*z?@^(-MHCQ$z53Qc46XLa#FgmdU=xs!>kmFanHyMKV7tIGf} z$#oYTx1G4I-7}-xXJE!f`_}CjT{_;r8D*Nus+UC;XU-%|TlXZqQV`sC(rEh@@;E*m z^XgFbdGA{5wi#Jw#~?|+`JZ>{eGr10C(lQsWVuqWu;xuaUmuH3RJ7t!LS^J+RQpul z8;|yjeN~rkLzTGZm*R#ss+Vl5`aVC`>MuBjhJ_ha(ti8vTK1gzDSKHib!@x!;SsVw zeyqDLr<9|@Y1wv&h8opIwp0OS(~y)JnQW$;V038T7cWF>l&jS0jr`o9D5zZ7^7>oH zW6gG()h~jR@9mU}%%sUojuW9xwRTsokG1Szm5xa($U6>Z4iB}Rm(??1I1pU=t^ zXQ|j*l9d%zg|RLts6FmxK~g&3tBNz{lW+2?PWkx_7uNH4Tuoo=#vf2Vb@_DekndkY zmgEmiEs@V?bd;s$M}X0i`9t_P7<2|fJI0WV@AJh1>Bco6ocG1$+Yg6y^9E)x>u(C0 zwZ9l!%8gdKo3&NyYB2hJ#k`CIOdPJD{ErAcFo$A!5xR3+P+1Dwt|d;5mF>Al{<>tkgm;TJV|m&~=l zn5J1FGubTnC_3TwvgbF4kGlL%#tTcv%G#~w>I;h5fyK_-{>>Bd`ur%T^{<+8YMvybR^`Q`w}nxA*f{EuP#qA0K$IxtUT;Ia;a|q`93Jv-Xuqyv>T*c4-~I!HXTAD;XG9)sY!+xOq6cW+aN*Ub zwejils!lJrg?F4gWk+pnBYF%d+^zXC0lUrmgtC$mfRq_Ld6R_CJT~kCT**9!5F@%3 zcxKR3yBCrhg=f6aE1llV`gW_R*1{y5?|Oy?$;waMhFSe0L1u{~%TB@fgwQXIdD>IM zmD{x`Pa+YW_~W6@=xq@+Q2gk5Gi|+1(Zj|!6KL%kZF6L%44OF5B5&QR*s}1-u~enQ zA3kSxv9-=B5GDIv`hBG)?9=TvB0gAkjV;=$(Yp4}E|$@IIl?0YKCly;)rPN`@{{L< z$k9V%=*gD1ABD2MnZ}@r*`tT|1IkNm33J>fHP`(yt3yA-7oKdP-kON+ziH<-sE(w| zI5oYV7@DOmJ}e6hHt4k?eA=7Y^JN$ry1{t|g&x$E?cCJy0Z`H?_*bf8Ijl2>CBz8evl*@8??%cl_2GkHVFRk%OjcXbAfIGR zkm%N5etKZOH0&|9b^=X;jtMN?1)p-V>;;sNFKb`8+o;ePJECr?frOBmuvW342Wjne z7yOvz)bf_yV0WmCHBM6?u2elqqdbZeA+l6kMH!xBPu}EzU-{;%rq9I}r#>kUKNQV6 zvCUJ81}!SqEmrNN{5~sY89&PYl}~0+n_`3pCn2pp;?BTt;wbOx7mp@Y>&T9hL7iPU z=@H3t{)^~|g4e>;8k|9|WE5+TDh=&o(2l=o;JK>OzVE`;h*y+9roD`ux+idiD zm3ev$Dxs_6jVLwh|M>A^V85s`s_yZg>b86J$+{>od(Py#wo#gY+nqSn)u}qU_fXvW zsDeYvf@GV^4JGGu+cmwr`7^cMSm6qaGlda%jz_8mGZyua2R3}>`pzo;1N$xa@=cw} zZVEJe!?IUVLkotx9!WW`a&dB+vPyeq6&ql+d}Ff;^KdOln_d0BvZz|@2XXSbqyCG^ z7&JT8oQB%wjBY1^WSM%WbIWgK0sP^wT7bF%Rz{yi!oIs-?+h6HIkx*4g=6ZcyKrL4 z>fySQ8#n4ARIRmV><0OFG&ZrcI{O%WxE6dkkk@02VM6`+h2`Hnr&#?*6;bt;HQ5G1 zmHY7`1CAS;M0&qdn5;N7aJ8@1A~iFscrVCu*~FsVRCV6evgJz#~`hu*e6)& zY)*YY`@X&SJzkl~@8R;b5{InGxQ(e21|NjHc5}GCGnmdR_mxN0q2tJJp5HH-ZK`zP&Q~Hn_BdU& zdNyBr9+WssYxY(t8PGXeec#8Y!cro74)m?t;=Jj?^*b#1AH!*p8=n73YjSoy#ydt~ zDDMlmiwXv4Q|(k~oJMQ;B;+;2eVFK3m3vU|?vmQ{C#8K3Pj?Q#1IQIWEaH|0_Yc+& zq~zD!%6Hoo$kp1_teK*DnqF-p-q}ZqpMGY+_qO@(dN()DHAkO+i#Lo`sfp-(9Op%3 zojJLRY0YQ2QhU@Od)E3|lrg#L zy-;IKqb-1HqqbGKc4ZE)23Cc1->ZDfe{9ZkyiyNJLfL!(!Mpf z2@Y@@-OKFjIO0kfU>A6m%4)ypxZS}a8@V-e;MmRlDzE3I|Cp6*lL?%0B0MkE@ymRt zj<;D7$oXldwRNz-#6m`qm{_BthD+oxfF};PjV3YX$b25-`H;T&ZtiWqw3nTq*)>2h zX4ie6N?*}XnDAGh*~bcA$8q&7M>lu1>U6pDy5$sN`>f~+W!kOb#KX89gt}y=$)8)_ zFEmFlYB!(#ln2QYCFrWoEHg*i%0zG!ceVMbkT}{FzC>_(IdjRruz~1^lD%P1LPAgG z*W6%i($wt#bn+c7wEKC+8k{=kCaaiSOyoU-vy8AIUp&o;^?*w8wg?}OF%-BLvvcgB zx34Om2}D6m9_R|$!cKQjB8{luJ3?cQFavB?$cHe<9#cT1r9 zSL3Msp~rxbSHrh72ZQHdgT$cLeqi3ms|NNj+2bBt2QCb*JAZf2j=O_)AR*l!@>boF zs*_!~aN?Q3BRe}UNZu(dI@{LuLPPh7d3uyU(Fk({3Ud-sKgWZFkS|ayZV%~QvAa^U z*IlMy339nLXL9^-{T2V59#d<)k{Kt8;@LFLS*VaIw7*(l>>}@|)M2A^43#a#@d9(p zw}QUl-u^TLr-;>35mKY|$4~yTa`d}I`qNw4*+zoZoBG$3AF?)0LZzoo=P`8q-R5!5 zSLjvKLX*H_@|vVoT$fl9xve0NMNi3p92d9EFiZ>uMcP!kS<@9J=>=g+HmIH8 zO;H$z_BLb}SUt=ol>RMXNf%`-ZGUBSCtSExV0f)62fjVXUsfSDxXIYoYE!@O*pzjT z9))X=_ON~ZJWg7Z!ShjjX?(hxBUc^LD_>Ozc5iGcg#9mdB^c?6l~%Qtu}y|nweN&8 ztPu~*V_2&7C?iUs*d>Sdy%z;Gg2b_R;P~(DyhX!c^!#~#cXY>Jxe1L zw=EVg8s|zC8qFk941;%-2giF`oI~p!b2mnvzGT<7*Ffs~K;l){o!ye@)*D@%dJ1}Q zkTX7!C+XnO%gKB-2TmG$sTav8oa6HwcDh>ai!;@r7vr*SLxL?Z25A_9lr8X z$(MyU(gkZa^|KncP>XmMnrEs_-ql#~083b>sEyqLuY-2=7M%Z-eI_8Ordx<{ODfHn zX>I>q@K)-FS$|Ito>0-zm9ff~&N*AOE;ZF?@4emK&*$AYDCBl4yr;QD`}K>;qO@T# z1ouE%;*Uj%cgF ze`sDa`Dl&M;jPcd?IoiP`}ce%6Ixg7=?_^uC~R0R*ys--|<$7-qA(nHxFv%qsCF^_=4>A#LA{@Zo_ZzF*~Wb zRrh+qwnL@r9!I14Md_&eYke<-ir7g={b<><-pJ6fPhSUZL)}H~#~vldFs&g{;A0S8 zR`YtxA+Quyh7U(KrLG;j7r3olwwf!gfetlocWxOBgSPucYEUP1bYGhwRP6q(QeD`} z^i}Bv8Z&jPXYMPjF>#Zh+#*6Q_UPt80`+Ox@Zlvd<{ZkKzjX8<4Q(sQc>S6}2H^Or z`-uev$!uRK*&1=__~u{)6<>}f?X+6HxlG;B)o57~UPg&g%8rkDqL^MHH~2Oi&6Z-_ za3^|pg(?u_!K#i2L8`BuS~majI1vgRQ!n{ghb#Or`Km~8;}%oi7BdjyI-Fh7_u_Wt z{=f8Zx~~L@nd_tAV{Mr7AVd7FH7d<4wITP|28ES>Ugcv!!tvyyBFb%p9TCy;C4H8v z#}w#6HJ?-P#;<8BUQ}f-K98d>p4a*)ZVai<&P1KN`3o z0W93oo!}TbFEym#E}kK4Nz*_hIx^rLW*Weku>-eZ;d4(9!cGMNQ6R^9X+IR2DC7@?Rfu~J z?@wHFAa$*Ih1fQGcYIq?DV&aH*~%hS3Q7!;uG!92nB04$-b;bP$SwBkA0mn?i&S%_ zH^gNgr}ET>)NAtHtcRg9SJlRSMd}v}C}^@W!O&L*aT{-Ra{6-q}g>{<=bXkL?I3b?>E)eS)nVu(8G4^~Iy3FAELbSiRA8gu}~Gjb3F zD%1lmup!+QaRf!EuUSBA5x%b@L#gjO6nKHGIQ)7y|^o+L8Tyu z1p}#9!hekY{U^hMW<)8;%UMEsd!R^!ELJl{Jt7p;G#|bf@bK`TXkv9LeKBYqb@;j- z(LG3p32Ti}|Mh2$%s6J z-|sa;{nx_}29y905WCcff)#noOyZGwS>(dSh}t7w|1ZcHJacUmJThb)I_HDh-- z@AQA&8&YoN1=Zn}RFo>VNmR)%g+1r+fF2YfbGKIB70Rcprz2y%=~ZhW*PLc?2&Tle zU)?N0WU*H%DKFjDk~ERRhT@IJr=FWPr@CvhXlSK4Xv8=WZP1dS4JrpBBl`~G2YCy_ zNwNHP^*f||T;uwW3>J)f5a>wFH@n77FJ&aFDrNW;RmhR|od8i*5HqJR_j>m`t3 z#AMB!o_1QFuI%JY5%Lp|M0gP87e>uVqh`vwlpZyv2~l#_qibd8tm$W_ zQBiAznCh|pt7y#TBq*p+?6ZzqG`r$c1-D@lMB-BG=67ge)Qgpmw8(gTi=)Rt-o2iW!pmKJ|q03$>if^aT$Z6x? zn@|-}i*H-9n6`c9Zl_j@DBUOe#KhAZHV>ZY&pT2%{{Ey$&&={WvU4BUtCl?2ZqOSb z_;cJbvy3*7$&UWHakr1T>y|}S(Lom;*?!mBPw+OmhzYuP3&ghJ zOM9Fa8xvMiQvPI|Tvzj7LG6PgCJ~KiwL(r+jy4!yw!Wa-rV^iscvtInl!4F|FS|la z)cdzLhpi9sZ4?#>68oVTc8BFQkI~M5I^bwg9iRB|ELwS`UW>e1H@|t^8rt-eZ;54n zDK+>bNJ;cZqzKci@o>RqYoH#Bo`sYii~RHNzF{`DU?wB?XFK7^{$Hg?gYs63zF<~N zbe1iDLJ2S7+CZ9rhZfo^daiE%JEBi=lN;F%k9}^G_qtY;tl3v}APR-&)DN8K-#>Uu zB++nt)qzn+)_9$FS`4?nBd*EA;rB~Tls-4f+wOjca>h-nSARxuuh-1xVv)q>*#lC# z3m?VV5MC>L?9n%=(BuPj@1#|SJ|?g zMlXvSO5X{8c0^UyPgV`sHMbojLcKyFLpO@%X@u9T1(=0v{` zpsJo>&69jCPqu@4C|z>!j6EW3$P2tYNvQy`{mOtcX?Jr*SkNcVyJv7u^Zr0(u?j-G zU$0s+)Q;jr_lmmSMg^bSM~?B(i!bLDH9WtsAPBvu7L9MCVzfDv5Mdie+-7QmUJKl&kwoMfkO0Iqzu1i=5lJ*Ju1`K-NoH zS(EKH63CnCY9a!B`{dGVn2bWUuh#A}Z*dN4-O&9ud1mKl(FD`{bb}0Qb3;ZYDxD{z zKt!rki7_$-ffR00(SREeMAgy4?Jnu1`PGsq4@Mgvuu^q6c=fr)J?Yl%B5Rd6qtt8- zR0LFEsoEL{B70lwvM7@~{ml_XXz1e^iL7Pzfxf47#YzHfe7Es6;*pB%L}0fE!DVu( zMb_J3iU_Rf%JYh<>)TtN2Q>*7onMtLbuGE@cJ6b}hwrF|!->#>hZ4a8!pk^%J@S&{ zh#WO9QChSaZd09Kvfbr#X?UBnmlD!oJXCi&`tnhv;!{08s7Q2U(cya*Jv)COmsV60 z53PQrKJ6$VTaOA+QCR4CqV+7Zz4XqpFeTBkFCq!14=tk<-x#0@u@ozS5V_xUNdnQ; zEz3<4@s23zqNPEU#%}X;>=1et zjF?7y6nSM+_bIoLhzmbysP2d<=MB8_XVWX;&Q@AyK!@@MN&|ee9)yXS$9JVeg~S%1?=`yH{18ta@~O=Rsp8 zcT0_dI)z;T-Z8yjt}fCTM-lmJSIEdp+0=3HPk- z$bsYxBkGF1jdvyJUWebWeN}P&U@`zDm5YOpNj9ehGp` z@z7Ndw>lFAbDwQH4%@di{MO*^q0yO?T|QBjaKdet?%SMHC>nYfw>COaQIMaTu%8KW zD4znYxaJKDISPkNpW$s!KBrh9`Z+Quxh~4b#pm5&T2Xe^*wLWX5=qd%FeIzUJVK_- z7NI3+CfZSJEl|n)a0Rc6-7O;v8OFo~OK#0<0->}lSBsfEled+A77s7H2!;dxgNjI1nr%iKW~VVTuRRSKNafr;il zVdY1K6HEgQX-Vly#|;l3*FZF|wLoLE{QiYwkMb!V#`#EQavMPoJb*Quh&SE|N)@_q zuEW11U811K?6aX0&T{esRHRp6kM?~}+A5552eJfdj{>A3ihK|a-Tc~)qp!IY`%e6P z)>N8AEArTr$dZlV{_dgW6jAMcx~a#ueg}ZZM2#h~tgI1)8h~mQvH~eZK3lZ|DXs?3 z-s4@*Xf%mzy<2zZv3qM|gnR1wc5A91U0%?*Cgw6S*w*w(w6T$Sh_+tt?UWGbhF>c+ ztKsJ@y~0~!o${8dUm>i)@J+LU@m%*bq}~-6Z8fU8ODA?#yG-r26K!)yyUNOwQ;dy6 z`jtsC#Ow$47AQYuy9u$j;E5KgaKv^N-aW(LUVdu*pdZAHOinfD3eC8?ma7E6?5CJ- zbDAX9Mm0fQk#K-`k1U}q8Y&70n4bpxm$K+DEi`jj+(Y<@G9$e)Vcr1Vty_=Xk1+$= zf}ivk(1}?g1Caxbg?2BNKfV+)cBr)^^ zs$)!q&w#NDu0{o=%$8Y;T6U18bn;M!iYb@bd(5V9@9=mOWeO43$0pbVfAgWKncTj}Cv^wZ>|1W>nKcYf{zJ1?r!?^vj)z#Hc?9 zl_P>Ep*JZ@(~%5nJz_fIw2$!m#C^lOS7)|~%KdTZo|dh))6tC84aX`glOWGCr|{If zq$GHGXj*tXHOqx)wMW|dlzzp}oof(abEpSZ?Mp2){`xHe?H7vw*ysb32e6>2$orPRY zG$2sVXj#a3Lsid1+vQLma#40eu6KJtPMOl zOXj*zA>6DqaL$Qww5d5E=~9N($2d474+k2k2A!~!jhrbK8X+_mJh<}^ zxzV;&C@D^yMJj0MQlRKdv+kDkOJKMomm{C$7O1GNr*V6BTW1`+po?S%}9t|E88*BZJ8J+8&1By+#o+Z ztI5X(^5!M&h_Ga&@6H(xbnWse?pEp+M}eAiDWG*A#du?@uui&1|3U_plmd?jrLWys zT~I}g)Mw0*_(~(}ZL92LXbxQ~#VYKdWjq}}u)CP`6U9E-eMyOO8mU zZnw8!kU%?bi@M-ucIlRdP_l0U&>{dx03E(b1_Va1SV3VVtzV?zj3^wN-;^cIU)yXg zjdh6@;-;Im(Hs9PNq^X`H8eNj?obE&XU9?jdr*M~C>z~Af&wCvSh)iS7iGen4xx5> zmhdC{l`h`!4``_~Dgpw_2>>lnf^Zf)TgO18fby1R*qn?-09OPTA>9u~(Ysx=sXbTP z=ZY+oi*lrN#CNm97A;B577Vsmv6Fd|!d&Z*>x$dazE^7>Q7jLk4vyApmAI?jRw_qzf+X(LsQtKK?suh$)b^kI64E>-D(Ek?wUYv)78#UQ zJr`X_;&~xdVjVmfC{d_D34BptCKT9Z@U&`B-tQp)b}`EWHO^_<{!x|^?t*}b7%QC- zv~o^bQ%RWd7buJ^k5h{1(TCx>TjGs0)GdQ35a~e^iHejMC@&K!myNQ07eP_8?9Ws| z%|~g3vsb>H5Z+_Hl0JfM#=bT*C#gY0g9`+hZ^HwdERV(B)~j=&!&XDtGo+H?dAj~; z5E^aRYBT95(P4#Gud#_~hpbsZX9%P|#O41zPLa6I4KfiF-xC6=8RN87WkB zPkg-?sO>;;UGy+c2Z$c7tV}33g1`v#?5A$|z)(+GP0egew$ zY0alF@Gb`0&vD_(Mxc3I-kOCNN~G>=6;MIHE-!uVW0?`5z6*3*rpbSHB6}AZP0c-QY z9V}<(z7l8rXAKHqQp0h)cN2DnW89|zATfmsQ1Lz=%~n&(ETbR|QhYu{o&SEe!{Mu& zNvIaCTG7A;FlVW9!ur3i&ZVHLQVNCj}s7q5r26&H;!Cm&{os=rPTq{hHz^QC zE*9(5vmyUorXmDo!L$awQh%$z27WjA@0Om!#5ZlG*T5t?xX5-(3EXDRj>kNec@sfv zkogPz06$FFt&Hhk!SBw+qs9_(7{eTE48K^I*mVy&l|XTB)TQv zdhXvZWJu=Y6KQb9k_sp7=i7cupkWLRIGQflt}rObcb|t=970)={~>*Kk%DPH(cU5q z04V>r{K18D6Hq@fe?8(3EJ0NS`bT6r0Aqml2fO?4sT9!A?Kk~702tQ|efYz#Zn~Gv z0gh>a&=_5c==A89#v?=FicHe_9|^RR0BnK#FfTCYye#_sef-1k$V(v$qPf4WhmXXk z4-|kP*>wvU`Uu*J8bI@}fiia!*ci~;uc2z^8}vb73_X7;a#a8ORz_e6=3k&z&8H`z zZGRgGr5s@r4thik;pyF~6jJ;iUu_m_7}@^$_rg z)QqP2=x=66GBfGu4}~m8%rpV|7}fP3mcz%4fh7;3PBBnP{Kj9~=Vj6~O&h+zd(e(- z0kb#RFng7Ur?hHgC8E~7mwz8?Est<9gbgJ+dj3|IKLpC{A2xS&oh~)ijD-(+gKq@%_){YkDQ5KwvC$25~o620yeo6;n+Y6vFP!DKE zB@KT9??GA8^u-7Si{Z64pr3rZjFlpmy_@yXY>>G!MCZhhK1Vz|*$J5M7$X0^2dVtB z4xtCe4O?0NEvWyc8ZSs`{kn|B^pWJz8WwEG39wCGf@G-!<)H>}f>9a>27!lN>>dIy zrtE*r@+k-KFeXEn2n{b*`TIfY#?vCgH+5Qo>!VGZBPzh8fi|bwzbWUhg&Z7q#>b;{ zXK3{X>Bj|ij{5)T46m0U*5P~28@>Z7EBh>@k>I>=zXZsdi(uzM2+%SFF%YU_3wT3< z1YQ(=GuckQm0Jqx1}vnyg&Y`ytx16fX-~gt*&jhi|3w{o*ev%ddxZM21yB?!gAEr> z<=k$noeJRvIyG(ko1=iG)eimMEdb`b6l|Us6b^3Zfy!fF7s3?#j~0GhJw9)UC6E^V z4X+?y;+uUa*g?={?D@;0Sq-cp@({z;tqjT%k=l;$auxk}zOzOf z%j5rlxkFm3BZkhdWxE;EE53Eo-BJ#O30O9Tf{7M3U)TPn0D3Ja=hxk0fp+@;6iFNb zzY(a5Avclrxd>u-h%7znXsHuK1;J$jLuR3K)x~N$SEx?GNRgQs2jTLs?hpda>TI08 z$Kd1|OBE}0ax-a;t=7UjSRcAWw{|4hSli4q**MWCN#SVZBaGr>J}NpR{lv<<%Q=|l zIHDEv!rylY_&)`3M9XIL4PnhdfSF*ydjeX|zoP0W?QaRCNMZC#&ny*{+J!gH@4yB6 z*-H-7egtp@6h=Tb88)Fa!QF=DXh2|8vPJ;HV~e>-0%3CVVR4F>p;>tINa4h?$G^{}8atUNDpope)Nff_aFuVN7bDR5aX2w(q|nnRag4W!w|>+nBck;4)jQVfiGLG z|F4`>GFl9H^}oHkhxUlUjc7#lo4KpW|H{i(|7~ePh38}3u(Q0S_h@@& z;=2PaKE{O3a-G(}so)HN2_&zBF02NwB^9de@cC!4PJVdc-zA4x-5um<^RzsDCjLM2 z6f1}#8_TUych&J@OGUq#Eek5aWX1yb48+tKti$g9Ej<%a7Kk$kp{?@x$8GjZsZ?ML z%YL@@i1gl4xNZ9zi)q#J7%Y7#Baxw@&{<&2!g0ctzGh?72^g(*_FD!C{)Es?c#+RR8_?bqZuDAIQ&8Q<`?>z7Ewh%!pEsN_*F|C_DW4mZ?c zn@xRAkhlQUo7rfG(nRu#gMf4rr9uE4N*M&er`ZHi(1qWC1K~&Msp4=8=L>zqnB8%k z0+DO`9Wkni1^9eWG^v}|)dy?}pz}U-$aO~#K!;Q{NEU+Ve0Gq+fg-$kxR7} zi(Yfi4BI-hzAhkS1)H zTX!VIefw=$Q0p{{$xRzl07wu3rh^r7J*0?!)h%%RUyfuqEjkYhZeu*}CzcP~NJ|M; z`iWY8bWQMkS86(GC#5Z#%2`t<3W3`OM4DlbYO+q$fviv<$l zKM!)YG+n~1aP4QC^lJf^TTfoCRYMi`XoK>m6O)gXnqel+`9ozvK2F^880;B%!+1VmYc0k|7 zijq(uRx+7$|By#5TYd`v*xXw%ZHp8)-sI06;1^V98rX5=Tg4HypyvvcxcwOi7(pUL z{~Qd#GRt7+`=k4Ygh(LoV~(iNM6jV}Q7dbX`e*~J1<53Bmw(JbAItaj6-MU*~VlRUtViD{Cl^!!C7)pR_G}W_Of)XwaH*v1s?ydIxc8zPH z#L)ScKRGS^m=Lc|1up{Zd3UV0*j~cZP5xk2yOVJVTL?ztr1d314cKwgkOEuu#KQgD z;i+6RA#Z^P{;abR@_dgtPAPDwVjo*@07RlQa-I6hPU1bFl&oSu`>5sF!SBP&7rZ$&O@ZcWp4Vrwf{A`Az`z*Z zgTso{d>NU^ZqU7C`(^w0i)z=eeZOe=hWR-vSC803bNVEFC>6 z*{IkqoV5~T`NW;103Si0?l%DR=m7lQWOczh35v61JnuU&7DF)HKH=^wXsqstT=R%O zj#|Ch()L6UJ+3UIY~0&l-iN$vfS7z#i&drBXzDfIAL#YrT>v5e>3 zaE*MPo-V9>%bU@EfLn-!vK=k@d!rMR(7f!J~ecZ z<^?1Zv8|IA3nEhQ+n6JG&k#N{2fB&_;Lc=}MJ21EhWMk;Gt5q4e#Tw@)2IaCJ$YLo z#B4MSnXvW~1|@VK-260a35uKK$pUm|6?q)qiv0dic+S6H?O8eJQ}w*j2JyzjrfQOH zFu?(z5FbWHu-!dcnYfh|f->j+F8;^i;=hB2!5D)Us;}9&Iyh?R9dDoj6BU z$8ZDKx5w@wSl?$LpvX|NqBbtF&O}A$lqO=Dj7QE-4IMu9#7JL69q%|pC(rH6H6}0i zFblr;A%8DX+4#qSFO|I1QPxVqB3)E>E9M$>$l#|zZE+Wtj?*Xy)0I-7qxb2f3(I#q zQX46pH`phE&0w=5`kH;9oqR8-0ozY?AEFC|yO55wtafN^EY}VXRq|T;1Reu|i0=Xoq_^{ZyBzW`N0E|%22@w9CPfy+FUV3A22%9w zl|lTJF7JMNhJDi1sy~y-|deoimRE zr9xqG~VGX316AHGZP(xw?Mtx ztIzD?)t)ExK`0Ps9~dosxoN894j&wZOV9Xq1A@T!{6%GgQXb1!5;a`dyB_)VQX02n z?7cz|tq%Q1MZ9L_FUV3Pu1G)xb;A@6oMZ_TbfM`e$ArD#`%JJ#4SWW>bz$nqxaQ~( z@|xMID2N>FDCI9Q`1lUosSN9z`$9%7I!9UB!pIkjGb9+s6i{fNA@X1{S|e1X=SD5M zj9v(Z@wAg^6|rb#ubr68;Y>k%v71WD%6ii#aR+*Zex*PJB<{vPH@5Up7p^ z6iSmX$D0ZSNh>C|_OU>-C4OfIjIuwEvIP{*dBbf?6giLc>=*@}uhy7OjMO>X;P0UV z(&4+^bG^wy@sq=VJp%4mp%o1*&5kB~L`4-P=Z9Kq?ZBf>3aBuc!g`juvH!c)i;A`V z9YUO2fYb4*$|s4{@s=ILD|;?5i=ABL)FPZ^LMgW)fbBIkKuQkP#+^gX`yHu8Ol+&0 zoL~3u$E8}7DWk4SRT{ACNR+{T>a+lTxP9|?UO_bgF{;I0j+f^*x;QhZsy_3<1^>8{ z*8(p9;`sb5mO|!9aF&Y$yi4Ypo7ih>#mNbvy<{4SWk{Vhr8A-kJ-6g{3t;bo?@Mv? zz)iA|Ni=Jtx$tFPyImvRFM1RQPyj#FUnofzv$R1}{MFTw#)rUo89)$w0tik@Illq= z*i_sEYUR8RF)*)ZMk$dY@|+3c$xa3x7dyyKzNfef8#p3eiXXuc7XU)U3qJr^z{6WT6~^VAgOC<@IlKEiKtM3m#Lf>%8;#0c+vPq62X}AI@_gN?Pq*fd4hefHX*V_IXYyZu#5!?5{Dc`UJ^5DDAaY8=gBR1jWxi4 z4Z#VJ+W8{fVbt;&3vh)RPVG&?99x~bSNdXDPZnC-i{wTs|NcJY-Vx2RcwRK&D$Gp6 zX0p=olaoWo_4!KUKUF~Z+^`q?G1yVbPj42q-{qzH&B6`$Oq@JgAZY0^ z%G++yENk>e(#slsK9jY`&*dE~_iMs515Eq0Nqeu<9hfql7I-vb-wO3Vb|Xu83qzS1 zJh?iVXQ|5j5yOHYMY#4hp!P?6RU-dDgn|G9*&#`S^I=m;FWE;b1nmL5GHBWIlP5-Y zkZ&xh5GpjXLOt`Eb02F{dJG^+4epcuWnsd_g>l-EY*-9(5M;)re{@^N_WSJQ;>^P6 z#iK)FUYpDB@6I#eL+Hz1NzgoOQ8L!ykI4ZHbQ#6l@A|)U3nM8g{guDQ9hB;%NKKUD{uF6^W zZjW&a9>u8>&WE3U`=S(+K?4y7Ib;7AZ%&s@=lx;Qz?{GqA*Z0Iw=K>yoz*rT=l{J- ziCWC^M0wR^wmxTSu>{yKRk*-;E(NBnxInIJ=!t}9-V_MUC;-!(#&hy+IzYw~mAV|0 zIgKCXvK|ZdfX_+ZFHUUZ8wc^{e&?0edj?O=SBvMF3AxU{wq*)ut#`-^`Vt}%P_f#2 za*p&h+Q!wfQ#iPqeO~! z>hPoG2@TG2Qv&fDlo%a2t_ku1bTCes{sZO&M*gj-5PcfA00qtJ`7TCNmCn+I<0(CS zvWQ zr@iC$8#_oK%-5&I%XIdN`HFN0>ZHj_|GM<5n0KR^-G!xY7y7Vs3`z#2r z+27wSFHo5sWQ{}L%QB#5z||Ak%6f<$&=l1`&lGC~kp6Hobf$aH+6h2?dbm8QS#$)L|fszfhJZe%DXa9&(0h3Ja#RvEoUqfIs`UOWm@LjQL&#? z8y8PB@1G-9bRXGk;M5)@R@hm?3B(J9&fjJP-d@RRQ78(v;Jf#CXhWPP-C##tY0uEE zwvOidjyZ(-K_#mA=CJK?-{_ zT}T=cR7vqrp;}2!pXJ$Y3T3D2Ck}S8R{JPmrJ{6)20mX4_OFz->_qb4V0e zKOYN&k`+K0(CCP{16F)W+lHx-Eqe1P7(yGu%2f_32RY|wi8Ve=kmrNNe;ovwo#eUY z$Amyuy?wN-@s2gech0#R_LOi4Xa!0a9AF1E4FwE2o;k?MIG-6Y9OBb+t>c=#Pvq#m zS(8!HMZuNJcy_~!EZeci{afNZ5w3l$Ktnrctm6^1BVe30Ybx%*QJ+@WFv4;x3`@}a z^KFASYYA$u&(6Bv3Pohv6c2VBFQKoc(1NZZ5^f|F_)Vhd^Zo*RO3Kvb#?CN=e>@ zRxcBrkPaV~6p+X9!kcXS2WoC3le4Fod6OQydCVESv_z;E;|ha|8!+oO~*0P^BHYoC(m%%qq$Q4^ikT1QqTocrmcmM3Fo%`YDt>NDdZiDd%BiQD< zPkF+x#MTV6&UUeqs^?Ost|rqks$Zi9j^Ds^i71#1!q%(9aGNi=p7P|&>?9M?-tQlj zxVMKLCH-d6bK5l5Ym3D1_1Xw^KayFXoxFaOg!PB)uItz|($YSXbUw4NM>=fy=bf?1 z#JIhS9`RQohopiXtjPLId4YsuZged>up&i54-DR}8`i@Dl|+Gl{B|qy@XOw5(sj5dAf{L&7O+g&5JPLM;3J4mx~>$(BG!5$F4W(MRto zO@1eq*`Hl9`F%OB56Av=lLjwfD9Cz60d}l^PZZ#ka0gDm$_rK|mTKVfI%?2%CaR6ekqycy|($drn*8p7|r_iWK;%Zt94)o=JM zVBthn+W2^49PfA%?>uoqi|NLX-NA}*5Jc8@1UgOGN$pG$oIZUT%!!rB1sV*4BJK+SWI|z7s8*M_TT^#6P)~Q213kU4a!-yR?)H9HGQb@mK8o~HCeB)=T)`(L;(A4W_~m~ z`);$a~@;}!u!;I8w!DAaS-^|r?FufuXeEH1!jt1=yc6p)>5Jc^JUoi zE!5T-1Z27AOiGB#2(^?VC!fAYlt9_-*3;oyhiOhas~{93a=<@rD-0MA>d0lRjbgO# zATrfS9fX#+em=quc%atB?Fg?M+Bu-Kt=0EqSt8hsu?mylsqw4Q&$7&hGDXsOAb7yI zPI%*4lg8eCWAO4=$KhN#Vv`B!LiKBvDcbWs=D;GSzGBH`O5UIpjZXDul|nc%Es+kbM@l{6NAX z-9TRuv4iFPZh=PTIo|8#JQD@MhM!JTL+h34ofd!6zH*MB1qS_Ti~uPe6$%Vua15b= z;gZDlv?7(C%s4hj;^aZMDPqUPVwCRpMY9iApGLgzmGYY>;@W_==)0OMEIK|&o;*d+ zg>k-Rv|AFj)l`1|$-EjHq0hS(QCH|b8PrthJFz+`F1l_gTCJ9Uf$)~u^?%xX^KU5h zKYn~xdzoaZq#07lURk;=W++7xEh1wY=_b;cWG!YB*H)L(O(mgCUD>kF#7MMULdak+ zma>gC`>dbWcz@3KANc2yx#=$O}QUa#l!cs`$x=kvuUT2Gr@j(NIN?hAqkih(aJ zDe1AWQKmp=X32O7`duuxUb?n!cL0o{4Lj8cg-&IQp?@0V(o06&j_F>6UQgj4=7UPk zdv7Ge%7<==dSY@`S#Sgy)eH5}_hZ2)d>JU)tfoU4OT65u8hA>blt|%CQZp`OHkUM) z&6n?7F1^UE`W3!$xiU~DK!h%>D?cwMNm9aHCYrS|awNQj)hGlz@?CR6`gUdOmiSB7 z2#ZJXL1n<#w8&fYmaFLsVmkfC!SS^%KEPa8!iWe zV=GqvC@@;&mdtS~=ec1LDQ9~P6@<;!m{rsy%WXfH7C-D^BBOXg9le}MJ>0p#$Lg!#1J5B@fxDL{*)2{}9 zFt)a(51JpuaJ9`!N~Uko#sSWG;90j(R-*V-nB>)pxD3fA@yUA{fS?v6Q8^|w0tgsD zTHyvHzJ9j}P+6C@`N&60ziunKInTCY3GbM#DdFQDM!cqGm;si5VJwKY)lOYXu-zgiBay^ywXlp z(nz?5=+s1b)j&B(T#cu$OJw!@wtln>4kRVqVd63zvz-(uE^S~J`~ry?a%ckpGy+_+ zFnpKr`SOlU7ay&G+63b!l?y%GgF}AyoGk_p6Wg`V`P_6IK zr+#uY1kNN;S?5ykl=ZjixW<_{P0>4>FhaR#&2&qarau_SZ9Z8gl^kzM8aBwKq ze(gN9_dVNE_;D=L!|=9(D@(U#M0vIIc>xLdT+aT;j%tV^9tJt_;@9chux-$iBaE{O zEsjsg##!65BQce^{I#pB2NDy0SY_sh{AducF8y<;Yj@UID8i~qaDqM5NTrVY7sTpO znTb%>zPg}=_)2!3Y0j5;XQkk_(ofkFsUmupbwox^BGfE2R(87k1P-xCnGANpr9(}0}3!2!lX4Q?X;8L z+&fTH-I{+!9RnU-S(mGUu&aVcJ%@RsQl=nA3Y}}AX>s%rMX<&EBF6UM53gn!`z~ai z*qjvr5uD&~MQ-XVp|MngHZAoWaa2@oy8J7QXZ>-SHINofjPmxiEEjcaz4~TM<1B%p zV9FS)YB0C8fnBvw5U{fJO~?Y%3E$J`T|9U_Z9;IbGy1i*;_E%~AuF&^5crKbwf|dF z@3na=6!7#CER{;M;U#MCZ=<|Z*(h6Yjb11T0iD#vM9Z>*=WKDGk{;hiroTswf0BP| z-ao!UK||gLdlAymZ#3iH^^SMur!a6nG!9*Vzi7ZaP4RDFr2B;Izs}j+OZ+&LQ5~otfmsa=2{*D4_ zLirjf6FgZ&wrqvUM(u8eUR8udq-@v46|D7&MP2(%`?PE6WH`P(tQepNm0td&r3o}90QLQep{P3OSJEuqt_VETP;qJ82{I5uV z^1>nV;!BxkaifXN(*bGJfNsvKelow4$ocVOadR>l+I3Ye*Bp!wbz8bE`Rmg!P=-^j z7dn!o?=|Rr9og3?JS|$En~;hNu37&}xuwLgFwhACBtTWK`~)c$Qe}xbqcF2ASvTR& z)8TXt1T#!#g_wt-?rFFTgMKwRFCBQUy1ds`WGKuw!@>Kmp6TM8N=7rI!#>L4B>Q*} z`g$tw)g`v`-D&1`PAv6w5t+P107;SyM2@!PRhfhd>{K)_)c5o zdQsWG^t8EbCRv;T>9jao)JGmQ7qpp3J4RiE`%BNwf;1MoVj*XF$Js5;dLU)v2jWyb zOh$(W5|L(btHz$C(hGsCeH=r7bPjE>_MNUBeMeV`qc5p;Oj`@U5xawk?l8rQ!;BR0 z9z!#>qn19o!Ov)I$mFILm~ES%ZM;Ljn$qLLw@hJnc-sMs!+&|yuk1!fIzWl;jU0`| z(0a=0+-j2^2u;3zZ_X2>r&C4X_u?V+v6dn)sUNRSwIT`xYALq!Jsg=OFkH1dldum zH%UdfH9syJRe0@WjdWYdc}F?w;D=bJ`4?& z$91<{b#>3UdK@|95&Na^zrpvUqP{bQ9F3`Jz3Tj|a{H>P%B9{u{$Takc3yZoy7k?( z(eH&jz(kYr6XB#0)m@YOW21TJmV<{>`!9Flr6te5XNIk0nq1$Lk=CU_YZR{6)+qZ? z_X9k_RUP1#)u)!V21eNmZCxW{4fLH2^i&DrRx%c$2! zVOOo`8xXB)Ag;-pu){$QLeF%YyT;J1(&4ZeIxoV{LtBzwVumgnxK+v+Qe1oXUn8$+Gse` zmgwHeN{o!WHEk#}>C;!Z9Q*33@2XWl$fqYb8yC-gX#ds9t1ThFnM<{z(ak%8_?e)I zN5)yz7LVa+T$v=vvWR0v$2}zpc}bhV7)-VPZnc(An3O;W-FIHuA%}5}^*S&L0&0Hz;f;(g(_?5Tm3Z{4t$BOR zb%)+^T@1=r_wX5yxG#l&%Oq*au#;fV%8gjk_|1G6uCb7xE=(D$&aWv5=nC&0&UyMk z{7R4KKFY<5&mAg4-(>O5%w&eJddZO|21iv}7@<5txusyPQq=a_<*M70ileY6xvJ!Y7*s4XKPmXZxwBq@w(9PZniQhajwPZ;0y0? zjmiAMUd`EjpFYh6W+B;dijpT_)=YQ5Gvg(h+5^)Rt|17u7CKLf^1~#j4VMooNrP8g z=Ga7lXhM4hBY!VY9dCWl3|!&#K3HQaeY?EX3cFd49B0`-@9M^+48G6D5#2sa8TJs6?@fM&?kZ5e zNoeQv_OQC=Usi-`EazV7DxU)mm>2qdn)!o#Wk_}BB3@mjJ1KG=>7$HfkSz=sg$VC9 z#i|9gA@<=bJmBC}>j3WcHt^-LkIZ;WK^@gj&ztIk6^eZ!a{550rzWmtZh7NeyU$hftiT#G${08XsVR>^{c6R z=|wvoA2l?1d+5(=ifgKA9&KIVhAgK+5qvEIEAxVA<5w)e2{d%ya%_oNwQAsCpGS$XCy_L~)ScD`P(;H878 zHifNI^s=+fZ&V^YV`!{y*#T_1T~V2@zVYnIC)OI{1f?+df&8R!d>t!s{N&i0Qrk1igN z)i_?bo24yLn@`e0oec{1o^;M*{@X~R7n%J#mf}^pb z8!LI7B)-(V(^m*Rd-(JKx_gSZ*uf5YyOh53IX03{yf}Zf0sEc(8Z@-8frVPv$ezQ< z?uAs&%6*Y?UZw&&q-k+SzC9F)h(N|9LP_f#ZJ>4sad)pt zv{pEfa;AK5z*#*di%=Egt!rccR$m5Vj}j54*|;R+S&PD2h7+#PuJ&ED9iEY$`=#(| z&=$`uGkhUSDcl`OR=z=KkQvHMOc-V^h8mLw%AQeXws|`D1>&@?G6T8CGrGd z&^8G$sf3#)lX+l_1vc(`W`q8t2efC>@AKE+?onvx!@xtsPXPnatRoaY>I?-uZ*bzD zU=Zeo&v0f4a&+U~O!t}u*0%iO-F>IjUu(#D4bs=id4{iz30YHth-R*h-YydsPvgR8 z9~u?pJrA^uK6{s&)xTb29PyW1qDq72NHwhLjR*O3A-9%r5xYaYvAfxwwzyb1qp=h^ zx10}SlNzX_&Hy`<^V;Zk?9)X&z4D;H5B#@ro$!Es=MiS(O1b|Mv0aH%@{!h?w^|G= za4F-9%>`TI?JZvaEak&ioBGacjq>FR(_t^P0n^m%g*LqiLJzbEMK&JLmQ{P!=s*K* zoD4%DH^nj_L0NMS3{8c{N0c8Qh8d~*72%ZSYzBa_kBL_-#@S{&dda-izra8`sG4+M zUSrQHhzQsCT?U{JrR`gl=~TMsLMVfMwSnq=7wtJ(@V1k@*XfCtcEt+Z`19^q+G!TM zM|SwJ{0^cic05p=`|r)xU_QE}FL^Mt^O3?0|ECe4Cz)CEDp1xu;$SW7wy|iQ3%F?v zNXyd~(N`hd+XY5hlXB2B)V0S~Zrm~`yuY{b-@DN%-+_}_-lqs~nx=|ZEyD$OO;Isd zP5m)A?fCzlHpLCeD!3M|F;kWjt}$Qsx`0)=q_LboNOd+58twe;GSGN!cvn&LWjg8A zoex9@mK3A}(1b}zQg{F9$_0=SIX0Sy<%<=bU250o;*XH)&2*WGXg-PkI2l zK+SK5^pZXdW-E+ogd?L`>~P$)%XP(9NP{(wH4e6^4p~XX%oDIQ84idVw9QBBJ9w%^A7zn%aPCFee6QKDB}PG!fQ&^2UC`0{xV!#_!`;5p|8GZe zJ>Bx^OLvfxdnQ8d(?8{@)3ieas)d^#SS}X_OKiev+$q3I(%7|<8@x;o;>$MUmnh}+ zi7g$$Ly|D}x_!5cUZT`)w?N=q>M$xv%Uf@ypd2s_t=%l)ER#>oG|NT1cMh128 z(v}+;F6QVz7cUqkJbBU>Id|4A+$~&6T{qHY^)&ze$j?7^;1eMMp>RMcNxzp^i^B(HoxzN{ z>5m#{swc@=+Q*PI)CKAr%1-{-ssBfTV~e$Or_sHora!BV-VnD|lAUG>>PV7(>X4Yu z6JGPtZ1B;S_Kl#s#UGa(dx|y?PsQM+TQU+oB^L-L_VlJedWbP51b+V$tTq5j5JCY> z-Ty}7E_B3HSp`ksZRF@L624O0qG{ixCrYKt-}hKm%_gsxRtHNiuxM|3u|0yE z-h@E$fLck^gl}d?0t?D~fY^dYv;WwVJpC63c4ZOnp>A-P5_2VTZ^$8C%#?ycUKk)k z)Edn~K@6XsYik!RxA znbRbZ)-yvZXHkHbsC4y;2DD!Ud?k)`V1suJbfC)y{3RF5I@iqn{FONS^>!kS`85JlLJ1^Y`W}Mc5S4G>1ZtRU9`)Jj?66gm$ zdhNWn-0k=%!Szdh*}Z9HhoBPsg6CN<@d5nQorP3z1}@gZJ!9FKQ5xrc;dKJND?e|6b*Kg-ZPjnpV8YA zt+jUO8Y=VY(`wIgm@A}WL%M#PMv?#E%`W@D2>K&<=T4RnN7|Rq{K*T8+BjRAPou?l zmUkW*a4$zP|s-EIT@?`KU*2 zn^h8c!LedJrm;Wc$&>eY!=UP6Py@)so227j_(46jnGF4rdyC>UO~~N%-_vZVBr{yR z-?+}E?$UNiC6Z$CMX;Cyv1U>^AnWjFH{ks0PeUM!wsf(Wjnf{jqsi|_%qq|N5 zGrd_CYhk&`a#H4I({C%~r9!O-qRNFh!oQPp26vD#9N6_(dLcTi#K7DH@xn}QQ~_nZ zvs-iVa9$*BOY&!8?6!kJT0pd>V>PQ>!ArykDckzsDd!NcArLR-&-5X5D-2iR-MKLR z4yC2@k}Dx?myG#Jy#|S%Gg@qO^&OJRNeP83rbO2Kowr}pm9@GObr((-*VAsGGc}OW zS6H+J%57XQ%OIzPSw5b%qOUINKHh&p6=x5{fw!R66LcWikZU(@3jWKdWyV&-k6xK$ zkJe$A-d2p_A!E;Kek3>wR5nUzNA!HvTs;aD*Wiy9=@u7`6!eoG9RzdvJR7f`lqM3 zHX9udt-A>EhhnB629uCN1gcYugrpZDW|Mz$pEdhJ0F2?5Osbysa}769T3r z(+lC4^RS4HStZ=5>~M23;v6w&f*^2ZMuU0?WgIa9ZMNTGmqbKq<04l^67X!&!)uirVjyh1#v*DsDIv}H)c zl)r0QHZLzcn&$ZqqBW796KGstTCfD?uA5bX&Kj<#7e9@qhn(~FTIJ*d`4w)iRE_CT zz`d4$2n*B%)}Mz0mVG9Ow_HFwO&kc{r5zUEstO_3D!nAX=jZ4DsrQ*JE`+#3A)Q(T za6byyiabOUvj6yXeWd}EqOBjlTHz3+ROOS2q|%kRI&9-oTn^nSfyV41_tvp571KCR z*mdaq;s<&)o=LFslM1p0(VI6%72Vu4nG9$be7E#@Yw%c`&5=y5v_+B`3C;3H|FL#hqmoZf4-TYJxQ4faFSA0??%XKlqxk+GjOAZ48PM6p)8* zmD%B@6hE|RfDr={CLeyd=j|w0fZcRQqUk9OE|v}~(uzFZQ=+0o!{>S@*)T|9unCgh zVJhpfvDQke=dvURwXBUg9!*YjhchGpD=?Xrk$2}EMNTe)t_jt*zuqZB$8uMf0yb^{ zbRQfAo}&#g9C>9XDi&KXVe9y&5+jmC)kXS`uQVV~s?%R%`e*eo zQVAppDM<{TNusitKLvi^-X8*Mo+nYG^|wwuLjgVv@2dt3kf(O|>tf1xU~bC;QPI+P znSQIRQrg`iosEdHzAC|Du~Pd^(exs^GrW`l8L+3%&CL;Gw4i`P()-GPYErO7@M<1S zpC`8tqnnp<5~M&G_0yIC1v*?`Qgi-X4hnT%#pCi(oPkVB!qZ>fkQG|ciwJOYE`q=1 zCj|ZLI7Wg-aSmPz`c^oz9n$$Owill^IZTWDqtMAxwkYH|WN^1no2Jxa)`ct#;EF)A z+>Q&?vS-bB7T+Slt@J*wV_OWNt%Ob@hH~2}L`9(;NM2Us4H0#buwz5e%6wTbRVK?O zrS8X_&=CoUaoKl9Btv;p=eGA+WfDO2;BY;q?lkwV9g$&TZK!L7!E)SkI>uVb9JHYj zjWx-=Y?{=aCCSiow?1Yqu8gHtYDz=N!Zs^uj}O~omKa*)6*6eHB5&n>Qek;utR_?m znv;`L&;;NuppPz$h1|Rh1j7)@aW(6I;{)56uAKB~=qC{)dp0-Bz6u3ZNU{2S;eUKNM;3sR9tL}cEh$?q?8 z*>?mgnPp8^3v+;E&=QEqy+CB@yRN8vAK1d{U6`)wly)9zB}Q^HO&9n#Kgn)CGkv;w zn`{h)~ua(EM$IW~Pv zAnaKTFI`C+79JYJg6sTyz4U1E7V%-Q;>L7!SZy4T&KT9`nd>#zE8qV!r8v50OUn-p z)U=Yh9;UVPQx9$GD|_Y>IpQ}N9F^fWae>5FUt06eT_f0w=Zsk!IE5M}<)k5rs8RD#xzz&}2vSD;cN?Fs`9 zWRcx*5w;j>y{tX`zDFl}Xv-C^GlVh})n*~x^i-5IA_>S81-HP3Z++DX1m^|_zrcV1vQgJ|+^;!+u#RE?$l2i)?7YWC+~sv6B(di6O9<%v&C55V(18e-yH4Di$d1CGffs={EvRq8!ihw?q)r0-^ zcQ>fRT9X-<7ZEXbHEp%EH4!ejv5g;W2++!PjA{U9P_iC5-ogh%E2()`$ds)4H-EZ^ z_G*FnTh;4EWiWQhB8vjySX+@M3(o!ISdTTAE-zJ1k|RHvS@SZD7n8z8b#vn83?W$T zKmKWj*E*_xkq0r8N?#_G4DKlWTttRwz$a8Hx{LBEr9a}oss>Ae7uE@u);PECQgSW* zzX~{KJD=ct zqyP8@Fp;^EH@fD>o$7LtB{;fcg5Y3r5Lh#n#v#$TR?;mAY%5y-@EZffpG$}Xq#H*H z1N^#3d{eQPqSLdbTeHrIxuv(8lB}F*x}zhOAqn)eq+>sbs-uz_Q!_^BJTZxYrQ_W z(X|dqP$oPK&3!B+PTpOP0DX&vA9|#F%B3s`7t#6PxE7rPaW}Z~U}>T9mkVAP>?r-W zAu#U+_WZC`^Fp#x^HQv{gj6mLFkaZhQ*H6(#?s3O(3k5Nt=05y9~={BPVqE1ksDpx zNqH!guZYlj4sjDg!YJo^>MG*TNqS6Z_*OKwOUvwcuA{&ySo~5`TGmBPz}6uD)lrQQ zOz@$3Kz_6kgXrQUGqnQnPN#G8IQTs%D~5P@IX^O2Z7ljgg^9bQ@W zFys{{M;h}>fzcQ_oo`mU9M=Vi>XMvZuBdbcJ|Fs>0G*Amv0B{)@YK~npxIz39}$o= z&Dwl${%30RJ|rbM4@+d8v9eMM(0X9t6gKKO`0jzs+H+5P%tuWxa* zv)$S#C0L~ou3HDCg|G{yaL_1slQ7FA^gU@#bCcLf!qDF4j)+%Yb^%cMyA6Hv2#+g% ztSxE%Bq;;M^!bs%m7yDwSN=Bp_wHRLarD@yS~KyoOI;$(HtS13{?@eN6#=SsQss*Y zN@caRc@^6@w?%DEgc2g*-Ap+16B6JGTI{VG9Q0=4hEkcmfSMlpY=HY=BP)b808x+SCI!=_yuU3_c}F2DU-(OyT|cxJMGw4l!7A@yt=(EKWS`%?8vW zvP1)ZOd0X9EgHD|@++!Rz@epjbZeVGI&P!-97X}({!(-{Cd;XR#e508C#_>o|Ca(` z*|;ojGu_%{woPP75|5ck0r^>L-~raU8M}Ecb~8Y3ptETSz#22kJG1gH({HzpnH}ua zs+M;6&898GC%WYb(2T7x%X)fG0BpejgByOi>Twmca*AHKKPzuT%URUuxSA}A=CLFZ zm5p_@-bw(yL~emoG@DFmcMldvi=AU~R=+-BLVNG2)B_6Iyj_&8FQ`lxw@y-@Oq5?8=XIOVz8#SI6h#E= z%joO6&}ud-Utt*Lrs6ONrqQAj=3L0IhQr`=ELP9a#lN)ynY2T zNWf(#?s5y3$}mh(C5;~TXwN>DYX9ueXKZz#5OO7OKK!4F91}6P)b~Z$j9<;YzehZU zK%Qj5MpIMMc_Y$v+C1E~njg zE4kvb7%ZnFGyPXGd4=UEY`%9xVlkGiwc@5P9u`0YnMnq6_s_2f>$a|{OR~~^Cj7dY z@(U!xD-M_M)UTHW%Qi>(m~RkeQdk%Koh0AHaIgHv8$FTe8k_A)m3200{Y#GXW`H5N#K&4}_B!2Sc6>i|l2!NS0I`;#B%Y5h3 zs#^2O%2@6|@t!Q-Gu|K|d~0FYQYzcZ7Y#(K4xk((yTg=TB*{7T!bq_UF9yb4-_J-r zq(`EKt*t$J_OS?D1W0QBk}1$^D?7h(6@%3QuXA(v2ssR0^ZaNs^;EZfOVD>CdO$^KdWa}V4p)=afCmyyOnrsx$TY^@Z>A; zlGX##$BrOQrc=w@R3f@B0_N#m?|r7Oh6*t{u;+enyaS88dCzc@3bvjbUYo29(NMfz zAN@E#y5yhTQ6XypN&tR>4cc$XcE3T{l*;aYIWq0WCl>BI0mw3{Xr2 zGZ9AGkL+e5ug5YT58^yA4$87Ty@=svxSI8BoIv5{uF0>T~kdCKy8OIf5v z>3Q!nh3@zHnFt{XA!kR1%s!r~`SECp@3qc*0X#E0en4Qg z_Z&X9jC+H}s3WiU!YXTVf%ieiK0XN%l%4g;JB1qa%jQe%Q4R<_+Q6wAHj3hY%9_QV z121grAZdF^lR2jo!&mdVTgTjSDd+BI2$Ih=;Ha-@=8nDM+4X|&~)+1lPaARGQE1eQ{k$o zx*vC^Ynw?+$F3BkwJ&<%m3ANY)kn|YGLE9hCg*_$xwwJx8_)Ny5Gncxi|3nxHvJkk zfT=G*>zttO?15>JM*)E^>jzni2AOz52!7w8E2)CLMK0voU`HzV4)t3emD4EM{*~%n zn_0F%UU@(az(Ry?E{EgxPW;P+cYi{HOKmV#YS)w-JQ?k}*+Cf*bQfc)em@aOLf$%M zbZL3Uvll_30`EHwCMKi;=augDnIhrog{UVJL)8ST+ms(UTZs(~2PP*94d^PeBx zm6f+Ys~FQ_wL2wDao$9!eL{Wo^oB1Q@`K12e|cLkgZLzwjJ@$l=_`pzE�vG-9s; z<{{8(7K5vN0~~>Jsu8TNH&_N~cJ<1m{+HGOK;uNGBA{$xRa}1l zWhWb#NqDm-?|yrZBIQYYP6Fj|&*z5aL4CH%Gvc0No^_WCd5P;O5N;Ro%NC~vJT&BO z-m?v^Rr|d&qHA8+GeVij)>_<~y(lGwzwG4NHI-YVZ3VWP<)^Hi=Yk@p46Yt*>J^PV zkUWw>+DCi#uvD}16j1x1wYhs!f6P^6qf$(nCK+hTJwZxm&R2@VjFTfZQ)UO*{_ohn zwd^KindGErw|94(Liy=vIVi)l2TQcvt3$!RlX}3k03pJ|3NZFnDD1%w^i;Z!e*V|ltkFr3C5{% z9R32vWbIESM79G;OR3ezw)(5Jt>x#&QMY503xrG4(klz>2D~iUFDnUF{*(nI zfqypDPuS3b?#nV5fBbRd;{VN|^vSX@17414JrA1xE_-3~#L52@T1}YJGomK4_)2z~ zcPbZ<_6SSAQUfm#@$Y!|X3~Gj)2nZW$)C|e2!O`#M-JNGdKt(7REt%iuGF*jG*I~N zX6}%L9E&>_)uyH}@L?f$Ft{-6Om`LP)C~ z4hSe%`TVw~)dUle5d3v+SXle^1%NK9>Qxn~Pkw&R6Ov?RQNkpNxW^YW;vj|g+Ukh1 zv+A!+RDSN08(g)@GINJNj0_AzheNbFn%&GnCzTA0pd1j#b<7wK3fy|$1Z*03J zbg-VTy5&H`m@IXzdilg&{NUYEFLzJ(Q|L^4|5KUU7spJfPx^E6gq7OjZoJrJhfs|Q z={(9ZRhr+a@}i#MwS>dVr0_mdY0$@Z^VrdI%P3_uVc?Kal!u$X)KdyIJvST`U;>M| zD=Sv$K*zp#a=Pxa@?25{r+hM5^#G?()F@wVATzg;43yfZH2nB7?FSSSQhjuOezez5 zE4|NqQU|sgMY%dkpo=cfz$-fqs3eAW-#=eHwr~IS@`aZ#s!b}*wylt?1(e~1Z9+)R zC3WPxSVn$61C&PJc(j}~kH^+szgu?ZujGP=U9IDABTC;WkjBsJYJM3#AxgK}Jb!9K z5hM?Y5|+AS_G~L}cs1Gc+HrJ9_Q3^}-^{iN?olA#q=VpwmEfg7{UR|Y>LD63rJuU> zHe~2t;9=7qffLx@as0Y||7>l{D*nejqrR`m{TTiSJY)A$$X+c~g}$ zn(|ML)UM`wxC-_rVLuHf7c}Ov!KJ8{szaah<>H&~w^n#^DvNwiNxiP~wtnU9{T_ZE z3JEy(+#tnB<$(KU0}X|;lg0-2Q_qd(X1A@#cLo#e>Bn`mO1I|y?iu~3JzRgeQlEW) zl=VX%5|+d7$bP=p)exnwjI>1FvMb73falGudm!%YUZ4d-p8mK#bs+rJ)uG1M4x?N( zVLpOAcZ7Ei0h!47ZxH9s@E-E9wZCukCF&Z~Yn{eOgZ-0@z;K;ctllFJX0G2lq|bi?vqc*Q5vq1)GdA&`lOs@9O}PgFst m^#A+w|4!il*9jClOI3emHf*fZala({AV>QXhx6^cqyG;E3J3WB diff --git a/images/elements/png/github.png b/images/elements/png/github.png deleted file mode 100644 index e8dc59dfb3d8e4d737d98293e0c5c21dc6a633eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63785 zcmeFZX*iVq8!&v$W*I`Vl|)k6LYqVwmAXqrB@~U4C}qi3S!O74lNJ?~WKz+M#vTzf z5|Ro@wlrw5j4itvGxMC+=zkpV`+j@BKOOfvb6vmRx$o!vYiqN65pfw2L6Ajz{@Hl| zLGbXOctlJD{zXyIxr`uc$ex`Rhb}xEDzCe(?2wp|Wux`%&>7mU1X)WzIZL|<(w?VJ z4}H47S(w1|Cc<6ct){DbzU#>SkcZP^o}y4<-wB@G#wg(peR zwlhZR!hZEuc=sGTOl6e?kDgAgt*tfp{+yP2?yKwLGZ$=Esc90$g$f4mbbPoI#s5MG zcREgfc0phJ`RMm@?zM&|Po8+3la`Wt7hLq7t2jkudrzfzi?spb;F+vq3;c?n-w2?nc67N+wwtnjU0jCFD3TB`w}bVGB`y< zo;D%;Ztr)8FG=zv^zFtC6N1glrS^B6eAFlKGEjQmo8QVVKWnn$2KnC?c?y+$C$9AonZxpUx zQse<&a)BcsQZA+pHXP}9&>BnDOWe}beTp!9I5q=*NH$3N}2Z3V*^t_&oI1pU)J zxaRpXnGai)?itH@a{N&Pg&?-cmI_?@S6=>hvf|vuM}o%#k&5j5eRGUwr!O7ejuj_r zz?FD+jD?+1?iE)mN%#_S__mfrxJMp2Aam5KE9p&qZ@B-*iFwu#mDy@(yLtI@Wyz8t zNx3Un`~sAX;o1uGcjI`cZKjg-jQlo#>+B3!XWd*-dYLIN)&B|OU|?WXOS03n&9nO7 z4T)80#Bhha(K9Tc(wMhJ6H`6Dv!(jW@2ysPE=!aV6M{kVy0^QMT-@ekVHa~Dp>Ix5 zUR*r$;0iAAazxsCtO~KD6n_Sfy|zGIX22oc*}x`pR(Emd?8G*6@6yH{*}a~dE;X{J zJ}t5`76~;G34M%2EFh>G|9~KSxy zl6hWqD0g5~RrrphTJy^(?x|U=*~NmNaBePxA-I}zl-a7)NKzvO3!h;cZ)kWKPPU>n zM=73A9-iU)jEsyt3Xa0k|3s8VknTQf+!To@hmgutrhphu!quc5ovyyT?=O%j#*|&`E@Wn zHvH|Wea(}->ez^-r8uz#9er@JBaIdOzTvak+v!0G{NRwxy@SC>$ikP2m9OLY>2b?; zX6NMWAnD6Ld}-o()qtudywLUVZ~I9rwoh}lg!-q3P1gFSoPsK)@PpSS?!*&i7J$-? zxv0RiR@96s*)~jK7MZ&y+F@G1BX5KUP#=6K==XS}>Q?}QW8Q02p#kWRP}2;Uo3%+E z!beEfdx?U*mXzjd5%rg>v=M~$oYYc|DY%NUrbr86)V=0p!#zE^`>oT5iFs9*E=(2i z3D#J$(SoWYNz)M?VwiYQj`whSRqwXVHO_VUL-`|8WAVhX#ggae zi_}~&=rg&7`$9VOEh&%s7+#!e)x~xIkzh~4&&>6|_qG@?gOi!pR$=kNM;oOwA5Ay+ z-iXP{9+C8o7w_)`%1daLSW=aR*U>JXG9C8eSgu&?cjSp?>8WVU^f_$7ki=h%j#zZH zhlh2f_RaY<>yO05Ol)YFph#AYtrN#hwnUa68~x^M6k6`NlNtDomZL-aM5m^wE)jy* zyRZ58{y1}W?}Xz@74D-FHw{SBgby3knHSKn5uj$rd~*2W-8;{|*NmkP7?4IKlrHVU z4^>B86Gb0j9(aCq)++f-vwl}h%(;W363;iPcMlTpo!ItQD!w)Tz7bQRRMs`pNnea< zU55>FKz;~uHrS#q$1j{)rT)pn?L*)Iv2hi)f{w5jVK>*}#Dqq|Fy-`bZgTj=T|1o> zpXrcph{+8T$Kpjlxa}u3H>^UhcSM>$%=mY}4Mz2)*vUm$`x=~vSmSZTLI|9QUC~&^ zN7co7OMe)JXLvd=bKhKGN`_z^l~8MuJGif)EoUIfb>~}ahhRegAEZm(HYfy5)#U2}D(}JfiQ1KZ0 zAF8$lPRDuWKSD>>s1ZmMq>~RXUhKF2Yu6G3cNx-d6fe?}FIw{x+XPAJWE=P{@A|GM zl+Qmf_Lq@zgPUsT6Ew@l!5c9#mTUHmA8Rqi_)B5Mgf#z+dBKl~acnh^^m*$yFSS4= zqHV^QYWyzg2jT5IcfJkUx-5Q0e^i8hB=Tze!fCGJ!qXASXN+oX!3q8P{vCHsq*vU&#_u^1as9sf@ARJKw%qTKh+IPr_@5En+v> zIMnf)7#m-jo}Hbo-5iN*M*(j;oB5Kv@dv;@5wvNUspEDTrX%|KS;Mo_aKcL?tKH0= zo}LL&QPGCFG-k-mi0Q|0^Z}~4yFVX=q3sG?jd@I=1nho?tAWu*aCO5|m-M-j)C9|j zPdvohJQXFy?_Dihfwl&Ue*ZgM(*6?PR(;r5C`@=RpFgxc#WF&^7TYF`-aDK=_#dTN|9nhL zOmj(5(bVJhzj?qbB{%wRyMT{@ZcIrorXMw>)Sw+@=IZL+u_-ovKVH0eA$?op;{Hgg zaU9l#i&2t5pSVlQ?n-^5x_EJGlTF4%UYHxz%dUHq8^&1~6~GsfK@{NjZbib^uD?hW zE(3|*`F1o*k-(Y8&DLNw#O?*@(gtQwWpv!J*M`?V0*q09vHth%G#;`+LCu1>+*^XC z3|}L^r89u|F)g|s(l_1Pqq@4fCaMVWgiX8(^jn>McMk%!3uP8B?tJcLPF?>ywp^9= z-jNiwIwAnI+sw&3DV)BG{IYa19erpBVw|<@(zIIaWH@zcEp`Fv0WFg$b2BskaR{J3 zPg=>VtM_Uffw%@3r`(tdr)s-l4(f_O6~dEQ*%A)$#BCId-0yBqYATAT=)|5H5E1Gn zHTuxjDIZR?IIu-!Q%&drcU{_G0;v=g44Uji&MI|vJ(hPd_kP$pnyG?qp~g*b6pQBs zA&wshl_j2+{{2id>L5zAASKHtYnCI`YftyKGR%W;RXB=Dc=I3d=!D5|P+96gCpKUU zX?bnZ0w(VP-5a}}h*~q|)qsup5N7R`!KZRcF`qY;dy<#_vjx2{^hVl2!R_0(*FFgE zv4C65PwR_c`!TEHB&*qlaNaXByO8m3Yf%s3xa0j1esXvvJhhWis;mYUMX_-a^B?$% zX>9v-oHc2+NL^h$(d33V^~aANs=|gT_XE%GjZ zDDs$$5$LSDg&KfP++Gh9RA1&+;X5o6lh*$L1m_yQ-y3oI-@95~bKn>80AEs00B)z< zA!_^EppWt+h$~Rf&L~E5Q3``#n%ZyDEbeUVkZ9qW{k?M6FaE^U(noh`=#NG zEG2wpQofo&Y}$=XU9mg2ka9KKU06pnxXj(Tt=e43|Nf$pNYYaA+%gPt7j}h^{P$Mr za&`csr>9&LJ@v(wXWpV7%bCf)g6N6?cO0>W^B_{a+ax2q>+=Z_8)RvU_>NT=AmJ^z zoVwLQh~=lFt&ybGf0(}0gorEfIb!cB{9JEuxmvEL21x<`{vT4JyZ&J%@$N+Qy-c~H z`7OLRR6vQ{1L38uA$ss9FAdOHUHJYh=?~~@O#Pu<*lX)k-w81W=6G4SemuJ15YB4y z0qZ>Rseh;eIPeHI#hqbCcVSOj&{l{yuB2YW%b;YFvn?F**|dxo(yUK_^Gf)?FY;42 z$f`+T!LO~9z-C>?A8M0eo+p9*-WO}b+d8)!XyIO3P~hLGG!f-vLG#jp6y)^=;Onv* zwHeN>!pC5_vEYwOT2hX1NaX$u}J+e3G5UQ!YI^b7q$(xX5A4NL6CNy zEjX_9JprYljAc_<%{}&cE9!TN#?hJm>@4hRysJJudUlf>%H$H_$k5QYujoP4Z?d+5 z`p8Q3OF7GW{sPkR;2iCht`<-J14pQ>!c>$ax}tc58vmsGi@@(UD)MP z4SN!DoI^0z*0+X*U>v1DpuD83QQ4+HasT^)GGXC^f|`3d!!k^ziSYLGr0sBzqfTfw zrCIt65a8`ac87$m`&QR#Wg!P?<-Q+P;S}!#zvUFSQNr{5<+dyt-L-9TChk0NQkDLTDvP~xeD-jPGL}de*FYcq{YPG4ZGIE*UYzvoy9CWg zECy^1_bPRhb;J8b7|T|?EMP?P$|X`<=9`6>D|@t`XJ)qI2W5nk?77^K2ZF9{c4m1k ztF0arzkW3O_=T#9m99QMqnpEaP^B;>C>M@kgqWt09mL?4?gu2mQC!HC#r5k-S2BaG z)zHTZMPgB=za6}KeD-#lGInxvMAaTKwZCw<*`i9N{?%bS6Rs`HZP zJN~LK=K*QA*q9Lt%)a<1vy^$Le*8&SrJ;n(f;ism)k@$HICa0}j3t&$o5eBHGc&Az znkUaPSmxHiWJDsW7mOPOa2>7qj+Ln6yMly-gyhIaAv2>aN-P@arC(imCa+^9DWiF= z4LGlKb&Ccb&Ph|jo^+a4M*;XiSfIu)rP@DR&Rf&2Ai#2&t3C1Hs9s({%F4?6W~Qf) zDMOwwa=B6mwIBu?g{lx!Z%-Eo+hg@=jcqh4#dl>~jh0u~pzv+nA+!-~*D7RCry(Q_ zeSxxuSyvEL-DF(7yx3KmvELzG(kEhSe*DowrBZVNvpf|Mi!lfZ*uaF1w9jvhU#3hMZ1{qIXkSA7aMvEm0^+y=N}=eM(8K@tcnq0-%CIcmcma zv6e&8NXhOd zG1dUeG>vPvwen1xCU-yxvv{$hSAqt^Hwr8Fk{jEizPGLxfIfxY!f6et?f#`zZYJx^U+z`J$6`YfWP$?ipcq6xx zDUEV75fPGE{cxTxip`Nk_oM>dGPHX0YCH03#Z3@D*SZDnoKOiwB`wKLu4@RaId?m? z($)7A-2cG6J?_V!*)L5^O$D;p3yE0N$mwDo{y>UnzKQ3GMpSQujF-jp%hvz)IIhIk z081Vq=6da-`Sl;c8u)&w*z6TEfPe-{3Ds3qRekI$h&4kWhh!7zy{T+8I9i$08DyjjU%N!fE|aH1>Q?J}Ac21iI^9 zpmTrxL=DMeuhYR;CAW&PD51tj-1 zEC0R>uoeXi9@!Ei&AouZt4A7jEl{XI3r;K$gBPsPRJsgy8)_H~R-c^*$F&nGToRa< zFJGEL_R^Iv(+z*Ns$hLL0#Mf$DBGJ>xPz*($81YYsQOA01Q4A{{;NR*xm>Q#|A)te zC}kXQNZ~S}6z+5`ltpoosv1kw$D^^IKEC@DP-Cg@N1iY`HdjNb=f?w zX_lV8Hm3o(*c*e_i!GaqbnEpzoPr*=vQuu$K;oqcW?#!2QlxvbhJ4gN^ln%b*_~v+ zgBs2doXTl6shy&N)!Qz#dNI~u={5FL5FswpjP(YIz5yPy#i;F3%TXA6LK7RW2X&A`f3Pxv&s!PBlxns^VGo#j&0U_F_;B?e}NLC$% z$o^P>soEAuv@VQ2oZmQuDsapT-;fZlLm*vr`C-P=Za2ai%tX}LC!vJu2T;uY%XcRJe-voUerBDqP} zeDqS{5dkXlel1g7lHEs$nk%Wth?-o4xESeZm(mg4!Q9$i=hQ6)p%wDWDd3_Zbze)bs&nLKt!li!jeD_`w)~GejKI28AxKzYHj$A9f)+zLf6n@9*C|go7me>R-q`Oj17iWa<%4qBm{+ z-%VLb=owB#M-Nr%HKE6-19i@pTd-~=S{+uH;GiJy`U6ZfhexYKouW5EmxV`1Egb!A zQ~Y{{UWcgK6L9$Cj;=0K^ME0os~jX|QoqsgeX(D2z%Wh>{CkKhDM7=*U5@!(wENYv zv0JF`2}7v0D?+Y)rOZD8KS~+RZyuOWIVXdsc$Jlx^S0ZvLKRk2z9^>3TZ|1dOW3ydIczK<{X{n9((Y{U_NUD z9ApUvvw|~uUJ`m$kL10(C`n4&y~v($cSYs+K~Mz6s@lEUr~1?O+=_F*mO z45?i-7YaQ`AlmxaLPc_A8#y;l-0dYZoZIyej;9p@hJBr#os<>$%GA?U2J#zG zKI4LVD@FC*t6C|Z%?k7G#|x((YK87dFb82g(bk>l4H4KI_PLA1Zg~-!=EhUZ`>w!Ie7PoO%{(ARye05l~luq?us` z{!%GJWvjpZe1$2au#S)Z@_dC9S=i7trk-M!i7u5zQe}}*6f+OJe8z~H4@3YGo72+nI*VUMqDJY(s zkSocC-iN=2{nnly#Vc^Qia5qb*Np`mAvQznkQVpem(rH8G?Aq z{pL5l?4Kkn3g~ahio9{G`?b0I;PZk= z0?tbH6M2D2^&FeIFapD@r8q9kTHc@tf=5 zA_*FEnS*9XYYTPl+O_*PKmcVG^_5aMML;a88HLq*dh}6t7J+*-0efj76S@>a1u)2= z?^#Q(_Pl`5*80d$#mwi`l~gH$a|Crn#*@=3zu0d{%G6U<5xHjbncsuknlm`YF^L}U zQNx_pcQ8RCHE!Bp8_u&9be!1O;eZ3dI_VVD{#~fz^3#|`=*PrG^s1h7|B;_H%K{!7 zU_SN!Zx%rL;!1yc0mxP#%7Fj$=D|Fy*0)0g7^o)^EXKeYrP|ON<{phR0?WD@)|}>8 z^Tt=}yU=Z!iehc6a91#p?G^9sA!qc@q>OWIW``rmik#AtB#(pb6MM`veva->_&JeI zNy%F}oP`+Pm(DC+F@qQ^<u3%q$1!qHrgg5Jr$@5vhpcX~hJ#qwA;g7O=N|1pa&cGPM4ggPUhonaMzgfeuZ zyCRex@1+k^8(r70_6x0>>HRe*my5%gZlIOn0+hN3B|SMaxW#!d4zHWfDx7sN9RL6o z!J?fY6T^7U2_Cn@&4wY8RGjiZGd^?7u*O-uYV1Wi#XNWGvsL*cE#LqV=4aZJYS>{@ z-j+wh#pemvZM@Jbe^^XM^(8v`- zHkh&<%oY{3<847R^u~tt$3NyYzziGK`DRAP_F>; z{eROLMtLe6EYdo_@a7fY_C6iFvBnw1?Esq1QYeCW=tFaUMg*rr_&hSh%~&fwn+1|< zKj#J2(#ey%M)o~O_h{Z^>czOw{+OyS)2MWm1 zmf=Am4428yjQP@MWSiN*O8v)qdehGulhTeovf{L#G*6xM-}}hAs&3=y&tJP{N0%68 ztcWj^-i@top>7~T7V-(r4kf_2O`i45z@|BUhissGMEu5{K=Ed5viL|krf7{AQ8C$!X|#m z)tC}Z(1V8330@%3TY(aiPA;Bdr!o5PkWT$x=B!3Jbso4eBVE zwirZn?j$r%yRgmdE<{MDA5?%WXvp1kC8gHPc5EDWvMx7gwk!prg7awOVuzr~Nnyz> z?i+qBL1Aq-@9Nc$n;*(@o7%&W<87$bcR5x1jFH{liYb(v8_&MwabvVyqhakuy*)B0 z756<*2Htn1=ZJj(w}Ftn{x)(l?RwC15K?5EIGVTKpuo zGM`Qb1!g7lAuD*;a#3%3qG*n5!-bBiNB+D0WRPu*~;naQq=0G>A=`-~0z{z@gJKFRLJmXiLEcsj02PeO7Ue#*}U(jY{4mL{7(0 z0|@Wv2-mnWodS6!8>(geb1R}KPRWc9)9k453Iz&x(9xkOXa8K5+&ujR`O&)Z?7UP9 z&fL>fyK!e@CgW!MxBN8j)IoE}HnQ~2xIAfLzG zp90mDfpPS|{+U-R zoJ~YId#Y<%ut#G41?uUB7+s&fLSeac`0Tja?M+8b8&_ykT-Zd>08N?+Arp@Ul^_qC zy!J}{IQ5!Xn+wKR>?R#4U#r$IG5UaCZn?A2C7{Qrc#eCDJ9U~-INNE-V2dnm*ZQH& zaUn2r0G!yqR})u8=bl~`c4Vx?44^!IhBKqkx$>_Ec9Ulp3fRvK$7Lj{#&&__x3|uF z5$$;EyD!aKt(%Ao@Sv7&q_IXB|CM1UW2n%*-n2qZ0tYI#YiD6u`EUDK?r-j}p&+d} zysJ0IgTt2NO^Y-1X2Ys0Am9yIV;X9xqN*wwL#aGq17%(^5Jjo;N8uBsH01LNLM|3< z%Fde6zb;ft^>?04nx6N#J533hOI`n)^VDVHjqiDmkNN9u>&~)5s7@4X_9Bs3EGFb6 zm^W9}sO~E4B|kL_M4g@h4X%ozFAUEthR+j5SbS>EN5hX>t8Hc( z=LD_w0;mnF87TU|XNx9z{2R|ZVSftdhm^$Hx-gccM?E2)U_lRLd&C~ z7;rPIdM_EX|D`zf8|!IL|UXC zyD^h`s|V8W*dZ5F6L5D+pCHZrS0WHoG*hzA++_=frUhuV0>aRT-#X`W&sneiN}r~1 zEsAL76Gde>n{2O?!2m*=g>WDy1S^J>@w;VH*3Q`5GkRufX5F;TnTg&Q>^(@ z-RK}LrDB0*;#qjiB`4QrilIy%@9Vjl)S|K07ktY&-lQR=>?3PSr;q+bmO(S4Fp|;T zKK@RLim$O2v@@swtJTg}O1QarY3+G;V7Q_D?ue=ZbA=u)z4j%z>!Qmkxhy zO8@%q^63W#%vSmCWzvly*i+)zp`*A5{Ed+XFs~O}O6WXHEYyB4K9UW6EJ4>~j>M;* zyo=-kheNaV=gq@1?7>)H(-xM#!|cEtPy@2xE%GW$M&ErDpdk!Y<*F6tohlPg zv$7Al%LyAftyAwImP6tMxi16z1dx`a%;J zP|Sv1DJ$VB&YUCgr;gqy4DIf<)VLlj&PL|HOJ;MnT)Td+Fi*z^=7?y0u} z)pUjJW-+w#{^G0?O-JnBHF9XRBWW{)Rpp~s3itY%TOTJE-P70nB>3R2bd}+9wSq!P zF?j6l+Blhd+dg;b3#)ZxGDa~$l}yQ*L^;H`o@vNPGW779(Y9IipzXz?yR(q5qqBDEXe2+xC{%< z-4oH~(x*dQCF# zhY{a(yldj0o}47^U3vb5=Y$Vut1W@s#eUm?gLhV*&6&1{3pfH?ZZA5ifArK!HRjbH zng@({wR=B#@yQM8uR1<|sq*}_VrRj1(L>_ct6x3QP8%Kr?W=zhewL%fwbf#|K9XWz zL(Qo!v$HUnYsueK9cFi&e7G@5e%wN4{mxsJB_d36dSyS*hHlXyt8 z0yi)=lMDx zmggp(2eH$OHoa~Dr)WxKZYLqLE3Tio0>=I+P!@~uNasHaYW?OTwp|P2RcKir zar@AEB0+;Z_pQDCm8oIJIrV-agQ}3R=_8-`xC^Q5R0%sJx z$C6A1=32xR=}j;yz%~ZbU&LeFTSd`^N0J&d(2Z1EpbCb7e5Cb1{_EH(3;Z;iD&3sv+B^ z+uS}iQy>Y-2UEIG3tna_U_e{&drRy~sR@Do{a_h``!B-m6$sN%Hor~w=u0EDOE)Iw zAtBs~obH?hLuEEoVNn%q4VL}SP6EF$D$L1ZRQq>erD=PHAIugeqg|)9FOTJQOm~`PSF;2w%tVWSS*&@N6m7B_AuZ7Hmj;4h{Eg2HeYhP zVf#RkfOhhex!>98)X>z_TW=_`HV0-EUBhMyL=i7#$CM;X2@IfhOzZ;WIuAWos)6Za zQ=hbfN%nFw6zF59g*UGrzfiwfz(A*&=^(pN?S7Z2*LuvgFH%%3?IxShifQl355F%PT{piM z@NFA#X6E;QyoOeRH*e!WYKx+}T$G6Yo5(a8Q%XD(6CouUT1l$5b$y(god4-w+Cd7r zjPY<;$1tD1Rgh1h9GI=II}yd6H>8iXwz(mfK(QM_oEJ@Lk}}?GCkcrOQ-H{o+N-zR>p;LF>79w zs}dxZNj&fPMD7bCZZ%2j@FyLt3{D90m+AQt57Dk@@mJVIYnQ$jp|)D20B zforg2Nhv`=g?J|{Jl$#B;aL~!`Bw0*H{MXp+Az$zlhOzVIlNiZQB2bXxf(@9lEpIw zMp=Qs1voEE_fJbfDOk`jmH0;%CQcJ`0_}ZE@ZZoq3kMln4|C?z>Y1K!>P{DBqmQYI zS@$R>y(x*2jQ*2Qt70z+BR?M19(T!@35pms&ePW!3bQPCX)KGqp!KfGAk=Cfj6i!r z-UMxdc0;JW6!ddE1}PbQr^$wXqO5aegvzqEh{{bC5mMsLm@UpU5ur#U<_;22{qA|mSvi0b<{7!##j6OkeBhLx+*!RT zVOu?x)OG0;c}Kx%Ffz}V;U7B2VONW3c1Y)<`uSbj;Pg~EJ!g?*b{-Yx68w#pKT>iF zUsHYE>`!5FdglbkzH=@tgBy_%&vF>*T+0c1JnGe?uQTRSU2c|_a|HEWboFD3eNe}F zXtZ34+&VHmTz)D!eW3j!@ViqG&MTP1Mx`|}<&{d_L~5hlhFuXU(VlP==&=d(BT+B&b(x~WI zJfXx};$GoWV~n2*zHB&-)rIM1=34(k>jGAiqms zLfcHeI$rP0P-KmJhN}*P9l(0j9xTtDuB!mtwzD3U7k5q!H;1@%C&|xLy!mebg&PaP z`yB>OzS_LpYQ6~?>v3o)&Nz`bG4vNX?Z*~((dfvRfVY2xAsg6k+T|JzYbzLX5~-;T zMakS`{FPr3cfVO#>OQmjjm2CC-FYp(73#4SFuiv~zHTRlt-7s?zoUmZiM=bLB3@!( zgY@IDNLP?TF5=sBNJT=kQ`$CAm&8&~v%(H{Vx29hdY(_8Hwl8BOeihQywd6ly-Am~ za}`TMUAi6CjkrXWXFZ>hpKy=jLZ$GT>9%d56(3M@oSygIypwIx*%y*2pi@zA=*QqLA3fH#c4+WvQQp>p+k582F z{@}tTUW;9u8^WATvz#R~-R|eh?Lx9)@A}E|1u4F#r5V7uYbInsMf4x5T3NfBhTSN);(N0xph7$h@|wzu^{d z>E~3{xuGj(${2Zx^UxwH{`JKiOc7d!jV>tS9-M8Ua*EUu=KZ^RNQnOJV`82q3No&y zesY9|{2%+imSaf8$=0#8R<{)`tZ&yER9bQdA?Z-n-!(*6brx3G8hu2<*xW;@2`nxYuqGc)Vv zlJmM)Tl*kH?a@9Vikx2p!9MGA_IcX>w*-GD z9$=-Sdu_*LpVwlC)R-;f*;D6!6$@=`U|g7K68TVnlKdPU%W^*vh!+TqMC0hl7iEw5QjF_?cYZh$?hYPPR0Ct|)D;ppVVqq? zZCyj@JwGjn>^+sEUVX*;XQn=cx11ms4|CD{sv-v^Xo13%eC$ZA*X-r3NBdZ&fxfn@ zbv21Z5LSqlZ6HdK*tZ1T%6nfU5{mNw^IHDxTPe{HlC7o`a*J_T=)}UH_UzS$n?$EX#6g% zR(&n3bl^a2n3m&H&n5zxjWAYSg$qO~ynJqVqB+`4kAbPOs`af$OyBP`t@#CO9hqAyI-QmoCnet|Fi*U?^Q z%o%SUz#^XOzt*??SSU}DN;nEG7*A2e61bgpYBIE49ALZ?dE&+RIShSu#10*?n@tEe zp!qqs<(FV2sLZEz-K@(-F0?4aGIQd>${K^^=K>|>wTRqj^5a&s8;jm`(+)e@uGWCX zPx>c}iX>2QHi+17OB>X~@SHxUuHtUgNL39fWBAmm4)Z@gVRhP+h$DSZ12A`7B#gwB zbJ|^yar!PrgcRpj{%s5I*Jbu&6=ar<+!2kdI8y^{#ozMOZTl2A`C}F*b8|4K_9rzt?URAzp4{>CMH^#8e~1juOpU zhbqedC8v%w92kP35&78pSMt-=0w+hpZzZ`e5Lmd<_G)%ROVelN^JQYQW>y?QP+;A= zzS@=%pHz-X2QLMNtSM4om$Do5FvutCG6_ z2Oz%aNcr5SbDX&wSw41()RDG3&pyK3RkqmI`j0l_fHNE;Sxz@FLYsv zLBkGq7Zbj%_Yy^%F>Si5EvUhJXcg;7iW@6*z7$^4p`=8j1j}nn&3xy>nOQWreut4k zu`RQ8wXK|3n}kT5nbr7K@FFg=^?jBUGaDPv86Sxt#NeW#EYke})&Nq%*3op&NujgF z3a~X1{LJgN9zsq0ammkzQ!mnLrGlLG@ex?tA!?oOzmCgZ?K%3t!O$Y7M1-aycLn*r zI-+zHQ(mOM+ViEQ!`NN<`FibX=wU?sYTT(wE5nDD;V12{fE?*>YVKO!tUKq$nK`*+ zCBn4SZZ%{F8=Afx7{uP3G2B{`w|fh!dopZG7)|c;?m|ePPrf1_F1~GT^Pf$fthPMj ziz8LZ$(h5I70uRKI|D4-1e+a9C|!|^U3m@vnte$-WnjCExNnJAiJ6tX+3wX*u<@~O zC!=;T(yd-thKziBHPM`}M}6GKIR!EGvbTRWyy-Q6ST-$Bl|}kDwTIt)*Ro-H+kGh{ zJ6a4wveFd8JaoeZDba8km&UfJ3R4F8SqkGs-srm7WPVXp%c)0?Np@(USBeI)V}yG!^4JPzLwjlG(p72ZU;Mdu)Xhj_E?|) zXV^mUZF)a!Jw9S+rAT$Vg0jxN`$8RUwl>O90cn%Ir6y(;|6>-Xf=HU4J9!;{Uvzie zb7g$L`YtbWd7t*QhY%0!g`vD7F4()c2<^ns>km^?(NNM_3M}u)L4xXgBs^N9O87q63Jcm zMe`(a^pO6&u8i*JqEoRX+IZi8H6H&q?2iK>aEDbQesYckY1B7O0-;429b4hZkCrI# zM%2Xf*Z)S7Sl-ypNk=Tgt!$d?llXQ>)79B>-~A7xRW)|&W$xAX{oBwKOT$s?Hr_%I z#k3JDnsD3=z`!U+%fnKziWo=y*LrNVx!#x4Saj6i7(olS=U{Yr@RILy2#RWmwzjWJ zi1*av_*>_-({sC zq!r8Y2;0hOCAk`2LOR}VGdmbcKP-VooYPVDRtowH3mjhnm5svm!aU>`> zxIwtW3kwxY_agzTNL_jed)Hc^s{$rNP;xd9fpKTD!y@G8V+#cSbVnmd(r~s50-bY` zBEpn~!c21RUc}XWQ-a3DoKp}nkzfSW@e5Z4gXlTKIfwB!f;@3?co$KSfX_Nlmm#oO zuyg<`ob3l;AwU#k_-h*$-4GG}{DTk}lXHs9@87?B0ra{U69l?3!PXSN?oifFXx8!dog%~c>+*c1CQWy-cpu%p%95bM^tVVh%#wq}&PS)> z=ooaiAIRNy$G#N#-%vA@7TZUIJ`;pXGs|6s8vxIt7SblN8bM_tITHiLWMdesMo8-i zT}J)HkzMHae=4tJYljOg7Nou^MPRQ7*1%zwoPaXm3RoJ>jd({n1f)np9KI#DVW=Ns z7o)&$i`79qIj?RcKMOCutw&W8tGJ8))2yqbgJU3BrEDkX0^?5!qtrfhXg|xHx*x{a zzfgZs+8~Ueddp7`;7%RD1VO@qmgrccj)NjP)c21fDj|*x7Wj7c=OuJ_wULx74`J`+I3QsFkJv&W|OpMu+spad77$n+h* zzSc#!Qvq(%0P+d9I5o$2tP&z z`3BMdf9a{*l2?g=n0NFHvFa#{uIqnEeViMtsl3E`mz2 z6!NpOn}}r38KB6u!D>gYbw}BwNsAk=`=DeAgL0#TddRCkb>C-B24d!^Gp2|{hafK= zsQuIwTz2sA$r2do&%S-Uc1HwCptEv7=`~X!k4CU!Rby*mmiw+oUEld%1=m74qD?`^ zzEGzrXP?L-c#E-OOAHfL1{LJp=Jl5>BvF}VrrM5%fe5)O2XxK;TsHG%^b(o?f?v_c zO|A?3og&@69@yPAD0C|4S69iRFHf81(c2eLI5~vS2Kr3XbVFZChx~NeAB^eO!3^Kp z-w+|a5}`5&%wIa0AfT%H&KOYXR4YWS;J7T(_Fry`LQNF_U`S+ljf#6C%$LtuQ%_Ny z^%*{z3e)>N#$!EuNmN;AoQn6S63lxtICmc76%KKEIuqK(FPgrcr#>jV#@iRv-FQ6l0Pmefs!K3UB^XX!MtyA zk$n#S&JI;N9{*eneSR;}T}rfF`{umqKIn2kUHxIkpj(>+@^J{{WBBkZ*~SX~eUK|6 z7-fe#RG=zAORCz|9UnLF{dfh^y`QKNPevS&6P+p3dzom8*fm#omx|o*k78B~LBUR&Wv5OiAT*XZ*fPg?)mpjryb+IEmyv(!^booj7vQdM~~1uA_D!&C9cO& zh|Vr>|I3Kpe*(>39~^2QI1eSHt~+{%FgnVrk2apv=9$Z%BT@U;CW`avAg+mwFDn6y;T2q36T)#1`f*#|3Wn7~u3GF^@Ma~aLWRCM|P1Lft=?ba> z527KEAoKkSh^PWPn81^RJ!)dDmMqN8*8-T0J;)G1zYliUwnU$ioJ0rLYDmXl^jN93 zTDPu1$|Y-p*JkG|68;8Bw$2B^4`Zi5={w;9on<)mC!-d-A-RX!$Q)~m=ircFh#Ard$V{PgyV|&@qdq$pU4+!@w1H zNs{+vm_om-?Lq@3DT=tS@9g0cf`t0Jo>$oykH4o+0ai#{P<$KMyaKn5jfLL{@PS>X zi}2$Tua{#7^lTF?syax(`7DqNGqFg-3to%qPI7BC2A2EWuq+fG`zwn25X2zxZkBF3`^YqYv%$L|(gA9&D_L|BZ7MXJ255UA9 zm~UN#3?(D6pUG@J$BJ3l=W*8}3YT@fIIjQ>x{ED3`#!CwX-b5+Dr(sin(mdWE#T~& zcSE0)AHEcWIACC;xYSkwd3u`j2L0Wp$&D-gmSqh^eomoTjz(BIY@g5*dr>QeJmCAP zf69~-R3NS^$n(NL!TXRng3i36<~qY(ANR!#IlnrfNs0PRED-&TFJ0V8N#wBXOOP#? zr5SapX0Vr$Sf;swLH~!ZHvy;e>;A^~Imb+fjG?H6%v2iXq%VbJJf_H$l2W4dNSwPt z1ByaQgQ?6@A|jk7LW4p=MMW9XDG528`(69=ecs>ufB)D2-*r9D^}Xuc_r3SpYhItV zHsYyz{8>B);V))3I2%mlr{!Ch39!!Dm4<Ff^x#AWnPJt z0T2p9zict;7J2}OK$jnZ+~DKt>go-#`%Z=&I)SHw>CpNOgq+1|W=Vi&p0;5cNab{N zPVZ0Sj{ISEPPjlI0yS-L1VaQ1%Oej6Lcf2Zwm*e893^qr#{%3vwqo|(row_q)#WV; zsFK36@@2k)EGcvU^og^p&Oze?d)%v=JoKqR9ziLN$8{cLrZg1&fh|{h2yVo^5)0bMNf1PXHeHFZv z>6Q;G$^Df_FHGTc>Z_h-MMV)(eK#f7tQ<<(GvkSF=l@cmd27fNs)1&#cD*%q_&Jxe zmBiD6U~7OHe*W?1Z12{Hd(!~Ge>2Ag6d+C2kJtGKX`grFHOQB-Yd#I2awV_;ZQ&mB zKnHmGHDzy@OSzs)OP+CChUyK!L~_PWft_W$$v8E1iRcxjQ*Bs*}nawXZ)!3>$!U&_X_3F`Vii?%zz zwyuEzc7^Nw{m?`Z0++b)=dJ8sQON@L!(tGpS1Qn;OANU7P{E7YkqJGok^1ugfNpEa zlm|e$#=yWhG{d|(Rc461VHiSN56scLLsrDNpqX%it(O!2H|PYp7n@?Ijh& zKJ(fS87=3JyKOHUab&NJ#GGasTMoNNT9EJp_R(qdmp5(a@Wx?uz?R% zRlo52?zMkbKX5i>PRYatz#`mJjZ5WWx4 zrVcGBt21aGf*fP;}=GpA*R&_pUJt6Eq=z_c|NU`lLorIN{x44sE zS5LCLr`d16H4kBRyn+D$%JsbF;-~A8hg8wwr>3FjC{N$Q_SjInx2d)mSOZ>2dIxr8 z0-u!D z=;@?1zt9{~Jfy7nvrg!_PbK-c1oA_&V(41{k zZ>?GlIGweeHS~G3(h^#dA-X4S7f<=m1Tqjn&o=@;q%yXVx28JpYy-^L;-(_*r%MyM zS2%2FZul)GA4-CPVEU#;;vkbzD*;W0!vCaAC=hWMhD~@a&Ygz{BLUVSqSYPJ9m&e) zEXat|H_R)Xl=e3_I4_|Y#$@v4YoHb~HDAb@L&?u~0 zty3c&yldCjy9Y1Abbtk&l!wi%8CYFi8`EW^K5`&!|94Yh?&5pQOI%Q|GLDCq_TlMJ zkmB%W(*mYzsjmiZ-WdmQ=fv72@U)fhOHvwnU%g)OSA6a04NF%nmZV!y z)c7>J1zX2C{Fy~jmH6{G$SkIvOvaARl3lxJE5C9fXoSw=6jvyc1^jQ^`C*gOwE$`~f1BdQ0XU(6#gKg7SWOoVTE(0+Q4oZ!B zNiX+&bBF-X$>#)id!KU5i^z$T(BwDF&Uf`kEv-jjnas8{A8%-06{!{2-;p@h3#1ZxCIs4o{?(B z(xJ&Y|Ma*O)7mSoZVSRZj$dSz$Q#d@oNeT9`B1kJ<`ZpF6O&XV_l^W%kM`F1cT%iU z@}gdXOI#%`>CO+TUgXW{+0MMZ*I}8-%xAOkku96Lpvg{?fZmQG9JDGB;1;vj(BJ!m zqZhy*#`!x7k9H~mnv>Z%ZZjHQPoc}M|H!4xB9gy|l);?k*w-Tnl@-MVd*s0%3rmc^ zd5D8CCJ5Y-F*~p3a?)>)Zq3BY%BhzMzbfid&5iH8o`w@FU6(zdUx7EsOmKq?h>MYc zcYUbydz!(YJGPMLi2lReTl33fM!xaqT7d5@S>`s;p|j+_Up08H36SMoIO7m7ZNg`- z(@j%lUpER#gqBdZ?zqoKu9;9YpMu@|3t?l#Pjr9I3Hg#)4ro&CtEu8pd`e&@DY^r4Fr4~HD#_+ir3qT}ULx-gwYek@b zlOz+=s>OS1a=d=9yB^OlxyF@nn*nvzy2?Kb)kPCF^=YbLuASu~xb;I4(wVsD#O~|3 zDJ1=d+nAjd%p*V3-XD2_)h=snsS9Tld6~jYJ zfYKgXQf%JI{SCu0!iI;h)_!UM+wFbZ$x~>RTQ>)ijc)}YG|(3QMZR^;F`4ZJsG?`s z^nNc+<0tqG@g*o}5i1@H2X7yPMEvd35(d zIGYk2mo>ItD8n3yvi`{qXF*fs8*DXf7OdMt#7gSXDH6KGI7 zZ@?Rx2yr$rv^M3)1o{Cl!5m!BwvSs9G5wOao(a23QDBHWHuZP%M!Mc5;>S zRwnGY0X9nqr^zoIezV-~qxB|!jD2Lq9rwk5(w@lTV{E@7 z#8T7lw}t@BD>ejqtY$P^UOAANuPKzEj4o@BlUdn$R#Rzu1#?~C$wSro+8)t8Okl5p zg(V`Y`xg=HNU^|@<`6XI&Vatb6`H*TzKHd$m5fi#)%wWvQHb)<&z)PC$;tn;YJJgu zvY;worx0|{^USTXf1mY`cdqti2vWLNqheKh2=e~!jncF8UJRN>+zq^_#y+&>y7rOs zm{s|*a!z9KByq~YnIAhoPhs*zR$`B1K1z^hG*L=(7?$G1`(mvPgmj`P4ShM`zJ(2D z#S}V5ZR@<0+xK+{lWkcfC}_F^W7JO8#g_45FGJ1=Ub)kuLIk%9?C#~vYv1bcHeu8C zSWB4Nu3G>A-V3U%`^xAz^3lV)%HF++9HPsbOxvb7%2wqmz>3hE94lEC#B_UMJXjZd zGVOP5&W2GZd&%_jqV5gEMYkm>&QSEUaiL#~cXMCJRR-+K@pE{=%LU!&hdju$O7UPoWOlr2=T$vjg;^~{r@2ceYq5M~Yl^Du*$yi_fdTFmd@YL`na^#0; zM4Z)=AEx3Ytk>GgUKRzRr#asu_X2JA%w^FlN{3Af3yyb8MhIC8P>9^6skdf8=N5z! zA|HWCQGtXHk(;MwguX=^4ZDp4RYq6Tyk6(PC!eW?2OI!Sav9VXcyb zF;Aer<-IyjQD874?L@bRi==ngcIV@Tv083Wd3S_#f4f@8QWD0(IM(cK)*}y}v(1>n zNB%o^uE1s`v}Ruy$IWF$fl0Hw*G^fRGT*sq3%@k7b4>E@IvlG>!pKwGOG)IN061=) z)r@Wghum0HW{KwF9j!7JLjTyj(itMdnw+-(sn@xjgiok&K{+K|J^zIo5~d#X3@{W% zU#J2oFlMJEneybd9$C53vGB%Hxh=r|vYA#&1bbFIFzqrQI(Hn=+hqol$*;eypSyBj zj+%mQjj_Kq2P3Vs*d`KzDIP&ZTc}9ifPz+-hkquAlgN}?q%;?w?(~V%qmX<4dq+U4 z0FkP$PNDmGQ{lrg(`1X)t-U$rnzLzRa6CkZddVE`GWqm5XnxJk>wI=UeL-%UZ_j@X zX@(-UJYR*Q|14Qt?j&q&*x>P0)S5@LbWf+&zX4WqAvSIuC1oRTGi7IwrK;buM!>p*zcA zOz!FZn@)0;cqflL1X!!+{f_>!#apOEG(K^ejv-QCk?e%VOmU~P?O0oxFLBVhi22gm z4bvMa3H1KpgNZXdj$0RQkCQbG$H~ zw{F%zbTQbjh=qc1?EV4-NL1aRVt*WU$6VypV2n;Z`dC@#CDy*)riX-)BE^HjGSejN zg4NI=Ko>`28E~v6cgm}cL?m~f0%;P?ZzH{yFNo#>FQC$;%@h`*Hx}h5BACmyLb&F} z&XN&M?TJ&zDMV`eI$HWZHuWd zfYvHJ`A(`x;@&SL{**$ud1V+!?JpC32gXG`_bJM)Q8iM8L=Ez&ny6JkPfwrUEu$)c z-oXy-rJYtHsBTKY^lCj5`?jQiZmYs;%0)v!Ae|1&c)L9*xbdGS(eg69m93$`be{Mz zDmp}(QV4jX_eOCPcw7!5{7WvHPb!3_qZZn6`WK_t$r=z4)F=T$czjH+HqNjfn#%R|I$3|YY15qB2$&#%URgI0PK>deb1h*w|i13 z-i+F^uly_Vb`ye7KYu1vAOpxV3QYMQ&q22hB2TutHCh$R9nXe4QYOxw$@ zdoIOyU3%Hd%f+w=+*3zS%`^pwJ?hxlZbs>G|8xOn08*+N2a)PxdsuPbW8uS+eQG+F zRp|!{Lq;PiDBkRdoH=z9voAKBD3zyE(FOh8H1AYlv?>FBZYQe_dMBX!RcCQ*$+cz| zy}G`A9!u=%y!hI;4xB^R!l@0o_l6RJfeFc7Z9X>TMjx5|O&^rl==vR|f*${MciN4oP&D_R#3+-a-5Kn?B*w$>qaGKQ2U%kb}7zUIwDz zf}t-qAJkAUXHmPJ&01^j7lIlRQ4h@uU0r(R!47J>(o} z_p{qegNkUuo;`a~6i#5lYP+~n1l$LZ#9xXhJbeMvFL1aED2yr`_3%$i3Z89P(Qr-I z2v^)@d9IT82`tTJCZ$1W&?Fdw&((Gj-iGKc?S!<;kF&f-8DgmOQ_lOB8yIky0E-sn>6b~1T$9v^xrK!yay0avLPIMyz-dL?pp+708q;aKZGXG)HgSCX^ig)a zUBo|1I?77mJPCKddp9E(gd_>P@dXuDaI~Bi&F$Y zWeC&I{Hw#~AMTthw`C4bX2pne=gyVnE5LB8G&ve}7>AbIq*Wand7}@L6c(gbO_{a{ z5bQ~Dcu6V^f1z3cIyh5)iQ!>2Ro_k+qP_(lqBrn1ZDE^!&%XLX;CHaLZOG$n=HRGi z%yy`JjblmmMT60QZwZJA_B`W*(my-Rr@_?A5r_g{wn~s8M%8#VAi@eW#b)rZbdJJ+ znPU0%J;+W}1%}EY^bRjUm$N7?(m;nN>m4hQ$1PjgYqoMQLkU$0rciJzbvk=iDlk4@ z5jhAK%po$ZTqhm`OBA;|_Ufa+v}{9^e=^N(8u$5O z4gYnjvDh{-H2>5&3W~-ndTNZIN#%qB;6Hl11?ZA|E}d`Q=sh_w<9t!=>+9tvc=i+? zN`fb+p9LWWQ3Rrc$7w2n)@*%lBz|?btDR^NE?aO6QG!JBJOtzCnvD_MwU9dpa+W_b zTM*>ZC;jlV^aY^8D|Z?~YTRV80CvUIL4U#Y6qVXY&cq{_z%KFkMSX(mq8}oCF|=fV zBrtYl$UFoilsumRitAd%90K}XHW}hKri*l=1QSEN7_4?>Y0z1E73RV3iVN>FMqy!L z+gXS(Q;&V`2?u^!rNWURhJi6KF((^x_&o?lEoul}q6Bj$Mo<5Jp;+gQ%lWPc--V1u zS5QE35Glc% zB@95DE+73z$HI4`|6W?(i|cDmC*jeF7#y9UAIIQa#7{GS*RC`hy;v*%9hz+QjS#fI z=`jp>sKih)wCcbotO_p;MqptCGkuO{;bAt09%M}R(9(NGx8IpVK$<@VTAXk6eE1M0 zLPNl4>FQ_eFw^~@@HFZ6RZwYcS%z87P7JEFFHieSxtDZC$kLD%jNLPsrkKD` z9#gAc3_^3_sSGIB#pC~VqqlG0PC?`Wq6qn8z!x}T1*LWzZ=WR?*I;2|=ZWR6C0u|G zFP?c*w5=Xsa!23_k|>0U!iQB3A#ph_IyHR_miA6?84fde9yuB zDYPClx(e@PLPLM4eDOiwMn_Gq`=Obn+TfPI3+|H+LMMIxv)=Mz=(q{CUgdVOv8k$t zII-vzD@Htj{#>aW!OYD=Vu)u?F8&{{&5gmHg9a$y^Pk%QI-@@co}?jCm4|awlRAot zy&kg?xD4PgoW|M=NayS4_j%=AN-MZ*-iWRX=bLy??16^P5%_tq1lFBk71msTp>GHt zFq}C2q4Y|u4=l-_FzFINk(gEnqWE{I4G4OeuN(dS&BVjtPmhJ+(>fia5f6W36BbSY zbydZX>na@2x;u4A$6`Q%%!X|`fyalxMFa8yv|b=SgPXhMYa!KUq1>2LdH3#ipI5a1 zvNh0NP8`nvqDSm@Nj@)IKU`CNjQ#7%{k>6Bu)Jefk?`JJg|`bgrRXSQ68zty>>`HY zfO~_2YRkaO#bsFm_zFV#*t7fZGIw7z-wzaGdtx<~#`7;SvMIs6{r7f##A}k)*jlP# z@tpS&xwY-f87n}t*|AuXm)W!}gUX;9PuSX{O$-B%8^Ac{(zhAeP5wAJb<6NeCFnJ+ zmstNi!Jj5}d)vnS{kBe6?(Y0O2s(-Fl`x{~35*4W%La}(h!HTmRZy2kL_;bLMbX)3 zVUp_Oru=zfVZY~H&+CgZJHYT&$_za$ta-;N9f-R20m%qp@cw;CVlZ< z_VggvZQE*`o}jAGuPprSxx)OvzrHyKbR>7H7y(&>wV)%zYQQMG(To1e?vOw3 z_`f6`KHiKEQ0m_UTn@<~Qy6_}8c6eoBhkh>G!4S00}7{90%=ge>@>jZP1g%FjiV6v zL1*w7C3RR4f!%zu42?fL%`-N7S}8+Gq+A zZ8S!%KN9u>2UfaSr2(LGyAO|h^6?8me-p6=xzRk;**hIIWnbg3e-s<0o#GZyXi-7#sBX)FV!$8Bx%m zi^gbp>!XVY-YOuw80~RB8v5gWg;I(WGlpNXz}UieV0gPc+?NBx>hO?OMNOJF_!D7} z92DY-+*?dsaE<_@cek=Ktr|X@uv{^!8nC(W1e~1P4k915KG)<$|)=! zJryJLfs2mj6;oh*ZV4cLR*OCQ1&*1CfdE*rc^K>~F&#y*tAU%+$c@-*t;CDlK7*Nh zKsSo#@FoaCMCrKv9EG(&fv4B<-QK+v8L%BU#me0z!l##`(!PBN(Q5_8p*0~=cxT)n zP;l8;a2ViJR4=x}a>xSOAao3(=A~tG(0hSBO4x5v6+l6ycGyZg4M}N2s?7(aqQF3` z9$PgV*x;>abZ|*(x8{T{vAlQ~LJ}o#T|abpA2G+8FAefDiu_a378I}yA$XT6!Tf1JL+s9h{Q*M3K&vZIWoo#5_z8lU@6TYX+AynCAN0j8m@H;y zL2(ygMe=q&YHow3gr!l!{(E9b-RHqOteBGbP}+HVRNXQJChXQ3e!+a`_v~uJV7)}jzR9y*NNyc0>rGSA=)A14K4%>=#@1@@PclH@#`$m9r*ICZp=%Gphfw&KKL{y z3JN%s;V<>>-8&2njsQh0l7--B=^{8S;K-n*2e5lae%}B!<*;{B8f#+zSnm#1nTt3q zrayw%b@_8&^tPj9cj|h3r`ci7EbS#e?LDdXgnuGZ;0L5)>%MPXl9!Kz#9t+-x$=6s zd8n_heNn#+mA8LDA)QIR37!j6 za~WzLEBSBe@>YP=AAFKRC@uujeNZFzRYvH7t93*seG6`Fh>EcU(j!&8Bruo#qY+O~ zt8^*&nG>}$!&yxzr=!^ z-14T6_03OGf>3+zQU8~sy;$=XyQx#eoFvmtgo!7Z^&$srfziMnQAEXWT&_og_KvRl zYjPv&g@n$=s8il)nB zmgx*vNuas23KiM6-Q#f={EEQVwYd?lqXzLycaJzeOs7 zlQ+x z&u6yiIOYX!=WmFvcRyi&*JAWb3`Nvy3m}eX?m2DY-`I_VSExPzbmp}*PK9Y~#RZO> zMc9z)kBK49!`K*?+&Hc1hlqZTkql)Jr*@H0`zClT3ZP*6mdzo`Vme_6sx-|z=90@q zb?|@9LBj=c%*ic7FsO&tKIavMekY|dgzhlYK`qQnFduiSdisyiH zmZWIAx63bipcx0#rx02@*$m~3j0b&U|jhR&+5uSeE^q!deJt z5uh?*o&se)vrI_B4s&4)MjOu6J>^gNwtv37hf~$V+P5zT)#gJAHupgORa!#lVusws zhl_+EsXK!?O3Q?5H&GcbTYUBERXjFrealVlUiPBpVm;`x@)^)#pK+Ok5sG3OZYDjq z^v}Q)-dCvQ0_)5IZKsu0j3eeA@WxUKz6V9t$F~}IWFZg~N5nW*S%@JARK_*a%fRCg5Y6DO`GG3eCy`m|1p$2N`}TKm+)chz>-07sx;?V;ldN29}Lkpl<16h~wb42b`kN5TJLM6d9qnFCW%|>hyPfe}MRO$w(X&jCTc; zP*!+CEStQy00&p+g7-|^Nr?AUUvWjHNe#8T+N>3~v&eoM1OwaA`K9oUxn|R*fz`ut zC@J4LqMBj9O?xrQn0uF^nuYeiul_CCt1oP(*D+r(cYa&U5=Wg>SeLZ`P_XHBB?;zx z9tCb2^Y4s)197|~zr6c5|Ai`@nyj<2kKt>Zn~q;`G4h|>GSr$x34$k)wjew@)GUgU zydl5ae7tBLMF@Mb3jAkM^{&(G+67eo96e%pUfI+95c8L^9XCF;IA0o#O_UjRAF=yv z)G`?%JZH&%oXiK(csROrC4Ikou`ek<2CW*hOBMO6AjzD| zPT|j3H&8(d_}Z>_J^z&e>l0oXA6}W>S`?frMZiOO_D#)8ZyCCfd~GQ+{qrGBbw^7F$%dMy zbzvs-YoU`@yyqf!=dM{t{~+Wqnmds03(6KPSEx9B3r^eFA2h!@Dg=zdYiXoF5ehwF zi2~e`LFC%D(lkZv0g3=tuM5_D$^6b1+o>JT^THf%B@IuE_DD$ce!UkG4B%4is+(Labnh`A3eed? zrMDDj8l(5t{&DvbBY5A@6j+ zspTPxbzr!;0)=MiQ!4K2U9+UQG`bnYP)E>Jw*?XR9G44wGnu4426r%=R*2c@=g$=w zOf5)VIX3}AGWw=`#^J#ZVU!fp0sVf50sgQC*||Hzg-JKIwvC^?*2MT`pRvF^5eZTM zY01p@A*xIAHC>~%V8O&r)~Knw@x5lUMI8r@dyY^ErvjK}W3tN@1@oh_P0{Y4c8ZSY zpQH>&SLBv!<%kfxuU_VPsB=y>I~ikQZUd5v7lqlNg!@`8D1AmH8#9e;zX&Z!3klQO zKWh0erWF0jcfxv3dD%N|mcJ7$x%j@83B}uPfh(ke+a9Q)a;=bC1>K(+`RDnbS-bjQ z0Bf>p0cHoy9`sZc>0CwLyBLQ5l0RRwrL2D7x62SA3pdMMoU5G=??&gP_K~lQwD3RK zpkRMS*W!Yl%ZODcGyDkNZ;fV+el`UE>vM^pW zZSYCh0tV8#4^RF&(F5No3obR#7`O?tkh)pT`Mjd3C%>xbcLH+) z(huguUvfJ{L%&aI%}1Jx^9RhV1QBNSQ`$no7mX|>Ro&g^Z41k66V zOd0tBhy(XE3@Dz9Ajn>UGU{4xV>?F(o&0=Um0q5o@4%n1Qi}er^Eg+VN&yDkiO=90 z_&y$^xzNoAX-r8Z^Z`z~D1T=jwN&1_fG^e=-VJy4yyJ#WZL-eUJx%)S9NLc3zmpnB zQqIgxoM6j~X1F;mm!iw{fj@g;ULh#$*CwvT=9lSocywstltfX?*fa^D85??-9K_Ij z5(eFuVC+^1KkAOKgL)Uufv8 z7WX@Fj-PikeLBEwm`BK0W%*mldiZ3l20Y69uIqsTq^zvG4hr_}vX-*M{Dwul3y&zr zKJ(L66m@MEVSN&VtgyZ^_f>uX)Cx8M7$R?-?l5_nAH60eM6)!7en4Px0qP8w+46HT z+-?=1n=00VWt$fjn8=lysix~Z(|G|)7uTHKRB&_6EV%}?eka+#kCY7m7%Jm3CoUVf zfEWZNc=D(3D(m*6cpf7r9)8n&?t2Va$u40!-q{9&9!8g!kWA2JN9XS;9yc&RIB#o5e^}<`#^T)?bpwNw|l=E&j%vaK~}-(QW*Z#Bo%EaC;l& z=077i`gO-j@O$)YW_gVJL9+gvE|mFPOGEz_JDMmgL@&6B#a@&z$r(};n44c=4zQck z`4NU3k;5ELd~0E9HrcE2YyB+Qx*6~PqPAq|R&9Ed6WRhl4bVMb#{@-ab%x7yT?%l! zqxHc;&$orCrjPG#GV^>RlHO9GBTZl~4_Gojo5jHS3&tqf$+4OyGj0QvrCYPcX%D3c z>3jfHBobmplAk!+;#=314|17}+b^1^>DgvvRmZ zgFDU^OwLjll?yR~_!D014!wUJTWO-0unsSlh8f9PoMdpwbA~FGWW7_ORdzeBfWF>p zMVkIcLtl_MK;+KR+QSbuk5TYh1;XJu)cfe8O2r0Xgx^!9HKZ3?MRb~E`@IxujJZyO z;pA)$K~!N5wa4M{H@IT*x?Z;N=M$|g3K$!dKBsjuzB^r~gG!U*FB@Ky70kX4|BwHD+mAW^LQnZ)Vb+uJq| zk%H{1Zmh+FF6w+*^Q0nh0dW~!6eO^_QXp`e*{&{|Oj?um#i|{v9pHQONWty5yk+0M^Xb|vvs_j4cpi(*1_#h{d-cMV;(W%1vSGVMRF5qx||w< zB&WAe1hDR}Lqj8qt{Fse6S@p^rASr^yFv ziWku;^J$YiHUfF-1< zEZ0cTUxp>GBg*XPn5kVYs{U*W!kp>^I;$fSkYpe};&IueiXx<@g=TX>YFb)o!O>K? zD+m{Hc^_)a_^MLj))q(hK;mm*QD!yirS%U`@*F^r6a>$77sJk7JU_{v`gl4#gD{%M z@~3XDm&ayqxok7nzK2mU!@Ts9nRute#4+<|J=y9o7Q%b55IEwAtcdFlDlW^N#)sBo z_JJp&-#BaIS`Xv}{$VEnWLA@=IWuWo=8t%7LGNd)=qDQhJ(~t+5Mcx(wKZe80HbV! zlp17f5weNC$~;-Of7aviR6Qug9bHqV6OnzgK>d(CP+1^fXAll!{_%o3M)>x@1rI>2 z6WOefDj95s6Bl311ee;R+=(NzfGF16mC$M=6v-CvNu=!f*r^VA_8hqXtqIEEi+CH9 zYUWB!+xriYM`qIW$j;B?jx|Z1+?P|P0n3YxQR6BWbA0yVqJC?0b?AR*I~n3xPY9*0 z5+^4QOu<>$PXq9r84TFJb7W#|8qm16mzngF+4`RV8a>x_;y?5QM2;b4T=2mKkyt5s zH1yG$soq0VIp0(&81UKRpUk-;K`G>ZD5))y&QKr)txp6YK;A8^{Nh91toaPLsTUvj z0puX^E|&Stk-&v`rlZu@t^CjAc);MlY5fmV^-v1R8J{xU^hATRCO|xVHL9M2llwy) ze{(1_zTtxr`B<2}FUZX2#>2f(UpU)h67-Xk$&sJTBa4y>W}uDEk;dSrEyKvTfCa#} zw^xWK7^9O>PV=Sd$9;Az7sE8uxtRH=p3T-Ut7Ggy{mJD1efvHn9B4f<(~EQ4Ab$+* zekD}bDL~YKNd~Oq!ph-P^jhVM5v5RqAHQJ>|7qsQm=!^PVCH-6B^Pc44o9rnC))C2Sg7@TBfAQq@LL&KaG8qqo)?$`yjBE2bN9*qkt$;4L*;r$I zm*$EdzJ$lFJ$#a1tISrZ>f*yunPIP<+2uB&(c5c&5=y#lBmi_F@UEWmGP|*qJbf!W zcMiA>QY$5h3b&(cH(VC=QMe&5jW3JTYPvmlL1OlhwCqDlo&ea3)#gjcan9m? zxd9Tb29V~{RrKj5NiAn6IB8ghI5syxojMtYAHw+Fx}MQG$cwKwq`;h&*dtr|baW|4 zy&?alWW|-r*XK+yFO9*RL?Doawz<6$t7uzg)CMJF*0CJQIW?DYfiGq3Hh8zj4fmnu zvAXjz-9?WceF=h9bzr#$TVX2iD1)NDYjdNyZ9#XTM%d=(HsUyyQFUt$@u48Vu@ zwx=y}0 z>@%oBmB{*bA>AzFl`HpeE-RcbKG@9v^y=S@2igt1Nqb~!_B$zsYYMzwzS{w)fBHA2 zy5N8FL8@ois`MB9t-6$IMVM{3%4P*p0Wl+!lxOb2CIrBQwv5($a_jHi3*VSR0(g9R z!!?_>@pkBrz1_<;)t+aQ1fIvoK-_CPsR9{4O&{#g=5g-@CRjcRMLKa?}U&W}t7uKq_R zw3cfC%&Kr-W&BHdO*Gf-5sNstA{aru~tAjw%ZwYc0h zIU17yusQePxS<7hgm)(R-f9ehx`)BZNu+i1Ed~av7m9}m@f?LgV;<6poiaaz;S5^Y z*=deyB2^$?*V}3_5d#ZMZNK*uCY4URK?F87>$xF7HaUe`vLCA_xP%sjLsh7__-|Xz zQH4__kYG51l_S9TX0UY+fol`V(H`c6W$9cU-zq4;mE7Q@LDLN_#%&^vRhg^M`IXlV6$x|Ykzh*t@ zxk333_%wh}I{=Je0ltdm6kOx;FW4XiE(O!XOu0XroK1RUTBuWOjIo0x-pfhKqIPI7 zcrBOyi{i22n7IZ0)fBy(hP*rSwtabd&eSZ5p)sQmFtd>#(8?EK(@bV*9x?g1r~yX# z>*yHs9@fgvHz4UaAGc?iJx|yoD!CZrOY#*dM*@j{zPA>vUwi&pk1e%ax z&_y^f(2`YMS|s#`Ij7yntA@+*q@5_L?OT%PQ6}06s7L2iNZDPIwzHF^$ATv;vX3L> zKA#~>CXO-j|NS5QeqWrt>Jc|1i8&RsxKU{tn6!fmeLMrHkX|2ct8BY1k(*Ofe*5;% zNj)5huu1)ZpNitAd!1KMq3iyRFJDy%^^2Pn3STQ-sUN<)a)FA#2@vR=KX#bWB>VMT7L1q7O>&0&cSd&^8TYJxB@l@{CSn; zeh#S(YWg9yLJGpl8)-=o-X}}jIm;Rp%wuhmMLYf9Y%~>Qo=h#;{RsM%W(@Ra_CrrL z|JoTgF4Y)*WVTv>RQWwbwR#~8iP>p8>|vLza8nkA3tFPs9MaVNTDeq$TGKtig#k0T zfOl=_;_dxDpGe(_Iw;6MHhiaV$Hsc)842*#f7I$NKH1C|m|!mW$V?(P7TjKc^CU&j z6>?)a5?u4srhYkG%MOuF%@PGEFoscT6h8h+L7_0qo6wUe6>=m>CS#apIl&9GD2K3jAgIi`A zSyCyKF|DOEE6?|!6PoohaGTgYw-uPZ?#-Tl17*inAHsnjPjznx#TQy9f7;*q{iFJk zKK;{Ck#F(V;HsQ@IRK;=XuW2>Y-niMzt@j7$&QxGxj%ti7{r1lnmh3&(OIEJGy^{5 z-cVRM6J|@|E;k;4X1j}&S=*k}SIjjtC4hroI3tlR5Y9kA#(f7uPhNc&I;Fp6swD%f zWk7#oCEZl+xW8)xyyfS+2;A_}>3l$3dP&hz^6#dE!doQ(O8mSiEjKViM$eJWp*evfS9 z9eeihDKgq;s%eK8=h2`k^rZ#*My9icY430#X29x_znj@ZLd5cJ3MvC$&9IIc%ZmU3 zd3Rq50^Y>+xf1HTbMIXw;cicreGtlAPO^L7o=q6@Jr?^hyEgOlD=-hvF8ptGsV78s z657jDOV*^{^z_!+NW`yZ`Q{y{@ftbRyZ#5h2@tBXX-7+9g)*K5@Q%mUf*kr$kK+UA z0MyLL73sren`Lu@4~SlS$F+W0zkbI09uuynF={xfC&-K(1TB~bz!Y$#*#PxBu381R z@^+kEd?dcV1n!5}lXxYsQ$u{1(=AgvhY}_NT$@)v_kb0vI6u$s)*5f|Q*^gvl#S@-Ukk(JrEtH_=Yq$#bR`$u zs#L=-?*XIb4*-&jhF{FU++heXc#@x1MeQk5_^|lTNTU7HuVAPm%Koz*Ds-8bslGy+ zqlqAa%~z2HDtnIRs|Li&6*|oCGvXUF;tRY?tnFic_u1`=F?cnC6?>wxR^z$!j8I10d>PMC$Gn55 z%*pijG)c4PuNLt*Pb-U@xXMQ>N*buNGwwx6Wu>PdLkR5fZsO!M~~bQrWW5x*Yqc+?Q~-w?6a%)tA@QaK^Cn z>?`*66jXXjb}xh8g2QU2aA}ptD+cBD0z!&t#HXl?JNk_G+DklIRTOS6y$Eb;=V<2Q~>kcl77=TsuhZi3|6d zcr-o1#7=z^mw3fQZG8YU5Ux__FhpwK9@owG0)ELKJDR66n~rgB*sa(Wve^piua?D+ z5`9GiHqx(BAV9uZE)4Cba`Pw`rC>@5HZUYnp(1MN6i)&N!x<*AE3%*d(AT}3^D%3a^yS05UY50QM`KqyeV#S)r% z%@e@tafGGNM^6hvTy%U^DXZhs4tFuDEfkk*`VGT`PAl(SVgVaf8^ub`L774GR`a>~ z_2VNn=62Pz?USp&Ek1cP4~7QBaqnPP{HV=7(tq3wWa=7_%hAD!-(YE8_&+=es2MXt z&=-Yy95=6m*K`N|+tx;$9Y1t&7svR{H@VGXU<_{>(Ovkf;*h75H#Ge@(g4u%owL$n z)B(aUJtKaP2BN@MwIq=BLS7PU+f`ar14?>QekC{LN2SDU*^SWFO+qVd82icJgQk%j z9N|74g`rtGl_Uzy4&*iApZZgG2TE=wfE8R~yXL2p5uj#{n7l-ilaAs`i+ilLg|D=@ zJ5M!;ns}lu6fo!EJwgd_NLUm~jhXvI!A34t1II}p|BK5Lx_t-zLx9=5l{dAi${lF( zG9&_z1jvcgR43o0?bkO8a9eJ}1|tI*nEY=ifJVB1Rcbu<^Ms1G6_jQ7VUSE7RaGo_ zeVM22{3DATk=k!q)Im|g3FfTa91IKbkQ7foe6<{7Ns2{+=TX+^l!B&R*nwWl8K_Dl z-DAyT{2n_A`^c3b4ud@~p#wu`fh!cZ7?rB`4m9>F zJsUM;iMc9WsCkG+wFpbsYm@vtWp}Ji!@yxb+Z|%*RcQ`fwV@mb>cE<~s_CTIxmgwS z?4AfEya95w2SNG;_u>4SRa)$14r!g9%vUG7#UvNAiUl+S1X<9P)cW!ydzZ?>lV5Iu zxqu+h&Gm?cPKvh!zf$ARp{84HzaY4o7s+8llbI@<(6YXKD&#Lr<|b$nf2?6-L^m3C zqVy*(scE=8u*52Mo+^V4V|)CCHr$Oy#1%(9PM=pRGXk71-=g z@CA3P6N{z$ZfK$2JtoU(oQdAaU-6P=zwDBGNZi;0@`S-qt6f3LF|Iq3^K#IXSp89G zQS~mhzJAH6erTm=n55nb3}H~-en!8S6Zdrpk=mwvWf5C{#i1slgi?BqE~He|L$~$1 zLGc>r1)C=K$JyP$90g|YqT1?}UBTCGKPQeEQ9aZNr#_j>Xs=bDphtEMdlD@?xs%b+ z!xVl9z-~vsXPe9`Neq>S^D7!-J_{pu=eqM72tUgd@utj`cPc~QoQbltXpKbrW4@}F z8F_K&y_{+Xf+M|f;n?fB22K1wxJrxFAj%?>)SA{p(@OQyGu5DfY;rCo< z6KcFSD|mTXxYAsJAK<<`aB;4(pX`*qWt|bT1w|^nx`HOo?bu3pyCH11=D1bE#%>;i zKmc044XkP1Ag9uNbBn^SeK~FS=7Rph?z42(@WaRDNA~!7*WOT*xgH7#w7*z@rhAZg z&Dnh<5YH-kpccDv3ks?m(t`3MD?01b_w}`JrlSBKlUqDI&h7Cly*0+5mfjj>^m4%* zX!tW*fU&RLwm}hUstnYa19{AYS5RVU?Hv$W2FKu2pl~pQwrUHJ=Bl-V8k5h<|5h)d zf2B@wJ*5=I1pHu}4e$o|`~US#%NIf&(>(m^%|-NQE4z};{89Hm>qMc;jy((WJOJv9 zE|jq*wR4ob89D9&3NX2cN%&>{9s02)A5R*Ot&_jbNHL~BPoJ8C-M%F_ZhSviRdBA$ z3i^X*At}Okfqa`+5OFa{d(r#3-e0M?!E`pv7RdQGbO7icMn~e972=P_Vz{>fC}}ir zces!5_S&JqN4E=5`NvZ*+q}8%j&JdFlr7LF=F0(&3J`nge)3Np_1TFsEg0AQ9@@97 zJ4Z~|5g&KQswrTc8}Ley%4W6P!dykjOum7dgAw(h1yP_#ujG4s53Nydon)Ww&inoQ z_sch(ou;DDCjvx;d*l5K`LMY?Bc&=!(fe%U(mQCdwPp@6N2Ds(7d<`vW|DJU(#+qz zf0XPmJOBwe?0#%{uZ6FLNjs{)J_u$=cS02dr>#ON_+%Kgci2o-|Fc@7=>Ai_sz#xN zK(tngZean_NO!5p(@)cUsj4c_jMNFXaLxZKKW(+QSL@QU@o4#%6BtAX(Cn zY>YMehaT^B=o17q4piSha;|R>%2@RL*97)kFJup0fi@Kfi|wHtiQqV=JSt9v=A-jo zShL-~MBEP~QWv-Em1c<-R_|%kQgY#)(%X+vz#Xi@$pM&08nr9#PZ4x%LH@iRgdS>D z9qPpUD8Kmr_LVYAKA(MilO^F~*!6qmo5`9Jl4jwbzy?HXcBemG7_Wnv7key+9E%<1 z^eM{!FRtD^9;)_@A3tYi>{(hwNobL%NF*&x^{9jpLx`D@Y(){W&a^*Ik~Vvm6qRL& zBui$hCuHA+7(LmSl$|kizSmKo-|P4N{?i}5%sKbD@9VnmYk6Pq%f(crd^^gQF)CqsvvGc-zFQvsHUVD@>bxyxojp2~&{jsMn+(0n*AavB&kK>@Y^4E#cg9vdP`c0Fsk`-m@|p zIxV4nCM$1MwS!M#Hw)dDrE%BboKeFf> z5l~c!lX3B`Me3l(Wc_Uon2OPr?=vD>fKL~Alo3lLI07AoPF9_X{A0BRaol)_Y zto!!JHnR9~HZ&Xb5#D}4LyZ|=U&kSCZocpCnC!Xf%(Z0bz9B$sAN2rE)9l>99RGMI z1+>i+(>Fc{tR4>P8;|&mSG^nJzB?eCXIFNA0n~zV_yys_w$E!OiZ5Q-5sN^aHGOvF za>PF(UA?|5>5Cxa+;IpJ}ZpHk*T4vjzn}A;<9n^vvHw4G2wImIRG=;Ol^?ZOqju(TGj8!{OFOMDR(a4PKp~V_w zEsc<5W9fA5_$99AE$knEWt-L4#uA&I?ej5%IO&~R6nmmmYg};(xQqM5$t{MQu~i3N z1Xt{6%?yfHAO6bkSndO1)5Jc3U4r;dz#-=s+w?VfZxqWi1(g$QitB(1Wvlqap|Glt8?+GxZ##1!C z?MpJ-Pei@kog))5rV5&11VJ56<V|wso*vztMv&d3On^Z!`prP(6k!GDZ^{kfNF5k8yI+vdY6TYHYfV#3*(hr) zPcDgKCXoGj*>ZA}b|^8zc(?KRnd|VneH(NvAHTZs8^b`E5nTSNEUp@=udm(VA5Cjx#F8@I_iSLA zvyGP(H%~n^qL7c79X%$^mgHEqo*;K>MnG1dGbVq)C6AJygV&qGrjk48hYjR!(GkuH z3R0bjBuSl z5}Yj03uHeh{B1tO?K~))`Q~<&kF`@g|ILuG{Pq?fiadTKZ9CY%dkHX=my|83rz>`8@cnbQnDq3p zGvq8a)%w@H{}`lT%o5C|3uS1gSsAtYBhe$mPYhmqFpqV1(5)BODgLidw0Gz6?ES6@ zkYLj9P-Y}ZKxego(WH$rWA#IHC>qhvGeH9E&F!mm_Se6};F;1~n5pv77(f-1s}0qV z11{!if!suE8#u=4eB5K$_|#3Ban4M|;@sVn5y%^nq>r_3)A}+u6DeE0tA~9yN+NBs z*8Zo>2kD>WM0ct}0Z5r#zuK@%;($w6n&z}=|4@0?ab?q0j$Ki~Df`UJ_;0MXw*+TZ zA{VZzGMu1#4)$+<*KDrM^1AfBd$z%bt*D#vycL_`AGPWBuigr_%G)QjhXn7Z6{}sH zQ*n$-lv5kjTlCglw>n5E_KHMyc z+9zbs`TMp=QW>%4!A*y6ZJV|4E8lw6zo~%qnvnFte%`=}$kVq~v(~_ zZzKSsk4;g;7+ZY00a((r=|8IL}LLC6wRzWo(&?SXYdxw61Y6PuJr zHAeTR>SwtBNZIOXD_Y;G*v)WC9zmk4OGg7=9po5=U$|I(SiOQ+E+@XrU5#wM@t=^J z7~aUi?@JR!je*UW{)^WbiOnaskVvpY6 zpVnIX8@iJv4E4my9M7{N{B$rbLfCeSP?CV3t!|)W`D3O zc<&P?@R;P~PnE5o$wZh2oP?>}25Mx8652EI=vK4zu{=%~0+;{X%cFDju0x+nQp&|t zyv`l}l0^PqZYO8Y0luoO2VU5ys`6^Z_{%Li*K+$s`QCZW@QS)+Luj9u1-koa|E#$A9!7=_%}m$*xPLEUpwL1#tXB`5t^1TDU&RZpNU`jMOQIdu29{9G%NJW z6$T!uazZ!EJNVe5z>GOMFTBQDjlo-!;u@d|**&NUh;vx$V@(XcW49|XpCk9TSv1u` z%{x2eg!J(m4KinJ+kqFW((LBPMEMUZ6N|g`<6nLk#m5FU z!-4gGandVPWcQrenx!y;Q_5s@NLuAdvm=DEfo1V1;2bx3Oxcl$+oIqs-LF+d@J#`E zqS{h;xwhOM;1O>56-TjNJGbzL>hxKy(qhA(3dp15mLKB%0{19NWnZiq7HJG_30=^5 zoA7kq4#RPz#|DzQRsSYku9WqD57BSh=33;QoS1b%@(;=#KpF#7E!;bv6nzuQ>A$OQ zO*4D$NR2;tHNu<=2A~}PIrezh_FzTDOr+Y}!8Q8W4WEdcK-TNrzkT@|H#J5Lj$1us zJ{bTP)OS2TqGQmT){bR`ZQg9X(YW_8?lNpl$=m=n4#@T4GGff=HERa2ZQ7B9!<(%E2i1J@ zQAuWYg27JJ>`TzyFO}mIUhA_8IX>?xG`QC9%MK(%916NLc`qyq{KNjKnMf&I1k(xyBPYC3NdYS-Zbu|K59G63RSMZ}imIKpilWvOi4hFi>>a0BziFI$wh zJ1LVLRJw8e$!P+l|BuB%Z0Hw^y%}%-$a<|DCUf(fyO-ms+Rc&T(2SWq0yS?MqS&Mt zA%GPe#hh**Yc`Ufi(Cc-%qczcUrSqz{er#KzJCo;e=!hfVz;eto>uill>;p zWaI)Kt5B0NGOAn+X=aY)D3-rta~dFO0pf83P8XoKZiz!A?6X5nbIayH-R%uN8{>@| zp1`mJRr8cvcAT$68~iw-s;lqZ`uL3+N^qh*YrFW=yH6)s8@?2bJ4wK#!{lpr4r+`aoauLOlNHjD+lNZO)cji4_bC!G zYiAg$IG9%kawQVCK0^11pGVQqG-f0X4WUV4&}|yM2DxsV0*{&;dld|}|Ol9$L& zA`?=E8~k*$0iV=9vo5qm2TdapD!xRk{`jR8?C5`fqrrDHCFfr!Lir_}6agx+5M$-r z0Ig=BcnaX_zXR^a++7Jk#d*fej~M7D^PgjdldJ>Mn>ZH81q)wq_ginlVcF7_pY1CW zGra!4)$+LvRYrv}!(N0IE<6G?QXKioVfokru9`Z74fh|L$As=+*H+Rpug&xzvmuE~ z4}@C8f27+CveIufIwkKpip@n5$lG5Nwy;JNcNYB9e1$k@?a{D+J5YSD8Ma@$6L*yewCg9T2G+hcK63fh!0%1wHgJ zJAj_T7D2ie=R$-k{F57n^VUx3CuW5t{PA|6rU6n>Sg$CG4C`44tPNXKl*kcs;QX$DW$KP?{khJ{# zXh&%A_$SDaREs6NuEfO7uFSo7CE~p;HzWXO8nqb6f8VUHC%v1{6v)3ZR81XNGT}xtmKw3KXMt=k|BBq2|l&EgyAb0I_1#zp7v;v09g(+Wo+E`bZe%pox*=p0=ARgUY( zH9I2Q2`<+RLHaI`i#D<;;)-oZyD+4DTT8GzD;N5ygY2>0lO6dysMKs0q8Cg>H5hPz zs`rL^U3=n*sePqg2t?Ixolg!IA^hdyWa-yKt&ct%b@AAcK63dAY$Wcvg{q}=`bjgU zj3Z+4*X)sDFCLLRWLw(_Cl9glyaynLrg+XfGb<#x{zClZxDef0sNvpNv+(K2gSgOL zclF;$V#iAc3g2gYV)BDHY_sA?%kCw}b*m#2Yv(q}Xg=Z-8Gfm*0?}JesDtNH0nD2- z>pHErz7_4>l)I*-0^i`DZxLj2j# zag>0s2)u+a0NxIMWWD?6RrQ9WvQNYZ^29-0dt0^yV?KxYz4jk2a3ztlL-AINER~(2 z03Qv-w*XV$}>20AOcm4H0 zr0l>?>hTZI(W>@OC9-Sp-k`df8C1#A)aNk2H>^^8&3bI40Rtnq3v6I_{8g_}?$kNQ z&(NNYLJh7z@R!Ha5mjVg$RWMImXVi(_h9hUd1Xwy!&w4UH<+8z<2d>k_EH*(m!bfl z`HtJa9mLm4-I@Zgw`U6v(!&>u>~96PUZHx-O+BG{%uhX`YnpsZ1DIPrKga)m0){jC z^!&`?^5s*oul$b{*HA{?xO;2~<_cRFR_XJaHr`2Me6q-w#$nBdY7Bb8RhRKJWW)7C z%Up0Txlkyx{Dwo_j=m}Zs7`(PP6z}p)@z3NMrsV&u@>6|QU#&n*~t`LEPj8v$v7|i z_rGiE8g5OcdGWl*CFa-Zj`YjV_C`{1Nu0626|#A%RS0nWRHMepJ0(*%f?~giIxN#u zL-eR@TRFSpv>ZM|Ap~?b(x`Eo*Sc!%`OHa>L$V_z9WI0kjzIsrgsk|0$@?=aOw6Sj zouSGeueTZ4S<2FGI9J7pb*BlIyNk)5IK=2&ofL+=gr(7rZ~S$|ewAVjy4WTyif)HJ zq!~#J`#geCIr;Nmb*;B}$wUa<70PkUkVEC3Nz+u-;#B}0^7^hWgyB3MLJ#feu5vM! z2+wSqn*GnI^+dIB-n$hagK(56m&=e+wFZA7A!B_ow%^RNhuZ0?8?*!MKCxM~@vIhY zNAHkfBlGp6XM-WH7ppo1$Z&5O_0n?R(0x+>uSk)59m_PV&@0EqlR5}#vQRX795g<9vl|)^_C%S z;;9}5X>Xw6ZGB&*z52rO*lHJYZ3VRQhCkfZcsx>hpKAa>nXJ%V3Asm`k<)qw?F7L8 zLc+OY6a{ch;^aW5lOSpT1#n!Y%s>Fmalb_Os={*VYxk=?XKV74reF&bpz-qdCe?PtE=zh z9q-EWobRo}uzbHwre15T6UvI>&fR}>u_o)><*KJg{G*+*hu%lY$;@7zlNqDkBq(%bdb@pE}qc`tW+pv-;3i)Blf zj`jbjopPf)eE0O6^INj;bgsP$qupr zUs2sbyrig@OWd&H9*z6~6%h{F`2GsBm_-dS>FhCj>Z!vGxWVz5y{35Cu4Zz0l$X<> zFT3Q}Kr{c><%L7jWAEMDGHyIyO}CkvG3GvpbvB^vYeJIz1R(rgSyXY3XKnpU&!;z$ z&xC^DqvFhL`})0wg>je?w2hcO+9yFi(hO=d6SiTKkAWV zV7oEZ%;_5AFnwRbJvmZ&Hn~8ru1i|+FzFJ$a+Nt$)%3vTM9Ebd@-Qx2@23c&;)c36 zcw_S}DX^~-5#u#HnXj+^h3R0SDOKhSV8@Z^RRNZxkb^&5K~BGdYciJlWcAhL|6u_X zriYKa9Urx@CU~4bADo&+YJ$<-sxKqe(EfK~?1{0*6DP^c-yU(GH-6 zdCD+~U#~nR!}!j5_d${E;f6}hmsu-;FbOOfLj zr|LWBC6+4u1a6R-F%JF7;0$VDPR|6dwXSu+2uboa52)qAc&^HoLJ42y)yoFoj!UwS zPuxHP#NH&}yHmcGF&E)E9NQ&8+tj+z57m0(l=+ub_dD&RbFzv%h$Ce30aSj;63bnR z==;}4vBL4dwy+W{uD>|TJ%V+vF)_E@^t&X?Syyp;<-WR~Z*R?C<+!cgnqN@E(+`+; zbBYBys;v)_cEHaeXTNvVrdh9YFc`!`vc_wA8@3)Spc0h*`1-SzYCAo0casQ)R3 zniMo9lZb$8*tq}whTi$9OApn)=TPW{z`hwgHL{smS~DoLopDTV}TQUVnb*dSZ?jUgd26v=b17~2?DlHN9x z`LoDs&f99iS|FNAC!YV+_hH)_tX1P)$#W5IZ>-b`Y!#ok)bcdM(<+q@u|WG@aq z9XH@oN*Rp$u-g(QnFp+7JU*o+OUu=;`yzUk(Qt~Pr`#<{x}=iiCpN&K#ir1MdEB9h zVAttNtp$Pf1uY&~+*jooysoXKpl8h&eiI>Ut zh}U|?v$h;D#SUNoztTHH6V8~zfD=c8uOjUh;dldM`1d=kpQ=}f#N13wRfyg?)!%m! z!H4q%HP+H^+xAzu^DCF|8aYQPH9Ylkper)2s;5yBgcb)+QYD7Xm@;vo<+9$5vfdPq zV_dwUdYp^8W#fPd!RsSpt=KIpa7lwEL~7i^ovCB77Is9qOi!#1i4CD0U6h$Lm;dNp zb^10c_n**n>@;CQ;&}YO1$4xHvpT8nFgo6cYOJ`R*V`db=a#2;@x1#)ysKTQjNK;< zww&;Q8Ci%}(jXpaF3q!@pUI2k6^diYJWOEAdIECW_Hpc)|LAQ`=m!1#D4dc^xz8oF zcmfD8{SEriGm=XnpzkX)dar8RstN8OTm2OeN zKJ#h)Yu^*=`5f{`$tn>PG1z)2;yi!Ts`*V~8|J?PUOwx>4+VDnuTjF~o*1Ef`!vEo zn~@!>3~mx?o{z}HZ|`G{Idu5QdOXbC!&BgLp5r%KWeFPmhreN;!2sWS9YK>!bRsVNRR)l{)u42RQJ9!7JL6p3Qgv zBC!9;kgh1}PnnV*Zu2>7T1C7dF0cmBb4`;*PR&M=q)YMw7vckR`%&OKDORy=T1r4p zIKw__b5_G-zD=(D;N@8GK}@jC{7CCexTA_DM;~bk-9%DZBN`pQT|Wi}czOs%Q|E4S z9{GzDF1uhV%np@eSFDHYWzH&Mm=A~wx_ULe?H|lPRAGccLQ;+jcdr&LuSO=e`mc&C z;J&Hax$6MTHU1m_4C}_XKeAl@(?5tINmrBok!1upE%4pLpyA^C*CpVccnZAG6ut!@ zI$ZP}v<)XbC3zj~?ekT7(=N4o?QLzk%sBc!BnEVuc5#I8Q$pY?K*0D5wy>Gyy4NmUu6j8{<^&X9$nGZ^+uz`VOX;i+^duB5SDFm<4^g}8}Mg^c!HwH zhk11-8ZSh7%ECSKVzcL3h6Fkihn{RDLOg*rP8zw|A5Dx=6Ga8xh94)ya=(Y`^N%Ws z(00P)!-KFBjhWy@$WSLdJ$d!fRy4;>iN zYWFgne}B+2f)*7jJ4~U$bLY+#13-6=rlF2WqZnjABP{I|MCyvr$#Y1p3EHK|h}y<5 zSp2+~hH-Rmp+0p&y_Hwsu{|e?TUlcC_*!UONFTyJ{_8qoYA@+>3-Q{wsHjY#b8pTh z-3=*#*|A%fe5{;4iRjunj|u*i7b_Pbe33?IO0ZB%UaZvw2h8!{rQHfcW6N88=+n}r zCuf9^9hNHyJ@%5jz)ObKyB*h&uvV;22{@)xmk7NMC(Zg2d*DeiOUY6Q?FpQz<-1tl z364iT2mJL(Z47^eczK)wz2Jvw?dFDRXb*~N)Ox2Vwrsf;wuDDyxTZl;5S%9{)EUEY+7BAV#=>>y z3i=4p-eNN*SeJ{AIHJB%NzSC6HIn7x#LK6M(L!)<#AblB&ll==^}O zvb}Ge68k?q7ihS+UTEfZR}h1)@x%7}8EaQw#x1wn5|xX_a2IC$7y9nZga;N>(bB%K z=1LAIU7D>)?i_?~cRl#fVJPj&_w(~JEr_KvxkSdz2obdBEMhI3T~ri!^Z?|{yl+U+ zF2WGVj)0wvXXDFAF#8~3^$SJvm~h=kf_)kBl5BUI{Js2xiup12Jy9VyqywnSG2<}R zg;hIw6KG!;Sip+bXVq9=U*AkgA5O~Csj4I*axNx`BVD;SwC7>xOR@c__JYuM#_#DTOzOJMAF>SF+w# zCGwlz$5ON_Mt#I1xLCqJ;X=T0_Z03BZK|x9veeHTgajH}TEbFXtim#8bS6(OXwC-b z`l4fep3LnE>D0>}XK2G4T2{g$dadL8AZ6zXW@t^>Slt4VEviU5QQL4BdNy`@DoEB9 z5yn4&hn5t+WT3Pq&w?!@vEn+(BJ=9jxdOFWrZSaqAHU|0hpg4-&wkJ9aXu5pkLeXZ z_4>fF14zb3(3J7kz4&L=R9^Ttk~UCQy%=7OOFW$uVhC8RARO`b1_@1;z^8cI;USeg z0ouloHLCAVvxRb(Aye|vqOV`Ir0xni#w-0Bq`y+I`m7H}DzfF##U_u@hrM7{h>P4pCoQTCB9@8>uv`(3e8s_h< z)*n+tPHeD3x|g6iLflXoB(Dy{ac;mmkamy(>t0UCIMjOs)!bVrBiwU?;QyW>A#_sd zeMSX;-;}(c7+`IzOgnMkEMAFpB5PcLuzN+F2~(@k z{~P1ozOHSZ&!S!yQ;pvA)z0=``oP3J4JKkBgpOaN_`W#aSSv|u0ZTB{AL}#$F!Mau zomlZxgtlL|4{Z_!vWvn)!r3L-FzVJQ_G>W>K&ikcp>!pE!>;mlxRwFbp|3sXJunpj z%<%ivnun)qaI-#rS9ETbp;XdABzO(Ent1uY_34BCLK^Piculq1KI@})8EIii_Osgu zkX82%36srxp{!8Pgc0ZE;!Bo^mS^19V0d@#0Hb)Y!bE=$!v=S^&i;SK)yk|{ine#H z!sg`!t#`|e%uODFE&~W17JK$i0ZbZehn^wagfkrOGD-lmnJI=&}zSpVu12JrWoH%@t!Hi2Fey#A`$5pgw1Xc2@G75K?tALJA)sl_ILd z*4O5(OL^fR0fU3=M}4{P!0-W7wAlSl!K$0z!hmcAAAt&f`-6Do8jC;YZ=oPiSA;Z` z$)HFJ0Y&oe!V#=(57P%hqMbb}jo(m3gHfsm)lZ@BX9T*kY01ZMXbZo!Oc1~O)f7(Q z6}#n0ODZ^xdJ zZ*k>!j85yo$uj;i*+bGOJ-LyT)bhkOvn49iY8VjPC4e<(1q%#53RFg)10Wg5AC4S= zp+25xt`XEzT?4Gn;)I<~=Vck566D5O5t`LW6uIW~lCrhcA1m&o15w0G!$Q7o=GX{s zx%S}is(|glzqwkvkv<^ey5!?9}*a zD@F3;-bKsTAOs|1d94J4?ml0uV_;I0T8}?pJs7_sRAFC|v<@J*)2yJx%E4Vq@M=mP zhVO8!YK3nyk|(^j&6GSN1A`_C9zf_0u&YMs|0(O;iNp|T;)D$dyCSzscLYhY%29UZ zLtP1a3v>$SqWr}0Emuul1qLr@bCKYvpc0aITblIV6aMCWQ78Ys?1bE^sxx=yb_-us zhl*%1eik>s9nKLW-$e&>k@?+ZShyUFm26han&ZIWvoh6c$j2vwW4Yt33k*xoGhV-V zYnTX=GXwH$GxecQm+zq064V$2SQSU0p}C!G*OpXe6d=J^LYVwYB0~l_m80FpngJI5 z3d;yk)6E9ethE|O6Ou^uZB->Uo*XQZQiOzwuP~JDS%Wf~1}0C>d2oHOB&@ zO63|v9)`?}-wt}V6rsg~0ZzAddb7~4jm;m4>0GF!wE=ZgJxr-jO?DH;(cNAS!uVJs zkZ7QOvAd2msXpRg&donxu??BKFbobP@I38-(bEA^NhKnnXT#+Zh=inMBAnMwgXWiD zOUImQx$t~V%bh^6W1nAfWPo7&*WO(wxO0~UBIZ-^N=VNY>l5g?5 zSHW``K8Fd2e#Q=MG=kU$aIR{#a+xOvIuacMG>KDz`lZ_Fuq< z&cRsKM}2f)$k?@LJCsGBoaX;Y0tI^=2NIhhf*VaRLZhkFt`(HLo`dRKHrE2OppybH z1COJGAPI+HVpJgIJb$Y01h+35YQ{jrum#tT)T}w&Edn36)fFUehs6rQ-hjyg8Gqb| zD?6z~ZdtLEU}i)iA>?3?Db1+#Uo-X-&XS=Ka*mUEuY4D89QaD32^Kh+x8W+&u=Y6s zG%pK42U7-n0aiPQ>#lGMdCYqjnIeoZ=9`LoY(VH^(tc>uz3c((#?-<<6R&{{8SVo* zI6T+^KYW9s!>c&#aQIr@Rs5+wccr?=PAai^+!^ZZuQCPtMkPF7ZE_25XE0u2&<`2> zJ#lW_8Yr0;om_ro>p>vCn}SHD(uxAIYd^7RQMaH#bT}6H#5n&X58ws_-e~y15kI?9 zOK}wP5)P}w%MNcKfdlS2xacRAMyH>W?NTHqMLxk-52EFiW_XMDIdDHm>S-Lkps&`0 z4@JTlK(uJWqwrh+e7)`GK5PuvVGC>JMUTHmnt89VgRzxx zJ4U9Q^{?jOi-)&?;jO-VD52J!Pha>|M(t$LF#+(e*ADO#+2MIi^6R20htE zU=okQy#@o#BJ7vXvf@I1Sv<1G&&&5uj*tFka|N@wkE1h^H4v-s%7?$)i2IA+Ix8#@ z+=P2>4GZCA-`7Jc_o7~}))|$8Y+toUju9nNK+YQ%Jal z5@=5>JHsX*$b<$iI8=0boK$^L6=05f5e~}uZ`zKLTEFVVgvqR|xrcpJD*mvw(}x!y zlOWZ7QL0-MS0#f33~*N9wB`Qx4s$2GG*JEXvGs1TANk|VIbdVUDd{tf#qgJQE-2v6 zICRTC-jWI)H?s1Wx$sYwBIP=10*o)zfl_yBmdFw)dvIfM@UKOqf@sq`IO~facBI#B zAzgx788@kb2ls>2SbEH)dNpepKN!k)>`v$G1QVElm{k|pP?hO-+Ld%2X=BIf;HR{k zl$|AVW|v~~nLn}}YDTf*P1JCQPtl!}d0ggPV>QdM60@kLH`4E-$mI+-VMQGhtg7`k zQ$(xu>jqL%?4OTI8?3OKnmIq0r8$!2(m?;@&c~%SG|O1nY$}$#Noz@ z^LjacUDTUAAa^s7%CsB6V`fS6ZZD}SM*pXc-?QEyEB zBOg5Xm@C>NS^sI%aqG}byMfT-WC)MmDUl_Gs#a%qtPx2%`#-aok^Vy(5>}idzcDqA zKXiGUz?V9Gp|%-f#X#Mu=J?*EIA;*tOHgwfW;;nK`}m zh6(->E)iirIVxy7|gP$ek*Z5K4r)sOS9wK_w#^{%sp|Y_2c5% zl{c-D7>E;t${|j!4d$gfL5%Hzr2TJW8n?U~(*GPu?_7{MKj#-e6V*rGyOwodXCxf# zD}(h}5Zh8 zPcrlQqjj-|OdKolh?rRsN#_>Rp%1swuZu%s73G|pF>mT! zso&2-fd?<=BO2@t$$7#Va?%h1e70h|AAa8Ih ze(6=Zdd{g|>`KH>AT8Br16fjd%kE`xY88J(%hJ5rekwm74?#a^y;(2~=t^|n4Ide? zZ&^~7=p|@>l@y+o7oq7Oy?+$D!W#Pdzimk8I|=ftFaKHL8`Z;vpnOvKePoqXwBH7@ zFA=(sTpJY(noj@utX@^>g#KU}Yu`ZDP$X{XcH4nHaEabT`ngu5j!5V|LeB39?$leR zScKmS(i{dG+z8Kk;y-S0ejkGhw_x`uh2EN^{|2mL_P-TtMat!*26itq(^98u0fj*>Qn~%*oH^a~UE5*uI@`f!81^M!_@2Dkie z$K+wC8%SD#P_HF0rkFOF^Bt|+IoPPvm0&Vcfr4{S<1YN2b$<5np)JpUe_BgE92y)! z+3s|{|26)XaY=-I`^9cWm@6a1%FtBIcF|!&2JhuyxSHFvLKa-U`$)*J^~8y({H&Qu zxk+osO5FS)p=TegM-7OCP+#Ie8$v?U?SA`J!xj|fg<%Q?B-k8lo2lBOuG+PeFp@sJ zJ)Lh1sz&=v(Os4#M1nbLtSyiNW{}&&f$nHdvk2X_GCTIS24&CVI(j_yS7KQj4E-7i z--;nfMs(U?!nh#mSdJVG{Mg)7{SPk&e~Tj9t<^*z@T5WnewwAD@%e+Y&p_~Uh(lG{s}j5JuA>O^Tin*hg0=i zUVPT~5GcUFfz{%5Z`e)A#gkrdm6Ax$K3z8S}ueswUQAlsO+& z+_h*$eawBy-RphqX=;%1kepz=c1;+Y?g;QrhQo}vm8*?dj+(D;2hBkD)Kw2 ztLg7LsXBcB4qoNS(M{=m`1sq&1AEiK6w=b5Y5`zj>34E8h&(RWdmyb5SJsG~`1;#| zp12DP7j&j~4XetR-r5`jPU}4-dd?6YwzcOCQN2FsQtk`m8RN10{n&I%cgee(m9vtf#r$kW?HSe1y(%VUmT{;+kVuh z!RbfePAfuxa9G&YcXH&r0t20h|3QN8%Iw)c&&c-KHR{dJ8OoBQ2Nto0-Qc)zCl_Sk z+|1%88QaHqB1|>nlm{c(5oLA|@a%@z&ns_R{ygEbw(ECl-(!|%5j`fIccz&tIR`d| zJ2S>&FD{@Ev~KO*%RgtP;R$NQiMs-`9%72ZF8uW|u(!9Ms^?}KM(=`cxr7yu@~=Hs zqG!w#VW`ZDLOJ%@WiDfa+2I0kJ$LD?OzJ0|@moiKtR0z%8~AsDGbL{G-!FFlmX@Ts zw1(NJRX_Xp^i!RR==IGZzn?R49jQ?x+83eYH%aq%@kbfm6?of6lp^TC0ItaqIp?VhX;f1cK+`bFGqzJje;MgX%O0pUM)@k#l= z^)c4p*Ch9sx_1rr4Yv|b#ut!KtzoQvJ!8NJ?eDr^GX?%ln9A;zNq)pftCkHEZB_Kt zgB}ULXh{uDxXW)tJExbMTEF-ug)KnbH*9myKA?ympU%7NOF$Sg>98+;TY$x;Bq4ao zJ8dW|Eh?iU>OX-7T_c2Tr|R&26}bIA9*vIJJ}bKQchAHLD0>|1(#47g`A)YMY^wFc zKs;QmI+d=JIHJU|AVi*Yrb8`JcEu4XjiTRD8$G(i?LjH4(*rx`@SUpFUF!$(dkHH% z$iM6WD=B>hD%W>nF|Je)%kC$x5EpII5rp4^Va**3Z*)>$bcYx*P2XP2Va1>M0qjJ* zeg#OZ1=ry8HIwA{i9}k_qUh6JnP_g%7&`&tUmnCr-Vg37@yk-Ptl#^Z$~BIC{mV1Y zmLC1=S8bPiJ|4aa)P)NzwDm7I6|p=P)I4UK%R#A6NIYC4mVFJ(iNmjIp`YTSTLK-C z{p>Re9Zp2ZyXnK1L3pnb?`-by9bm@ld1 z`o)^WQQS6YTZ$9FLhe&Ys!AeLrINBFHV8*A5cjGh8l^$!g%B_XDx!-Sp7jX3@Fxku z+9wmo47O4m_0vnCq8AL86z=AEENs&4ul1$FID-b|cuB?m43Hg28=Nsq3U(y#ygzp+ zLNRGjvddsgfvpjY#UTS@6z2^@93ih50N2>}*K+jWltj;* zMQq_rR>SPX8lYWP`?#E787p~DM@3_7h&_^)+Tp*Su|(|5VRmhb^*6}vfkY^xFczEz zT_rfFis;9mZ%BAW7{=M{+emx`NhPK*QlalYF36>vU$AeTGijLRD&s0){k>Kf|AOhE z8X*-q(m*;I4aFf2mySz4V(buC_h@ypmV*@@}D@TeX3%Kjs7q!jY6M!uj2 zZLAtydIC)BppC-GP6i>ZVJK6P%#@fM6}|_|w3+B`;kS4i7Vg?O2w&_Q6>3a^k}8D? z<`FEOgtRTWQ3T$@LjdJ}!!sBq2%g;61@<)aA8ch@1O#xtXZ4*t=is%APKsYP)haxH z&geTt!TI=81805&Q!d4Gv{qwO#6k+69OOY=369?poBk9CVup#qoI2mBATm!z} zGEzC44S6(^HDw&;JQJZJiVELgk_aT#GGQi8W{Z&dicYx9Y$447d9ppftJOL%!Wc>z zC#;9pAjaGva0_%aznHEDTHTUp%J;F@5%pS))o_>$k>2Y_-c`mqn#Cy)Z^=mkblB@g zQt*tg0|FSOlB$rM3czR{g)C-CkTV@4cv{NL`HTpXJwAeT*FQbXx~KFUFGlI`oI|W? z@292nD9ZCj-@$c_Yn>e)UI2qwc?LVYWELityvVA0#c(B|%u`p|f@@o0RPu9UsU#sm zT+|`%$Ii_^E%FFE^pyU}dZb4X7;X3})(FsshHyX@M6Pz@O(1v;7)lcmdOB7$Lm37y z;^28~_+mN8ofP6}+MQLu{PA2lD{FUmc>ihyAsaS|5^#t|vLd@g&rAq~ zeXl6eg*nR6)grU~srsdxwpve6rv({!+8)X?p7Fgs>O-~kqT)B zWa3_wpo;E6lPxxS(XSdZ`df47Rmmdwh^}E1ed5qgo{trG^gN&WKEyu^kO%ls%ob3_ zI{e6hSYSW-&Co(qJ;Ir~;w#l%bRgS>mZY~f8%%I;qr&LJomjvWCy&R`!_XXMBnF|5pB+W0i&9lyBMKvB! zS6&M)3?9d%lqPzE1x6;cGUd?{MabhjLeceKAoAY4PoqwnWErzO$xmQQyEvhwkDAD9 zO~(v6u&FtED?)A+M}o+X&4aoKb3dbv;_V52KqjZF(Eu7P<~usgWGIIVd7d>sq0PrnUW*TjT4CH{ zVBdZT*lX3VKz>{a|952i+lkBG49{bX;meG7YHS@fT4WI+ZOO=kK2Fy>yt>E=%ZKD^ ze(-a@UpCW zTzE460cFPxVv9H-r#USSn5xDiJEdtHMa5HWh{^H|^?yJYE4@u&qGW6FJbd+#Q!mGZ z?=%i#m=ETmEPr0T5u12}O|mxdk|?p{LJuta4! z$#Ru!wBO#O3MOJL3%3p(pxpU*kO+k|mIB;Bc%v<#oAG*_qiCONY(Q#n@p_r;)5j%ii zB1Y7w`cNpHPY^0O#DNtzOcuSF9nR%VyV08`cmdf|^Y3`>bGDKk73kZG|N^D|DJ*dk9rV&GrZ=)?WZ225S8qP~dP@`<@R>=w)DpZXq^}Jo}w5 zCWQRAeW@jJCfFg{9(8tQ#f7x4q_;|k1mv+?;^=Mf!GsoBaa|Wsh*^z~NhLk^YF#Zm zuzT&jd^L80bdsl3-C+UW#X~P#wx67NocL=&lkG(UgX^r9f#Yr-K}h+cRL#tAw7oxGr&j?f?Pio+AEhP7u&4ct0Cf)vk ztWs3D!U$Rzrm?rp4bOk~b?-Yeva_#j(GkuSJna+9-7|oc@2>yVj?sjwqho5Re#2pjK%sLt4!YDr!bVhZ;gK zP&Bm?Tai-0#8F8R1Yd-gkeh@81#6?$0koKhh*~r-pp}4Nz*Yh4TzsG)k3_2`5F|YF zf+XFm(?6m!y`T4#>70#%qO?Cr-jzq-JfGQ^wCeZuiE(=KL9WA zBpeNP9eyo4c3q$9;LrG{AXBN?BdGEz2rDOWGZ4?~}{stE#n` zz$wXP={K~&4`glmfNgoruN3)s7I?cwK<1eUb?M}Te%_!o>v+>njt2yCPON0iGJqOz zsn^X-?lyhiyfQv(-z-?G#+JvmHN-kIrhw*k`d<9_@%$5w06nyX3EcrPks*OKxZ66lurbS=IDI3pF1?9a}MKKjsOyjx?|Z?Fb4FBP}D3 zp8+h7gts%fkJq%x&%fjfN?mR>j(4VBPKqLPhO?MMG2+7!Oab1o6cYIIOhhSG4EkC! z5I|AD>#(X*Kj+x$%Br=D<`iw`D*x%6{Qz6Ty}SlfCXHGB$FT z8*O;nFSx(Xb?hoG`Zph_<1J?LxKuC6yHnh>(J3qZwJ7VWT?s;9jm##$=v{{WXf5c+rzDPJf6dy?#vd@ zQ#^|7)!rbPA*X+=C8FphQgJDVIX^&-L?h zdy`;46dWK%y+K)_)>)TXIhe7)IC-oCP^N;q<57_2p-|Q=`$gUzWABq%63VNF`8Png zh*^1s?JJkSYopvoE3hgi6Wl}zO|qSgXGM8KeTg8=^dO9;P?9waAKh8%*9(1sil_@( zS36Rr`b|UT{18IbIcIX}gkB9iJA5$+Oc1WG?%YRm9Ci?6I7P~~m6wrnlC2q!P4N%! z+b&zu1`pU>I9?n$d>R_W2*{KmC;`Dah|)UF2AjD-VNlavEE1kY`*`*DCLk3lKQ|L@ zVFBdBBVsRA_?0u?W-1G9j=w&F+@o_6E6DOu&i2^N0n`UAX_GT30Z#oezZ9LaPva|T zx|94Q*l8_0#ba*3+4t;X*S_i*xO+b;l!gyMiUuf@^m|fchz?i?XF8$$`mi1pfP?+k zH)MCimEIwm#%X<~0A+GV`%vE!J$?uQf9~7IYFEPDUY@1x2853CtOiwqILHJ;WcbaPhGiYbFL~e^vZQ_al0sFZptpET3 diff --git a/images/elements/png/gmail.png b/images/elements/png/gmail.png deleted file mode 100644 index 88f23d3053a908175cf72ea735c863d3432755a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25542 zcmeJGXINBM_XdpbnW3o&SV2S}mVk<2LAuNs3$cO5ASh+9B1%(4P|6t}3sF>zDEyQ% zM58DupeP+?6cLdiAPOpFKspEvb^4rl9eO_g{~zA#{SdF1@Gxg~xz}3vy4T+O?C0`M zYpdx~)u$qarf>Om<8KJbz>hLWK@R?dEm(dYA#Jo}BjPJfC~1Ig}J-aGV{uckbMX8;AXhSl{tOH9?}_PS1zyY<)!w_pX{5q4%`SN3_Sc zHp_Qv(d%8O*Ij;oW#L8l=Tr3FFk~zR`vZ?0JJ!u}uhGmGKn8Yt_6mjRgzVo_`fLPf@PK+a#y`gqWiklAk;s z{$AUBAMbB#Ys1u)LVD;!!p>yexcGWl7^{=d=V!~Ef90nncfQ9_Q$c^eOhh5tz<6=V z(>n~$wibt7zb>uyHW8;bc=OYZP0Lw{cFE3beVtefC9Sqsb~6g(@yGH}+%$gyrSsS_>8| zkdz-a6edn*?R7Mj(^Dpwd)-5*>~OJ;*ukWo^`0KK`Mv>`FK>0fT%O9yER~#(w_ygm zoKYKY&|Z`BZ8;@x;DJF<_D{5|!^Wn)cwZz-+$AqBUrOQVUL_&qJ#B$mJFCpw#9h-e zkWUqN_ei@7V=d0~H5k|VH*QE~Nrk+m>*V5tw1C6x4wao%gX#0ge;?0kvBcAv9k^J~ z4}G`U+~+J#I(h2UC%}0gwCeKAUnJO9Uf6Co9o7=fwq^^8& za>fd_LfrH0ZU-Ek5ewQdFpZ-E?Nq%JUc-ICJMcB?*QAXwyRawMNj6MN$*%#nY%p2< zrVTXFRYq~FvUlxgRNm_GF*m!z0l$C$zCl=>@bY!8s_0<|qs`b2A^VV-Hev(rAaua` z(cLX=tE;P1rW?t;u#?#^%allob`(A8{Q95MWi~Pkx1@JJ564?e znM?=)*0tbOR$-)aukYXrv(^dT;>+k-N+F+Zheto`OoBAV=R{Ic#u5M`$LVw*cIwnX zk2#mD)G7cVPB}g12{`$98jFP&HUAWsyEZP!zP_)Yv?p24UitvWd!_wKI8JS6hoC0%3#khK7QVol!W-oRN~A&U@BeP5zchieOGpIlGN9gZ4Q4dlOFG%(BmZ zuK?eQG!d}Axvb>dglSQwcfk70vt2K%ET6$Q8?&>ssab&zw1BlVkvpT=fqWG$yLViZ z?}{@12lz0O9(9_D`5BGUKv&n+RwZR+>dVyB{)#Zob;6?a=g%|k^H#*=s@E5V>u71N zsGXT2_BmHvD!Y=bYa1COh6qarvxmN@5O0O~{uvRrDM*Cng3Cn`4oOVnG=||?2AsJm zfos`>pGSI4$!N<&o6&<#m^xS0)yQ)S#6(o|0H+qFP+VJE%cNRZh(9$JhG9np#~3gj ztvbT1VeApiY2J}Dw1qh~S==Vh5}bDs6tK(uXmN4@lN!k9R+yWcQ>&b(bH5!=4*JgJ zatpsXkoPdBxybB%ub(l1M_mV63RB8asOaB)4k7m|#geMyCK}TAhK2@%7j~2%KYoZ$ z1#Dw?_>hv+Nl9l`#yOB?S1r-OaZ6!=ow^+mbc(gL*tiAbR9A}%LX@?F&w@|6R*wv= zR-sI4#*Ttavtl#yP58VG2euCWcuv*n&#M5>lk?&DwI~e@4e>{!KfN#nTtht(KEp+z zL*@kbmw266&M+%qqAU@em3Q{u8+%rgAMJKJ)s7RitCaKQ?5k8TaK=)e(2E1V`Ua6h%`H+$5qF}* zMeMc8vZt0a(keQNunNPTHORfHM^e`_4|>el<5X4BO2q}-#wyEsN+I;>uU`eORo754 zONk390PBI)Vu9DCVCNWP@nJ+^7*%hIlu|LN7`qz$=ir~qiH@&&N%JMik?=ibId?0D zYiVo{hY0=-g%sgVS~~gYaTqMo`TR^C^_IL08KwMl8Pf?20z{4V)kzW9f_nI4b=uDl z?CW>>bnsbl;WS|UfP z1%LeNH@%rdu)$7Cj<9u=h7x_9KexUr(uzUEh8H%k{$4BTN!?WMqGYnac3fq(EJup1 z5X!zOnFspk{YOpCCN0;K%dx?>^81*y{?&OpHqcg{+zq}R4#7ls4ANv1ESg?Q$p9Gb zNJsBK4Hgm1MfIyM$X}7U0tAd=UayTuAJIY{&_Su@y0Zg`iKP_(VO{|`>n#k^!pm&a z$&P+=XalBy&-8nhj$_}>sVe!oKuo?XDZ)GG?=HO!4xGtvVJYS}q@00ivjDnRUQT|? zX`)1MM43}_7)IYZkT=ZM3cgU84^DFf;_`b=Cd`wwf-^Nmn23hik02f|Ed~GZM5Kta z{FYPLqRscq>3;RH`FHj3-{V#ROy&_`<x5MwPA6?-+AQ0Z z7>PqT1snSX7wRv`T32M&l; z%~7TpqPEjdouyPrn?}NmuZJ?!foaVHJ2~6v9N>eu_gbJE zQ7a+t9ZQO+k-*j^A3l6w<+W8IVj@o^YZ);yG0g0CAHs)y6P1x6@?MY*5t`!wEFWm8 zOtrpW9U;$%vXFQ2^W$0h5oFt55wCTo@tU!vp@tI6ba$;fJo~lTL`q@O$z{0?K`4&I$o2;AE>rF5zi}^&^)7w^(hpFn??7di3fwF@ z`RLu2sC5cEjgR>v|NatV))L{x_12pqhEM4WS}l|2qa@)H#%B`SfYfF^5820`mRSif zEpZF;iWd85B~sX%STbcwXjo!ZIR|vjB9v7}JbIa?h}{1NQk?OdNw2FDU>O=b#bq!a zRg>Z*OKB8FcMOTKV-=X_tEs>>hG0^2W5H7PX*8Uh4pZ2DHY9a)sxd;2!JCJ^To}4( zdJstIRo}DFaICW3h{BdirPMkik--mz)uj4s#&!I%wZKPU)72DI{T)aqt}}Wdbqf&! zJ(1W{?!%F9?bAe%#zfOm)^0hJRj6)jG&AyNQW8US4106%t1({R6t~=Q1}L|?;lcNaYGeXEhh&Rxl#78zjcej3o#O^K+$#o{78gqleH=`PFFWR4@%q z5X}!S@HR0-j{@c)-J(7U`5FoBRN@H3OFD|iA6;fAgJ{8Bm$88pvNdlvain7dTe60X zXwG@PI*Fmy(y{J7g8b9g;fTX;lV~v|h}I5zTO|ml;aDn>9$KrRWRNSyMlordmJXxf znfB_W7F&xQ){+}e;f_Gr@HO$iKB;-AvBiwyY6w6N^ zX~eko80g*TS=iQ7k?|7x+hK?BHV1O?H_*Xv9gUf2!SA2~V)*F`!laIud>wcb1FVIm zfwnb7yS}wO*bEBe^%@x1i$(0OU-$CQsUi1#cO!u1Pov(a`0CM5A&N)Hk@5YrZ|(M< z!;hF~T*9Qk7y-blrifo3X9z+d?oi%f{Glju3+pi2>A#D@2*#oF*9= zN#|=+mZxHMe^>w8`Cb=TOW9^Hm3Qxos7tQ!E3rG!xbI=4cCBt5*&nJtw-5yE=JYw( z`m^r>Y37v9xk00L&N762>2(be%5CV!ULEJZQ#_LtP+VwWqs`@SKA}m`yCJ5XtK=9% z7ln6910M?hakZ?l2pIaugEYHPVYm#A-{>S>T}}+x3_*P*hqfBt*$z&5A#p@kGDFMc z0i3D=l8fP4o&p!7Ps`U-*Vt*a6OL05Z81l@J0U5kpR*e2<|HYh`{m|~*nKKxpH8m({qm@+x*lpEBHA=M0 zHA;xREK;&N;RjEgOaO9Io>BfzftIOALJ%;Amef@qhtWPzMu}bvho@L7i`sN_q_-Zu z@Dkh2gRwB>;2U#Dw~7={nE`>_We$J1sl4f^D=KsbV`kzyz!`nCWM8m8ZQ$Grr0T<>KIrINGD;cVgY#_%n54=QuuW~#8|KVG$$Z>)n9?%t zCX#gjoPpvTqQ$!xa)hkN;l7ewW#WDhUZ$e`p)bID0BX0Wa6A;?i6zyy-$=2p$z;NDRK@C+-^l%s5 zh5f@lyW|o*M~XPHBfl<1w9ASJbvCZYZoON@?HcJ->L^RQY%vSfOTY1UaiqJ|BPE<` z!(XT@jM82Lxtv`~P@=wwr8V5^lSpD>pm97uq)TtTPnYsshsQa%hP-q22E;D-#w%>& zxqXq*!8`X4e^S!7dCO(+Y_4Y>(GZVL9d5`yb~#!1&uTKN``*NyDR_&m8D`Lw1)C8u ztGHyxKAXqUVz2ANqe&}Ppb zm{VL7(bgAY&DLscYvXggYbDaPpwKkDp5J=Ef<$wJbaSu4yX`r?V$JXe7Irc_7cPRF z3T*ezSh{MshqCF!a3YZQ@<`F{WjgqYk>9SUySfxWV7N!~35*LzTHs}1=6YnUA#PaS3`z12qHW_SmtHvu@ad z+VTk1xl?@+XreL0kA8#}?)Z5Y{Qe%S(XPI8fu&5Aj3Di(mwD^mZJ-`O3-dSAJwJ?w zfo^KdM7Q24Aa~G^Tbpj;8pGY**lkX>z@!%9QgUaLDw(mvjY9{Ax!KrwPzS#Z>=8@S zPHsQ-?Vr~E7O^PPP}Z1+w!$KxC-~eg*x5K@6qVcBggsk{4jml! zvmE{TC_Xf4>iFCZwVnNYd~(^W*QfpQB@9*1Ed7rke>S_n)nZ z66JS-lYYF8E+O4Wu<>rN4RqgHb%CV)BQO<8myxposw1%ba!7IOZuGrc?*=PN&2ELc zZ9G-`_+J0OPM~Vj>&2rWJw1qyDks#;q`6%k7L&X0CM4Yb>VCQ>94~l{Zj6vb-@Yo8 z63Fm9eR{5xBis2ra2sP4I@x=Jy4CmO$>$NX@CcIjXtyuBq1*bt^}k$(Ih`?SkN-Wq z=+ILgJoF+-d;X|HTqd#Qrz}~6XiD9K!=HC0s}_1>jzYa-I;9M(NZDV76@*|{&8==Fj z()XoDPPP+9@1yxrCpWeih?vHuf*t-X^c}s@gC=iwU|IAnfyDqw0%*kqG zm(&`_X%HeuQomN(NL8m%XoO~SMejTWGgF7+jzw)CbRPuUTqzHA9#9yj`^(nW)@i{- z_%aGjf8^<|d&<#&%u>~|y!Fp5!6!at{ zKr;LY=CNY#^;geFoX<1T>10~hjJV<5p8$Qd35v2BrWd|+hpjEl?~G2~Wam#$>^2R} zm`OYhB|V;0!GST($gFMNkg)D(sKx%?{hJ_gXiOq20&A3{ON%vjHy;?LpqlQ~ z->m3URx(SYR1KUj;0s=7sgc?!gnTy9FludWUHUHzcjZxN14UP=NxC}*j!!iz$(QN^ z&W}0S)5m8js*9hyj{M2DmS9?zm3<_!ciJzo5Wke|d=c3Be_$G55Vvn$(n(00Y5qPd z=-x-^FAVw=LifkXfc_~zW#;j)!c90id`~)5g&(_b#i#_S4`?q!cT5HGhPJj3@;Lay z3Co#b2@jVqVkocK`sqQHs$;x_r!L7l=c^u8xG9F8uCZop_LUNcmrkZz+`OiFuSHA1 z%JU#w6VwHRU-++?d(;A>bE|HL-^xn5hGsulK+5VwC63Tjgnfl=F_MZ!et^C`ll|3pFPup2rcVv0C^q=YfUJ!a@rP>8N zH$N+51>;wU2H4Mbzm&iKgt9RE%0$!GNO9YAh(7?5iPPC@E4>r)j!ZybPZO1P;=fZA7?A zMf;1$f012UiB9!t4;g#CxkRBgjDA#8(=c3#qRF1;A&U3NG9mN1_cuBPJ^gdHsAs8= zv-U}azeV@pWvqDB&QSzbd{6ht_CN3)q-@hMRQYNoO*+&2SntPZ>Lio}-ze|(WB(64 zYJ2?d4XD6AnC7BN_c>M3$C?Lz`kml5Q`0HtL+umXvO>5arC4XNrOMK4%gGs2bR@Tq zuD-*6i_g67H=49O%VF(`C z7pJSp@l6r+f$6$+zR^CEiN_)>)v^PBIe_8}!;Ai|NH$GN91%Kr_61+Fb?c^M9*14V zj+($p{aam7eUW+3f1bvtrd9t-r(NB{SDiD_QZNH)v#^?=9V2m|q$#Vp20HIfiy z)dM$XUr!U>GQlkRN|4Uo2AHoxmIQr|CyNdWaNhxzIl(MH-r!0a6-}d&o@Ief2{!(n zyQE$$u9-ucT`-4qxc?gU!Q+Gk&`SCOmi#z1KZRAWzE{TpoS(7HkVf3B7>dbMPpM@y znEOSf$cmNsd<`0Fcy*xn5z{HXq^-a*JLRB+8payip}`t|LJ<|qKP$&BbxH#@XZ{NL zIdddz&%EQ@orlIuaz~D#2jOrebuS-xuvc9KRS;;C;z)x9>F$j25QykHZ&<=Qp z8ES^b40v5`3?I!|4wWRAXYb6(psa6ZsB24u3c#)ZPFNNx^13rIE-1hC`mUia=2r#U z7K{1X-MQdcOWX_uVZk1Q*T$dQ^IG2H?JVVV(D|@}(Id%+ae)NP8&v-8zj$=?dtRdy z`X`F|JD}yVOsrNFkL{n8uwf^jxe+|H?(FE zkpwp0p@+}taVp1IE+9yr&BCvr%=vRf1D#w>pm#D1b%i_!QF0m1Fkq#9kaHg=ykCbe z03k9OLbokJH4Cg5!;F1cph{lNGBWPn=htVm<=ZyteY%5V$vDq+7R&og(NTwtXZiP1 zYfiEPcNTW*sD-9+V{e9Wq1so|w6RtP+w(Io%y4v4)W*>B9@oV2>K59Twl5s){giJZq;1BR{MoxdaVjv zP}fz4yB%%a-C>LJB=Lq_yQQK)yrlYeca=FxeG^~t7;4|GmCMOcgA$rEA)%(9t~TCSi9Fw7t2*f$t_f^W1cDL*cL%ZL zc|3G*f+zz2kF}_x=%TW(Frm|q@}g%^IcAe$tOXFkYSe@q%tQK+x2I|K zd1tl_1G`XJ(5YG|H|m?lT3oy31W(juEs29FjmW~H^S*y%s1x18|ICrZQ48fH6Us_( zgSGE6Y~9TbJz}8=nzP{R5K@tFrgakC2exmcPsIZdh{h?}n8F_1x`5P?HT0Lw2_wnb zL0H~}tl(==cJR9F824Fny^`L{h?CU&fe`un$%k+N0_C1ClJ>ljVxwgPetNha(3!V< zsj6&92jKFnP{~BmmMP$}a(}a86ue%KnlpPoqpm+-WF&&6f~5UMOv%`!<&od+J_XQy zPSa_-y3NSrx@Qejk`p=swRU~?R!tbY=Wvx8^g2tAGt>L?@$_N6P3#Onx$1^}HxTw; z?4Af@4aFLI5u7v%C@aUU_s8gGFJv1J=LI4`LNV09TzV?JR4`_A5+myWN?VC4l+UuW zj|9WR)ZAFTJk!z%4Q(th*SV|D7Og0ijWbLH9mI49Fw0|YKnDN zb2<3`;`sP@OHSsh36CYcK6~4etT)$dfiCRO#RY(bf^~q>)1C$6oZxdKB{)b8CT~PW zr+&4ywXDdTHPOJU*GC5SgBsE>M5kW)TMV7~5F^kl9SvqvmoL$IkaxTuW-ml8MB|Xv zK!ycI_!x}qhN$zGN;-<++)a9HOw2_*N>0~FGz%;55#4$%?NfypV*0RP?^8U?Y{qhn()v6#E{CuWFJf`aCgU?rqh33*B=vz!6v+gW_-}!H4aqI(#BOObUQM%4~g|=93r;{ohlaj*LTY zs{L1SN7iW<^4~^)Mde2~OV@EMw!UL0%b>5r)yEoU>M2;y8YT1=_60rIyg$@%6I(s0 zkGLC`9mtHNsO>*nI&3LuJvJ(*70^X`s8TmQ=x3vHD@R>oN8bMX4S31BJc0c_(} zf3$4oxauxhIiAloa(2#S%|!0sAUwWq*%j#7GO9&2-t4?Lq)LW$l_wi)ZHZFd-Kalv z3#?U+^V8~EurK;_2L?X5F3O!?bklc#g=zdisvv|dRofRZFOLty zY~arj3Yqwzp~oi0W5TUTjJ&?>D6Tmc6OOOWob*ZAzc9}T-aaf$)!Id^nYyQr?=E83YC9zKg1l=5c6;Zg zL#tua@Co-$1A5-TUU|Do_L==^Q2ZNe zf;EjO@L&fl<5Fq*7@Wj{xd*8%sB42Xnx9`XfhFuQE})=O)dXFOWDZTBI1kkiY3Qvt zzE*gUdE9%OWyM%>Q@T~}2|F^iyKHZZBn{UmtV}^QPEJ*ukwRr%zm_Bz?VTtFl)BUlb>z1@^uUBZi15GO-04iY9mD z9zmbN$etfoXc_O4AGmp}Ee-our-41P)sg3;gk?N&e#B(-zQkrFNq*OM+%M3P-lHd% zsZJRGyxt!TjA?ZqM6s$x=3BfUO(*k^_I2o~yqd!|7lf!ye1U`xj2f6n{)5}syp6d* zWztmZWqZNCK}|nlWz#LOF>}bFwo6$_wKHi3(b3TvOe1|A=fABCOBfU)v2lh zyEOBYuZN8G(;;HoR_x{pAmxv^-<;tRgoP=Uy?ZN>-Z)9KiltdkAWSh@s79*9dF|-B2a!SNk!87pu}Z{; zyIF?97Md~+R>MkdK3+@Vwe~L>W$hzK`^pR#3C4to_mp>OOh`D%qRyVc+6P%JUc^2k zwY~-b5s4rFaBgrCy}z3QGoPo_W}gnF{2I#Crv5R3-{NvzeMQeC#Kv*ltt{8m&(DR!8QlXM>sZ05U45jQvRbkmpTFcv_kcoteiD11r>$N^cJJvC{P>|KmRue@Mo3tWYT1ejXwI*H4v&PLe|>WM&$A*$ z6xBXw<~ZTr*yU7piLpYmE_;b~`j7+GGsr$X$)7JCIwJF>j+07x6G$M_sq9!R3K$O< z+Ud=VF3CFcU;jC17IPMp_k0sD{vm1MSCC~QKS_Z>aQO<-f<2JIPn~MYU63(JyRKij z1k8{3R4bINgA(6H-g8p+PEn}2eg18?T3BH>PrmyNYzL35x0k?n{B8P_KkQ%)JE|ln zlHxZ>mK>GohBd2}VKkn2ePi-NrMPm_qzC+EDht*(4G~a?DaRXf&Bu{Om4^ipC|&jm zBwa6RTWNrCivA=Ne|4D!G`=%)Gsuj(M~3&?R9|9*yKq+ zr>rPu%~X-pRoRXNOu(9ywUfrV-KBa|ZgTJ}*f4n$usX$e(&sz0w~7LW%6rb2{~W$$ z&7JKzT9lu1lv~FHjW_vEA-t&oM^Ae4X^SV4$2py{IfRH@cftWYAr~jdOmb!ix4!BL>G=P9VncFBTU z*9#B!q|(s7$3>tHE+H)~I}8#Ra^~>VpTJ^8-SKlDCMa6t7J1$$-8Y4}1b&+?R8B92x>~_eX-n?M6(e=x2?6C8iaugPEg66!NL~C(V53Pj-XU+x( z!sIsRZcPkP{t4{}uwjE81=ezV9?m#6ChHF<4*8e+G|`7O`03HfEDaG`Z|T+rs&?p*yZ4OTQr}N zGf^ADK{H|8Iyjr5%$+oM64H&Cg)xf%_02=pVp7rs70g47nSx5K`XdvNQqWFy9UQ@~ z`WXF#V2KU?JScS%iezB-d~DATIH)%|g{(3G0SFEY&c5WI(Igp7~ywHI;qk;lr}+kgkUjwoGak$hI1`(G81Mbp{zoM`W`tKhsonS6)s=xB=wsq zX+^pd8#bVmJ$*iQ_K;k{|Mf7PZWHVzOG-I2x!IF#ja$66@F>#1N1+rX`Z>o7&;7SK zn#v=?zvqel$fqV&2B9~{tyEK3ai1O+I=R25-QN{6r&O>n;PSnh9AyYXn zY;wc59u(_*agwHz25yh1dKmHZQ-cmeNzzOt{4idU0QP6HPCc)EK%ItqCR`Mn-tJ`5 z+x;4juqIBnsIFbpl#FnUq4BT&Jfd{ITMJ2j6UqlhoHz6)FkGkqOXQ8QvjDBuQqsu@ z#!^IOT2W?Oz<+Q2tKJFT%PY!)K58cSF%UNEG@8UUBqVfQ!1*R>(TY=?47IS`Qiluu zy#E(YEYE<2tZVdH$R+z~2(pW*Hy6n3{wvVthK3sSz({vmP7VY; zA10N?n(W;!pP?GW*PxUIlLv+3Sd+Vj7knmTiWt(#pujuClMMku{;$!YfyrROxpafc zBZ4!$|8+bm#{Pr)Kj-={oc{kNkb2y!r|#@xQ)Q8o)kED~vkSugEyK6zFOA*O>vGd< zTiT)J@{5^Em&4_ z%l5@bbX0#t>fg=^I6D+~*RS&ogJacJdj@wJOk2F=H@`LL4ZMs{IS+mRfV8*V{8X!m zP8>#YpyD&upkHq;_BE!^9Ot2J2|w^75!mOVf@#`e^~tI7yre` z|NDHgdvAms`j&nS=@vg9RQ@Bac#OV!f1iDk#2A{)Xua@C;>MNeO$>>4bMfPB_~^0j zm2E&`=`Bi(Z5|lyg_9iGa`W%*Bj}I#qC+R2khF`RS4~HbzQ^Sl^p_G+`RREGZn((; zi5mNJc##$H)nn-YtmEQt?z;sNgm zj154q7&AGBeytdYid=&n;Wn96cwz7P5yVga_jnRm$CQvH7^hz%#Z`3%6(aUpqU(|) z*h#Xb_P2#&9K7+fs8fy+%))C|B6yW8`4TaQ$b7U?LrDvEyOeJqK9fvh6sH|SCMG5s znSI;Pu0!a?;w>Fe%9aVPoXTWRvr8&I10H%Z9-1J+A1^72<%2A&&w=faFq3~_3 zA7Vs)iE>0M64((sBkgKIE7cU8pD4p>?7Efe*ScY!-mh|`F*Wq%eHN+y^~GsSCOAsj zko@MT@sv7SasXZz1$(Y5?f3g=7_??bgO1mt zNQ{Gzl~FPC8vmaI&obOhk+^jh_gwjEt?w%iO{ z0e$pYVD~N2>`lFIjvAglWTDBSGD~~(uYAA063+XCMiKXbq*}ll#us-}6nN}2N@20E zY}W1sUeFpDm zbK!C!uTWAwyop+wFdeac;Btg^xMF0!YG}a@cz@U!F3XTkt7sq4@xZ)aSdKYz^pE$? z#nrZ9xYpn-#@>kB*u!6o_eQLXJp8pC?w{ZvT7BlIiAJ4WM6(mTt2fl&T8cHmT?;ME zU%TEmBd)m|GTOHm>3RKWh&J9B3peZ25F0`RWQ4}E0u!2t26(5`z_*pRw=dN^iLCDObup9>m?Zy-BKheFCe@}PFfG5G1XP`2~ zF24)!8|Nr^!{jWZN`mW#$4Pw{#hmDz03rgw zh5^-Dh9lk`O{zcidqi_-Wsryy$io2YEjM$Bt8w;495!&>J5*x?$jPBF+$XTJo1~CT zxC%Y|KgW*0mFqwybw;+44~ zj(CW=<)&-+;xh?n1a!cN+eI{UpoA1BJ&qFfDNhnQ&V6+sQuV;NK=q?m`& zJy6@g3ht!?{RZD$%yIDR$M{3k5yG;aU2y+%Up3y+jA`Pn3Hx~J?5ud=js>k)puVSF z$}V`rKvpa-4$ z4PP?He7VdTA|cE}2~X6Qb`GAUm-dTegz0!m6rT7t9oNSj@9rHO?)|j^Sx+^g5aL1J z15?Y67@N+%_VbOJ(kdr$RS%E8rDEVBu*w6AQsxtE*zgtUxExA)mu5rygw1dsF{uX(x zGyN+s&XY`9CqW!LPmhi+$=0fsP2$bUa|{W9hW{I1`zCj3!8 zp1_lKrc0C04p1G%>BN^H?Dd&1@`6fAh=C@3L)`f+g_OV_O)UinPHgj^>SD>{tkVqZ z;nda!`I~51Ml3Gc4Jc9}y-sfaMRvA> z#MnOTUdrGuV_%%6Y6*A!2n^tMhHALvDep_*98eb(&}^XxW}nO(Gmf{1gY*-JzMz#$ zXAKzS@Tibx?=CKKh|-iKA5+EQ{pIQ?Ra`K{JbtWpH;U4ianGBY0x>pl%1qLqkf8rk z(va&s<|*u#iJ;QJ+RbUeTai+@fg`z+Bcl4W{Id-jq<$#C0Dy$ID5dWgc1t1}q|3hR z7Z(}sU_MUh2qUyen&hWE&57pREHrT@M1y~Y2X3`Mn*RVh6Uz#J*d7Ir2q`8vx>eBc zcGuG9(|vq-o`m(+X?-7lYe)6KY+Ao9Ll7A3;6F#ZMjjHrrp?W!$IaO*N=uKVGG9ve z=Yd)psg>EEA#VV$2cP|vF74D5dDZc?l<89uw z_thOcqeTmn0V#MfA)$`Y3h7X_q)b_X_^eg70;lTkq;=z$fn_u`(%jI36^Y%HNA#&`n+Y-a9)Rt2H_Eop)T+NSKFHe;uMc35 z;Mz9V&G^aY;*e@-x~bT8@98YvD>|sTZPC&4zE{3J`+<+H-dJKHsCRb*nNKBwjt@p%7kmZ z$@(}WE?5T)Z}Y%SxIN-<|Gl=i zz3s3==({3*#ywr7!p2^M(0hE*b3N>fMVnS@86AJiI>W_ywSKG_d4tK+J_r*+?leREIcDx<@DHRo=c5uDWX5&Qzqvf~FKN9$$V&n{p-HLEwCCNFLIizT>@nedIZ zcwWJsTAG3$kiJlHsRH$%hT^Cl45Xnb7Y29bS>08Yu2sh8>r49Es5-@0;!&D9>2(1E z_}{_yGlj_MaIKpC-G}jTZC0#OvWy{9?u(&JG+c(s6H26h;fn>%kZ#YzRVmVjK8jev z{Yy!!@9ZEZLtMA&M1N{VF;te6fJxtCpI^gEdu@H3 z-F(?SFFUlR5LZ3xWcy+qo>cHmN;l{7)Hy>{T7$~+_}@brn3o_4?{n|#b6M&COz;lt z=h7k1CF+ZP_&WO{&B-7Mt)NG^WHJCMLP^6(Hg_wn-;L;Q@TWNGMjBL~l?kh~70FvX zWH6N{PWG=kSqHN>4^qAJ#)mt`Ln!W`aD;{ntGz!Z=! z%=gp|^>A%IrOhMVrOwD8iWtyGpA6(3d4>dYJ#-WPB6-OWs;D?m|1}~~)~JxNQX$&u zI(cw^++Kdjdg%8zi>D${Uho%Xd8zO(med2^B@axB6@qonV}Lp_1B1Gg-`P5 zR!;pCa_&fjmK=d;Uc^t z2!|A3O!TINJ4U80An1O$k}{@Gu^%*~!OZlEtqlym@DC}B^rvu;ov>c}DtW(}y)D0x znBK=Cug{!;1}~}i7cWhIzOe*k?wq_XxZ~^0(=%Lp-HxFL&_+n1B=nyD3+Yq*s9}~) zU?&}G!UP4aJK%*!@edflH5h>3b#+o@?X;9`H{#Al`Oak7Pa%xvsl3;Ht5P3e%A8t&ly(=Wcp^}y~vOukes z0kX7w9Ms6M;D<1I(|Ux)tU-?VS7tu7iaC7|`>h@Mt_|e^b6Sm|%ms5Y@vz05omvzK zAm>D7^8VQh`Lwp0Odqdp(9xB2A&1uxr==tsq+tAqR1IM#XDHc>AHoxZiqTXAKjI83 zbA(>K?^w`&{96U?;~k4=5;sOmE$Y0);2wiOh`+h`%rfz@;k;)j0~aHO?pGnI-3z<4 z6)Ar~df@yX+v)}Be~a0?1%tc*iI>E?j3}@m{cbhkDg!e_g-Bt+B0fCKU?KH0+|Kd& z6_FOJE&F=Ffex1_aEq3cI%DPRdHdK|5DmZ6)F`kf@X%7BsaR*EM>T~;+9OU6Yauwy z(!36=Dr7^jNn1#MaBOR72nC0WG=J+a)AAhToZ==^yICDhSeUrtOm)soxa-OLAWR4X ztut0ZAyU@*=kSob2Z?#T*1iEXwNO{((z%^L>T8Sp#b-vM+!iaY!Yh?A(B#1phvR|R zmX-GFfUgX0z@h%ub?i=Wucu=*ENK$UO4>lzzyUGn;1Z*`U_S3Ul)jw@;ojG?ixtVm zg?_Q1Y<^dh>uWYqdH?*!3$Xv+8HxBcEorxME90JS>?18c++@3Ga0A9q!wl7HQ#*#; zzA>;9A~{}T6PwqHK^WPC?IrYN+ zI7_8Z^OZt)1bSCeZL!AT@5SjAXTLVxU;7uerlY4`xr%*Tk<|H?A=F;^Y2t@z%az3;N)qqYPep7^ zPfay1gjxcu+`0dY%2W&i*H diff --git a/images/elements/png/itch.png b/images/elements/png/itch.png deleted file mode 100644 index b447975874054ab0d33f4dc23e31eefe42e28c66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74801 zcmeFZcOaGh|37}6V{au{S!IQAjH6_nXvr*lWo0||$m*PKMRt)<$|xgy6T<1Xl0-Hq zkz^|wm1CUm>!SO<-+%r7{{8Xs2j#r3>w3MO^YMHT59kE$14#IK?0EG`E!OhpDaHe^Eq)Tu{6YdA~(!LQ@kKYe5LV9ZrEh%aR0=> zy0fLMoNUq^gb=OV#~%@n{_Two(>#N%Q$;Q#F4|HBQ2wW`LJaS$}6d#$YZz*a64eYO2n20=30ON>bn zd~Mj(^l&=DNu9`vM(*D{5Fz?Q^|w>+gz&fSlXfD2cooF$G_=CBkh^(C*Kj^QYk?5n zzoQ0?F3v3&38D=@iDy-RL0)q=#2$V%s3_4Vhm4$Hcx+MUF~K|i`}c1?2=9>N5>_?R znj(V8$&EV~eh6G3_SBN+!@H*&A#6K?iXwf|j>Cchvzn_btv`Cw6~7NXdGh2V4OISi zbm{sVdD@Z^Q5Dne&$VGPH(1Xb(dMY~AHT!8n9ZH|tM-n^ucuwj(iLAij=G0-?Z)va ze&dKwNZ>C&qpTdt3fZuGmjngt#46AUFrkutZd({5sT5C1m(OL(XB z&ZO?Q`g*E3RRZa7=oyHgmscg{k#0VV8+G{W6A)B%uj$j+Qg*l4YDrna$gY2XR}tMTak|v>5#hf1A3voK%w1ip6%M*--@1} zUMX%O=s@t!`u@A{O!c|vJqRrQXas&j{l3qwb2t3|>SiR+Vra9aTrclq2M^JYRsTpfD#Kj$A2oj5(8CB&ka-BqSvD=g*%~F5v_;m8B6f``rBkC(hAzhH*|r zLGK8y;NV$*&7GBuozmUk4S`-tPgPTbHK@RS=Fb`#HR&4-!2&6i;Y%os?ffF~{KNd# z#Kgp0^*NbG+8K0QNS$y2gI<}wb%y105pQX;xPk3IK5}Kxz|#ZXOS$=->pA64oG)iN z?s2icIQZO>UWkl4d*;km$RZOGUS%9}Zt4R4wlIC8)oV0zIU2fT0f_)*-Oby{|8xXi zVbet0Bf}YYQO{KlBTmsqTW&#dYzV5R6u2{NqO-eKpa?I5Or=BR7?-!Gu5k%m#2Zrn z9!EOUVSt^h*X;%OSuZl}FB*<{CU(7GiR57aPOBp=wd2c=7(4pdi_hoU8Apl4#+)K# z^&y)&s+*1!`b>CM^RRXyaskJ!{o8vM76!L+u9M!sfA8jC)-0ZfF*1^drPA2g*z0n_ z2H43lV33*3BK{T@7$6HaNU*vgI%wJxoo;oxX^H~eg%E6DG}PFU7P#1Ot5Gakv7MC_ zKGMbKAJ)fdy^JW{xI^YhR&}@MeI+frdkF~%-!=ca&^|V3l5_o5#@vV^8eM8+v{{O# zs6HgXjz}8dLIA~RHgXe&4ih90wAsl=4E7M0y@Qsi_4ka6Sc}qDS@VE(oAkN+V`6 z6A$*uP*_NE4GGy^m+V$ec7;MPS)NjOWp*(U3^4`LhVJw|5}zF=`(-zHEe)468c4r^ zw*xtK&Cbr&fsLQ4LM%4ynX=F>%W?=zCquE|iZSt@!?=A@V1*9}JrM;9v9VkI9(2x+ z8CZkG_3J2Mqf=6>sozvnRc#jCL^8q)y)tHk_QFyeCNFE@)1Z#DUn})M!UPbT`frK% z-4Yh47o?;;1-3tbJSOfEvL6?`yX(QSVAsz_v@kN z6#P9C{vZYZ8e|ZL7ZJp>GU?reg)!Rr@bK__OJBq>5rS13 zM4NqaE0H|r{!?*ZDiFTCyuN-5d-aI*i2v?|6o*W7)8VW+s%(GVjMl&FEGi|pFPbC4cSCdJh9!hTz`n_r zKxdKD-lP1u9K9CV^?}!bT^1tj~yUDwx;i^f6UcPDZ}h zlo(p7B;4DBr;uI`4-e~Ah!AXKUN$r~Zh!pr=~FI9a5-4y$5%n?*MUV3YyUZ!B!|Bh zc}fnk!FF4aZK@-V=a)TFp!(t;720f#j*pYN9FT98Agm4^h9q%x_&$1&j52#1Ij%{& z!}5l_M1wNO&xi<1J<1e^tzkH3f^Z9R|IqI4ZZ|k$NkQ7r{UelfkLpoojBO_V*nelzm_gwzmD6W+9P37`{DH{mTsu5tT|9zyF;-JQD-z*V5z0^?J!pbJl zyS`+H1hLHZ4W*5YfV!4s-tNAu7SnX3W!h`w^8z3&@)$q=WH`9b;d_-hcpLalN;W84 z;jqKO1D6<*!Rey@oDNdwVIypwpZf9R2ZgAp=r3EOz@XfjL~^6pfnl0jk26y*+aN#Q z1$R6n@o>lBk5n?MgLrLZI4#>LF)!xUgh7Dj*+26<3u*-d^4m0hc(6ANV?{W^N`!Dz z`PLvB;W5$RuL#U=PUw$)VJzI)2%PK9-ISvf6Je!Y`v;rL>NCI-7RAj5FQ_2dXr&9+T_19JRu0X z#NEFBsO)`VLgkm&l*ykQkS`sPFEePB0piq8hpK_%1D(czB z!QI{`a>9mY(h0!8mmk01g3R#~Aix3;eMC39q4*&9`9~x|7S(bOR9xMCfxrnjKBzg5Y^XJUJTB6!qn<1?}5(j`(1$S4zI zV_P!7*Z>d!pyIh$vDcY; z?ED4b!v;s-S|*9%;Cuq}+4$xl$d{3-jS{mYIN5_+l->sw5MDq7u@VIF@bHX8Kf5`g za0Ecp>&Fs06LbN1QPDu45PhV38MysDnNlxjO}WK`g=(XT(JM4`hX5NRQyOH5$QnAV_(#RDZ}c&bXlz)h z{J=Y8yQ3TLlNeyi3ZQ+l=x4tp zQL}RmrMOiUmKWC4oC%#KkFQe`C^1@se-e?6)ejXGXBMhKX&8pW?)G89kL1R9|Kv4-Qvd9}4&^J8$b;7M`%^L5OG)|m085VPS){u$mQkbSHm}uAn1MBgJWa}3>Z~Jpb}`_{e~#HphbUwBT(2S zHI{i`acmXO9ki~i-dvf8_G1@`~)4~ z6<9XBG31x`?;0K$SfoP^X19byFd%!5!`c64Fz};65lpK-#vIXS2cqOZ>doQ`;*%Ms zgmo6t`nk#uS$&fWqJVltCsz*C90Svl5Y!h4tGOFass=HxFdO@o3mtQ9+6ftrX1)EU=6wFy_4 zT{qUWoy7!7AZJ@2#=Ym?`S+ijb>bQw0B&c`p5>nny46&=R96J*G2j?&$`Cd3nTL&j#YH@79xk!}b?4$k$4cNEU9R9>9G_TNZP zCgA`;!0GK${Sg*B5SA72e!jj8nk)<0FycV^BDny?={o_WKjt1FxXE##6dR*A>pLtU z59?!8Sik}hGpj&Gv#3StQ{i_iwa5lI!2{t8Q>h&3<6L(Dd0SHgh=_MrKC6fwFAg0! zmAAJKcA%Wr3>tksTr9~$Go zeECA7tE>C15l-rWAVV5K^UU>mdvY6pB(($M#uBk;+#PcOWRY($1at{h;H&@ea`S6k zLHL1^Z6@GVJwy99R_1Ft%^jDK36cz`&_yF#KYwAQJb(Si%)wd=?p_!>!Go%t2Fb_I zuSURN{L<4%2T$wc2Pi_r98p_ad#k?$0w-yxs#>=-OZg5Ct-`tr(tFfvn^juiglN>} z9|N;Ka^Z(w0rLKBd{73?`bhgofCTI}0KXPiBbQfJthj;Kzs10gllkl)tF#92MjDH} zEJ1)#xRFsBWB9jU$i0OWjmIh?hAHyVtdr4K4yxFlYyG=c+jZrsGbZIaB|AxWpo` z*RhHr1%Z(uh{wFf9XzS~E^5|Eg;l=}d50Q#MFR5<1F9+ZBjMzOk5gjc#9@q2yNyrk znt22l0v=RejFdA*c%!5LE@Dw(1(srEWMsWy3~|w#9%+|=$)E{(Run5Mo6XRj14D(% zL+5YfLCpa2j3P*}Rul-U5*U0u7&XQZ21%IXId=}iV)>Kb@NV#olp8g`05EzIkP%cQ z0y0f{k5mrxjf2h6Ce3Z}gV=TbNW0nwh5%qmKLujN7!MZ?e*oWAY9ty!6G*c0-&=EE zmcW3L!O85Wj@5{DTQw5w36^N)ZM=l|LBR;&hX_OTSv1H+V|-!ZbznCznDA#OfGmbb zlpn85B)7=^k-SaNgWLE9cHpGB9#k)uNLWCH_*=Cob265asF6yAP#RVFJG(Wt{Vfv~ z0Vsl_K+D&ly_o$+1B)xKsPHZU#0xkBoLGVd{w)Gf3^sRf@Icyo2Vyb34)mMEmF0v0F88{lqod}T*r$i$|Jnr%*ZtU` zRwz~f=W0t*Qc}xgga6XELBs((fno%^E6Geoh&M5CPJB4GwRr%mJz|4g{$Tj1n}_e) z;=@vkc3`3g20Eht_K> z#y`1xMHInB{qjaXHD(ci5Tfzx;Q5o_x*^VWUr=~@czE2hFd8y}X)YED0BxlsA`t!5 z<&ia1}cqXPQ(Y=39CO;)GO^ zRiFd54gwDZIaV!z2QzRC0?`1_85;rwAV$*x0m9(c_wjBt1XtgI|B3S)BjiF+J_i94 zfrApKy(+5Xl{FxM0jRZ&4La$=DnN~~{x^&^%X2|L1u!URMi^3|Wu?fP`}>bRO|9K2 z2z-<;nD9@ZK4sC62F|o$`I8O*r&fTL!qHG@IJA-qHK2OSg#HL81vK8^nt6NyA}zBO`{3tBspg@!;?YWs&<;ij;m z12GG(;&PZV2X{Zs?@j?w56%N%|;@pB0gx##zlqLu| zm<9OvaP4RycCtNymvtbw1J}3&t^sgFm>L66Pdg_Bh`I(IiY%x9?hDrIWz3PsfLjK> zfdG(|BSM`2V;y%9<&^)f=C7@*BkP^0BcrGZfX#~pZe((#JsrSyS&$P!E#$<)%$&gu z8X)$-Hfs?Fyf}@}fu%fQ65O|x*`U2kpwf&+z|?ICYPS0i8RBJc|K)Kn1WFkeet_k? z)@OS{k`Z1U)EK>gHKq#O1LTRSNj0LxXl0oJ1?x5wT8iDBZJxMVo zg@Qajy$bpc^LHQ=+5RK%q1R5(8#X-HkCYw+P8Ifth6Yy5WB&=%G@xBG!MWZK*F~P5 z-xE2ZOP4OOO#D*>o&|sh_^|fBMyx?Z;NiXje6#)HCJ^*9ctBDBp-8o^t}f8!5C0L3 z0F*^&FMupwN+2|4NxRBIa0|46;(*PAj%vKvQJbZLf{^7P3;zV3&O#lYzak2upkQ$# zlm502Ovf0^BE~9~T2O0LI5QUiH zhCtk*=;A-Val~d3I$$&K?R~lA7C_E`7!EfX0a-l22w5KAVg%7p=D$0e`jK1Qpe%86 zCwQzR#Z>J%JcvpxaBcSRKQ+s5l4B4UGC8`?h4p_PF||mRj-Jje-6I3W7vMU3`*+(L zm^XCN_Vf7fB-xKcMajDAE*|sqF3O3Ja{|{ z<@_g^T7&=v1gClh$P4tZS}P?dllI5}bHb7Z7&0S%o-DfcJzd=wg4s}zf&US~lq_UN z4P7CV0a5Sz>);57-=Lx8GtmENI2JL*133fSqReOg=*1qc7sBL`f0;F-p+^)lfc)3w zeE~sB9iZ_`rYpc5#b3Z^Q$RTyWv`n#pc_yYCnO62WFOB5y#$t}$pXEC3A$zkps%cE z?iVp(dJ(WE<};gusf6$wbjD0}+>ijT(pDW4G{OLZB#{YPF5ZCtTmo&(RtWQ!yj|RP z49cLOgihlwr`QY$452Wt9zQ)^hE63Xw=1Q^$MO zrV965OdU^K6DsXf$%26*!7^Hf8_c ztG~!X8*F$G8-V1mwm{{e;`{suCT=tVBP9qM!KoU-z{8H6b5EZ!e{T$GU^UM) zAiG0?r!5GT1GQvp*y7bFpb?BJ1+cySOYG3|2A%6T19CAWsE&FW|V53n_}4U2Hdb-{`RWPg`WCKGqbe{#V$GC#p>cJK%CJ z?E7H*PasX!-6uIw^?4EQ7>SD1nq_7u{2q3+<4C!iw}zV_!;Aq4i8>TOdMVmEzR)!q zSv*5RYmmisro&hZU~^0sGubg;%WlC9r@bL?Dx zOI{#bvyD*`y1Ke1SI$5%BY6yfwPd9iwqbP1I>huUp}h-Ncd7vL%G(=5$YYt)+E9`V z*>6+&xSx{dsQao_tU+6_)5Uu8djT%M)SCN!=leBsPfw5M<~r^Vr4Ft(`NzxPC)AV3 zMq5B`m2VYkFm-St)(OM!0*Yh9sd=rrpPp=Xyvt(@J0TJQ)Q`4fG&gb2->XN+HzQn| z*FpES#S?(Q6p)+upJ=)CUHK~+Zl>ha?_}QFrPw{&;8Y?@pOZCsRW^7gh6>UWs4g!K9X$J@%5LMuQ4VzAf? zEyXPTRC6S?JS2B-;NFr)wEwwDT94U;_(UxV&plLMER}` z_t-5DxTgbJPP)5hHce)2h$Ib>4W`M}lUBDD<(!3UQO<%2hjs^Ay2stErQiYu02t6_ zO$L~3Fq3LHe004+Wk>HVIS!QxhCx!-K)$r*1I__hxT^g6PhSGI)OyJ!S?0~utJ;f% z$jz+JO&i3+qEC0U{uWC20o6{;1 zW#;7~zym=l9)&wkfIz*5J8H`Ec$U7Mk=(t$6ATIktt~PPqSUv@!6$2(ru+oj24HgB zfJUuY73)EExLu{_IQ9^16LcfJ0sP9}vn=PUF0t_zCjSJs>N)6NVKCfm73os(FS zr#te5Lubi%fGRwG0)WqCxr>XvR7HB}Rd?G;-F{F0Lo2M2|Dl^;T0x9#eWLz4#cBW0 zZ)ZV|5gwD$<^cm76%GT5r@LNX`=prM1|t_RgrfSca+v~viUKu`Vw&}1GX6e>N7|iy z2->@kAbD)hsiuoD=Zca<4~w0aZb+*NSS#!01fdt;Q5yIP)rvZ@k7^1LH@VsZ3mlN~ zz`8&fGkr@gAp(;%(aAXPA^E-z?yLFhf+!h0${fJ4KijF8JxYCQBMv=VEOE;LoAOeHH}B{5f5h=5 z!QrhKw18<0OLoX?|Ryv5LEes zNd5=U!Hox)rjyp}O;4 z0gz#CmQn_0ORj()-vBL_LaO@Pm2IhSX)b66Uyy`@BidZ}rjXzE5m{%4xLQwLfSN2i z0~UK}igZR6ll!>9RGE?!<7sKT>mBsKh4siQ-@jX{f`0O%U*Gl#c%(sg$Fpa~mBKmr zuop~K@g-Pm@7~1^WnstsNg-~JG&50P zpz92*NCCgndnJ~16MK5o8GEgeseijNofu#ag+P7v@-c}4S#-|A>H1;OFgJ6cnM#z_ zv>IF#0%8VE0XLPK)!+SX#%jU0ve-L7m#DjEMWYSo?*P`a1TjtMiq~+P2)X&~(X&B` z3g$f30ihf~n($sbm7N&F!WWh7=hvy67)_6?r<)y^> zw*?ibj*ALf#LAz@*QYnP=ITDF90=3_xIild4aoSr@R$e?T}w*~&J3P}@Bq*m{GRGb za2gHqX~L<5+U@nWwo1=bOOau4s9?ZD+d%e=b z{<~`hh>L0pej>Bf{-5MJV8)0P>m4lB40o{#)YK$JvEpUwvqij(vRjjZ+x)>K77ClY z4qOmUm2SQWdHN~$)-rg`mE%-aQJPNxIA}WQUARPA89*qPz3F%bwiyKK)N<`&U9&3UD;#!9a>Sx#R{li zcHQ~*?>T+KT{BVeJSZs^1+v9{)MM$^B+g7Ka$002IIIjMk$F7G6rwr74$qj=;BLcbuiwQ&SFX_!SQSiiDPKM6N~J!+(lA8cVU zRsCm&C9iyXj;ytR13NfgM~1sOgc+O%dE_cedcRpH&zHde6l{4DgYkHl6;=B!udHm) zC`A!?M|9)KuR8D*fI=K~d8HcQYN;Z~vjNMSapksD^-8ZV)84?>53)~9L@%eAdVOl^ z@PD^500+@WE`l_D=n5S!1wY$ERT4+TI&2&n?l>pyY{wSq6QlWd6hV3bvo4ns0Eh=o z3X*}&0dLRC$ESK449f5UxyiAzj`s~sRA)X+Y|~8r+GWEwmX;5Q1h{cCP@5bH{@t2S z-nOqir>ASLxcQwbg=Nyv#d@KoS#T)n!^)nr=6zky3z?@+4YaoXwx70eX?k}`=nopZrFn#S!FX7UwDE_8$$}(5lhuOj9y?butVK|TPnc|N8E``Zl+|+M5 zgU@(UcX#`*z5YBkr93sg)V=S3GErQ(NqA@`S%6b3e^MQ{)JIz8ek`Jxue6mAg?%LV zko1dU*CAtV;fPc0V2kuT|GMGzyM^>C{bV@X&-^6AQ*XZ82_8w$>8GR`=?Q$aFDww( za1XL@ey6a}kKPn@ug#bNfw8c#@GGmT-kPfJTtK+kK43EUcy}gi$nz0mgVho83 zc#674ZqCBp0U>0LKGWL>G{_s)uJD)yuV(shgE>sHm?_m1H@qo8(cZqmJl?Rjo`PO@ zEmDb^ggGYA{n(})%W()#u}xtsio45k3M1FM`W6uO_xE0bZG|KadrMy4Au)~ul#y~J z1t0~j-Nx`+{XZ`pwVocVR&Dgi%-N}S0~mkeoEmMr42Ztevti!33-wnTHzxUZI#<*h zG)l!GYYBL$;C$oe#@W|xRpsp-@4!By8iSNxuJL`I?MeT2g-Ywi{__WfHC>f#NN=C7 zP~;tx6b|s;aiuU;>lROz1ljl+`CC?|pU$4usZ-gTV-D_J2*YXfdvPm+EobLxu=Y0} zd>wd#vUz~|I21Z0UHURsg16D9)L9I4{4smtP$N4=+NWXi zm`61BY|yk1;*L}oPJ7GGz#)ZEFG=Xi32#ZGN>XgLwa4dJgi=J~<1$h^d#blTX>gIZ zBiVkHzm7al*5ZQVL@)-&?+(Z6|+-W4~Y8ai8@Se)zhDMq=8 zl6Afg=%6Hj6!miGIK@VByKCkSlMWGU`*US$yIw}??4h7O>%FzqSz`!{0jM#(h|HMs zE9Jl@;lk`)8`nyKOy+J{=IR9750COxhYiSo9^*@soc$VI8=kwIA7tsheC44fwPbGI z)H9tm{wq%`m#QWL7Ykh<%uLp(5-UnP^|?mrOHG-D$rWzC29sp74AhH3bLrV8!+Qnh z6>$<)LG1I}b3gefr1aP^UVM0|OYIAmEDg+G02tTd@ioxPXq|W!hsH`O-5x)fOm6{* z)qvdmdB?6^hdri9t*po9nG~t4MIS@VR`1^;q^PnF!IN} z6D^O;5jUy=PWiBPIzA=E(9Si!tZ6dy;gzzFxI%R$-QB#VVpIg88+5IjPn8&FP65+c z?|;X+IDK}2oU2r~nKMZR)oE=fD>tf9wOo1B*rfct8MSJ3pk$_pvi)yI=7rN8@64@^ z`WLWnn_r0WrRq|nml&juG9KK>6py-d)C$kE-&a~nin=t{G4sknx08_vMuY)=pSedb@MGg zrxo*gaUj6sf&t^wrv<8qdWspSPz^*F2NNuS0F?6gT=fAr_TUWt8~6`5vSM$>o{=lj+T#wjoFZbwwbeXUL3coy+oVPkF#b?AgYDRY}y>TJE3Y0rfRrZ`IM^J}Xdj%Gm1CBE7 z&1GUG#oqAB_)yZ0J(QL8SR0QX7;@kPO`s9DN&%J9z@W9hv))KL&dPW(3d&`AmfoKFgpwu7TuAH)Io3R=6Azj#5FS0)bjM{j_h6vX%j!*_@myf zIU^H94=sQ8lwL}kwT)mezNjS6dBYnEE?-t$czk2dXcV=Y36Yx%i}ly|x82Qo*f7&C zyMRy?@$Ky;(gC?^g>Gy7AqAMVgrmpxj{B#6Do&61HJYRc#_nL2`Jh1KC}?Txd-d|v zqNAoLxwNt$v@E`#O(dgpbt-tO-BRv`^;I(!gP7e)Fz0)0_fiWy%ICtsPBb$$#!D>A zqn+Led6|*NUUdvq)ykWbw6h5dgLQdK8f0_8bA}COM=gS0AY7LgkT3R~O5u3A(|A~n zn1&^uo!E>OoU;#cjB)$MIurqNqy;W&LVryBX0xL@bcTy9Ow|dW`}7NflE`VP5<*)n%5k%g zWx_h!7D~GkdttHs)!ym%BKd1^A~|A2(o&Pmi^5t<-iauvf6or9hUeV2scQGkWa-CSnnb09^IFBGYyysJ1+WdOYuwB} zTQsBQ_cHb+%6~$t-J|b=LC6YGgru7qQ_E9Rq%4iz`o&Z>$Wz1H&CE9CDc2(CMI;VX zbR~9E+LX4h$tGkc7mb*X3z4%e3{12Y)6C!34f<<$Hx#qw=h?cxDrpXtuVE)KN?J1# zyKuz9V$22Of%@sPfY3^Oj6+0-)i_EI&FpR%4(Wr?V&LH#IkDDPKhk2u#PrN7Z=#HYWsruXR*?}Wn z5XRu5uoAH)Z+zOlMrJ0H&X3JS>GQ-?JqBYJ@-=Q-5iA3x$r)1K#Ol3q6|zn${e#|; z#GU6=4^9*;?(ArSK`2?ya{hO6UGfat+nIA-E~zQ#W3nq2dHRzJmLgEyi(RKfxw#F> zWhb{%KPNYfAFV%`e3LnwE&Fn~jUWgeEnIEwemwSQ!=7hOmG9DbIy(xU&P3k7S<5CG z7E%~lP!FIrPR^@yRXNYyol*MqmZvre8{X~UIL3aebo0y&pwI0Rx%G!Tk+BjgtI~PT z%6r<#gImYV&-EZnAf4V!XEqG=?|T4tGBm%JoaRcB>T3CvX7#mS$<|fLnVRwTU8YPQ zVSSjUxJKS3@b<=B-UER}cW)(C!m_I+-XY3~zZBQuz$p1Q<<#Anul5}+)d_Fw{P?!5dwF{B1`?1Qm1qzhdZylUdNfK!idQaY|6Q6vree0={In4%Zf5D2 zGBJGE?O@LpdC8uiqMw{x9_=YHx$}6O?nJCaBF-=1F_k&OF+LkF1#kT2l|sNO{@!3% z10(g;`Fqo4vN7VxwN_g}iMZ{K!9X|ehLdsfNTqbB!MY4g6~W_)sJjhh?_*~y-X|4H&RbcZKsM)Zy-j7AM zQZv;a?zD9@E;T-56E)$l>7~5yf97nM|BJ%HvTNkHk-Ha~jXxK?>F=eBe9!4CL=GHt zqRM>jU{XHnn9}w#%}kIDA5e0u!<|?tv8`>JUe@4nf#ooB&tWhgCp;wCM?WQtuxttm zu&z>(8kPlA_xkBR*JK{ z?*{S|%NAxQ(Umh!)ofYteBq41e5=E~`sr73bW@9G{M)@cNzv`Fa(r*o`3&o)zM>QV#HE_CJv(uN#4#amUEvl;v zBGgCI^8ESpNTCN@fV~)fgX?vOuebZyoa`!#5OF0{qbr3X%y0uXo!+r0-O75h(}ss6 z1E%HAlsGP2`zfu~QWV&NEsp&8mnj=T(d}NEs#=3#{WYJIe`W#7oDGawj(ofJK;hEb zWZLf~PL8&=e#aD+CKm8clu54fV#|^^Tl84o`kgTJFo!)!JA1_X;FRg)yk;CDs3crK>7()_~TAH8y?puo^Pk*u$oaXP*7%=RshkgCBqwiOGt zgSM1@Xhf((e)GtwnU1K+0r?8|$;5`kx%yNwRvAveX6qBlX}tnbeG4tyqws5afY`VN z25Rr@^un)U!4;qG{ZMK8-@#YIL@;mO^wTAIbSdrb!Y{{_g5lh2ov$kgj&x@GkHtGR z&dBFYR%54gJTsPa$dYy{Hz<#hpm`eC6e=cT{AV? zUio|m=s<#Cr-L_W{T6@4?0rW}6fv!>rQo=6Vd=)0sd?!P5XR)_Bhw6cmi(cvl{UUl z(6EkjKGE>)ucK9O{8el^QWUm4Qa~6s=)W<^ch}?oa`<4V7?7UrHhj0uZ~t`O9bS(ro1-PqMrf3k zS2t~Wl8TjFIDEVBT79-lM+mYJ0yP~?Tt7&KG<);-E`2X-NDN>P%cFf%2J+5H5V(GO zJX=101?}F{H>Ozl6JH4Tg!I_@`3Rcbo6i@-(6P!591kcLu6q%a@U>RN*xj>Qch5g4V`FwqF&UMq^L7ataU^vWd!34D&ctr+Sz24II_@$t8#HnZ$LMURz!r-j!+N1JoOj#q=;C+e$`@Awq z@st%GAdaLaG%-@|Y~G6N(WZciMDkH;LS}`OH@1@mC>>$zVxn7pFJ<}2S2Q-_@IZbD zkJ~y|Th-D}`Qe9~MmGRy5O{LileF{m(Tu!z(2&a=dS?UbSKjx8yV+yBv_To`2<){eWBbBM?xZ^%BU!`f_A7jNN zfK52usk2g3pSKVSsfzP6UeS1+ zSt0SG@!so{@d7=d0>?uY%MHR<*^0;FrpwJYwhQvpdPQhn0-8n&ylP=E@Y(L^qm%k5cf>j|Z`L#(Wv>ybYclPbUYT8U=I81{!NZ1D zeJ~C?JTZ4@3ELbJd^+o?a(!X7CG{ycUrXiA;vO(3_`ssI-!l1bsa(fjKseui1c$}` z=2dlkqeD)^Gia%Xtzf}vFxNy2+cwj}i8tsL+6YTO|1 zt~S)vN18?cHb)9Qif)Q~yS}q+B%$Sh%C4EJC-5bs@Sc>@fNt7yrN~H!JB#K(7jC3i zs_qip4ge$Oe|;2MumGjR?_#%WjS^0!+z&WZp@ zE&f8Y&s+!{#b>3hc}s*xW)6ATZPuyVTFP#6-PhC83okGKrfb(9F;(OJ6mY3Hvvw=U zUS*i_zQWiqbxiCzox{qER_>R_L9|sO)e-T}WZgA)C(PcniUyJmN3YT2D=T zkJQklJ>dm-%Gv2b3p}I527^lYFAFTmWVg6AY}914PoXJl)rRlQf!1<;xh8bWYFIK{JsO+tpSkkwR%)*>gN2w`rJ}=% zdk15Z>v-SMt;Vw@n42SDE=uwhX>~~={hJMPr*~QRMAnZ-7!}h~eqUya?0#?|nqMZj z1Qt>_E&?7*%WNuT(7{fDX?uXK^EfUNemjXC)bLZ=pSpU**`>0LA&IE%fi|D^@*-iv zNa9x|ch?h`&dTfI_S0t^j!7$(rcaMK*=RnSxw5n3Kj!eZqqv7@H!ra5T~J5ERgKf> z87CPZK^3PEG3MzGRz4-LmsZewAFD!dPoMGYIK3MdqGL9>UUX`l^lh}8W9w{b;o?MG zT%4PoGZ%OX1-!SgZ8;qh)_UuQ`tu^hct?e&Rmy2*E<{+=*DCYKFz=p&jGkR&%x^yNLv-tsRxX_TcyjX%8=r)P6)lceht*xp)|d~Ha#c;O?4e#BzvFPO zibEkpV>l+g>Ex0RZnC7MD5uA0ZE`lK+7vW`8Nk3C%kC3WoK1+Se%ouow**jqVLhJs zvB#X@J?zYnc1U8z4i_|NO2K2rqJAP!NmfIvua1jpt#lP&`5S#Kzrp59~f+H)|!^4 zOKS5SD8bEii#a($^QNi0BEBD??ZWGp(nm)pd-7bN$!?AOkj|yjnllC*45c+@!w$sJ zL?PF)>Cxn6#YYvDQcE|7qgoiZ2I}&4lJ92UPF`RB%n-lu3v|3OjHf2+g*N`Wy?1NT zHno7pWuFi;IBEHZ+iX44(a_7)Eu3ae=d{6WP4J)#fYT1-Vi&;9H*#` zex5f$R)66duf~oH813aKdZcnqnXkIj3`)iHf4yquz5B~9>4e!kOU*=Gl7mJ7ugpq# znpMiem9%Bh`J=9Nrhxyd0M*tbE5*E8IvYL4;W`?f0b>nnW9M@7Bm>W1hQvr6V#%-e z65hs>({-K|$_Y_l#pU98Lx)j$Ev#UeS8arb8H=3Pn1SD!E%k^JJNc@WvJd5+Uf#Sp zg0}OQBwoZ@B|CIhwN*AT{}PO!i*hs3ZnQIFev&9QR;Lp%T{hydJ$14!7r@c5-;COt zEhjF%7yl+aT=QCR(!_cwM*7ghUZK$;DBA>SH!`a)x#VBJGX8OH^GpDCc&XCLXr9}6 zA>HhdMN_|{&ExTw-gkqCXDkmtrj^e8u$g%KdzTiL5@ZlRB0y>l*M`wZb*C??9X=z! zhboq$Ew+_En}^4V{|bC6s$^_+buGcz1l9F0jOVL(2{U#)yV7u^13P(ni}@KU@@mtl zizP$yQl8jMb>qi?5QfP30fNd;rW+9&1aQ93yJBn+dD01t#|j zYi3>5VCY#`?HTa@*30J-hIhZW(CElafxhuKY1o>0uO<$kr||M*hH$)<;#DWEPOC5D zsmnyvN{qu9uLwJ{$=^%CST@IMTjUIr631BVb$VWVt&225KA2ZNQ+HTJN(c^U-yaQ4cBc*U0a$88X}|)`g9J{xx!RcQR@Wzo{+)fTd=Cq}EtkXxFvR zoI+oNGtc-fP5O%mUz*#EmmO2CbRYlrG~ViASmcef9$|{QKeZX27n*L^4g@T%%yhBW zq0%?a+C3-j&iHA$rknosRaVM|XO-{x-kUq?(F+>n;IA7*56s=2aWw4oJ1>FpBIH^z zOLfAh-nNpuPfzNE91;iIpP+s9`k({5XeV zo?bjE%2A5@|8=t@~>~@rl3kQfu_B z6Wbe}d*?uFeh9#&t1A6=?qlInCnD`H7*WViD7AAV#z*@j-`}tIA6{BL{>7Zfv@|V1 zSW_v*|JjkG-<^i`H7_^S1}v^wzv}*8q~Gf{=JrxIO@t}jYBSKpZVX*(IRv5HeBC7* zhaIi8JJV|CnpBD2#YrNWTt!K@G_yjZTAEejo|=8A^&9tYR`%8CR!!wBO4Le+?4}#+ zl;r389VmYnnu{3c7Ne1trz}YBA3-$TP?DSrd%Ds1zGL0c>cU6Tq<6FS(^Nq}4|*ZP zPl(&iI*mO5gcn*m;w1xAX$Ji{YpnD`KKp(q&H4Kr@gZ(fOQx4gf39N_o&+;Vdq4A* z(^ox3_nc6IDtB~KW}pRG#N*(66*_}~*Uu`Fb9MA;dTIO8tFhF-{~uRx9uMXF{g2;+ zgd}T7(qbuV2-&4n_AR?HB74X(q%c}#O@xqr-$wR~7`?K@(2y-#WXUol*@v0=UQ@l^ zug~xIPd$|TzOUe= z4G-C&z_EdsJK@e2ckhw-9H+`=;4D8k7scuB9}YBYdTWjFf4A5CAv@~HmmqGy4>ggu zWEoK2gMJm;a8tEnbA-Di+Y()#5vZJTIRZ77!UdD9_CcvVzdJO~o?8NVKQtuaOlF;P zk#57R*2!#B_s_MsxJIx|De-MfC*d9V>k`Oy-%D@68#0=H$Sg=9)t>e?h`rQnU@y@c zzq%MRCQqBnUK&SR!mSb`Zggx|y^vc9@o-irHkdKqZlI*U&`oFaRz|w`NCXx)Qp0_5 z@@M|~s4KE+U<=~Cr`tq0^?|G2^Ipl^8#g{!z%M~Qq~3Cd*8Y}6(%hYq&7=XOUs1wS zaI?RvKmKYuPXwdU>!gIp$~kZ!x`%ebo#rvKL^2znBi)y^VB$ouf_xJ4_*g;9J0BH8 zTY})Z_IIDP3b9z~RXHv%rRl1mw8g2T-ZsqW?GF> z(q_s(-1z2OCEkSUWdRVedQ{6-F1Jp~mHEb|aFzG$t}7*9|6C&0&`S4FCDC@B8N*zT zWACVA%d(+0C>6ZVi(7B^HeFtND-k)}19Bd@GOQqlA%Z5VuKrj{ty{;}s{r3#;z{qX z_>Aafvzasem^>fz!Oh#cbwktHyH!a$zQ^)tT`#OZd8bk5^YR1T`P%mwdD~=A$4n3K ztOEoX(e8{4n>Y5Np|SGe&V<_oYL}pyBGPsDQQ=g zzB!t>b1hZPWlP1H&sJFD>`nL7#c87IR0$9p3~E{Iwnvhe=OrhjxKDv_NB)POxYX%T&zV63;+U=A zV>{+ZOO!U5ja^P+N}AEE|I`f;v+M(gd^BJ)wp!lEz9AKSYC~O$a+t%1!(HUsmhf%w zR*?ObaR`mXUG9vp$h_gLA?wj=QW8^lu}Kcee{xg8B#rjg$(z6UmA<1Le0X774@{@c z`K;>B-La!?!vN2MZx`0puO};MFF5Myn&cgcL-TU8U4~s|yqU{3MYy~vWJui7rUo-O z)@KopAq%e+VjX9!$*b}c&xq`yino{YCKJy#u%u^O{)pQVX#o2~qu5QELVWQ^xm0t2 zBuTk4Q~;G06dm>|h+Deyc3Les0iPV2{{m7#tBRh{R$n1<)H_wr(MP6fZ`C+ju5_RC zO@Xr4lkp5x(7x-LmO%NVvRTh7-xcj3;is>EuIMQ_U;$U0kw<=gV&pyWCQfRZRrFJ# z_j^CZtjef#ki=d)rYPQ}ncqjr5L2w;*R}ASrN-O|kMeJ~SG^fIs0WfJG4+HP5vPZ< zAHLoex>>~^IDBJK@hQzGv$p9{hB$reG#IgWakLDt6qqj zmbiR5Go_cDTCX6=%nqutr}vkTL9^T!J+?a_oEz!6<%KX9uY=R#{g1CY2p! z(a<m6h8svCs}-x23r<+!Gt-0i_GG(HApglT;WX{3Q27{5s=OP2z2q5>6Q)@n`&;LdHosMQ zPOJNkGZnGqs)O1X$`p0lfB z=M>pdlbDz9u8by}B~i&!Oic+$5m~;p-UK7iFkBsPT4;EUxw!l2t z#=yX@i8L8>e(y08*7dNEn$Yp>WxhZSBRNE)EKPl9b>ePas!j-PI+f}w85_R;nvsRufhEK;Iq$5OLkYAzBI5ntiiw!XbyZrCKcw=JlH zO?{Rf*6uzZ$^Z$2IHi@UA&Y8K*E)@pJT(f}EzcieNeJ4EIO zH`W@NE0@2Nr7MILJIen$$tx#V?p9LsfzDO=r_7gQteB9hp0EPs7c-$dNj~Fp=#^Jq z34#p{iZZc|3He`>NZ~_wBDRf`lV3r!hO7P`E(G;>`q^OGefvk>l>rcW{=;QM^xat7 zI0Hu1YUXMe4W!3*5S7-^X8e2wrK`xJ+u7i(iLLD<6a;=5Rcx@MI5Ws||TJ{^*G z;m3`drWT)6Famv`n5U%~-9ObIu5;h`kdTh_vy$xqCV5z?jKO$Nl4e?hi zc{Sc1ii(|VZm*g*Z?z(q4#x~gk9~)%f}CvuF`UY3YrVl)$LKI4l|tKaJg6Y&@cE?5)8h`3cz^A(zB5SLja#5?c4jnbCwp9!q zEl%_wgS=B5c2$PHeOZ6(a#$Fsqd1q}n+V0n?I*6JvE*emjBfB_z zcl~4WIdP09SD<^sVWoMMA0E6*WV07g@-&s7Q+oIDZQWt<2$#J#ynMKf%PwQtdAepR zIfX?X%tkg@jI78EhBn`iZ(`&;_ui;=9II3cVuDMGpIr-V-@MJJHx5|0`ZiRitWqE~ zS?V$v6W-v8+})bv_s_i4lx9rynDMHf+Km@&>TR$!YWgX6lcG#KIxt_?$da%nylma; z;6+3_5ktzypzItuA(=#CO%4O$qYhN#DNZg`f9=Kznopc<#UQnAWos`Br z7S}gezu8dE#^=-S8a@B9=~vxb1OBu_&sN&y#!oQ2cGOM`%~=`d^n|Ik{{ne*4GX@S zKGS>X5i3UDlO-FiCFNY{;j00{sH1yWHs3Kvc0sG|<(My(yjS?|n0Uv5F&fu-Jd=F5ppn1+4E&cl>iAJfX1qAD2^wn z49y2kUu4BK({r{#bjEHWtvwrcEnNrx?wrc=I|0^{tJ`cxmsm zEtO)9Uzt~oUTQNC&}qz~CUnHoJF>DEXTnj@;XR85}C;M;0VEOm~s`mmBhWvw%{y;g&% zQ985*l7Jw7mUc1CBA3XECy{E;Ff6%S*)@l@P&m65Yr*U2HWkrJ)|;0dmu=ojAH3ew zN6!)m_f}4wmcP5B$A+Ef#ARP(Y2Om}X&aS!XcFs4skafl z?s?=~;B9oVLi1xjuQxCKV`J*phH4zg+j*>Aj$s)c8dg>v%e~0(*74JeZ)17I^U3Dx z<4Y0)ui-b2OPxmBwEEAi3jPY*nO_w{zRTB4gQ}hq8YHuMdH6*!m@=(C>51e`Mb-|# z4&N)blUsW_{D|TiYcLNFlCQCzjm4}`n~LyoO8YO~iVyF1($#4%F>LBcDEx3e=>Nj< z(3jKRu|KYp=P1rgho!jCp`UwUGBtfyzY6x$_K9EK&oC7~IAg8mxU{45BqS=Yr~JV2 zlaHjE!YqHlkJq1nb2PM+bB9#c)CXX|7F)+8{oqux+k{K6WUfeD7|YkHy0ChTOD~UI zzLS0LUn~F`pPoQEuzWMHbwjCQGT=#+7&>hfV{Pt_RJ|q~Gsn3W#cF-3)^^!8-}uuL zsrX)$w=rXU;G^{NyV~$%+Pr|VO_+(iHDYliVn*1lPuuj!%(k9GL)*L{nxDt9d1E4$ z$P(u{O%!*)T%)FBQp<6?d<4Slvz;6j0lLX5>q}`5DiR z8?zj3uMKUs9K|@;z`sWju75g{l+Yoi>Do5vQ)zP{Cdz9Te|+3N|C-q5)8WFHp}??> zM1!%|`}WnUrf0HT*7*2w{OTM&{A|N$o4j7wXRhJ(uW@Lj<5DVUn|4g=UZ#RawVVRx zFQuW4>af<4f1*86RyVYURS+9h zCXQN?0WMd=GjVAr^S_Q0BRz5@aK9ubua@F|wE86Xm?wYDm!TnYV&Q7sKC0?)mN@iV zyVHK9+ddQ1)pEkx#WSVPYur$7e1vs#x(!t{H(N*R#%^1!hh&SDxu|?wXGxnBU`aQ~ zIMCaC4m0EY^055d_n~k=wskKa)6}=*YZ8($t8`@)y%$tZFJAhL(3Xv8V&FfyBI5=( zaGw<1>>0OqmMfciKh}pt-*J1kJ0@JLP>X$B0t>D@VTp~{#@1APIbAR_J*vQ+rJp~Y zGkp*4$am^-e39;S=Diu~fZ+W8E&X`0oBuF8#BBM9oP z3<$3o@^j;2OHKL$v$5ty5wVqrzjEq=~<(ay!YG@hz^pDmBZ0`lDm&>zNo<1#h)!EEB_Jzyq0iNS? zyw~<=L-j%qrYCq;S>0Sk<1EMSDc=X%x{!MZZ>@Z~FdP?DbMK-Hr6PrKHbKuWHP9 zLm8Wc_l7o^Yvr5VIrY-TQbjX7mFi-r8Vve3o|0@EF}8QnFv$8-4r6Z3fNJRe&S0;= zjZ#3u+gxW;xCx@y({M+at_;mF{7miPNeU`q-g@*(5SrUG{ROo5xTbqtRF>wu_Gyd7 zhJe1GR;U7v90}q=#-=boJmCGn;Cz$Y@%a?B+$N`j_h{M7#Mz<=Hpp+hIhOZ4RNOq!s96Jd? zhQ-$xSZrcA+Is~qeBAwZe{c@d7+IiY@baj{>+d8eV?78>(p$H!H*8MlHv4WqB0Etx zfA76Z^ICQ2ofg%3&&22!*M425f=Z;XJ0F4=6xg=r#Aknv6+eHk?lSgi(THDDW8;0y za)YGo+wZ{zkLE^k`?sMmu3NE3)RL2omzC9T9MLhjqA28EaeKI_i{WSO)ZlJQ`EIsy zpp4>t^=);0BL0F1X~jIXKw-HuET~&zST^Jae)AMcvU{^^{awAORT5l`Z{_pVFwfv! z49!xz4{3kk?$;yANy;;C@!bw}*a`PvwtyWYF!(82N};%Kt%@_D)LDDXC<=lln|%NiE+30 z#fP;yk$qD53wY$-jV(P~!6F7HsMu?FwN+%y1Fe~$6_>Q}TXM7a&_YthGH*BTwx|?%_3SjcN={t3*1-TR z(8#GVG(FL~-0%?Zhp70b(H_0f;6DG^@B4Qi7zA%wqYn%@X?|2zZDi84pyaVJjfeq}cs6z> zjkr;RUiZp8YsO_Dc{yw8QT^|4kTVV@!k)s6WeQ););axt-2ji`(u>wxe()r{B%xQx zjKB=!YNnskC*P2|ziSrM04}og!H@u%hh&B>w5pN3*>B`c0d`35 z%{@~6+=oE<8Gn;JRMUY6N0FAJPXf~=&1x;9H2=PtaHZEw@CkXB)wgr=9pQ9Ith9#8 zwd}zQp$a|uIA7n%hnmu19qxQ%4-s+yU!Q2N6HI?6k@7c2@xL9Xi7-1r;pNYc&iAMbzED840VL{{BpPoC`wg5ul;<<}C+{*9@xqYJ4 zjm92=%8qSKV|yPk{pm_m^R`M{*&8<~A)hhPd}{byBf#76^!}h>fCC;F+KojDV3tH^ z9u)o4$*FgGY4cvPmRqV_ybTjz=E|y&cv(r?fHu;DMi_tYtj$>9Fp%c3EM&ydND`p^ z-Mxk(d($Yjzyk1v%3e z$^1XVo4(l0+p*SjLEk&i?VcmJ`h73S3EU0OEOfhP79A$2EeYtNp10Bg#;JkZR^M%8 zn5Gs0%^_qdCr&#BXv6>X)F}`De4*(K7<+y0S&UQk?rGpysNn53hV$*gr-i|_vmKC< zV-=3YeBDICiliZCD9r31FTlp5@%sg?sx{!Awtl=|AgJi@Y4r`azp4Ph02%#$Wn<2X z$eA5yFep&&U*Fd><`lqSpj+HwPSBf!kbUBt!_>|L$^S=$T~*7R#??l5y?^6s#(bue)mE`TY-5kKJ$DsSrJow3WyJu}n`8F>z9u6wXMx)|V_rRq zH%_o~dz21{AiEI)YJjb-_A_sXW_2`1Xv1L8o18E7EeRrqb}alwf15Z(iN(%LPG2PV z@T?O6<>F-SS)x$vOeSEwUDXxQ;M78F-)kECe4v-GDT(6=vt_)PqW5)lauVgJl-}$t zLDLG>Md&>AS33p{rA7)yzs*}eq;w zodO=fOqM=5Hl}RK*>(<)Zh^RgYQ`u3r`&~LMG(?Z&RJqT4{bzSBy8V@zVl=(NID9 zmRmB4ipNTAyYH$OL8d#Y-TLg(A}Q|EW_4iHFj*=YfyFhcsf zqbCHYDC>2Yp?1)32KJxK)M!rvI|!lI0B)oP20A270!o6_XD~p`fw;f1(1!qgcy_6O z42bK$j}1ygRMX>g`~h?c$*EOeCEf^Va|!`k3fyL&Z|{P@b^nf5=@*ckU1 zMC}G3Ne^g@1-5{D0T=8WNud-^s&XHsg|gjy((;xZ)U@MKa%KyeAWuxn&yCE@Mj1RF z6(571&Fm;h11Ga5sU6?gWVgBn?w)S~hbO4*TX{C}$oAIOr)MxD&bBpbv_YosB#E$} z8=|0tL0A%4UZdKh+D0=M$)+Ad0T#O1D6hw?)=9CVu}{g0Z0^;wO-DP{GO2dNNtJXi z4+Km{8~8)8@AO}2dg(MmrQ?v*GJXwMmqmbpfmq*zb(5}vQR(;rGobCr_a&NR$seFilruiE5`wxg~!dAO9C`d5M#J z*&kkdLJOr(g5Yi_==GBZd_k*EFyPX_&x*DHVvuUN3YuHYP*%?~U4{D}9H6XPv-CV< zh9*L!INp9q&@8_1Vk{~ONXfCg!Wv8kC6z$h{5AhY8@(B*o-qEDTz`$Bye_r%lhRuC z@)Z=XkAL6a?+z@7?0JW90g6qqCCLM`CfFVLsQ+iRt+^LD$R+)u7Sl_*=G^*5LZ@Q> z_5Q$V6zdT^HZyOEVD#B-Jz3(GPY>wJMWi&pwNePcSZ~2ah`7kya5jaA6j!+5>Nku9 z4EVv8)a+5fLEWoUs{PGd1npE_xPFuv-~jwJbz^DgeOp6;|sjzfL^Y@uG>-3iAa}qT$BZKwqgE1Ab~dtpV(-F6VGqFN`r8 zQ{oOUH{BW2!oq**=2#c@CJUMwtO{L9q(N<+x>pGD$k?0(bKnP@amWl&5aU>Ht>U(O zj_)c1dtiH{!EW1lKWljwXW%P+fYllyaZI*!+SzQ`pKI6Y3HcpWqZXHVe)7_`>eZB( ztnQ*jw0}uW>H}hZ6t5px`Fq(%Au|3?Kq&ZlsiZR+W%jLt!$Q^39ZZa|#K1)8(qLN% zNTI3NU;Ot)w38J8B*3@V!A9h#9g1kSYgPwx9u@3mL{G>~DeuM$4ku25P0w^;nCDcD z3V)*2lKV*V-I=Itpm}viW75hu6VatrTEahE8jI0E$fjn~!_r((R&H72T4q zc+2z_K$=;d{&wjhwxoAhyF?JEh>kDtzAj)J)(87IU>fW; z)w@y$*6R<&P!)o2w>pzgoa^#+y%TWF_wY8_<2^KHD$(!Fyg9TQX zadD|%#m98|UW&Alg7Y!Q(8DB^lecsoH2TxPjv$acK}U_7Xuc>wk6ErWj95E=^Uk!@ zrV;BbEuE4Q+t_rwVfJto1Vx$90=DPOXA)8)v;0bL@VVo}Z24Gz0Wh?Qa59=c?NAVn8@Q;eb*YdUM(y%BpkCFsB3^ zLZ!C=o3r31DY?}~g-mMSNY_Mx2w@pq<4K{qc(5Unz(tL(fFRKu5ZcrfosBfLCT`CX z_DJNtU-Qo{86`~(Y5O7{mL}Mwf1$oAepFDq8L*|jlPa`{ra#Gfb-j*=H{HRxVI_&k z_mg>NbUKWNBgm(H{CUB`V@e&f+`3<)p@YJ*ijV?Ku(}j#gRaNV=HQ?^ zw$xGgUR~Y=*Wfr!aH$qZF0xGFlIT8IP!R2xUySwEnJzgLYBAJN@^M9vh6B`r;sawwz)SWB?WIvHv#%pXKr zu%B5v2KjPj@j&2yl}js?wD;`?Xy*_;q;cpyq~U2a$T%c(2xUPdCPD%(KscgQupI4x z{iOXeJ!@&Y8Kmv1e%+Jopuvd(E)Q$oj7XzH(*-Uo?pF1Hp(f4_8Qh+GT-wE8zs98* zUg6Z*^U;SR@<)99KiDqu+L;2*J+l>Jzzc-gfxt-h*Gh*2-~jru!=v47~Jl2rbAWn6fe2Wv}ga zN6q1~WV0t&!8c&r@#i98rjoA=szvw;0p~T!xb*1Y5j)h+srLkMt5L4+L--L&!6r2- z5>OA_FCh_#_h<1wLT|Sglht;8g&IaV7eEc6k$r3gYbbF>W0iq{bo*2d+TC{v(QzK^ z7>(T~Azc-R$d!?4PPv9kPbFnzCC_+`&RFU@7Wf|+08mwR!=n3Dhd~NT7WzI_7UeBT z3wm)hKLmR0uzUdIUuPeG*LJ{-nwK)6LVWWNQNG=|Yrstkct5#8-I4=*C<}eL*hp%I zgUrKr$TRvsv_bxw)A3!I4JczD1HbKMcjn|q^^;yq3Hqjc{hr5%8-Y5zOejS1z@3Zx z*CRtG_~&GGa7_D7t;QDOwJ6k!w++|32hNzOfydS#V+uv7p=jo9TKl?rT3V1-0}VZO zBhYKmzyV%pfi5Sb|C#i%0?s}sy(QK~#9S#T@p0`B?Uw|>NdtpSm7rf$3xIhoU-% zC;-E>{~jQDZhg9L(E>*QQJ%&*Qyb3NdL}6y-7U=%g$7OY;LUYOoBfxZq=XovAXo~S1oam z3FVoz^y93u*N~h}NV;)UdtcB@0iX%ylWk*u<5(b11FAJf&UDwinMvc>o7}+0uK@{O z%N8ChS$Se+R!9yQTT*#~HL!%wo%L=esWQWH$29AhPU z0U5EtPy{tShhz*$a7UB6neTwKcul@2;gCqspV%4_$w0@({;fr^b<3sh`~ZKaih!2W>5s^HzLz^m)$b` zZIWQIU;2X7Vw19AN7(iT&fqqI2j*00gSMev&XeDejWkNTfPZx(@upIv2RVgw_V@bO zmXl3(2>oQm?#~!U!|ex6AzZheS9+o}y}kZU#2znLA23FciJ?|)s)J^vG}Ut% zYPF-rqfO=quwCcV>wl`>Nz2z&ZS%e~ew$O)MaxLyjD49y!FY{~SXBn^p#=~lTvpF@ z4FL&xuQ9N0;B?rPPG%1dsaWif*Z>YEO0%GOrrn5VDG)$?nf!HoU5=sN)fwS|>t30< z?wgDj6Y>^&Lt#~U@{u_wZPfs(x^#L_uifWud@D;3clDVASJoG*X zSzd6~u?YLhF(pGI=-ic9dQUy<2YuXKZ3W2s25{5-2WUaVCH+Vg;&f@f*_Z?+fZZnG zo}9}!L`uuk&`HUJNKVfGx~QuU3uL{w-9pRGy8kiWT6NN<)+l?pNO%9Ql)MWx}EQE z_|>ozhp5r$GJWqE;APw%vzVII=ML~De7+Stnh8OFdIU&N(66ilmekE1P4t;fnJDu< zAZd6R3ONCIVJ%3Kq@V z{bQy1I=+~5sh^7osxuKB@USKcn%j3E>k#r zBKrzQL78@bnf|#;C>-^ifM+K84fPqTAkZ#F25S|`q=xUL()PTgs+&jnU4~)`CLrWB znp=-`wu&Bq;x=jomBn7;^N^9LMD9*t?VBW_s?W{tnf8O%9Tc0CG-n;}sb?%VQW#ma`Xr=52f1xfGQ6Z0X7%e=8fT8l@-CCo-Y}u&{n!EjLAM|q z!6z8_g08WER-aT3xMc8YeSaR*w|qen0QKCH!i}_4Y=&ale z)ZQ0A<;dH_VH|nm9kyZ)JFRoWfMlbQaMwy+Q?8D>lmh=PWnwUWi%cZt*3dso%5A6t*&ES5(9bCUr^<*KXl&$21i8=p63cPE4U4J?UDyJlyYM_cDdf44)Vp zJ1bX=`EKYd$E`7CG5hc$FmKvB&S4MEv@p`&qpY$wkl;uN6e=c`={9-KWR+x98nv&K}2Mwn!4kRII-f%z-zxQ5X8;MItDKZ_Pu;3lQ=aF-iJa~?r zvW-wr6|5!R!hw#_QRr5>SE`PN*J$!s6CYMDUl=8CmdM|2468Hj+H?yV18ZLTaS~LQ zov8&-P#(MbyDE(UtmQK8!HM&`$=1IJzmVGTQV$}F|z;TB9))eHLl)y3I zA9dNS;=gb?j0lIRjerw2>*E~?PJ*DSUXjl_Soj&;@0w}b)&#$z`+%T)F8SeGPo4N# zG<;U~W@f=+Iw%S?{w8nFQm(j4fzGd>h*rLPKF zXPP8)ZKG+dGha3u;Ks5*aoKh8G=hl;N(t?t$_$EX)Z>>E(s#$B~6WjwsUIE|Q$mGNE^ zP-4*tS!(ST<wU;!3wq%v#tS2WRFomN<6MZ6|oeKMY-EW?5UOd;p+3INmYJ^uzrgUEbW^tEl zx>a{jQi>OBpkC6h9^+Q)i$^3=$6gYQeFfBH0V}(KU;V5yarlo~^K*l8<_i}QFl*nX z3I)<0`fC2pDhrULLu!{NaI}X8SpGWNS<{h4RL*xY2fiJZi$+bvoeAaG-SPQXg>wEeyBM8!wwF_1L1=!_>W3?fCM~Z+p!B1E zLy4{M2i{wg!^Bk^qJr|dJzH)HsB1l1TNaE;L9v1v-y7Qm>0lwK%sCDoK6w?S%G?{p zHLDj!g&N-`(;&DvFreXJpUL%lW0M*J4I*-nS_`L^sHhn?^!q4a|A&C z_-R!50l5(zUa2h(cMpC$N&i%yX`@;i@0Z^wF}s^W!m6llf<`?rL*zu;Q1!(!u;6r4 zhgV$-oO{r}LHJhqrSu_6NdqcZo(zh!Zs7DVFAAmDnX_{+8_k&IVhc)1=xa2s3~{kg zi0H)Z1?%Q^i}5k78n}io+e$oVmuDR3DyC%;tO}g7t=P(B8|`|Y=iSWjjhK3x=!iSn zD}0G>_I}8Q$HLN`UVH*huxRggrz~}httb_-eIyPWqRa#a=;lCky^QmNe_0Yu!7}Ya z&0jB4rOsSpKv@|=4Uc1+)==PZJYi)pU=86rDA0!LC~~A(;I&X??_J%VOgiwuf$nl_RXOd@%HLNa6-EwyZ3fOlP_iI zKdkEvooE;0XEB4bATuO_3TCaq>f5Dt-tsjuAmz^?I&>pZKU1JOwqi5~-q}=#3|h@lg&DzPd-E?if4MeC!+ood?=ZFjA|GJg_PO4W>_3 z57CQ@cLy08I9mcvO)DF`I3Y&LtgA2 zo0}rMjROPX4m!M?gaR&=q_H;XS)yk;*#kWpJ;-5(}RGm zA>+m=w`I3v{V4YqGr!uw>vxWjPCUr%NFGRvq5E<*j5E_@Jdw-aNn{3T(6Pedd+uSa z|BG?qMa@vauynYOT94xfosoyTK&g|$3mlQYZ<9IbRVMsfN+i9`YC(LgJneYw}3ldXkGwM6{S6gtm@ zRiqy;k7RC3sNIr^4Kd|2K3;Nv#S|58rPKWwj3)aXhsJY*&Mz;QY2)%igP!yw>ET)D z8w7yO9t4G;U#E-$*Cwfu4uI2XDBHx|{(<#c!ylx-kpfAc(TFtir2ldN-k;!O;e#;K z*o$1O>y-QsSiQxp4Kq}N8e*4M#bg;rg(nH$WzKi$JuJW{kyJWm1uLT9JEr@Wc{A=> zVK_mzfhOe)i3804_sa|DU<-0$I$4(hYOUAq6R;JV*!FStHuZ~@2DKTww~-2Ao^-CV z_8I-I7Nw1)MHQl1V`mX;Qk2-!=adLtWHQG265pKc`C$6@@9;^X85^>Bi02(Yk|>nQ zNrCLi3f2?XxHaZXKNDovNBbEuX=cf1)1wi0)Z!OcC zfb}9J@0G3`p}!_31_n}m9+n|Z%Hh8v>Xgs_%i6}gxK(Zmlx($8vLXQe#g9c3C~FKlQ)4^+o#|Y z=M{aMSU4$Db1j}pYK}A?4~xn$wWx)80kB3^?s0p_-y8%-PHUM!s-&Bs8|-OZl?T#> zV)hU2v$|_EeCH)+cDU~`)oU<#{avrpWz?$Z6EX#UBZfKpaxgj=f8>e!jp-o6q#v}e zB#LhdXmtFJxmeCaN`+NJl&UrqW)lIX0xnqWD+Jsop_aW!g*)Nx7sS=(Rb%WnZoG5* z7CoA;75z{vqhb_qvao%sh7Z4Pi=lSFek~q3&6x{LfX1U5*Ng>Ncp(11oG6Mv0V_^@ zBk5*u-lqD-9%P;%#OWJ;PxJ(F@?dJ^tpxi;y!ir3z*6EkzSK`3%=R!9UgW@;W%D;} zndpBPMFDa9SG)aW!Op}B`cflNlwcbQyiHwz`HkMOqdtCO8+gW>Q@an%a=Pi_+LE@^ zpsO&^4!=#BY7r(mk7^Z=kdSTaO#g8FFfr+lf-QHMTW_V667(k8%@}+0UL)P4JddI zD!B@?WO$qLuegi`7uBOE;6H~lON^lqu@=`0O459*_tpJRJYo@10BEfR05T$oHLjpC z+E5^sYFutZ1+#(&9%nDPw@^>$k)U2zhs9Fb%c@sr0S(`9X3;XmEQilI~ z3u3L}Fm#kUN&hINdYX$zX_^&|v*39h)mYLev*zX^sPQEot$m1@*?w|588@x2NZOVl zr|AicSW$aEzp=hx#Q;{^po;Yl>2C%wWZ?u>xDYH9=(ml)O=B1h(`%~35VkVcq%0Z`j&ge zw+Yygl}x&zy;1e19em(QrrrL0!`AaQ@CYQ)QOVkSUm{DKZW)}}RI}dM{9BtC(v7m) zE99m$ph?x-l);8AsSQ~c@IdI2-Jv3Gny%Wg?DZ2hmH;R7+iwl&t^;%Npx8!H?txJ6 z{u%;1iMlV7a(re~ojS6@AGOqm+?L>9)1HJ8vb7FFiacQHEu}%nQ(b)ns&i=G!q@K@ zHog<5c5AnkN|mI0=>fYuuj*R)+ULaoA7uslzuAe(LM3RDp9DFfpXvl`_oxdq`VxNV zqh`zIOB@v_^jwMl_o0Z~v65{~5Qf)qGKX!N^!KBNYf)7@Quy^lz^uI1eu@8;w$>UF z_V(z1)3fY=KpE0zmFy*W{0O&*@zKp^&9lp9}D zWmYDokAY^bH3DE|1)z7`@uLmQVPJp&1*Xz?s_O?k@;LhoKAM^XKmJ69O%+h>a8qC-IRb|rr?-lnl8a$9yao`qr%aZPDR8_K;2kr0LLbI^7 zz)`ReWemWWvz2g^jYTZMI{APB#qIY1&IIQ|%QTjTBlKaj(ZsqUkPX|gM1ypUnkG=) zob7H7(z5jun?_m-WO-x|PIjsHTeMf}SX3{k0R8lcbmVLqJHV=RL^G=ME3eb@=&pYj z{@``ZeB1v5uRdF7;T}*OzAk90tG}2+!4y)61{R8>Xjw+U4Jp(Y4VKP4E+jx^+YQel4OY8Oi|OmS%tWX(+9;$E_}f$eUq zt?=`a@bjtl^&tWW+pD@10HYo_e+JVs)a)4mNHi}R$nxfS$lO#P^ifKr#34hi64K8va8#X+%*a(Bns};J0nS4St<1 z;cociXImGg%L>$Cfj)q{MO@@AXwlky+7bGE0QmUg-XM1Of|9Y^4Sg!GEpDz4U`iYB zbAqiT-ySL}Sjr&p)d5yVGM};mg&+1>UJ}?pi^Fr+b?%niH>hCl46$sYFaPNg#XNDE zmn35l162XU|H12AQJ}vdGztMRbRvJLOF4r_wPdlknDzkDvUz_Xc52;5;e5>ARv~y*@XY$ zPI^twL!%Wkv@J-Ycl55=L*(FhN=ZK|>GxL)mUT2NxHW)tMFr>_S1Hu=+P$h1VgUnv zGcC0D0)vz*$ZI!yO1Hn+8miC*ibh7es8w2X|Q|HX!5H&~u?^pf7Vf8y#q9dI|A^QIrEN6e{!+7AM#?|69# z@V+vFCA)E@yWsAB1OXu;DAn@Q6#mjA)g-OzaD#0pf0E~U{NQer?RK|h| zLIFs`fpo#A@P;jiq+T8+QTmNu!65z|w|}2>qSrXyp*})A63+xuq2iWTlI5Y7kp!N1tTxEkb}eE{cSP)I%LL>Ok-0reKC?2A)@fRNeUPwj-)Aluh-zG+SV{m8 z7#IWuYI@aV&#kKk(-vN7WjXi3}aSDh{?Eg`9}nK^T0wg1*i-8 zD|g@o7eyNgv_$@zzR%B&acFL+W9>_DRYtt*_^wD%bP(m7``ddG0X9&y=D+)`H9TTq zUnK$1Bmmg8n`_jd+1`UK>^$-)mW?ClJ+TnJ`?340+729e+h#xph6EpIHLH`;*$BE` z!7VkK-*)#Cc+$JT$1ZJX>VPjSJ=1RP?AB;ga5cig_ zq|GwI21^Bb>gqT>4Gg`0X3yw1w&47^kf7K?YFul5?@Zn^ww! zS9P^{_eU!`zV|*iB{6RuN;8BvX==zqFt~53Duj5zId`8=%}e{J7=KY++z?(;EQy?; zpR$%y8AVw5&x+^Nfa(XRTknF3>_c1N`8O=CDaSq5;ifR9VbC(?09=ChgHMUwCNx$T zgWy(cdi;7EjqNxfa|e<$rI{LHMC#K{&@-F;r+&J9;#RNRvk#g^$MVP0mc!fM7lg5v z)$6kxEAbl|24?GUX!t!W1Q|BRr`rK}dFC=r1dIKB&( zIi|^vM!zd_BtrIs3s93aI0xjIlLQeT2T&}SKmiH&fZ*s6OSR+bJ&iQ5<74liOAuGy zIMd#wIg(E7z_uPL5pg{Pw|!T ztx#SH7YbSt#@!|NyyXL!DZ+Ev9v%7(E?W{xgN|RwSE|E>@xJK6s2brttbyDAXvZCV zkNVN$ur)mkQTH3uIXSbmdtOpDe@LUi3nK`@+N61|j}GA<1@R-+x-_4|g@WpyoJ)j6 z;0B4XVg6#9tKj5b)!_Px;aZovULd%?^8#7~_)Sp?<>K~LNKW);$ZL3BW{Lf*o%bHUIAenUB*27z z0b8N{&j0gUu1q^IcpghTmhL*c?*EMk-tC=rIMKxO!-xU>^Z~OuHTxg!$-mh{9ld;_UEn=3!SExdhY=xIreLNG;h&01 zqOUoOR(O_}6qDY4U1{D4XNYRJRd zeeFuuL}9t}Yz`7x{-p~!p^q3Ttc!*Q!cwP1WZ!IuQ;C7VAS@Y3{zTTVwIb7Eh)Z-4 z#XDm6{nwC#DN<30EO?rhfzI;e6Quu4spY68<0a_j`w@e`HJDC7UnT~E>Db;V&NEOEs^z`jmRV^h`e>p;4<U}2l~(=5N5$l#FwEvgcHdCd9Bbqm%4k_pb|$7cT87vi2RKgf4o;~ zMS8KM`wiH^3E0722l|8W=6C)`_}7(=sA&iXBEHQl^BI#}aW3jqcmbA++y>7ZoS?OjFjzIvLVnE}@cbr*57{gNZ7tHX0qf;K7Rz186g6^$1|5|D1oZFK z@to_w_eUA$Q>?t%)Y}t4NSyjer124~-xs*iHd7&rew~kS%yMo z=mbCr^d$$q`)RCC4m9J$3_k12{2dm;yLBM(&$hI%=iR>+PjtQ3pL^&Yl$*k4tnCHa zbaMzVnV?0=6YE^RIT=*VH#f_a^~8gMv)fb9ynQb{X(jenpYGkUl)Q1{MxXL!WIoyC zLPgLQ!aMmFy>r9ICKUag~YB|fO!dr)MNQb=VF>8>Fqje8D>+n;*XpmrYuy>=E#ae0J z@E=JaxQT>KA|+Y_gP!4fL<*6HuJTS&{wi>14u||!==c9~z<0UH(oQCi5Rfm5Y4 zgoDtOY{jt_Bg;z0i!6ilBb{Adp{4K?0d0G@x-c@SF9cE!2qObPz^nY3M4)VEthFBo zAF=gvhey&nzqkKc!!9}7)E0bb0DsJe90k3S2^<0*wCEwSP0h@{*GQACKn(~Uh^ka&N}l{`Ol8PXfZGF%5mC(#R2QiIV$ZryXv=u=k`zMZ~s{vY*B+z0nxLQ%T z%;7N1U7C6G9Tf&hr(^D8SVJRcSRfZ9+JF--N929g58+ifnd|ax`~);wgPgMCn`|Lu zIewNR#UEabCQO4sQVo^n@lxi;`p6Hu7A#De0J_Z!HUl&X)IgLY$p4_G^@p5sM~sPKg1{0Wr*4jGm`N+X*)6# z*>dut4yCv*bu{nE2nJugFV5zC&4%fFo$ zH!?>Y|Gd6O{3*tHIFTsY#)*e$H7t$5*NAJvEXTh>QU~x%CI^d=m^2tA$JOS)ZvfvX z@|?i{ie;TS8T&^xhblf%&00&cGCXH#5RrY%ra`y{2Bi2zPm4SP z&PlBwrj8-AJB7qSeb5#7bH2tVUOB{uxKU?`&hX5U%+B~tp zi)c*sE@_DdW@zAu2KKfQ^26~zJ2BIZSGM2~vvzHPcYXc)Sp02#C9q?djr{UF{e*Uz zm`|ve!R8M$#*2tH!_jZNm(cHwhXL%UID~^N34ou!{tnpMw1IEmK4f|S8m!fK>K!_< zqtlsyLwkL)Km7AZB@PqUM(!lrEm*<3LI^Y7ODEL9KY~4npSc>rhB^w$d%m>%=L)pHY$~PoT3q0y>M8>CxmoGCCj>d_6zOjd?L~BT__#U}rv6p} z9qt!S)sNF0hM;}AO{x=4o16NT`T{4*$W}omOR-(hwCG;aowr;BpTAX+5|T*2K|(Ss zz1w%JGD^TvPYQ8G<4pJi}0q!7YtWC`r~G20)EVj{uYHK{P2Z*T3`CxTrclLA-y z;tkV!s77WGj0Uba3sR`OlDdG}|5l^SuRMpSvox798a(eJNfZ+kLlma}ldI_s=21!u zF1N*hN{2dYfGx3|R-bG?UA{4LkSo&|S*EQ0Uk1HWtZDl1Da)!}s9#3z&}F{)^GG*- zwms6o$;iNK=e5MAAsl?7lX%dhPo6IhKY-}l42u~@>k8I1V$0J1T>>Ov4&c^XwQ5G)AdGo19oKy4Z+Bzb zV&Bu_&N(lh9w}b~dMS9j7I5^ZIQ3b7O*~_YQo(2L^D+ySbUvXL=WJEPq=$+KIA8Zje4UYE0O-m)$8ZrYg4#l+a5ZJPE%ah*zR}G0%U%3$T^VZK z{uI6V+u{vXj5e#rE1yPG;YO6U=H^YxSmZQ~{-$*8T)Z;p6q~BwcSgCf8o@Ooyw4ZE z)*4|k(dex`y)<)@$n}5ly+W4=VuJEe(eZJrKZR%9!yAWi-GsAjIp*14Idg}mGJ^ee z$i0blBADBJkOHNTEd&X(N$g1rSsn7d0d!P4M_`DdY6J4Wg=FUEjy_GK5DhB`KDsZl z2X|03t--_KEt-zv58_wRO%qe5%8*4s`8d5Kk)9<2smINXzd<$ej4$*3#eB|7*gx5J zqlaOmh5u}HrBGZh*5QO_EJ(_VJkm{=578h|RMWp1cy8VroT_Vt-EkmY3@pLS7Pc=# zQe+|@n@|Pt9@|*Ij?4bpv?%G#ApPLiV_=Lu?1yKq?!b|=EtuK|rpF@B{FEaLp1ARZ zA5ekAepLE}Ok^$Jl0-yO69HuqcGQFK<+^`#E^Hgvb*+u~o{=>kPrwq8kqvF2o#5!L zXg^4qJwaDgr1w|(zPrC_C%I}@tUjUVw)gt{cTwrJxMCwtl#-~550$RM7nxx9z7l58 zLeCdjcS!v)*w{F|g-a5$sX-?Q%iY=JJdAF@7KD6`hlSFx#${zzd^M1lpA>=m=!ABaTe~A>csWta1+G%B7s9+HYKV_Cvij#(IBtP>Y zgwPx*7}S zC*q=!06iWaPMLhmA3Sq&yCldv4QqSE%gd{#?>p9;kp-wlnuWtZ3*t7`a|h9|Yw-?- z(JbEG-5mhrS}67g3Dpe*yZ~Y}O5_=S^6uFoqRflY)$f2{3<358?7M*&>%kbTe~`?_ z{(_xUo;Ogg{qIA7~Lli>dumi;@X?c%o+q~B)^@s>wFeF( z?pXE6`WBaw4zMYqB+Pr@!2%S0{IN5{5VJFQRV)|0UyUe2{`LfP8A;&7>;AI|)8xb` zH%`0cXsR_1P8JB)f2uTqzfbM(%)x^LPotJAsZ%|L1}{`jEdqM2+*>ZuLyg+lSTz!g zBAr!66n;~C1gNDP$Ogl*>!yo-+iB4TCjH+SPMr30Y$`$c+jHQL-Q1mj1YfmDP*#oQ zyIakx-rmM;5E!ksKw&LeW}?PjH;ZIskHVwXdb0F?((}Rh(v&|hw@Pkxr64kAjaB1N zd`-mjZ;Kqlhb6PL{h#5tBrk_boYa3DVk0$ltLgNO=@el3dbbI799dv-P7Z0vb)1JQ zF{4dbeP+Er&z=5=^-bZk}n`@wfof6~}N zCS1*^M0)xGR4|lix42_RD;FPo3;CqS{{H=SQ=iMS}<65|(*{l33iRgPF%mh$({Bv9mWn^WROW$eO0{N8egZR4sb6|I%^o z!`jkxqw5M_+ZgSrWqUngXB?~lqwl&! zBEWWSCsCS3pGlww!DzKxh_tyTOOSXA;K&vb)s~>Rk?ZNxUus6@9Dy&D-PsclF3~~= z)@7^4)4<~xhKf0O#GaB5iNrr#47GQS{PNt+s4)G-3H|}idp%lrCvhFHT0G0{e3?Gz ztxTzfSlF-*UHic|{JL&%q(1mDP5;~@l_jfFyYX=n1(cNlvKhry5Z9BkEI|Tu)dLo} ze50ZU_0C}lU zpqlS`@ZG`+7%@c)Xy%Y?>qV?-&n;T7Gv**cv6P^HAp*o_{N^g_xkYE#JS;^Qa??>R z$$!638AauD1{A$aA*6>9b#UxYq{n_H*uw(A!2=K!Z_*IoGU`ktGeQ!51NDX*cDMS5e>hk=I%tcN3gP37rM$`Us8x zltNkaw%vp8%_)B@s0||FqaScL_}XMOK4431pw<>Lb06m)+l{C(0G^)Xjp-&wRP`kT zNL+yts>uA6-I`ND6~! z?CIaxBC*lv;9@iJDS&v17~XXvEeE0@lPlN*gd4Z5EIYU2+zi!pZs0ZbsPgRi)7h3Q zun!g4wlQ22+49NYhz2O>p(PqU}nl=-G-aChA0b*(ykuUd+%+v+ALOxNaSG{78Hm^(VF3z$|YL`yMU57FZO&&N^U2S$fQf$Z2w1QCEwb$F2uv`jp&v;*LCJx zec0=K-lkOY>|JttkDd3Ux8`SO7({^zh`Nl4QHsfQVML#Px|CZ$w#JNL=K!j0TQdLR zETFnV7MICs3_?+Feut(&Z94%P2hQU{C<6gW91xyNTs+U~JK1MQz4rch0kQuUa#?9` zbjJZtqC}{$Y)#AB){{9xsA%erH|;JXPvFe?*iNmK(V6$o3KZ&69CwUgZ@Hn2}BG};Y86lO{hso z_<|ZhFH;Eg6{MWQpl+hbTP~0Qb^s9%uAO?}e~B}=GspsD5Aw`GI2bx;p?xbFZX#-bt5RN=P>}l zK=FCFn8@28Z(@V*O<+$pH*Djvc^zYxGJzoM?hh48qNQHFvbUCYIG1N8d%Ca9%%NZ% z9D~3swA#ELUOBtHgyYt5aOTuJqDbw=_2-f4I!b9qvPP8_kGu_nZ^&w3j~B^9Y6?Vz z?P{VHhZi>8S+V}#R24Y>&k)+7yddfmZm=@+*~j_9`t|JD+9D^@c#hFat#_YqKdw7k zm@MEBZORGcY>X43Ew@C|acpq$$PzkOl56a~I@JUTAGF8iK$h(*CZFMQo4C#vSP_jEVy3HCi;+TqD{CtJ8 zTVJ?=pK+lvho69sp~t|vQoeAznl1d^v7JQ=-Z%Trw0%4|_JauR=XQ)fCUkEo$8TF% zUT%ttROD%8S-0_$$mTRovTyenRc4phNHOehxpUWgck5X4#OT9#@o7IIz2%D-BtvvftohlbTb(Bmux2T6Bd!vGz`+`SqYZ%d)P16< zJ$ur1CNHhELfoyZu%6%m4@`_z6{|7>GQxHrt$}JfueIIpZBZLZd*80?iWg3ud%>vcSL1_7lG%foWUC96o^#+qexab$jMlWZLTpFEjr{k|FP7?Nd@i_*r&5#1-ig z4g1q^a@%8WMsZJ?_f{j;N9o(66{HWabaD` z7#@qSA=A$e){p=|94uy=!FyH&G49W6ZQ5w1`DFpiP#yJimt|c#49K*jQCVEUq$L&K zRjEYrfFQQZq7H%*)PEY;^cL(3vPqs!H^d2;z<^-y02q0%mq;tgP87OA)XgD;h3TqC zpF;bKPMeAylq&e7Iq8l4@D15MQdoE+=zP4yrtx{yT5ENjj@Un3fNQiZ0?6sx`U@g5 zjo|aUxgInPwQBgPTQuEym#kXQe35Mi%x4GGd;Tfw)tVO-E%^B66t#^}Ik=zpV=;Mb zDU@w>zlX9UO{B5(75gQ8(+}B!iupK26un7ISOlpz=FnhzJ25*g*Iiyx>DjBU50~d0 zo*>S7sBw=%Mk?eL*BCWxKB`_mJ6x}cJCqv4^P+Khvf<9h;4W)FtwNa|)@^4T)bhUo zzA$jay*f~t9`()X&I*$)(lQXR8<;&{(~1*-#uf)f`WJqv5#br+7>{Nb1lSB3eVrmo zx$GD@cdC52FO~~#j8&o#n%z)QAL>-|s3P((gh_8LTBBhz{<=7&@vk^>SHWJ#gb$kb z(%Yd(gO7K2{5LtTybo{MpIwFz}rM>gTYEcWtGGQuBXrliAd$1APMr ztbfl&I0}ObzcpUu-W4_HW}H*gSa%GpjKsZaqD5P{_+)!pQb2p`)9VM5G+8hGc;C_T zT(;v;r7~yBQ-TrtnllB@ zH<9&U{|XdfEm21m7wlpOo;=oC3wZkY`n7;aWy$9B0dAx~(fn&K-SGx0data<_KFoY zUp%80wI>FJK@A%%&->1){qWeMm1WKC%M90EEl8PC3n;F*fi-3ym>BellPda|JjH8) z?qEz;)b-puP8tz~P%2;7^XORLYzMk@D<8bitxOxyN!_sis|D$e(uBMJ!s#L zQm=sF5?#5TaxN`)k_V+DE{g*xe;@DdSiF99gV2r97kJJ6lOSP*gO={3r)H+6W*IW} z*5o|C9O~g3S&5z$g*$zbHg|gIy=!9dVjzyv);nn2S=IQ%LeH&CTnA{4t4rjsVkW~* z5xO5%KRbYqMQ3L!AL@%Y|BiR{g(yp+u3zVtktwIqYE7G==%TeXBB-v+H%zw-FrEVK z-8}`S_UTzDTpE%wkhp>dN=s-u&S`JF*55+lT9l1Wi@kC-^t4~cOf)&Uuh7ZbQ8JvQ zAkwvVe%q2FjRrLu&wpF@TqI#tM8RX5k|d{(;H%#-wmPuQKm@sOv_%`PGhDTZU?*p77rzGAS}mAq%a=?`q%21+Y9D@SuB}YuGpVNgyQ3w zd@NbQ8G>jxvfwfgR3;>~we;aKxGae}3(&e`mwjtJ-JOg~tS9Ui zJ97wriWV;z|8HSA1okQVAdW7Z3M&DPf~LcOGl#X z$c@)?1_;>lqpK1@kEyGf`XNw8Um&$oSa!5!vGcfTBf;C5ukv&aGs&xsyr4>7a%hSC zHs0h%!WTiNC$GC!uo}5T&Va?iYs9xra(N;1Ne1+R+ojO+uGeyMF@nX^f>@8z2{##b z)=ZL0hph|M6)hB`XK~ee?+DR|SI0$=wj{c~Dsc;09`I?HPsbw{5hjsjH1A4lWEekh za6nVuHsz*`P|f4{l7wfrXtNutyNl;7Vu2U13Dk_(VnS^$Fpq%!#6Vd%$4yzC!=XY8 zC2w`B$0bainir|oxT=AaCaD^{nA|ZvP1{46r-YLJsgCK(p%L~C1jO_9k^ZvfvY=Vp zn?0~UYNchgv-nq@3+8M&=QTv-XIlet_+W0&UlZtJ==ldPdh;W-k-8OTCK|tOsqRKu zFZnb*oa(KXQjAQxaZALpZuX5J|Op9g=5>w zL_Q7Z$vp$FbqV+EmDg@vn6R?0dAmL&U`rA7%HTI1@1nyXQtEj^HSi`BI3QBAi1N+w zsMrwbh+B1%0i}6oRd%x1>}0Mr3JfKxJpVOc4d5K)K1|b!>0T3V>zF;&0a%@19Wp^xZ2>F9n zB?=H_aJ4Z2Zh|GT0f<}$0;5E(a7tp72#zKap$_R5dZe^PFO!5`IimLf&rLh_zJ!OF z@W%6uQO?mh^LmcjXmTOD{j`BBkV?RbLelLIO^dJk{?6d5BRGr@nEhSLQkkeXpbGWl zethU|r-?4IZMZw;EK|m~DwSDrE1n=q1G2vRm%;4a;Z;y|aUY(oQj{cQ(Vla7p8kxP zXOcW`0X+1;;{d#LJ{}%A16WRy6#$-&Jyn@jSWWUIg9~S6Le%tw;0F**z>gawH4)_| z%=l;wf(r));@3ep|eWkyC;XAdCtMA?xRDDP-6;G3^A+suIAc+`DPQ8&J7dCsm( zfH(?+9Z-b#u}dF};0<={?kmJhK>Jb+Rt+W3a8AwcJKT+99hW3htV|phCJbWX8mNsM zQUU>jxLlwOVeT3Dmwf_DG|<48C^6p}c1KB^tn&)jQ>WK){x$JO6!S$hoybX% zH5=#gkDimLxQ@U6`a`3$W8vMN=vZT;^#g{cJ{M_$!(P*y;8rcK86BRSoMc#48BFP3 zd+3)ny}x#>R$Zv9Z(O)EO=AYJx#F3*6dSxTlM?GBiW%$>`TPvKm9 zjwlpuEsonVRLIG2n%N+*g88GPe`~!5NLnA$bn^X_we*dl2A`G_X%0|R8M2_hP}6oW zpnP%6#!yCEdpmww8Uib=0EAmw)27BBj(kl8_@uuYSPXJ~wKQ2~{}PoGnP^bEM9YF& zwsfW_0wJVbp~{QWM`)un25WGba!>@`Sj-6nwRZ0LctT4Hs#;6WQpxBSg<^xP*Gndq zwnA0=$tCOdh`a@==#NJ;juxN&-S@lA0lz>6{=|2b8r5am+Q+cu)GQUuEXr@Nm3{r; zM7Gfbh7muE`bZRQmPOHB;5|T)upJHzyocK(G;kr1M0Z*8SVCb6QE*?D1W?e|Z*K;o zxG*S@7w6C{0nzbufE4LT3YL840g$)|m}8D-$gg{{egU>|?kJ zosi{eTGwBN@v&|Gf|W`;G?G#F92Gvd!(4$0pOgczz4DH;bk&1)|P_&FOMuP<+X!( zeub<*3sT0Q|G}<|L#) zO^fZqqf(QnesVP(yAf7XAxb$xs)D;A#-*~as2!ZWk*{CBwuncunEe}8aPmUp0_IZE+*s{?#`+8N?Ck72s{}>8 zR%eFvSC{zs`_EmwKQ$1-ST@zuI+ra>9@O?~MTWEtLaMYh*CVDGhnh2Ww+p{MaySVm zQ&yFTQfjy|xiK-G-SYCw8az!$DgAz=r! z-?pZ3EW3K{&_s%V>Fi@ai=j0fLr+?HL}&aWVd)LR7#*L1q^Tc!rU_vM`2azxc;j_B z*x`;hi%6Trxq8(pyd>SltO}lj;g&#ccD6LGIP(_odB<1?4>t}O1uD5YxzFiTgCZBc>*6^~9kK__W z*OF;EXk(B!)P5zz03EhV%h}(8I+r%wzI|KZ0mGcQqCtRvv`m;Bl0|3*gLt z66(Xj2J>jc4M5I4ZN=qgCKtdTBkw9?Te7kdBX02rZgc`?xW0mI3R3X_`~EwKJ79BK zZ`!=s-%mTHcn@p=LKNE5dt}j>+4v7E&J@UJQSL=BEDh2Lc##Ef4w& zHy|To?3pk(QQO{OkZ#CAx@a-V=Rt~lM#@q!I!NMl4HOQK81`;iLJNwM;*$JlhUr|$ ziO(2T%<(AdIu89J*ygVJYECCPZc8tb{9lsC!W3&>*c)4n zA9-_xB)y9ldDsgx%gf6zWvNgF*fvHmsc1L^Mca3H{?*?J7ObQdE9rJv}{YgiI6jy?Mk7 zfkkS-d*PJ<#Ig>6Xuu6*golTRhT5Qkj5o*_4J2B)JvM~#D~LVkzlFw0jt`uP^zrtd z_}dJ3G+>X_W^~dHt(0`XL^j2?J_@HJ%sbLlUr8%&SEI*V-RKXCMRAt)DGgGsOAjeQ zap_t5P^phu-1HLFYv1Zw?K#9@9rPS2aK-4UI2E7`;?1<(=HQ^hK_NJWVDL^dy=COa zYFy^V%ch!}n*{(X;^g=Q267%6vD-%jUKG8?c2PP6`1`rIL*86qF_h@qX|{{nkK4Pg ztDoH5xIZqSRgp2Y^igBfHF{b$*K6yZHt%_&nlFc!=lH8AxGwBBJ2~B1FBK4&|?8wNk zU%!-9yBHq6zB8Zt`udDYY?7UiN{abfZ z8?Glg-#BV@T>rrE;bI<95_6|I<5JJ)^r#rRfB(KU7zXplU%CXne<*Lu|Fav0(k`V@P4zPdeBh!o;Fm4@cE+dKT(m;>!-_72 z0AM@RyThp&C8W%?N4ftsjYDYXw_@D4rhC+J7PsuRt?w1N6<$;CvzZejB|Js?yKs4s z)RLx|O93AIo~zX}%vZ6tx1*epHcz^;$K9awIetR}{d#RWIoEOnDzze8)lmro1h2Z+gB6V%;^uJe>go%4HVHaWl)JwCT+*-fPCr z{YWW^^g<>*v-$gwt)7ek+m9RZ`o4;h4%q)d;;Huad#Q8nUTo^WHcdzfQ<;VcPd3vi0y&zwdjd zl&6Z$Onh(Ep38mZTXM+v+57??uHM3m`q%F6>h0|T+vwACPhZgw zW6UFW^-6-hq$#lFrYD8pr|Zcn8`s7dXOs!E^8)Ys@1$S{P~-lBjN;u~J;lFZ+TpZ>3B!~jl{~TuH*$XCGrZ*# z8KiklBi3@{_y89=ONmPAOYZhhgA)P*EM>oj#LMX@E>t*2YaYO5*tq`{W=r(21+q<5 zQBM_cAq%($(FZ0-?NvcZ*?bLWYO(amw{5wvGW1m3EUOuBST(JMHiEUqvSq)9R4PwH z%N1bz1>R5Ut1i6}I{=OycrNY^P8X3_{(vYb5AC4oFOi5+1CF9gPR^<8X~L)qYt|Be z|0I;Vmwe*enpJSpX}JQQlQMAon-@$U#g)hMAs78Og>DutBG%+m7gJKn*Na{ok{@P# zOCk$8#_XAL6hGJ6SU;yH$bR{(6@r&~;5|`+5qlnT{-H{;9+;%y%0eYpp{G32s)ocq zU4H3NGx!YcZ{rj7jlDedS`bxjd%ne>C>=2yS2#nFi8(yN#IRA@^bbsL1wd-PdWZ-u10Z zP*Vk7&B1}2I}GOTy#YMIxoJjpn}JnpdX;=;^>T|+V_xG_5qGWRp$B-ncfCqwAf%v* zfLwxAPKxn8J~bl`*bPMBjbush-x&rE7cO9agQKEutfr7 z%5VTPh86e#iW?wYo>k!B=K)!4_Yny2=BM=xn*{O3ywl>Pv=GRT*SvJ!isZ~H3b(-Z|l6KAC4JypLP(+f2}M4A@oE_=(Wky>GA1MrszxRC(!?uVt#_tu4O zW9r;m!T?`u8p3m+u5uWEU-?&Dgro-Bsi z-y@r{Nbk!>Gw-Q5rLJ~$(*1m~RHz|n=)B&vTy+zH!!Qhv%W&ecYvy37)x(J|BVnREncIHzUG@&LoJ^tpW8V>b_LTb*6wEJ|40 z9Pue>gRz`R3zyAXvzv=%Hf`IU20*C+Fp=#6qmGnk3KAIZGXP4oH(N>5-GnK<<4bcF zHNJ|r=55N8TIuSBEUdex_fnFBk1s-KECSlGnYH0=5zDeNU$w|1%G)hPK9d|aR12it zK9_kBWxWbti}=66<~**J|H2y3a#89&_x!vpnB^Il13%oe$TQCEk4jr(jz}&Nh3!wn zFiH%Ewny8QjVr{6F0kr5*4rbv@Oe7KKMviIsPt<}drP>TZ9J?bakVjDq1LNz!t@u| z#ot4jt@RwsE{C9!Rh2e3GM>Swd+F(05&cSlS<6pPKKWt0fQlxC8$C9HF-cCaww|=B zGkOIdw3=U(lLq-td}=O3%m$n~>9i=;B`b65ZkJ@?2l1NQ-xl_tdu|y51-atAr0L5x zoEXqdU%Fw5Z}H`!#6QCrpGM&m_oH014wsY0uDS{#vyb?Ggkmltv~YH?Pr700c^T${BKO?4AGqTzqPp0Rxao7Da7EQLXW8;?Fx8L7~i=(N( zLTq$KUTiugSbX%&#J3o7rZGmhyt~a=m?`|R(YS0q8(-h__!Mq%T{`V{$%pS0_*wiH zm-l)Fr;XxD7P!MT|9Yz2{t@O}%7>t0f#}R8=h?jt`m4Y5Ai8XV8%7_PVQ8~)LG7UQ zge@C=&#h8g@y*jo1f?W}`809vH zW}Z?W%ySX6)WW(RB^cdln|Rjcr0tJlZp@ zb&gNqjrX;yf_YrHNND@#B?V^%bAwX0(jUZU>!#0~5KiyrY7)y`j#zS1Vu&cBA>xZV zfUXk@DYt-;eEj&)k0{3Af#lh^C~0)l{Cm&M*|(88emY$Ur&D*2-9E&#MB73sH|)l|T(Sap3~%5^F7@Y2TF>+K9J_tEnz(HB zXTSn1AC;V$hW-i{4+MmqTp*cBz$!Q|EUb{xoe&AGr&mh%kZH@a60?ufmt}T^;zo;`dJqhkKK@ z`SSNI=Su&*hu~GyBe%G0c|6Scfhaad-|N3&Ie4C*7YJwSRXvQ=Tzy&G{uhvAc5~^x zHR;iPYyKTC6&pXrx#>`PKtp^XLxv|j{> z1a6fO`+k7}OjtSnt76uZ5b$e?GU){~c#JS?(KTH%vSiuDMkg=$J@wWNX~{=G$Gci& zOh1#E+2pZ@*!+~sF`jD>s|$DKMGdQ!J1>wLLYr|KxVe?Yt@xG_iEPC^P-j533~Jh7 z+Fk*J-2n%|HZcQZrtqMdEvpUj)3$!kV^_n0!ctvZnO|OJnUnn1PRJ7{L3p|G^B(1& z$(mvmiKLi&Abt+MN0eUa+y{ogCumilrQ}NRtvOJ1ASA!%ryjF6!^hfn;(s7!u`tZI-GdVCjZN0 zCzRlt;tr@x6-F<-9}ewV7tG)b&)jio$%QZ!w9Pyn0VaG(%S1}|#Lq96y$)#csgG%P zXBi`t$&MR<%9Z7l=&Hs#u9}GDouMu##^Ub9cfGawH2Fm_KX{9+zz?rVmtMyz2UDsMv1O`?b`*yy&^K!U=XXzuG`iRH;pR}EJM4cmb)w% zPtzCAzZCdRbYWv+s&7WM7hOC?RC`6HwhQlxPsA)VT^AvUU_IvEMM5>%Wv`?tR5+HV zOP8v&5X&nzym^;}{X)X$w!7>)V=3@^KJ9bM^qGzRv=~>STug|rxc|#H$7H9DoY-by zpX5qL?SjI0V|T#Wtcs2ii*@ooR(Psa8d)pxnUc{qe2eX@iJUO59bZFRGIQ5(yP!kN z07@2WMLu`l=(-D$1lfD<&ZO69i_~h?{wRt5(7k}EyX|5(lr58{ z!_)gkoq^ce?cHrW9nzhZ>Xas~bhj>6O~g}W)bUdg#dQoA|9I_rsBuO2(iMj%7XVL& zZfxsUVrX#a%9RJ6HoQ;V$l==PeAqzsm7Wc^)*=h#fVyyEefC;$O!Lwe$%>>rtoK++$uYufEIbpS92}UmHvpq& zjKA~pc{dKa{+hEeg-SxLnq{C0(VxQJux2T^VWzqa74N^R-1IlxiF<6r5*ct#<@f0^l{#Gaz z;2NkGW9~LGB$(;o`82Ow5ZzO;I~x$LV%M#o6t&~Va>dMpz3g4v#|D=2oGcPE*{4|j z<#-CRt!?UdxD*%#3CM`RBgd+Q8tY@y-5h~&)pT%16m774TUAS1qS3_FzsWZ#QE_Y+ zw!+Rl0x|uQ2XadkO_8Y%>1SxLDQgljm%IS(J3+Gz-E0rgYgen3ZE$ae`ywjp7?7$n z=Ph5M{VZ;2)e0WvSGm(7?B(<;Of>kGs(_lZ+#r7@qHH(5<2`snDWL|9lDbqxVl z)_fw&D6{b)7l9^296*jeg`ZmM6p;F`M&u3^KnqpuGS|4o(0K6WE6fH8#aQOt2|csD zYr5Xe#)<+eY}uAfCa@BXvFr`84Fbre{R0GSZ-HwzT47w4T?(%!mjxjt?~tqK!=4sg zS+!@R;ON_`tFK^O;TzQk7jV&q&Q3@9Po|PG+xXONTn<)A8HAdlZjAW}=2{jehtCWS z4tBw-%5`(pcYJe}TfY4RYBiK2qtP!N0H{Ke_@V#@79d)+9${;)OR8LQ9W`+LDYwFI z-8fI;hY;j@@I0VB<9a0z#p$9b>R}B=iG7oOx&6atBh*TPz{)5O(nL)VLRSUo5!}B@ z81?odlK#4Ah)xBijxkc-1c@#zN}3Kl*Txr~)Ms9k+uzowq$1DA_#dXB z-=}f|YhuWl>@#!`Wo|fu)Z=U7hwVYs$GJ)(cXyu5bzs=B^#2BAw5}^C7f}L4O~m*@ z&bV;;W_NA3Hf(;;~xv+L417Qi$Eklq*dtK zuzB-JfD17fjJ{W=ZR}fDQQ2V<%HHe__Y0CK^AZhA+U--w=#fe|LQCx@*ujBcSFSi6 zlN;zzkZsLFQvJAqStPgA-fV8j5OwHn7GTdp6-(Oz*M5j_d4=_XB`K>fznd4qfniAH zdckyjO^<;H`}MBvpS8i?x;}7(QZNDuX<^W%`^1+8w$8IFx#$khe*@Q^V2M@Ne1emj zu!Q*6y0>7;$Ho@F>?=(*M)Go82bY`_KsRdX@uL_rP8gP3ct*3|8S4tju);bUUo<^(_~A&3>M|Ey4F*r1JAtAfDqSzA?2>y^-7@h#U` zny=THTYdJ9>?n%k#|#`JwK(45eM)0?HL@5kt{BCkp^Po^|PM=S6As5^i)DF_RL;^4^zS* z4^h-rV(?^A7E3K~`&(D@FKl13{Rc7_Iq8Dj5DdC}|M-#}XU;=p?P(8YVMup8f=wwR zX;^Ahv0+jFPnF-JxgHxh2zqdZS)^T7c#u#lMEj>x!egb@uCLqx<)*cUVqd)Y@$@c755xGmT!= zWc6T@s)h)Cn3QRk8UcNUqhs(CL=j;{IVx6WS)ILod9&KgT4UmFKx7GmKMZS^D5_vi zCg^CF+k1(S0oYU1{+yS-Uq>GXC%ccs1^&2l#gD@7&1h5ghG5b?m|oIlnAPPi+;B-D zphmm1_1=uG@zeWzATW6pR@%DR5f2_30AfQkq* zR*IlVB3K9rDk_L2pweOiX#o`hDS=RI<2Y7|Mw*U-AVq=DBm}XH0urTz5>&v@1U0l! za@UUYz2AHPhI@IQndebC=j^@q-fOS&`>l0gX=D{#iA(ndE@=q41&EznH${C*$Yp~1 zxmf8{)_Y$GazzPiorK?!)?-$6uBBJAdaY$nc1 zf+4fqmKWUg&I-HL?Xi2+yw(%6+0t*ys*l6_1ER&gJCS%wC+#c#PdefcyizA@zhbfk zo5-jCem+v^wm{V3U;n&8oAvWB2;>}>!y!87#+DOo#5x?vR+v|e(2-vo#G%ZHSfvLc zjBE%2hHTGJa4BUArbF2!^2UwN9FM2TIpJ3O{=8f{+HE1&simqq09%xw&Va<4?>xd8 zPr`I}w~q zjM?uieILif$X_;$e(ly)ea!1mXRK8wvlZK+xN41#A--Wpi{7ypSwL^c_#zq1sOC+XF1Ln{ zFHiQ@=UZ4mH*`{#f+B#L?y@>eoxa%B0AMNIlzC)*mq`zbaPe(~kY7bl2bnl|b>9Y6fjj_7f?!_Z}!DBZpJ!iD)S z&6l7Zxy=fh4Yud8-V@|QgkXu$4MQ$HX*rbOTlxiNDN) zq7r)#>gay%Z8E_HR1S*!!){*AQv_ShsOCr3VxZF-U*>)SuU~bxv30;$QVj{`?B(qc;0ym%Fs6sMUC%!hXL!k9->lE z+RcvV!caHF3#A0V6--BMPPNb$1~@sd!17)3*3Z(|Y%tDR;Dnt(>06Y1cer$i_RPC! z5oYqK`>%%Cqiqu#YGzPS>5lMs-MbH6R7(&<4TAB2avcY2C=u?c)z!FbAbyA?>7d9p z@#_)MWwHLZub*gLHIw%ENmIxlYJL9}&`BCr0PVOxv+G%3|H&VUX5R~O2Py8Je*bB+ zQ8@f%x0f&!WEunU?hVgc=0Yyhzz|oE8(i=*Wb4;+qSw9dfJ9_I0d`Pj!N;3DLqwMZ}?IC<3k`3SkE-2tUOD0D7|JyJdTZt5&30KU!cdfZsUY*ipMu!>$C2>s7q zLeeVg5M7gFRI3rl=e^3^SM;4!GgJTet=kzWOO>}pl&q_J!~!B^pR@%hIAwwO>75K; zGWD_!gT?sk@MJIl!^U(X#8Cf%ZsaW5b{2Hnojib*GmNnH8#aWS3GS}AX zI?dXQWXi}fWLQRjtOn)&+4LEhk-Y03zE=Q63g%j;7B9j8E>x|T3RrLdat8NO zO0z-G+Kl8k^b86G3sYx2?ouWA$<|+tS}`@OqI!~4SSQ6b#3@Y}Ye}?SEXKBMzBJIa zM8Heg>4c>zzXUyhV*!>V@g$=u=P`r_%42c_wh%sX6BL#ya#*dms<9w7MroIA{f+xz zno}>gZa%eg9JWfX7jq6=H8dD6jmTiHy{ePuJi)fG5)G9;(!@#*9iK z)sXt7wvph=lx5+^;0vob8j`KO5@%wtc8O+2z)xOJtPFTn%*#-G>nj`pU7S()qPbKH ztSNb{`A5FRZu$ zOF>_vtLsB=!cOf&6#|P_{!vqAm}aBmps&!y{Ch#l<*1C^vote;zGn!m#gQ)g| zMXq2A2(dp)noE*`sMDx8VSLw+b4OVxmO!&4+fcB>D(F`m)A(${XSQ zRjEridd=(V_`B*+IyY*A-MT4JHUTq}z4Qwb^m<8>|Jitq;}r{7u-0Xe6mufsac+XF zbpevxzKmVureZ?U5=M$#*Fb&tnZ7dnXW^w6gpnzKD2hy&vy+u?-lX^m@7Gpl|6B%Q z7+7fYt^#PI9+3D=qTwtZ4)J%gyS7)hJeT*oVz$In-U?^o<-NYm4%+MhAipqr9sF8y z4$Q^=DQboKQ$Y|OV0=vp|MpO-$O&f{M1~Qv3>bjS=w|B_EoeM(dF$Vcq?UZNJ=Km}YD1b|cZ>Mwb`%fH7P-9D2>1 zG?{yueegY?7%yJ9(0aT_NOo1z;pxtmF42?dmm~oemzHi(7t}G=kZ@Dnv>cd#TO zIQPp72uk3N@!w##7EmJ-C)jp^@z<=#d;b*M@_Ap&3Z*cy8eM=54i85qew}QA5Dc&d z;K^VF)%afg^PD91^-^{o1shrVk6eW|&QLru2U9mXo4kG~eyN)b-kY}AIVvTxPw4iP zvMkJW-kCgh_lNkTfkZDp57*Vz-JBh9gMSP63}S>H_$1u?N%Q{Hx8Y$?>Uuymhai_5 z)f-*$$6XN=!w2#t{~fOz^b|ru{0|ZhK=%k*kz1Jpj5R3J-;YpnbFoa`5UyB_k<~zjxRf3xbK$~;iANyx z7841VCY(JykG)5Dl!>630UjezPBs-V5qtgxhOThJ`XRl9qg+GwU>KJFNO(UxeALA| zf>NLI^tZZ{O^FJ@vo{8CW?0J8Qukk;D44&yPVJgSPmWOrsB3DVtVBn@o+J4qfCl3^&)^S0NAJG{~3aXH?~nS5LH-jz7oG7vg92Tbt6>CHxc82JzpVj#gu zlK^)(i>00Y7iRP#Cfs%TWSLvpKGWTtM9#qbjWa(C|M*OqiAt^WOtcbd>cD9jzZq~7 zj@Qr2@9A}rfmLI8Vt`LT_c_ETFGI~5whO)+YG+|&7COF;bA)*qy3JtDhY3>CEp zEb9<@$^}25icM?c80Rl=x-Q{MAoGlVG`S%XWZ+w(T?0p!O+YE|JwYf`#`)`WnY^*U zO8k2zb66EP>VaYpl3wT{-US0H7|c#r_gurEC?HIN0h0)V{Ja_i8@gV3O}Yzu0dlEcLrA0){T!iS%d1wj~92`l`FK~z)19}=35nb}yXq!>FI z=O&Bfpc+!OT>O?CHV*N3CZK^fn45>~_D8!+gB0-&7?~m~Da@h)=O7J?AdzpLL>LP0 z{+d8enLlcSwGHxRK!iMT2C*hld=UcTrI4C@n&gD9zW(fg1Jak!)F2ku-Ybm-VrfIt zm^4OUsDUCj`0Zce`LZBRU5=BbvD>77GyG^Lk0?OwAMHD_vuE^&`1>8bKn)dLq>!-f z7_}1vh(His0t5JV+FZzr!_V`&ERx6*LIb!CD8xEbbCp$o4 z1Faa;0+P~w5aJLrkbnO*R__E+ODW+5;HZE@mCMGvkimtFj|Et(KQ^AR3b~QnQRESOQoSL3x%#pB?J}h(5G@a9l_^cYeIwcs0;2T zjk(~mkkSbOOY48;*@!$19r1!YmEvRq1MoOdV8v)uje%$$E>2h$#?Z&`E^lzi)I-j* z=ZBp{6M>*^2RgtQAZ5tD;AC$x`s>#MJQ$YeEVZ3|KPFH99ZM5wV}pRG7b`*yTlC=b z&H8i^4PXrNWbD8ywj~4YAS>f?fo6XxgxhVTI>MT*uYu|N-l zY^y#Sb^wN@ydcSrh)EE0mLpjlNezk@!3$6%elZ5ZDnkCC&#&V`eMORm!;Ic?(u@ue z70dx5`8ea01hUX8`eEaN(*3L{IX|oljnsOufb~Pff($7MDpILn3lVe&eo7X%n8BkM z{63i$fviSj^iI{ON8tScXa$pGT)x|jZ43lCOU*<7^0=P009y~3bP{k8gkmm2WUVCw zz|p`Z`roew0pA0I+IHV=NnoJC(EEK|{_FjI$+J;#M#Rv0eaO|om6DtVDJujo$GTn+ z|95sy??e_*cO?VF?|5!_ISRd;1iXoS#ToIA8MEn|31}BVk8gL!&b0}K+enj|(T zVEynE>;N->C3bbm!|A8??1xNm#f4w9e?d{iHiA;CH$_wm%RpMGb??lt$>}#5{j~=v2&ffG4d5-89XI5RkT<6|9<&R@#1lId{-nOSHw)9 zE7ne}8Uy0#T!F;&B}lOz#SkBltMEH^#uIsa|B8U9CEhCoh*lDD;`C`j=drb+HH)zA zz1`@kgbx-bD;RcO-)$ z6X)iFgbb;z(#c{eFkwVZz)c6b&@l|@jroAH@y+m2LNt)|2qIWf^6&edFdYdjNF;(( zg>s*WB!g~A2>d?ci&lVo42GoldNZ?9L_svF5GG zW>~t06FOkebNdEFpl?LKZj93+(SMmP05pD%k+IhKL4fZ0&ujChd5ch(6VR(GW<+q) z9RL*SLJ3e07&R2YLVqiYfmQ!A^tvpdJ%j@pEp^He%2B1+qXlvxXyQrfgO zMg;2;Af{GE9I-lQ7Jloi3>{6SO}K+S1M#7Jn5SKh2rbtAOpMbetrCWBMKk^IchGLp zXj7E3_U7r>JF`xTA|@Di_JC_T^G1Yra#J@q{X{w#NwyGJ$Ke*x2P^#^cQ4D zZhVS51wEyq07gukA^TiKprk58X!rwOeopwc9m>n(SQ7h-wV+ zQ{Go2y$}IM-i;3nkMI%s3wa}Y)x>RFOm1f#^lY#?U7p{0+YP{@cl+Or70Z1w*U1-=^^snj^ ztV)9>-ghiV+U&p`=mjrC7z~)4V~`M`xOCAw7l$12Ur=k{(5ign7{)3 zYpB+WRlI7F)~UwsD>4p?Z_U;ar;|e9m9lR(h(Mk58$^f!fZpd_OT^A0zfJcu(Z_$5 znKBEFP}5l(2wX}+a9cbduS)h*nF6Umz=|a zJl}OmY#SYMb!Cc(H$*)GXouo!x?2=g)vJw}#~NbB=kb0$26xV{Uzd zI_h_3Yr3PLU0PZT|Ki^ek44ZYurZs#R3QnTiH$9`Bo0i_a*7T20t#;b%f6+uHh1poY3p(T2R(t+r0;d*D* zhD0kes@Qg1$_vr8Ee1kgNAjXzR05iNbM=1(S7kb z3Gmu52g=$(ud7bru?K@0V6fwUWI0MVAXq#g$2FEwqU2`QijP;McS>)E{g|CLl&7{h z0)dMhnb}(_L{BD3J4JO>QOFoYIG^C;*@8(KhTFTp<*C3xUtNHK`v~Em%Qoi1gAlR= z>tqIMBD@Cnn-)|Ck47fJkxBt=Y;>!8z}TpFW#@zi)V~g3*Hz{S+@(bTa}3eoRpx2@ z>*J#Xp67iCm6h%Jg`tbc-@YvXq&W$f-&%+ez_nDKbXOQIhpTUL6sbYtTjSCQ56<%x z{K6~v@4VY1Sjpr3L?yJPbGHVXSDIzkhdgr+DKOHEgi_j#FM*a<`A<;PlgUJO)TU9M z!3-&H2Fl=sm->uogE~K*@_>RhL@8Q@!o4sc4sXf>XQ5>-Vf!-ZBN=r)0h1$ux4#Ao zP$PMfOn#G{xoZVW`@E_3Salw0hJAzH;ptACh8jmurPAHwi&4hx+L7I<)6h?F3dLK* zUk!1cDxPplsIx#jTf5&82MlTZ5$sKmjh@gF78b~@wh*28hA`nv7=;oB(vLRE5f;N2 zQxT^;ZA&!QNDu8Om&-wV=`Kj;EjmH%yK!Y`HPU2 zDcRJ#sxNQfn*jf@p7K5H-+RjU5@&$=u!lIi_ebUWG$E?U(c9||N2{;WY~o5o6xO;h zD+{v+1#1pw3e{!K#9KsIvVva4{(UM`$thf$XPp=;T!n zyZ+kc$~!`Y;D_yB0CRi&y0UaK@u4VaC%SRd5+|}Ss9NK;e$ytpZ86~=7>FqqY%{o* z9i$~ztG5`bFLQJ^eDG+qoCNHyimY(EkW9m5xPck)oaas)Wp{Bf= zxE0Ht21|+KK(Q=+-J&^@HB0{)$1~_jRIKbAtQr4;Yza6n`n*KAL7=Z@tc_{E)06Ls z```jVY1ez8w|BNxc1{mG6y2Pa;5Z(ggZDyelI6&FvA=Nz+Hz2v^XRqA$h)x&lwX}I zjY^2f5MZ@~Pbv@WOK0TKz>T+P)06a*kgl_gr7XeKBw>%VZW~A#AeA1;d)w<4FfzKF z_kmw79PcTAyYUl=G#yr8#Jdt!4VrdSn*a*dkdzQnyVrhf^|Sv{r=e}zT?scM~g%rH(RTiHht<4BTBf}8i)at^AXfue0%l92a-s=UgedA!zm z^~{r#e7|m{&~|0l97#W#MDIpC$8c$8maehBj2}gU9ZX=RTl@yr%gMmpd)7S4gW(PD z^7h?zKOUGznqb+nL!S%}@IX*@q^VPHpdRoFq=VW7(8p_w{j|rID2T6*A(fASL*cW& zeyEo>2uc>9oX{;0o$3US$=mxS_&Vay$cw9-Y;a{D7z5q&{Gk|y8iDP=QI{$XZ2R0LA^e*X8)dNM^%y)>?Xt9QzNe*27FBuU0WU zO&OBVSk$HYFbA!smhASkWXehhHQCm7>7|HJtR%a1X}*+H?}%kfZM1n6V}VlA5=*|a zDjdNNcPJT?w4DOi`$C%VJ1t|JRafB~8(`m^cscUMsmO{?0Z-ac?%!_$A#F6Fs0tLZ z3;`IRU&llZCCZK{LKasL97Lf1#Nt6{D6oE`aIwEUl1`s14PCTD9zbcApe?wG%2j#X zxrVVoe!DSMY2lxZhLWCA(f)>+4Q>vk`6m>Y3lvwl*j&O5QGD5d%gye*C)PZJhT`~v zmNq_fW&(y55DOwZYI==FL>n$(>>Km`bP#b0x*sGXQ)Kjk`;Hl~BJTr3AIxoyo<{dv zVRq{@GPXJ{-IwpWr9$Q@=`>-UD)|Sfsc|@nvku~@nkK(prIODRSY)!EWLB>%AO0XQ zS7rP5v}_r_V%0{P(MZv}q@Gh{yWf)Tn}~~0iE&vAc=B)c*ARVmNjp%I&WWY z0OGz*^!BoSVgow5YqnO}ir9BXfDYU1>CXOr6y0E8_9#~LL5*1Cx1ngkos<;zX~diN zoAvlI+%XN{JWliHIRL>RyDFx|V%~~yHZ{a?OxP|bV`HKirKI)0cNAee=1|;7gtE;J4$R< zq0W(5s=`$xP|_KODw#fLByk|Bq$Sb0KwDRxXrEJiI4<`Oyx_i0?tJ^!(_>J6&@wYY zqJgU&25QWZdGmu4t-0eSuft`VEjw>xCG8@+vvJ#BduJZZOd!2mn%CY{gY;X=5HEx_ zL1)tG&%n&+c)(+!>ML#25}a>))d;OInDcy{Xz~pQj)v^^AcomCatyAew4F>nCs`K5 zq1aI8$V5~zXq{v~g=OoGE44n0VHrwayI-estOhrfy>Njacxa@)2wT9;+|JZyJV! z$!?XU&LN~^LA@A`g5>QuLN1wn9?vx+c&^vMVXJT{lB}_qtZaGukYrdh!z?LZ&%mqW z2$i+KudIjD5<@NUPs<;?Xs;sR`H)THr)2NvHD7TrDlMjs)Y-9p?^zTn3S z#%Vohu!NyRNO>rKLW%&V(Mcz*8f#euGE2g%3U!xq@#qCgjkh+W#o{eb@j&Cl$!!v} zLkhd@kqu>n+Er?)>3U1O_R+b`Ty4RH3qh`))$SobD^|M>JPj}j2u~~wT|v9Mly|ym znJ_HSJ;Q}p^sZ%@(DN4C7Zp|TxG}u2@oPVC9LBbDa=>p)OEa>?TV$dcMHFFJeUm() z_6>G?r2}OZb&h0zttycU0q zXg0vPF2i8^kUt}MA zkhgP`4y*hr9L@v1DW$YDb)jZN%W`+3kTpvWtPap@%{V_sNgfO*POxt;2$vY(=wL2s+NRwgrjF@zH+o(Fl zsDaCyH6t;G={w!|UW;V;4rCb#^F{wrW9KD$KSXCm$L*_mig!@0+?QE0)g?Z9rhPnC zW0_2p)Y2a#FSwf9J}4!&wVscZw(`j(UAupp z_hDoJvid(i_8y~CK*qKaeyhrh<2$F`43k{1=b7?azW=d9K%-AkdW5}Qo187!pdVvT9^?P?*hyo)fay{eoqj3PKJ_v zZ9XTs=x~F&M9ykCg?FdAe7A7Zt-8IoK{*PVzRKIhoaI9Y_zMeWQ7dUu%C< z{$_YfLifOv2-?$UbLj=jmA0kqPO!wPTA1M#RmI7@@EH7gQS&z5W{g8@cwo*^moFg@ zoE^I4WwYAn_^C;Fq9K!;PFQs~JTw2bQT_8@C&Zf5WIgp`a?SH8i>-I=*Iw5|dDyiu z$;;R2jNl)7xYg4Ki`#P-jPhABgSoktb9kPeW5pUFUAJ1}dc%&Qq7_i|AvpKOXi#p& zgqwWbD!P%@Gg3*_5soljxuV6}a%?KXS_0Ga^&Ey~F zXZ@uBgTJ@HoI`XOxpgAVdwZ8yi~BZ{ldIyg{ni*eD_RvTnrK(avVwC@&ED*_H=1kh zJQYi$9vLjLtZLq@LZb#-I_)x#=#Ut5;=Sx-eYYbvR(Gn^0WYXb`{AeHiyryOzCSB= z(0ofnLCoW9~tl)(PBxxA@-9Epd9Pz}etG-sau-liFG)PIa=6pFmIbaawKX%Q zdOa=Hgng`AJ3-9ow`=q*cl%j);|zVFw)2kRfdt<9m9InMzvjV>wW#pxz^f2NUbgcC z-jP@+FVxciMR{fuRHDKks>&D2$v^$X(4U`QG_S-{vEixqx{sY4DeA-~$bfrdY4yP6{7X1u(PY6 zO$Ml@`7u{H3lth@%SIHJ`>hR6^S>0G{gL|7P=;bCo9if9(4Us|L&x8N&fU-BK5xz3 zn}3#Ytw&la5Q*z}Io1Ex^W@XhXz#Hq&)V%iKYZ`8$L)&EAHg>(Z7WXBH44w_++WdL zZvVNiVIm7Qo!sp59kA)9gA(}VJ4T%aU-CR+wS@o@2cjd>@=J7FP<0HYaQ;NQBJtfR zho*B~bJS|nsA^3zc10Au=Lyjl!Pv^7Q$GgIDLeB12CUW8?I`8kx(eEtj$rc$?V!>3 zQ}*Md=Xj>AZ#N!v|JpvV;cT&M;Mev?PVu~eCrf#hgv!6>f}KA*H+Fn|1xVoIVW}oU ze5{;nv}H1t({iNChtz6aW7**-skO4iDyFPShIX2w$H%OkR`8KG(b_K4ys12G&h43J z7d@^XZNCO%uy~1QRFB&gBz6v_!+~SNfm1wlW8NsS-;@_T*FETkE2R$|Hdl{H-__s( zm^BXuv+qIEP;bPvtuwng5-Z9%qO6V-; z)a*Bc1!Yh=E#Dxh=JP^n>77OMCt_l=-o$t~EA_LMBvr*28s~#v%u;T5)Gv`3-ItM(-_|4S(hT(H~0`5@h9M zY8^NsId{z}smU`1uK5AQo2Vg0Gm1&fDL)DHxlgw|1KgaC`;WQC4z;Ib7QYLTcP}1f z`%lst*Qbl(`31LNUi<|+_bZ%cp{w00`Aw{c9y;SE6n6=v2&}Q_ptqpgwFAOAkqc!~ zlz61N&0)NC;hR3>4!Qo!Ze)#3*?%5L=nQ$fH1#qJ7&G{IB>#ItY#B|KMNRkLo^S6; zk!M9;^wgoABh+->;clBc4Z3XG&*39CV1Su3!IoZAXV54+crV2p#aX*z2yK))yHc8+LLo8lNCEp#KLHxt zRHmx@qXM;bdx!k%@^NKl&!WvqEB#KPh3|lcH!3&QVh6N`@#`As6`w+AKS-s$%?Ct@ z?U{McxWnEcFos+H=d0A@=EX_t^D^hQc2CD}$NFG88R@V^k&ZGYPBGUXbZ=X=k$D>Z ze#+x-H<-(|TxgHxd@zB9uPAga$cBZtD4NN66bNTIr(v6WV0Gp98$rZzcmPre3*!jB z6`Rrn-WpasV;TSLzn$S#uoJ}ppwvE;IPJ%Vi9n6nhv1Ac-Sb~BZhy;fyKuS}X(uhF z5^r1LZBOm6k5cGevVRQy9_pqgKX^O2atJSebxxDV-8ATWZEiUFR|auEeb;b)jil5D zXVYl=4HjDLE9cx$3Je7QYTXA$+-A8KLsu1z&|hF=4euw1w>Ygr+Ar*7p-gV5I?I6RZpa^ur%5C@G*QWqwW%%wV^~~P2&b~Z$yMeOaI2YT^s{0^X(fll;HK4&Ws?v=M_nu_No ulVaho?n~mETY$<dVs|MvSwCElOj zB(whd>*FTA>8GE5vhbDoa7a%VlEUxBjo}b9~@z|^rAOk#I L{an^LB{Ts5w>{p! diff --git a/images/elements/png/line_short.png b/images/elements/png/line_short.png deleted file mode 100644 index 6af0357e54f7e789045a64fc7617f74aa0d87f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmeAS@N?(olHy`uVBq!ia0y~yV3Yx}ojBNlWGj2-WuU-9PZ!6KiaBp@`{vyW5NWvh zXNrJ}v*?lwZds9xby)^!*DQo*+w#4Jy`{J1k_ReXXo$+DLwYvTP_uhWHXi4mv*T43? z-c@+L^zpV__v6jaFQtDCHYiwf{nVy8qOKnULa%PgoaNc`ah<#s+qvqa66^Wf56}1h zf8vt6rtf7}j)$5p2KuLqu9=)&vj63dr+cP1D(}_xoRm5(^?c?my-zmvYgT2wnpUjD z*7s%G)vT}Do|B$d?foa{G~;^d->t8AZEP%N`YZk8w#4Ju(9p{^=jAV(#HK`ko1=2F zX!FfKQ`)9TpOgH`{CrvN?ZC?>lQ-$4E4EYu?ex8Tv~2fZJzmZC1?S%Un06Ux`>Iu$ zfg=2WKm1hV)%+hcH_|5RNA~TqFPoYJu7BNYa^%g!Igwj3b!5{o|ETZy|6`qtRMd34 e$+*Lh=WzUUyC=N`r6JQmiacHYT-G@yGywo9GR;Q- diff --git a/images/elements/png/timmy.png b/images/elements/png/timmy.png deleted file mode 100644 index e6c6a94ddd9cf5c63f14ac4fa16cf5e59d7a6061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45276 zcmdQ~W0xddvz=+%=Cn0!+csv}MzuL@+qO|{PTRIMZQHhQJs;j5ao5VK$jq}c66a)` zh`o1)D=A1K!r{Sv`}Pe{T1rd>WMBXL!9aoj!_Kw%zkU1hO!!VYGQv~3(px0B5MZ*_$Zkv znRV}8KWgj8MWUp=R*&A=550A3&a${!J+j%sz426{ESa#9Y5->CX;U@i1}L72}?AmS)xZTlT4O;-V=f zcw?z{rjCP{rN)Wnj)$r~Z%vC{cj@mx4{-RO>a5M4EFe?AOdCw`8(+gHxliRRy7KR4 z%)a8i{{z9pcVXYL6Dr1LO_R6}AG1|4NpO>}8l>AF|bF{&~7HPbWTdt7L z^w%#$4_#jTf^`!$|HP(ZC z-&x-n42uK5KSJH>_F;^#kl&XE7YW6#$er-iL&2uhr<-wSij9Ld1u|(i04(!nsP#73 ztm7`s(u?p?b$UGrXOI&Onj?S4-Q}*Bb2T|4(@g8*ULIxB0Np_=omh1}3Yk-l`hC`! z!4u8e6MXFyAkzo-R#a&(V+Nd7XnMIau9((qf+R4|?(uO!L_~$Wul!dqw(p-8z2q%-c5%`1wgbIn!`l=QcW?SX zuc^YEZMjoe1`}*Yfd}#Gc20ibH3Ee=fSQI! z)&aDGfWExMM<+mp>=S@Pk&c)voU`y)5Dc zfB^utt`NAc;s856S&He|_n0fhTS1&_U=OnSGc00v-XVa^!$)|MvGnDal=F+e@}0=G z`oH%OJSFf0-+)s_0wAywtH{@XHP?ON$m$63$!hw8%rZx*4+vN)hqG}wXiH3)kY0+^*d`P6d%sb3Yx}!Jk$P;@eOTNyG`}F=C6I8a@+~@nE`%J#N zr|h2mI!pSt^b+n!^x>6_pUUXqB?I-Q6B8ElnX4j_X>!P2^w)4#SOH7taMc@;mTg^f z(pb$aCPK3G8G${wV5hd{$o#or@$u-@aUu6MxhECMT{Nd)*UH~c=?;T^EALQSjr|!3 zb6WYP^E>Fzm_7%eK;3hz;#quKeeB^yJ%2-gDpGJ~`jokH9HpPfCqF9{>fNkIb|-BM zA!oH4x3GI*^~rU1p=R%ZuGHJ>qVDvT#iuxmk@~Rd6l@7Ohn)ZN+Zn-Peg2Zq?D7}7 z)_GH4;J72VSDxRvzPd_yNV~aPl$M>zGz9p3v1OMh%J;G5I9L8x?=W>w;EIQMXZKK3{ z?H1()Mz*B6M31Ld+egw0NKSH=KA&tE34K`svF*seIG^jcR8tuxkJ^2E*#&63Lp&s5 z->f6WjK9>`sy1Y>XgT8v+CxS0om#GEf7#~k5LpuC9imzah)*7szMxgvy(47T=%9-V zwl-~5(s@$u`xdT-ezJZ&muS6{CVjobS-!P0zT8pzTpV`oJQA~CA!dFu>eqfb=YCx% zPEA`)X}9O7>rU%COX@jqd@-mWVh3)$tB<`j4t=hM=+Dpi0;3pPrY>$}v$S2a?&IWU zN4_v8Puh~xk*qXv>jTdlNEy6;hlI#n0(a1Rdx-N6ztakc4jzfD7#qH+HV`_+B0dvf zeqlU!EI#ga`(3ieDtD)>X1gl}HMjsaQ`KB|PuwCNi;b5R^DgM9k6L@4lJ54lw*R~M zKP|Wg7jkrakfyIwjjL}~sSD==bn|zBqZ)6*?tkT9*yVN^HK!0>x>RcwH1l^NSEm+F zAGA39eeTZLnKiZ)7Kk6*v;tkO>9V{EaYP9upspxz&S@Xjag9pwJm4#cxKf7YuQhG_ zglVgD+{p!ICQ zwa=u@IrH7#!hex%NW{xg86~s5g>`M|*S)+(1sR)5`^>fVL#*bOQ9@gXRPFTx7eoP$ zZT}u`TPJAow>m=2AEJn~KEtuTJ;-X;iE&E` z<+ImxczQ4$7;ehIN*Cl7i7l(o@|+vNry8qNe7st`QiyWDwI1DVW1oF8(52V-YHVG3 z-%rzsCOhR+&L9Y!XVK!lZY@++pJ|?Vrn`fyCwemxPe#%b;jl#tN=^a-e0`AFEor%4 zW=$W94z7FO`J;|`1LM6D!mc=TXFJVUSDbOf1uD`B+j4^AGc|DUmdKr23~V|kwd0tc1!mDR&C(^fK6p?edfNjwp7mF zbmzq8zqWH&i}I^utJ2yle8!xai7s{A7TB49b0eoYhNg*)@f2>)WfnVR?IX*TE)&M~ z6hecmvA}a(cRz0{q}LwW6ak;YP7Hy<#VD{PFN}^GGHX3&v^KiTI zpX$c8pUcUCc>3NO+%o^An*CP)en@XfRi;(fBYdxZPGiP_`6fD1jLa9E{=gC8wBWsFn`1;q5(?-G`(Q#*ON&D9nO*AS%r-(5& z$#j!wN*_rB9kSv=3S3hlZTi3%a?a{o2JKn<^fuyEAgT5QL$69qGf5sGKO--Glq2nW z`$MTkiMmDaFLt&vam<=}vgnky0T2L{0cp0}k+}RvaR%uFEitO;M(I-4p`&8#_zF6q z;ZfFvp#{~%zl*D-$fM(>HbqF8B}i*`#14^ilt*Q0g|6z=n`!mn6z_X8V9F~<-w05XB$2k&e#Vbr{Sx-C8Rmvjkkg6TbcTwCEp=m(;J z;UV^o_dzql>+{if+%#Md)d<7*AO_r6p_CWp`~4-HVM6!{F@)$Q6rWjB4&uNa%PSUz zwLp`1t5*)<#3x}&2r~o1xO+0?%ZH%+qgGKgPb7KfM4;NgAPMSZjS{{RI}5iI2pBo+ z54RS`x-JfcwI+~I+Or2Ig|R50D0RT`kA_BFW=iu50mr>}fylR$WGWpsAkC0Kon?y{ zafMAkjCkahGr?XfatXgMVlj!${R8a>P8n9 z0xAXIhoY>z{Qxzit&&I0P#Qw8BMo)u3+C9p>^`J0>N)dY+iXXwcYb$U!1rqoM%H`i zgf-s|RrJvX;Pz*xA7ZY1F_-A# z3`r~Q$DOCmxv8Q=TVu)5AQ9~P#b>-3X*%J#hqLH~VXPHR^<0J0LEmxRcs)>6jlLnz zGe1}ejTR0OK9I5J`E5uPssF?A!%6+Y`9B{gfdrNinx4}EY{Mc7A(v!$UR0HaT zSHVfQsvtt93oAp0ooXNnUi9a|dsql)G8(Gk9NkEq2HSET(4PKrx)Be-1~X8fgRO_v z<)-~?{?+@_>!$L|KT%r$HT`~YcKN#`I&_v?mQvcIq_U*2;QS}`B)>z|UW6H7D{*{JqKQcH~ipxWAd)7N4i_74-b?Bm2Dj6r@^)rth>(j~_*~p4V zJh`_$>(eN^4%qnt_{&2Xko$Y;$qnU<_B}00 z|B7@vqC=vVOwVoG%NR*rMZQyy0ybxHP0%e9awZkSftK~NmR;-9u=;SaDN1kUw8!D1 z7%=hdPwG>yJ+s3IkOLW3_5V66jc3Q`G^ipSzS<0KhnKg2$+@q0`S-KUg#(*I&*lIT z6}l%u^xL+{Iy3-u@A9v6(*xhBjCs$aU$@Qw;RB2%*X5I`<=5?*mA6efz9H9te@=Tt z)8Gv1Y4e9jd)qTUlvUdJ5pWiQqQNN@*-E@wtOt<>y3t|$qB7{uhX8vH$Dz#;EJ~T740!l)PK6hQ|HW~BztZ#-}hBlU8Ogy zTQFLTS(}`#oKF&{*e3(`efRg*_aSD-H0Sc&!^=D(+Wy#df_38soA&qw4dLOXK4L0k zfR3E5J*#v7-~gm6E3(d++qU_6P+%>1XSDU-gohp(TWPyi_Ri?aTF$1y*%ro_A@36# z6H&(R_+)g}QI*H0Cc)7iRGs_$Cp2dv$(6htrn>j{3EH!&i_vjrsf|1 zBsBqn4TQRdgeRmIQk)imRT-^Wt+|ZF1T3(sV`>XoNoj2@S*;n-#pKI6hClJn`SlIp zRTT7~CV5`z3cNpY4YTvV=Q5fS7XPF)0jmms(QEzZ+9hGJA+aI9u@KS*(VWIYLROkp zOLp^sIKkDN&O(@1T6PsS*NV#0}HIs#ww%WM(dvGPOSb1C}NvuUappGf8#sz z*flyOEwo*2h(S|lCA@@kr>Hiw<-%LrGb%^1C3vKk!vt->9(*{kTt+5>-lZX=dsdg8 z!DZOsS~7;An7*TP2e#Vb%@HJCcgC!!3kMdL9^p-VXm>lEs5dySx#^J@ABjhk^R@P`uwg-R(TaD{GUVK(9i~rXxN<)Wu)Ux}wx| zJWnzkJ=rTfF5HzJY6Cm#$iR3kUNY@0`7C=5mw^Q}|N2^RA~P8s`PV(8^Pq}aRybf6 zbrfN3>Y5QpJOWm;Px`_b|A9 z0={Shzi0xTDxLMi1g^3WG~!(HLmPM>9kt)jpqbmR&{T|6sA&WTu}dMz7{4|O$+LF^ zB?mWR8J*lEi6n=J&9o}q3*x_Y>FfAi=IWdoX&%phNG;~=jT7H3yE17hR2a`idGf7*lP8gqu#&fMi{GsZD0 zTFF-@$VOdASgo;HRvfV$vWuBpwMi3sw?`}poQ59X47P&rO%kbh4UY>6s=irUU4Lj>H?Ss9kJ$r0uoJFV{sSn zg3Q_Lr5bW%3m$ZeHK&Y19{9{OrcH|~(;a1Gy%9BRn7HkP49;nZ0&)bwvy}Fm-6%*ig>5SEN z-=9YUu9G467~v^|utIWwLg;H!ch#YQh7Fe#fj#SOkHRWEpcTFA5Io$1C!{Jrv&G|{ zJoe#By9TfB*OFyj>J8*li+5+5F?yZ&f62MihWzOqU$uIY12p2a)yH)=Y@$hns`$9O z4CGUb_{yH+BNc$9ahh*;RgtRTM9GUD491NvXeIDR-(t4_;%xGlqS3 zZH3Dao5r}=!9<=T^tV}D8%reFs3w8J)WP-bPb9|4o$E2{xn=?iZ&@tOcE`r^5farO zR+303nRQZI34`(MxCEM+qw&t{E6ps)-s4EW>PeHyD(0o+6)2okDNjIa`oM#cy8gl{ zE|FD`sgc;w zKCUvVoia9ST4utiNM`JgXHhXHt(`2fTFy3?N=zb3J*|-=v09)umr|He&lY`NBsrp) zGgSKvcb`F?!qt?A3gq5e6l<8nMCmVkB03Fj)^gHlIK5`pYPRf7inW66urOwn9kIc@iHQevQ zMBXQ+(BbnPp?e~;21TQH-dY43l<4koMqx@}2pq^AGUOh8jyM!eE>sC-v9S;|ib#?< zbMpK;5{NO<>r~`E*-KeJX%wO%B8UuR6Ol-ZN(X&K=^YEAuAf-1?v}2%pYidjx5u*V z>Kr;Er14TntznTGpDAX4w8mAo=nLier8Z~lb-wZgK*%3^+NOto+O7vSrm31k!95y& zDv_De_^cZzjHuxpXp*MNipmBB(}5K+|G5e9Ee~*53#OnRDAXWM!cn&8`uK_wOOUs;z#2z(hKb-$*nvoLz@bn zOk{a1*5*c*GZcmv|I{@B5*q0fvp&)bZ3X3CH~+9a7AMwI1)lTcnp{n8ALm=g5RMi9 zV9!J^Jp4xzrZEfh?kyPWOIacY${GnOps8J!5ellaj=%edI1{_ zZm?I!DnUMU;JBbZa=fLHnLLm?WL5wiIDHOCGhksl*8cSy4-VF0__=T7^Ibgxu2tnv zLIohQMa3;)cV66sfpGH3NKYX3_O{h)7eZYjYx{MDv^tl*VE+#)g*XTS=TUH2gk>l> zaPl&xO^5ZA&h3cgkJr{PYz_*qqD0kVOgnxJ#I(% zv}~cEt_OVPWmoT3RlW_(*d=C5`YO+VKZ0XpELZwa3qCc)JYb}w79~?M6atO8{8#ip z!xi^xDhd<_YDx-_c;z!n;zi#%A<9cd$h-iE2kUuRv}0u={q$q4!6Dk_EyCQ*)O%Q_ z>&5^4&}{9q@pbk%2BCCn8g(ah`6|=`Al&%(dp?i;i*Bv04qa{(a z7_(;D0KXFe( z?w{vQ_rRTWZ3Y#^Tlf=XpObmeYDcNQ0eI}c2&Ng0?g~5Q>T<;YwUdDg$b{==V3-Gh zJa7xQ_wUngnr(etxXaygJ7u6Orh3^nC35L*uDM$T2X(Nm@F2WlZ~xg|WGBPnvVOYk zN6ke4r=7BGTo=7?@f4=N0*TDrW!F0yx?#j~f4b z*D&6V-VwaZ45fShBL2#u$nz!c?+$&myH}KHdAeYiQOGJVkcMi9zBDjwE*jv-=$UCV zhGCES(dWk1drN}A9!|FU2f=5E#0|%NN1e*=7;1LngfA8JO17rBBn&6vtZV4m?JG@z zX3neMxZ-#4%O<``|E0=CPZ#G|nG!Bqs7u`o97c_2ym*I*Z21&(4&;Jm~OAT@SAE420T_8lYTCJs4`$ts))GsQ$1Wz!S ziV$00`Ah;|!GC=|Xe_%pgqnYdMCR5}y z6>u8`yN-k0CAkCUiU})*V4*xF}Pn|?qnU`)G_x4=DeLjo+TNe$6 zLM)MCthbo5Exy+s3FFv1}bpji^ z3=P^szmj~BI(i+ZhFC#q!(j6&L#+1|LEy72&2AQ^O5$Q(#}!zi=c+ffRNA8H;13Ud z_tNtsIyf`-;TZ-Q89{pM! z`E(unc-zW%VQov&r#@1ZDeZ8}0nW2%tUJ@7XDW~lkYfk}g_2m1!Q@3?IS?sFtU(<& zRF`*TgcQ9Z`fJcMr(maseMR;K71Q-fe^2X`yU8OWKWj^B4LmlH`Hi}0>EAl)VeJ>` z`||>8Lc^M1!7h4vOD~}URt^BLOLE9t{iA%;pyTWnWsW*wq?jz+mT3I=ccS!Zd%$2I zM|^9=x5;MCXB-QXbEo30UZ~H3x>hi~*L) zO_=v6@N4EN(`K6A@8w ziHCbFQKJ0C(27?z>iHtydtAb={ipomPwC0ODvC-A)Ni+#I3byHgV8mF&{xhk*Ppi5 zZvD$HHIan+tOKgfFr~R58hC+P9hQ0X7yIUCLFbU8cg1C}uX@ys=kvhFU9YOSrtg)%i*J?k3yxUg%J?b)VJcZ)Qk0@u$qBzo@l%LtM7y;0)fsmf z9$tDQZ9F1wGRm4YetQVjZSi4fbU9v+1^@h@sU@v#+jvJ-?GAOoMbYT9lztyGTUeCB zwe)e)dFT_iEu7QRwx9rw{g+6&@S0%>P^1M*)E0PH>}U8w82CX9yXG2nu~tLf9hecT zbc4DoEyQz~ziaFd4dqVw1WAN*J>oY#GuTMyYg5_od;8Yntf=3cs@B~i;!0ND`9*V3 zlNVJ(vlssN1M$EsG{TPh2o~>Bb%LHj_5DNo($T*rI39CD^*8pXq`QoS6COs zwJEuZRs>5F|N8ZCq6Ay6(Q}8m$6onMIkgXJiEi|9mZJj<>v1vfI|BWJL-ieryG*6- zCPpEveL>YJ5O4*8I;O10OcnnTrD#Qjd`f8TIR~NRPbvGOD zR<5ZPfUu8`QQS)0)@axiR-AP&E@4EGn;Jos?pNU;jtGP6_S&ekjDg)_`YbL_fBf}B zC)yyYfSno5^y{D*sGnXT8N=o+iWJ1Eqq_XRpwzljJk=bx{6O&mHkq$5L9ui@U+H(I zV(H9X7@Pq6c6<*2$}|>I0DZ>BR{>Hn=pLT-8H`;YH!nJrSxO9%I)k zpP_%cJLXF11_5zPi6-c8+oY=Pb=(=>HXd@z(6o7J>*v}`(M+pDkyl^_Z?4Y4a|A-l zy{>qeI85~rLkn(u0h`P4#z?Szq>`Cy?s%7Sd+F;ji~dP!_M&Ya{$hmt)lRqi3zm%15<){zL0>ugFsrTLdIVKso#C;4=Um(Tzv2%9adTA73viLkR z3RD3!JkBziSXsOO%2czsog?PKj;68?*IVba1YI-kjuae<^Ws>=gR}U(Bb-ViTK>HJ zRIkq2a~yS#SV*Pra*p5C#->r$-*0;bGi_#2_Bcb!cvDx}>JB)Zx6-=Q&)==LGAGg# zzPqL^&rB_CaSEP`h{RCWDOB^0S9zd_7@t;F@rmC(1JKZP3ynTFC8g-)$$6vx8WdMM zjZ7+IR8et=PZ)zYx7FMA68_$*ja2VBODQ0w)3-yY{c?Ojk<-D_BWm-d^Tz2VM^hvY z;9{~wR$Ze)U7?O3K?I&qT!d$a)A>I@-TG9}oJX(tpT2A6P<4c+EkwlsE1~aEPY4ABfzXW4bdzRT$t53%+ z-7?dHYKr&h3Tv&_+*$8L7&lj#9eN4$6{DZR@&&LqECGLufiM;r^7cTIAa+7=wL4}6 zTY;1j*I|@-o*cs}OSBcQpQ2h(#!`_Q1=>Rk24ZW{2v+?5X&mTQOm!C~MyqfZ6>dga z!{{5NF~?XA2rq=_2w}$N6>j{qRg~r+dL!Rv7kBp2+YoaD1H^w(RKLkdH2UVEUQn`D zTcPc>Q8G7yO#8Hf&J%9bSsHa^b>?VG3`lsFR4UI)$x^;yBGHsN5%!pfyJ&{izb0=4 zavjpanZkUr1u)5!jxuMBR~F%EG6pkVRW#N(<0{aO=`S(FVZiFW=TIh%PlJuu*_0r) z2;A`O%HsA7QlvTXEbnLU6w>XF{e;Dgr51MD<7=lnHzatoH1FFckm`@&>&KgbC|VwL|B`IM%s0I z!MAEV;7JL+JlKx#V$fkMiYUj+wta#qS8}@Cb9AX5HPhQS8`7KtW!6mZ_(7IOwfMYy zmb)RDWxNcOaA2pQ%nj}Y=#@vTtfawvB@9Xu6t2NBosy*x;7hN4v}`&pzR??2NX*6R zXy308NK2(*x*k42j7+dLAty%hhXcFwLNzMqWn^R-JY3>uOQw4so0FtPF@_5Lr5Vxl z0NK`1t74LwUdz(W5HJP=0ergs zyXghSAPZv|LTCq}o1jX>iE{~K?LcS+?O6$+=->HM%R_IQ@qFV{Mdq9EYOo+AUYFar zsoV>!2#2<%1h;2*khEYCT6QVPjR)gIch!-H%45Uz%M7QIL08O*(gE>Ay`xh8nWNuc zap{yY+}=s5DKEifb|gxxwg$z*>!!YSOn6<_YrN3-j z97gMR{@@F?ab>mZnDB<|xM6$hUHC@`KvxG*T6-qDVZdKc#Iv#Dlv8U|{k#wEOvPQqvapp_w! zX$Ne0C!H?!h}N&J&_8;zYVrPp!+ykyFW@7`d(AYL+~#&sP7Bm>H z{4@86mG}Ay^)#!X>P>><{xFcn(j_^lu9mlh^+GjOXFP;@=w3;6NSt`X`~)m%fbJ~p ztW8|m{oz!YyN(EGMFX_LPdQ=}6e58=zIxe7Gg=pQ)+Rp=37`5UPDsZF3ZMRPDoFho zvN@-BANQxExdEA-Q!~F4 z(@&EorZ6=L7+b_zg0fqD*SLrdK?x$jSBn+3ta{j(m$v0c1US6 zV5}XMUe%8U{wu?p647l`{@0_t8x=SJtDX+cz~ZW7V%sv3#3hrhJfZ`tSm$MpWEsN| zInd|`4q`yh^O)vJSP-2`X95$!hCPM;&PB=V3IRDt?~T}ffp?)Hu~0xX_;Ar3X?ktg zatk@!mIDgg81hPLv$(zxoWF46_=kn8*d9zsCua&G8Hb~hB4x8a#vLK;2UErr<5K6^ zWzlx(R!I__WaLPCuC!6fK|y?X8CqMVS&R|yTOvG{b6L<_E^SM+3(}izFIA10{EaMo zDsjcg7=zL0Ox3_s*6^`{bPzjHOnW-X7kaV%#-`(LFrzWMpjziC3%0j%mT->;t1LSusk6(kfyl!UDa$YZDrWppU? zT4cR$QlNlI&wG?NecE_Yscblk7AQWq_IySD&*Od9slhvR@PmpRFp3u6a^{4<0}x<- z3{Ynn0L?`#cc|d0{+Uzz)WL{Eh3qmG`aqTC@)0ne2z3<{L z9+30)f5`u}77903Q+)$DBx<~VCtTgzC=}@9_EM7huupy6V|W;rsa%(T36gp&1E*x0Pzfnl2oZ+@>g%#GEPNmvL&Rp}wGDX1O8%?F|7A4cI zalmQGvEnP*-t>+-n54@$-c`$+Zqq3P0;d)hM?@T#^a?d}N9k>^F)h1lX0sMKY8&NU zFpIW+DY?CXSrwlffBH4boz%xE+Y~c3xc>~yjP4s>j}(sX3-@qEfb~wPxB5*9VAL&% zSmP@Y`4Z`|+>#xSO}c}`tNxXe*!0PDr?ZH8XGu)3LQ?SfCed3hP+uP zES5IFGGY#~BS8ksi6@=M7a-&g@%>iHABMh8>fIFed7Sh*G5F-}vo1_aqPUa!`2==Y z5sQHUTg>k#n6G9F$9cTcWlaquf^Y9kBNUc_fuDez)W<_eb*J>p9>dMB{4UjYq{?on z%BgyP&xXFmK2LxpYM9DtY=y~xo$h6l58}^mQV<8Uv7##ee4A2HCn$>Hk|O+@a4)7g z4FC1o8)ZQ_o#9WDHO<>gb^LpM;W69l?O@gY5Sb>Qt2@rS-<9RC(`{Xj|Cr%IMt0P5 zdHf>GoGC4+nsrn^u{V0U`Zj7z@MgRswaZ7ChSN@OXCj1@qdnYC(3`C4ZiEEzAwGqj zY=5>yOO%hc`Ci6y>_@k!{g1C8fY#QrtS;?+V!jfuE-*c&B5m250jMocdDzKiv>8cO zIf`PmCQmkNi)$ruaWv6twZ2c8TfmXFsPWM>u@zJ@NJdNJ=@J+)ac7N_J+_|{i92hA z_URnxz)IvdHv(U@j;)@K>?45+fs0Hs;D$po#Oxs=AA(LDODaVa-25}`hdYKq9g3Gp zFX;IMXA0T$J#dEo0K#;bf-B2-2UF$O^r9=vKFqIR7yW~F{m%K_PBX4oby3?l>oUBW zz3oSbi9cAc+bGnjD)#6%9r7G@`vul-oZ+0dDvaxen_z8Do_n+pVl)rEs#t!ha`=;j zl0*SDd^p7JKXM#>F<8`fOk@a56hJ^ZMV$p3=(bI4Mxfvx_Z{C>*t>*nwt2s1y<9H3 z6lsd~&v74zFU{ocZp7FK!UN;MJ54z5<6NlfdhLJn_z3N^Squ0$Mi2XP#df+JY2ym2 z^h)YuI+^W(a4?kNu`Mb1wkz^co^(^g_T|=}nE`!P7{2->K~{_Q`e~1v;UT-Zw4?M~ z^0!IZ6L*@!E!C{oHN^g)V3TwBUp_U1gt>4xJlq!>W@e1DN}DsQ3#j*+^Kpb{biANK zhmAq8jn1neHmM_P7LA`^lts##@??}pm%8Q`c*GOOD2dF-G2yxuxR|?ZBw?m zZ}U7Px_N^SoXc6q)oI zKSg#&V!r4Ar7`atwp);%SQQ)@9D{{|0Sf2!2Cj^5N`=A}SsuhfL?|Tcb=e8x^H+5rIo#+h*<~dLzHz0f% z);EF}9FIRGQO$+lTEOHu|0K62dr_OX3SUO}sKR@Gzq}~46lhC#5tuze6dbSOs}Nk< z?!zWzSm_0MdC%%tlp9YM<4E;7s_Ve)GCa6U2q0U+D?_?)rhB+gq&uc^&Cgwj436i0 ztn1<$%{~F_lX`J-zT&p-lDiK5HVaK|plYhyTpshZ2z1~;An6!1f1KD7J^6rN7jOUk zI?~FvV}$JYjfsFxa(MCjj&H0IW{oFm5Qu^?6w^WPE{h+yS&A*AioJg3hO)^P(poJ$ zvhEh7y`{UCTl%8RbgysKh|zGjKmKyOWRh5dsD>=s&0fp)rWG1$FAjWOrM57u!9lK7_yqO8YGN! zU{!`QURb@c+<2}JC2{V!F5L^4Bvka8@CGI3!)xogLXmNJ7JlL|n}=Nx8bRCoj6r#? zhK)F4N*}@y|Bx4ql;zF)r9|*0&%=4-m&2!pOmXuju{;XN8H}`co|f`_=E;s zMUYS7%TsxLqB9gr^Aa+3)RO<&8Dfp*^MZuGxXhD7s0Pd^icWU#KSf}y2nLTiRMTwR zqim!tOiHjEJ`{pcu5>-YXBDDo_Mmslt`YHw9KjzHT}OESWW;Zn0sq?fH+JzpI$K}Y zT~q#5#t@DMhMDt3r1{EG)}7#ld>OMaU&)(E)pPY_Mj0sWfz(DZBn6}91)D^JGiH0? zUI2ty&=qX_Od**x!d?HFat#8A>{uew4$;Fbh!h*XGt*OoT5}BPshFEKFov44`_ecP zAt{-QCru=p(+7?@5^+EpA7frQL$BeJsH-H9Xc=P2RmMao^klV;VIFtO9V7svVycz} z+vAZp)hQ{9y2?_LFR>VK$*}Zu@$@=6iMmJ=rGCXkXj6|y$WbkSps=nn_Ee|Sb3mosTdbqAb_%=U#8S@i1Vsunn_pr&B8zwG zh5KT8CEmcWFT{>Z!Acv}yo^Foe4%JQJfL!<6BD2&E5CEDa$xb5XxY@t3cA| z&v?WPydy0RPg^nNo^NL`4GBBhVl;Vuf=_?l5Gi(kG}bzzkUQ(}v&c?mdGHi0_UVo* z+hR0uSu%b8qdm1=4eFM0;;l`(>x%>ZNcYZn&1FC^%$L?g#Z%5pqekz$UZ3Y#4dZ!z z0A#27-~>}9Hpom3l6PqjqPQd`H|0|IDeMxJR%?)y0jM| z%6#V6b$u!SPAA^~`z5}M4id3c72GGIHKtLi7YO+WtXo3vP^m1pUXz2Suk*C==>;OY^;vTIQ(St2HeA>xD_lmUIC_p{ko=w9frgql}(E0j^_& zEghFPOT5E|`piZT0%7(d+rkTSrCf)-C2zEaevLt`#Sc3Ar&{*`hk(N@3iBz=CV4p1 zqkAT>j@Vk8F^9+JETidl)pK31h|WlbT2~PCIe}>WHX+Y5YW_bh06N4J9NEYff+tqa zPS5QffevABFXj>KBX7U|FTe`p?#!xGj9uj6bCY>YCGyd6ioHm)xV@JZ1eL1_6W>WdjtL$U`7gh`?geU55upV4=Z1y?7YNdu(}`p-Ghm=(mYvaw6Do`uatc&w%h`4VXIKdNMn~ zCR2tQkFN8EtajL-)eQ*@BfO*)PNQ3${ z)I(SO@pT1R2kXlSV<*n@jFp|$KJ+cS#dgq}h$}K$$?@x!ip58g zlw&}x*5*O84Nn6IoX_c{*ID6ak1CXX+1E`~eiaE!s4y=r$dW0iF3E5#7t<-q!ns(%LT=x-jfb;}D4!h7C0%D&? zAnj3N#K?7D@$;4DlIYesh!T<9_F>@}6=fj)q0(7<7}b$?_pB_@E4%W5g2@>l z&D%{Alj^s;yXB4*{3v%if5IPjhBypxV1e(sqc*(JP>CN=y_XqhU;LKt1&qt5r07qR zx{BfGb`skuJs>A86h}pD=>Jm4f>@e41c>)3j(P<)r3IZ}9|-&!vs+YClDGC|4c8p0 zpL=DIeYZ1m9}$;(G36uI^uE$*O zx89&EMc1!>S=0cs-T3E!iWDE>+KexXyF&ccyIZ~QvLDkrmIm+V!C}H5^!cB4zIAVY z-{02~sTLI#UdnQJiP0gR1ja|@_qZG0a7W%)2y^&B>Z-bc7|HrS9{-hV=8C9f&TIw9 zklmW!T%uZ!-?{K|zYAphTskP-A*T-QT$?}Ei{=3G#jJI3#knES^&-(yTe==CFnQ5< z%RQ(Yw(nuKLDBqeUpnU1k}R)g#Mt2^qO^z7L?_P7HXF!;!~1XBn<1H>$ynmJ`9cpx zK}7_W@)=WVsKYI=Ryq!kGE{MC@bJLodkU}cQ`t6@V8w;J9Ck0y>sz)_%k96Tw#pR$u$Mb<7_uP0PND@L+Se7-xK*O4o+r* zTl4!7deLcS>sVfakMS$-r_8PX$K;0Z^BuR+h(s|8BcB)J^F}_%BOqrI?lB;Rip1`_ zB7!~;`j0}{iU)kVbmEI;iV8x)}Z_-Jy`y zzejZtJz>LGHSH)z95zCh+`z^($oPZN6Q6T71*&>28B+ka0 z)a)56F6bL&xnx{y@%=t@a0c)rH7Kco$ebiiI0Z>+HuqI1SJwyY)XkzLvOVK_+MYV$ z$cD7!ODK`zXpP8#lDNg&5$`r;ktzlqd(IkXE6fukK}$?=pZ#9>Wv%?6Q@f8lti0s` zc8H$Wx0g%Ck1wnbN27B*}u-jyxht~ zzB!8XmGA^P?g>L%pRC;Vf7{#H4NhGDy-OI}cTaPJ;#s^!6|3Cm2*5oCiEK}fqd^nx zigeb{%H?+bzkC)H(P7a8wNHT5c#oDl(#}BBlPq4!hv;F&F(#X$%qTOHIXT=L_ zVg84Qset4-y6MMnuvb;Y%(c>-ja;dlnEMyx^}w0dugQzH7+^lk51#n6Vw?qcG#7qG zi*{`i=+C0DWLl-3+5l?e0S1>HzYUaJFnP@y2$*c6jokA8 z8*U*AH(`gi&C*#YcJips(lN2P82qUH8oX2}IZF(KrV*e1etUg+KAvzW{-vFzcos*& z^=xbC_-UxU@yN45*bk$ZCj}5=lVrh7r<=|usY(;V$B{T27m zAe}tpTqT9VJRPlr8M0Ah;%p8*v%whvqj_M~Oddv$I`5#9|4|#^L7RAf-vD1{CI1NB zWz}Lc^#c8v7GH7i*SzsK{i}$msmy=tH)2iF67_a9{};0{(K{ZU%rzD|apvIF7%9Wa=}gKKyAzjl zq2hkegWY_%gDc-$xwOM1B16WkKi7Rnt!e3ihKjK&Z9vT)wW&bq^mRC2%fIr`N@4jP zigcIr8Q{k0f6@G0F`Qq_(gpGuM*fii0cA1w%A_Pox^exes4swUo{Yjrsj)~aWxbOr zjZ3GU@!qk2%%>?G6V=r!2R_p*(y6YYm0@f$kiU3c&UAVOl-PF1a+1e88HzI8S`A@* z)4d#8hXC5acp+OcauB6Q%BJ8FO_iVtb4ej4VJInkQ6TXaX=o%BFrELP1O=`Cm-nC1 z=b4WZ<4=O7k5iqvM_q^AOT)}3qayJwA4sCtUif+|;-4O8cD;nIRlR=CHIJ=M<=em} zPlJT(X6PRYff1fp(+zC4y* zK=|f;sh3tNPRcCVjwHHQd*OdEw{IC&tQN#9aps-p$5boYgAOrZy{uah#84|1b5<0U z@P?)4rUYfG(i(`crtalta@IoOb2Zfew(Pmse;R}+mZ!cTZw^q6pxY9AWS!L8QpD3& z3J)mK4Dq?+29WG#N=Yb*^6na)o}6Sv%WTJrG-pAp-NVa#p}c2)qxtn8?;+A+SdO+C zyjRs!=eFE|!x1eGh?)wB;qcrjA>3F7R5tf6uU9-OKH9rq)?K0>d_<*KJl;U8@q0$4 z7$n|p;9q0T`|Et@JA7XHt$+5C?^2q5+%o^0S$8AVdvQOzy2M!jrcb3QAr0N{DT&!h zxIuyBv{VvQc68dIe2RlHJHnp8*|G+!4a?Iy$u_BU2z67{oqPyqy^Mymbw?tzHb79P z@p_V=ySxT~!_FiYdQp(S%E9sL#Q{59MCmSrO^<(@lC5ATxc4B8J<9x1a)O79PrQXF zT=^i9sVy$ck%5ci%-KlpL%MdUWg z{wHSh91QN7hPI8o{9jy75x-0naRrT6LD@lI)_gu^%1= zEIhi(!lWv-Xi%tZ*1{`6lMUriQ+*xorMoqtTx!l&gWj#9uP6$#cB=GqKuiS`C*j?y zbK;HL%SubjQM7rfqRCC4?lK zSAlBEM9&T8fQ9dX*kAG*RLoTNx^$hBirh4>;p0gPq%Y4xf1jL`Lx@MoIkhG1+k^Hx zW#EV_Mk~`?cy)){P1bA)u!nPqbTc>S@^3HAcg^=gK@0&RM#)|43y|E6|B7+s-?lRY zQ4JN_d#C#3bz^Wr=rOMoOKu1O>{_aGlmSgb;jcR#;WHj`{OgWpo>4LOE>8!=)bmp$w zL)Eo5w_nb%$vxU}&zhiRk8D)F?HJbz6B%z?aAh9)Q#pAyH>cfcYu(HLHf+G}-yH^9 zcO-n@>`d)@<%cE0d$FMDBkzOpmsOeh^-Px$XPpUcaauyLfY5O``~^Qu%TPSLR|jEW2RSMn?x@eEzI=;UQb-WVYk>(f51XG`X9iz;A@?P+M^EzG7)jIrE?mE2o6b7PNA+;{!w zMFvq{;pNz1sq|<-Ny$UA60t!X!I}#%uQRSPH2X`@n3SuloR~QA;MZTVyK9?-LXqH{ z^HJ+mKwwT%xpSarKYs==H*Igz9j#1afQ7x`@8oO}sXR1n${rWpr+Q77N;hn;=%tiNzfxEJu_y@yL;rFf=*Pdhe)r zpqL&e5B(13Lcg(OM|$Sc_w+r8wK->PYsQTSy{+Q#8=721bVt%7F>ckfJN31vLbp)a zgRaU_a>_E9rEO?r8X201h$XSCg|}g}wuv=y)WXw55GX3^L7>xNvf~`mb{S|Qi%g&! z_jh>pM>rPKDoF9VY7FrNB5Jlg4K_DJPuEEP+Z-oM*C66)b{#q_X60#d9cZ7D%F*%p zx9-kSOB_4ge2D|ti0k`Ih6Qm|Lgy~2_m}+P@-C_VExR*Z*>yYG@}jM16g$}*hT7bt zYMttu6j}@$cK2nR!8M-?;)7@t3fLVdz9UMXMlrURp$>`xEpl*FoaC9-DIYNnTsRd| zso#MpEWTtvC(T-&BM~EwieH(^`~-T1$ArY(-KNY&W+~8GQxlz=5Twl@F)iC@HC$kY z@o3cZum~a?h9VtLJp~qF?oZ!EOOm{uYD%WgkZiR(c;`G) zOg~xLfXGr{FUdX?os2zgM6{ey^0Bh{Ghm=?#$xYtjiGB@egs&G&m}Pcdd35rhB#O{ z9GrEb?R_lOh&73nvz5jFnJQ zgeQroRorzW6CMIxQBYMC4l<%>b#__X*f0|lkU1rCa!GJ$;p*%g?%fQ}uaCmnkn0-t zCUR;>XlUW+7+MGbLKs^lxK=q@hs)X#TZRXKcJ|TTK*FbCBrSZMUBmy8pV*P8rg<`W zc30=sf5CHa>UjNIHpjTK8~(TMjgd#}!+KW?jCnH!D;CNd9E~5|pK~Xu1x4gdX9y<7 zEk~=<@r?M9-8pj%av{86-73@=d;Yw{8VRjfWDtCr?ghnvkM1ZipK* zKjOVWg;mZeVLHocbE1hyL-od`WGLBxaWWoTv?3o4^05vzeL^@HneAl2iy7F?T-Eii{z_^l}mYpEqzd(Jn`R_ z|HIOy{0!9=PQ^<4S4a2hRta=>_CraXJ@MpY_^f0rXfN3iWo-yUK?Qz;_j@6W|*!_;us8HTokoD^%IZ+Q4TqBZx7!!J4P?Cpaz zXEENEL%T229%S1t$FjnVfqp*?+@cD!G!Jf`b0m<<0dh9=Esr8upmT5P zdb4(1Qc!th#4ENozaVZ-9Z8q-5T!@}oN0Ogm!r`p{7fhJDx{F5qUJ44A%r)Xox{~S zPk-imAoFxVSmQpBN-Qp{CDscCJEf;QjS`826mQ&QMA_idcU?IbO{dyAabWq~_Xdt* z%@RWT77T(C2LEItrpecwY?Q1r99# zh2;mgsD8Y3VkHQU-nA5n>B6x(2yNV@Awbv!&NYur|HZ}k%x1|-3qkc788-HMX4 zWHr5KWKqiqfFJ+!he(~My)abxacG124U;cF$H9behHTcV!sR^T{!40tx0lvHw}hhE@8WYYWy+&B?EjT(KMCsjP6{>bUpWEIoP zvL%nM?{p$Fm{jq2dx43TTtNJ zCkr=@M)?8M@+vOx|NL2=o!>TV&17p4>b$H4RQkr*vHO4$B_{{kSw3F;_I=Znu+Cc? z0HWl+`N7c1(RK`LUcc6UrJOxyK5Y#aOP?oI-W1h-$#G=Ki4!B5f4uMUtl}5`_xvwwRw1MAvw~No|FAJ3!JlUS)bT*;QqgYqNmRbprs*m1WOspo0_t-q7+@gh6T9P!B?8f98QbLs=8OBz;0MvU_NonhH1w5m z>5xB{X9!vsLm0gBD~3jTu~*IG>v>1v6=^vhWD@`31pqBregoHcy@Hv`4lBvCFauxh z7G8w@f_T(3vdP_kgFFS)D>w)u;F{!*xuo9CXmuXCZ?u}cY7Tk@=dL$B;acX00(vcy zw#4zu{eJi7YJ)^)Ib-1;CZsfcKwajAY~1z&wat(ly#`6S5OyZ!g|oFcZ3utv)DFH2 z9kJZ*YsawR#+Tpnbjg*mbk`6!ZZHi!3oY+&_@nn+F0<5ad6zZandICebm_jbRMsG~ zufMY%PaM9u>-X*H<7=CC1eTirs0Jb$$J&u(Zz0#OF^2p`^?}7{PtQevYIK<=UFL&s zST^IvmxO3s_Cv-O41#RCHrkKqwk7oV{ag8cjfE_NlZ#)Q&k|i0+Rk{l;6Kn@iExMK z)E8I%z8Hn*%=<02Bj45-FTIbL6Ox{-2ODw_f_7v|2hSc(FBg_ ze=AG!2neRQR82dXziRiliY4GB{)(iC)>XT6u?u+Jc|BAqh{;zjYFCv3%u=>waxc~g z)Q3DIIgiq2FAk`{F>4l7EGs>#Ovz(xii|O)Y>EXR&B)YNEQUxP0gX4E%pbPL$tJoP zTGuDMpNlUZehzI{TCA~taqyStQG4z}PG3kEi>LpdtYlJw%ldSwV z7o8dHNV;pyM+o69;V!lw80AkRC`4F_laXS^3KWk1-{R93(T5*_(ILd$VlRQRVgx;6 z4~aZXIdW8YQedo-=)8@jVfB>C5MH5ZhCaW=bGcc&KSihl1i~Zj%-MPl<*1soMm7~S zb~o$=8-?yHtgAvjvtL+-J@Kw2_HkCMu~gUJcQ?$ybtMQ6XZIY7kSS0+=rS{kodA3u znI*E7CDay4X=w^?haB^&DpIntl$@l=ixaq}C1%NaX~Nz*P*zr_B~zq>IJ0R-j+s(YB&RxNs%ZZ# zZ2-uawWo~U(Ig&|VUi}Axll6a_BY5ysq;$J8Wi4{(F#R~k$nTknsc0GY70p(C(RV5 zV@V1;EQ5;zDj z^dwEIIc8Zj1&zUDvXD7;n>^{s3se}B%vS4H(dB|M7nH~ zlXGQVGh@4>$4J@KNKj{>X4exw2{YALCp41_H}hSp;Lkt#fVRIp0=j&8B_&7GdNDkd z(km69>KZp*rK08~M!i2Qon)*Qn+W6t=349u8k1+I5gb3v@gUjqP82eh^L7a)?ROT# zY@rXFf||tJ^h%tBJ4E6yyIRwiv4@-6IMY|LqyjW)vxvI{05pl&NfTRVSmX9ni89}# ziPe?`oV9*@egbGgY`}wnMVibQB8RId*-Y%(-yIVmb$_S}>%SC#t(X~t=aZl36v4}^J_hOzM( zvMLfuF(_V0+ye}=guFx)1eUeK^PSaLUA!2~+qG3?ojF7D6TOnIHZR73+5MG^(#jn#jMM+w}GJCD(KiqukMgGpnBCNaR7tzk?w&?H(Y`_hLe`Lw5O zPl-Bnr;o3w)JCdDt@C|aI4pe#Nlfdpx@G0%^yfLfXWqUVr@3v<6&!qHt}P2Dk{m-Q zyqGyV8L+0$&`9-=kdqdrxV+!5@m-UVzh4Ov0`qx=$2w9grZD}f@-$*FXtqpM zE%*t{uTT0{kF)3OES-j#SVBXktt>K)h}+J6aImGE;3KKVUC2FI~CpcofpOi>3%OjSlJRBen zwU*?{Ho-QUSe{I-NUfWukjEDdP^W6YL%5@Fr0MVuoqvC=(8n$;!ND}EP*Mtv!dnE0 z4#}r%N{nskRJ27$5i2_pQz9$fDFK$L_u9gfMl9cNA=%(+g1#B(UKNeQ$_XH~*G>U^ zC=&|Dq71M8Ho-~XniRgXk-MbU>T80rOWwZd+?v3G${{mziurEE#gB@}vz zAXbIw+Jv)ON_1#l|HVC?+G4>T9!RRZM@45}jK*9a6i(wsvz)SnPQO-5F8Y`q)xYP= zL^Mrq>5TAm$IjGRGQd3+j{4M>^f1K*5wbVpw3XU8)*JDEKy^Bte^J&>#R2m8D>!Cv zF-m8nsd0Xn64tv2;EOcttIk?ir}X-lWgf~=>y}t>n6oqG&|t0%xvMt9#s$*ejtRT! z#w$zrmOxp6K)w@WIs0L;mz))UJT39eQ0JwqxqnZ>;U^eR3rA4Sg#ZUx{3bfahko7E z-8F4q$#vgOw<1fhLE%4MxV$L1=i-VGj~yii;a7jLAwj2aQMHedBnujGV|csP^^N1_ z9+yAJYdin0b?kQJin}Go<11(wXZGjgwA?p1GS0uvq=DbjQVxir>2!%@YUHZw#T~kV zAKtt}X4VaNrlzT|a#eV00MT10$^}2*tLVnbEd*_E1cBZ9uk6_yQdgc&iZa>Sq7pR3 z`6%n887bJu3DZt53_j57r-2=ny~R(>c~j%&4jG0;WoL9uPGj5y6NsbKo%2_pbzIxW z)}4Ul&&KS=D^5GqX*V^g0M%qwrN5;nl@Rg*(`SJj84FINjiA)1Y7302Idhu(Iwy*4jHLP4exMUJenx4|^0nt-sZEA1<_%nj+RzXc<2`E1e~L19C6?N~X} z&mucNKdPSVP)~b@mf|mu$H{MY@w!edp~5{r%t6Ag$+0n32v>L;rH5~%wFUNUK@Hdo z!c?)@5Ha_-9;tsR5G`_X)P^bqowX@+ZZrTI9p?&$`K0GqUJOM0wJ#`Lku1rzc)aRT zZBZe3B>>5B&XUDNkyQ`GOrAX%eSZJ97E76LG98#1)Uz3oA#z5oqb+^M^nX)+$rD1R zicp|p_MD4is1=rpX~=8>)t1+x*l&}=?v}qbco${G>zB-)c!nE&1}VWthJX&!W^oK- z2N%n}Ot}dOsSK2@a($SgLH+!2cUN>Yz6Av*+>k?xkmBj2G@WRaDxkAg$k3JV#H4TC zD7_%z=9#5nbkio0$`@?ekw?Ba_OAi6p96alS~>lNx5vD_T#2&K^U@Kc$+7mApv zG&>pL{<>YPkTlkX>UVEZdim5>TyB0VLQ0ZgUigJ@H&}4v$|SMPEj@2}~;NH^IME&B`g&391h=&zu9U(zQiMW)b|07OL)(d}ur^ye0JW$N1c5of zG$yL=P;lcDy8GzfN{IYLG9ulvaaR(R>7k3;=r*_0962AI?#@ay`dCaRVaI;ni;#n-ViEvIKO_icHncYK~BCZriM^CDE=+y4#AR^+j-Fk5@NXZFW zS%z{BUFp|g8T+CG>Vsy0Gjl?u@14pQN@~x~@7H`|#*h5Hp5E>LbMJ|jNBb-6BG^wb z$bbl{<9ry1456Z5Z!+@U>zE2P(MDGPYZ|pBDAx?{tyvSGf16PC?9`Y(FE&yP9TiFp z)HMq?aYxeae5m{KOWfomx_4Lk*3Bv~D&L`S3Muu;|7i=1I;UxiOu{D%v8gyf!W00l zsj%+7??uCZdB691=U;++)F->SPcNq6r_P2C9J^@X+W{p?3urfPX!sqWjZXi(!1S2v zmu|uMM+Si#{E`1Mtq1@aV};^t1UgCbH=7(mpYv;-EV0Eljj&q@L#KpZIort-YYFr@ z8~G!rQ@A;R^yxsz$cwuu(_k+gUFc66Z0F;DFz!e~;wL#;d(X#7M9idu;u7Y8F>>um z1kF*K_;`2rRy1wJg*Po>N$+?vM3yvOMZ#}@U#BjJNkW`b23840!go5s2%PgP)-ncg z$$N__szG5*KBX8DW!H9d)!0R!a0eAq6El>qvJn2C+$@TsTcsp0;S!S-Sb(7>aGdX{WS4`8i<=@t$TaP=BH6?9cYQYa(M>sbA`bwV zB#punG~UC}1TymH)Rc?-(i{cZK?gmQWQ$sh<<%uQ53SJneQ&IGTl0xclolog^TQxJ z+x511(PQ#qpXSIwd3CJhri3`8wOZZb zfeaikzH1<29Q4g~bF|wQ5(p9bPJ{5poQQIW2R7WJav|~!D3n{a@QMKkSfehd=WK~l z2Q*f2z{2v$|1#zLR}RzC9@;p-8B`#Ry~;@$)xE%k!bYFw$IgtxCK&b?^?1$HJ7~&p z27QtG-Jm0bGlq%io!QS?mZ zvil1!9jP3>hdMIjb4(1f6pfIK!YpXC8d8 zq*OIf2MH91t3+AbRMT^-VLboLA$7i2~q?}Fk5 ze8SwBb5xt1V77g4@;%x-DbF{d>M|qgNlIU!Z-D(2OZY-%yx<#X;O1VfldiR3-M5ZHe6Dej6Rbu<*B|MUsoK_zr<5$WH4&<$cY`)a{q9Ge$y~crS?da(XdQ=p5%2s!iD}aIPf)5r#gP|qKo+Qa7pSUIYZ6X@3KTeO~Mq`*rK5a?06U9w) zXi3QbL>$x;pedT8yYR%`kkjVyp((n$(s5e81V7)_!e8~M%^z zrN&g#NxG@a_u8SB>YP&)4`}kGlzyfbd}v4ASw#LWHyh2vD)iKexpP8IIu}nFjUJtt zq~s(EE=k}}U{*LtkObTC9^#;R`)Q3cY-8tpC)< z3c%{0M{9?493ih_8O?9q@(S{O1XKULu*V#4;qyG*zb z{~*9%IDjkvaXUP+(-#u+5BI#`vsi#yFi1@ROIkJ4P_V-%;U@r^q0Aq4g4nMHLae*L zR`J@|itq7|9O6q4EI3 zGA(w!e~VzlaaK3sXOI?dzO4EDgEi_+Z{Vmr?m*fhUQf3h6OkQ6TOIGLj2ICLnhKGV z=M|EhGsz)rmVgUk3ICRmKzYJ#<=M4MP1fTDOu0|3e~#IYkwVEEOh(HAFYMQih=_1o zB;VhO+PNByK3CEz_i%Fsf2R6u?$33^XPDCKH<(i(Kf!Kn&qKQ-*+DHxmKE-S$-fBE z<{B~A|3-Q+l~XoVqf!Q2HQKHFz(> zc6HVmo`-bX;u4RxMEb0q0O5PT=reaFhz%BMs`0z?$=^++>r%+D;|p`e>m;O?IVnkX zjWZT(=c1dXKW_acI2?Te+|norfe%ax_b~zKtZxRx)A5c z1Ay!e19O9zb?%L;{D&OlD@y`mw?qqiJWq9?Hg8f%gdCM$PkkDRN&Pkn!y_Y*3n#9$ zhtUuJ*{r^{;2}+(5y;v!(miF`63-)>Sdx=%`Ep+~Z(w(*%}I9eykaQ(Q%^h~E(TBSAT1rOhdZ%Z!zbhI6_6tbsOQ9sGl@o(JFCwK{;8a@MSC2+ zZn)VQ^@U)>Bd#Ix1D?;}@1Hft>g+WmGsEDjU7CwWJ>Y^zUp0_d6fb*sb`r6wtc54r zldXL~B@J;yQ6nk^PtABYA&o&5hx&tnms?5s>rc`ItkuDRMPgc-oW2!Q`%orEDyEX> zA>5i3FUDw8Wm%4a(#;A!BDY9xpUHtG4K-y?#AVzZV$?RtcTYpv4k;2t9L23Ok%|+Y zyk1S0p}%GkNu7?u&7a1}s}{8Mv|=YKUbvAXdo9k!p@vLMt}v#U>yw$lQstDN^NVH6 zO+VlKScf#ivOqc(?NtYOcZp)0f(>GNKYS=qOGtQ!Fj|6(hr`LllH6qyFPpt7k{3K1 z;jhRJ!L!Epi#z?>aA<L>!zJj^H@7!Hn zMW2vBTIF`?Q<%vl?HH(^Z8bGLmzKL|3lW7cqODMJk{4)c88#SQqL=Q}7(Zo?YFgs%ynp9}!*E`MOzR-s$ygi# zo{#gUg>$qQNbuMpC!7~VrzTLvX>guiJ?p+ z#_`lI?!ZtBrN7GUHq^LedgQS++RjKjO00JK-z)!B;A|}&x~gqz4nMK{;F@ENcTARK<;U(+O}4r;AbJ(Yi?tQgBU+{&5H*;C(Dbt(rHIqw@u)@)3C@07QP;}Eg}K#mN(tR+clZB z1K+p-y_Z(iNdx!KeP)Qe7&B1Xf+Sb{K z;)Ly~S0T}1M75MnB_~&D0el}Wjy#Uh-pXojL4}hutt2$~#7IPv#|5KjB@$8TG=RuW zl8fB+MZ6C^GXW@aan<)VRB|FsftWSBLnRI$YrNDk{WjLMWHA&yidzutHZ(Ni@@lSd z8xjO&YE`%o4)f_hV&z%wI3kqa7V4Lr1`6jaFYsgk0!E-FsN5eM1peD7Lz1%;N?+o7 z=RwDb-wVwmo^9!d%Xh)%O{eAnt;C z1={VSGGSV%1SjcQN>Z&f|6ML9x$(xeXc?+E|F;cA`Me&dD7_`QLHo($;p0;&T;o;=ZXmco2y_-c*)>$b?!f#tmg6Wrv^ zX%kByW?u^j$`+nrJfM^KKV59^?d#~MJOky)Tf|+4)1_aFt0dpU&c@Do?X;zqvo{Zd zKlw&IqjK;oXsZ)kjNK?e8Y;v2@j^i6Il_J=J@_yVq8L$h50Je%+Hyd>OI&4eH<(+Rz=OyiAZ-MmEHs4k zt1%NE-8td+<+?9zZ$U{G++O1XuM1gH#Qxl1P7LXtBZc%a`d9DMmB62~x1DF65~~Q3 z2pVhiG&60Dw0nVxm~jE}AeeC)7@7*6-QOf&bVWrxU{NG=!N28#VtlTziT*3+;B2gB zSl~E+?h3f5S-atX-t?JiKYrogk+fmfW5kYLx)aae{q*YPZDCLES_p-yXbZjzy}n-S zbk01Ak{{O`P5h~nl&+)De?Y)`QIx)*pRRKDr^L13Kyopb{JZP=6A4#SNoC11G3Jn0 zEDjL7^OwXnmVkAoaj>?WUf&@Mk%p=J~NXqL=joaB^=}oc!WDrKzh4Y|sMOJ=lgWH*Aj?PP= zkI->)h#|-jYr0c>KvY?B3QV$L?rQ9*)pnLmP^INaCh$rqn9(q{If%-vg+waQ(N==OLxtBm)@Qrn_B*RCo8$45?TTE$;n@}0tr2d_ zBoG~1vC&E&ij_Fx-E~gZdT4}yt%oIh;nl6F=wKXPxVLakvz6r7Rh)3nofZN?H!?So z|Hyk;ZY6WrHCJ2fWW(6zq%TQvxna|uI#uNS{-@JSkiV>I!hBTHMUJtt#pR&JPB?4s zFl*0(sf1Omd0Gpn#<~KJ``r?RAC#(o=1_&EgmI-!@U`x)*yQ$LJG?qz9^w;!QBjuo z?!BT42_uDT8D$TMIpNRbi3m&K=n3&dRP>hUB0e(_oNE9JXt(miI>2_f#XR7foXy|g zDBmBRmr)U-fnA}&c9V+rpeSAQE=N@@&rT#XiukL+Rr7kSS8`lkZIPam;+>en(vv_R zJjjtPFFrVtp6K)Q1{b4`@7-^)xsv~nfWLko-RH!-o;0+@lLi`xC*ne925a-Z9F?`= z(33i|xwW=Q&1FAB4X@ln-c-}{k=EJdK%*iF>q3jNS5KZz#Y?yNLcY(ev}a6=Zbd~! zo$>LX?vlFok-}7Ho))_3;0d-h%(Uss#!$c>+73xT;ltz5mxD?{C^4$i{P0+b@!m+} zicL|vT9zGaDr78;)qYRe>p^4h%}kbze|!pkMMbp(1^pETYVq>koCE3dn+xlueVCr2 zhcC2vRX`?x)1|u1*#)t+G|xrGaJI z_6ll3K|$M}JkNYV20W}W0#V5$96rNZiy_zC(~NT+qcWT5<7`xlP=YcM(o(|L`}xH> zPLIu*vyu1<9?_GV*bKKuGuQG&xif)ORGs3CLc6%iWr6DET-JrWaCK^aDoe#()l0?9 zbu%dVohb9}X9YS_H{aTJw0BhDg?5e4cm6E4RTXVYVRswg$z@O~5WUuc;qUlrq;^v>K>DbwPL=+kQgXycbMpd&?vD zly}b|sNyW`0^=syDA^nJ`#=*C5>ma|RfgR8gD*!;pq@2jq-mv$y>bGA$}KmhJ&zH7 zJCbz$XYk!H7L(Q4k%K^8Hg;Rco8TMpz&OpX0}@)4S*|nF=qrme-^y>C!;byPvU7KJ z4EbC$C-XIm*Q9CWu4lPZ&ex3%9!k7^oj&v4&TVs^BkH5Gz(BO%%$bw52iCK@6G9gq zy9_ow$>q?FacfHZ(-QP6p`o4$iM3GZCfD2vzm+*8Sn6Wt(DxYUFj_ce6 z?bZ`QDx^FOaqBIjiobBb!)Tt+hOfrCKP;vjBifVL5z51ujDP|1-;NQ1$wvm@*2dQt;T>_4O3>im|# zNA|rn4*o>3a<#jsW2abmf03{LdA)z}nzm=arAr!GK^2(~45xS|Z|Tbxeo=KRc)InM zAGC^j(0ZOk57&wFaZxVnj~7uq&)W671Fw}``^aSwS>GFWw+r?9}gZ0cKk!CXkJhA zujZD7L5G-@v;99VK#Vt${`OO{m~XxI|2CSYhg^!5Hln>>BCwn*>RFVn9T-n(Wk2=q zvV+)%nr*dnr2pM$*~S9u=klYixLwM+xiDq@_^TfXZwVWcJmbODnx#&Eefg@*6He)W zqJbfLq+ICwB-JbK0nc`W)IDq%T#s%mmmSM&K-#Ix-_0$J=BM_5NMstD`C_h)boN6__zB3Sv1&_xv!KrN>^1^y#W(N3$~et3F*6(?0LR8c)SYsk z(8EyYEE225{d##P8ALMW*wJ((0VYJC>So&fi?rfao$SdMa*LT!*FHuV`MmPkW#1o)6(h`5{7V(^j#p&Ggp}gtGr(=8(9qAK|GT$J ztn!LU2a(&7+`5EYDHp*n8wBXzA$#$5}u!(CKApB)@q%Z}b$&ZfG72XDvE&`byl zd(qm|Hs)Q{<0+cu`{oxD!)s$O9=e>5rvaK@Z$9#$eg~sM4pbBD$wR?uXly)Ll;EPU zL>NPHwER|lssn`U1~|tb$7Y@0r(gIgwFL!tuDG;ZYsRzU%;g-}WYdQnWSu*=4p4f+ z_{Yo~$wYoRqlxD?gcy?q;QW)WHTB$gfA=4imRC(x)aE_}P6F~aYLPk!);{TTRvqL1 zdMxi59)xx0!RK4W8g{hsYOGIdS@IkI5e&Dgn>6++)6&5930MR%>_#lY+H%8lLxC7hQ`m5yzC)Y;R_B)jX- zr)ey(p@P-P z8k3!?Y|?fy2X9BWC!N>IaT)H77V-eYmzNuXxj=lswF*MTj!%MUiWA;V@e&?9U3MN-*MlEMtq@fJZ7grV&6-|Qjs_CnbXyW(=dyDNg<-fhZ$(OrP z*Mv)508v4=1_%5T|MwD7NzW{kU&xhD>k2Mz&%^_Mh&oE-@6={f3PvGjCdn>C+$R4V z18#+Sj@xge%q=Gj7@PBjAI0Ef&jf>@2*8n|2NBj1W*)nfCfj^Jg%6us^N}`vJ;?CL z8APbTR9xU0G+0AZXVyOz@L{_GDU5V+q|M|=b9P*P{1nD)9jwpM2(Pp*wUKj6$_o1e ze7j!~L$ViiB~j1@Yr~1>+-TSMJ>MU?gNOgA{hCz{MSwnNpd0OLK`!&FefFg&m%^P7Li60z!&R*Pov{2-c-1*R z#(=?lTBd9J`aj1(60D>YBlcz0^5d2oLicmCIe2M*Ym8m%MeF~|dsSUNS}}XgLZxh$ zW>;E6;dBsGY&qCn9>$xfMN>TG3av0KHFrFcE;Xi!@=9%q;z^X{kS+=Y5 zj3(yn%rGmpi&S9s;CMkNdn(K&eIpisg9~IO8K*PKl9)Y*hM?<6&-Z;C_#l}i!V?;n zjnw1iUw$_oR9id!MidzJ3?BNtN%_I>+C}eH8OctGlfS+sTfT&--D>5v{a`MvZ`cu( z4XLmwy7LbT8#UdUKvnP~Ed4!c(lMoI<^DZX*F)iXGm_d}`GXWUGla|SlJ}uoy8|n5 z)y_rjQxoE&6Y=6BONM(>UttyMKP}JtL65t7J2~6fUztp-Zk#zbG^L&~Z^@x<{9PJC zJ9BE3Dfi?U>l=O^{_BVLSj}c@KBY7wP4JJb81_;N*m|qpm(Cs2VN_PPk(_ z;#HZ(?)B7{J6QFlkfG*S`iZPg%*kZbw8L4W3aH7jh7ZYH^JL~l6#hSYKWRL5z=l}p zwc^8~M_b9v8)@|NTy6jh_vg=78chrLB>37k6pjo2U9sz#3l1NO1Og@_w8JlS%Mx{t zR~lcNKwJwshsaR$a8Zwp2hFQ9M{*T)<9?nc*XIurcR=(!Um8gZS@9(q+i!nxl1vO~mvS7W zvQHjyAS=9hW&F?|>20P+y{(i>v zYxXWEDJgllwuHub609+{hwg^L^YsSQ7$;mH1nSEsHZQpV+XB%aB%{Ugy0a<5iyOa; ze?@cTpB{FH!&3UmT0~MyC!XJ^wEgqe>^Z!S)@)rGfbt4baAak2WzJl6Lz?TH>Kp0H z9F|zZ5C+4CqifAwUr&ptlarOn7m$(jeb4{Q1Dq-SxDIMzc8J(jcf&$zhiaa3i!jo| z5qJUQ`$fMMPh*4{I9x`KW5ux2Pk-&tsIN%9z~_=ToMwZ!T~cgfaM$BG@y;>}+&DKgmK z=90zg;RFiIOSsel58oo6ltz1C*c1g9?zPyvY>Ah`=HPqO!#@|tP@<8&kQj`{8^LL(< z{1>i^UY%<~4;N{kI3wF!%aF!s3?OKxGf*TMiO;_9Vc4%@A9&Wz%A5cwaL`H5RV&8* zFV_BNa8BprUA)RUD$-w}1gGE1oZ2{U5F~k>mqj(BxyNr27p7SsaHD$LW!}tx_DW9; zH_GqQ{>A-w_fjazH0~}RI?bc_1H_eoo8Qd7Ai<<3P?D+CB&a&&XD#4%>Ik_~D+564 zgaYQ3=Hrq|h^IvFwQ+k})7+Hd$HpqkjuV3vvKTw8e>G#l%1^gqa5|#r1_QU>WcgfW z{_*KVXT+6YY=|Y9ZK-LvrBzfUI31hIg>!7Dok-L>cYH#PDvL9?3UW^nc*d=5B1*m| zGvB@JNWL@sN3U|Ok=`&*~RIsJE`Uaq+5wK1C-XB%6;p)Bf#b;;rBtdh69 zx+Q<{%D)ldD+*fP{f2`ki~m(DF7M`aIfaw`8irG}5e&L0WkR#jU{@379>0s}=7dPB z$zMD~ijQ=S4&4H>|F7%XSn`1m1BPf`y)#N1#KbZ|J)^KzXx4_}4swi(W2WZa|F! zg2AT|REu@rSJgK%)lGY`itCY~#;-WnTU?Aub%}EfRi=)8{sWs)|4(al(-V_*B$BIx-S>UV+SQ(P!9g#{ zG_vC|fA%dG8W#nEsU@`Q&!HvD_#I{?yy%R6J_d?u7~KBw?J_JB5*q=3+0_8NE_$q7 zvS06jRH3-hXi9$0Pv>JhyOA~1*OwPvo-d60cvi{X-65+7S~v!~4DvmDckfU|DfdXH zdvi}87I%H-IcMr@Yv;di+HX&#GyC4@Y}3N}FJ|)!No~`nJSz&uw+*2;zrPe^etYxo zcE>}kS!mgZ&;8&3cgV^9tYv`D>_BWFv8`|M9MUJD)b^Kh?*mMu;~Hc|S9#!hFeKnd z;J4PI242_U$|s@f>(h%9yphXDLB6h{q{T7^-_VrNtkyrhHp=w@V&j^te8%L%Z$&kV zXQtDxeqeyUQU-Vi(W;SR_s^)^3ZUoOIs9DxK+yXI?b?5lX|7jhN;t)!D0af&;4;{q zYW9Q1%|bIM{mN@Ys;9kZKhWy+ffe$0S$uOrdb0QCRrAE0RUxV_{$tJdf6}!&jfO4A zADoiVl#&gydDe?V3UuFZCMWY^I9!LLUs+>__}GfN<&g&LX^v-;-0HZs_G^q1HGNIf zIT2(FFrnH>o`vwMeBM|>+RviC;fA_&9`nLI&5fUXJ96sjbc`}Y z>-gn%A_-W2AVLB_33exYf?TATR(ZyE-Pujtcw@pk^4_QHT9fhv6MVgmd;ctz9ytAl zAYxwSoF_fnbx#F3R(9a)Fu8+GZ~ zX^GB&PUsYvEVoY0{`FtfOC_*J7mf03cd#7j+M_!bF5W}Qm(d|@G1;YPpm1yei0hRM zGjACCUYY5yAB+>na_!cC5>r1;8{4}NYQ!Wabn$bh3 ziO|#I?#$BrQ6rXn6rG5-ZL&h?5tjkc=vCndgU&ffYq@8{rDM>G2f22@nQ?x8%QMX3 zVp`(mirhb?TDnXWl)D@+J1ECNl(bp8)Jx83=%O2R%b;&AmC$D z7>$XnQ|@p64#M?DWAe45wzF^KYiteEDQn8=%og?n3a9I?&*8NrSAfYR^fKM_BeCj8Q#|HK zWzQMqxLs&aT*wUj2N38w!tu!(rKm$`N1YfPWX(c-c7%CSm*S!XUcO&LeisnbH(hRB zv?adrNxsmA%G!-3@&I45m$^p@uY1UBbK2}zTQ?Oe-&m$EKZpY#`uUeE7rgOJtK~ka zBZb2XK5jsBWIp=h&iYz(`-iCvkEQ{Q(IEcEspX^2dQZrgLR#yDObunZ7L?;UmsLy^ zvb_NZ{D~#2q6IthjVHKz;EXN2zqtHZWum?z;mcc;ViDz9Dw$C&_iipj9U%D}wSz?>-`tijURV0o6AjHQ^X5z3 z-|3QzuarnQz6JC@9^|n9jzaF=-IxrsCe8$AmmWwXB_Xfyc)&O0*<(wvc(?z_)mD-o z;%AshhIboH&Es0K+oIfKK(gRn<8QCZ0;#(kn4GkIC2+j zqXk_aZJ5_1=&?T}fQh&HMPDN%IkE(?l^A}oQ(HaWMq}t%5{mY_^~zs~-kQyRjB`=*jcc^hLwa|{GU_A7b}J14q6nC8%>l!_v_MaSed*`BGLg-DG~Mw_e8OeY zfS7{`RD+TnR@*)J{pZK@?uY1KO()>U?~ud*`jT4!W&`&ykx#nX8LxXEYb4idDT$&| zUIUoPAjIFYL)-EHG{Org7|d9zdn0d3Q@=oTA9>Ze4;cUN2y(;OPM95QfY4)DquKM< zS<2{g+heiNB*(;a1jH?hLjt5IJp$V~Mb;N(>{FR6Q7|d}9mYKjwYF{1&8DS%6d`|O zO*V0~OGIW@4)s~JNy7ngSIaBl{SHi)=J2ie9`3ulWBSM^R@ekXnWt<|^>d_brTG8Q zwS{Jra=)iG>QZ>y^J@oR2uN|CuE(eC40=*HppdV<9hM9YsN<|xX3NGQKnNUNzu%WdgPtAeo?mP)vUF>QS5ijEt^_9Ozce!D2A^MXB> z_VrexX#ZEcRqs$VAE?^PT(o2Wqb_(Hf>Hlmc$$;{ zeUFDFVhTEDe;S+Shk6~u>E)HTVl1h|YxLBvga^d-X_t>mwiXnY_T-)_(XLo^rf>KE z9{Lvj+EPvQea!t#9p?ZEM^o1J-YEYeGJ6CbMl;F+MT4NC;a#u zM`4oSVU$|ozN}f`fOuV;^x2=%eqlPchUdp??Fib?Z@v$9V!Q0C{@&u9=FLlJe{Ijc z@Gmpx2crv>7rH9HEfnxPQ#4sZJ6OVgR2rlv|()F35wWeI9z)pX6@EwvhZCFban z8gPJCbX^uCt>RLL%2dfB3r&T2`5?Yp2)~|5Hrc4~T|IpOs=sj(pYf`%4|nWOV-@lq zJa6x4&E}=C3~pU)lte74@oajkB;^Q=3!W9;I*s#K=N6`|0;GX~fwmYVx$wTwMrrp+ z!B5X+@IX=hwZ)#)SlL^QAM}7!e5Wz}dm~^T_Jz@+xnSF@DatS!7!Y>g-H}+@zLNeZ z@-lEviV+*G`X5VJkLNWS^-+#eb)H|$pfh*&%9f;3OH}Cu!)k!KGd92RrF}UZoSzjx;d zW75(IX(>0U$*(y&_|`tW=8?^C_1y3IKUdIf-z9?IgDxFeRSjpwHq*fNO(LI8_CEnS z6`)igp|*VDl4QO{Krg^pa$Fmf28f0+vc`CE_L$=@NSI4n>~h%K_e4H|4)YSbU_W&2 zb??XB^25lMIAW_hXusYPHZMSf^2ki<1kut`+?Xb)vR9K(;LoA_brctEan=Lrar;FT zo=q{rm7Kq$uPa1_R<{)F%&i+z6Nr4!!J~7e2gF_|>cq%aCmCk7c2frL1r3yZGep@E zq)4SP1iXkDyJz__v}7&qC}ZOnxG&SWOIo$Lshg+$H4E~OYojis1eEPX2U(^m?KA45 zGw#&>X_4D-7dYZ5epc?5fl9C@a_*sK-VnFEli6t}uCLu2G2CN5c^91Y5Nvk-hcqsy zfY3dRh3{hpAN+3;7_!mAQ>b<&s$X<7ukGO#sT*zdmdB0EeXze0mbg98Yh2Vw z!cDYHd_Y^b2<#>Dp9YK(~(%+vui=Xv2rjdCZs zT?fE@W-uagES|i!;37bX7iO?@h%sA>^vBQ#$V8fwDLGqyvx>TV+-@>H^Lmhm!m9n1N>L z#wCpei@d=s`eRsBqfom%DL(w^(VAA$T)!7*j?1B%I|^U;kZn;LeA7W*41ShG&!=u+ zMK}u#LX{9Kn^e?_ksUgVMeuzJ#TIfx z6@Ra_~z?L6I;L@s`Yi*;~mm^y;?4E zoR{|^Cp!tf6boI#+PrPP-}*ct4+L=9HWIJ*NM)brlkk1Qh-=H1MIK@RllF$P<9JGA zZ^J=YeZ_~h)mK4TqcK0x=4qJUp(HJ5%gB$fRNV@tw$Oo5mi7lK@Fv#VG1jc2&rdQt zc0_?P=m7^OZKhXQoZwD=^UZ}cet{{z6IL_vypO(*!@E!3Oz++=?X6hT$A$Ux-CXz2 z{6q#5GnTq#_FuC!Wh{GPl?vegOU(2FSf)m<0FC;#ly9;)xiS_9q1-=ZE$nEC3=`y_ z%3|oSesaE9^SI&YdElki9M`)1tl0=&Vc*TU#e7v2Qay`08<%<;47uG`YK)mQj$?Z8tSUf{g zq7LY&(Gv3S+FKphmf;g_TB7SNXHK1=pv{R4N20JYXF3+?Xy?E?FQoj9nJbUL~>R;XL~zt4o92!=XH_6m4>t*#2x=# zs#QSkC$YNwtx|;oJ!kc87&JAxx1Sh0X&I1P5Tl5WzxYrDCiJnH`V zNo1vup(*E7UsHCb0-4L$u_y0NjccB>x7syCLk{|2M*))-mhF=@ZsFDz*P7kgY|kWy<6j++_sGYzm!whSc$)5_r438{=fe) ztmP!dH9+YqKne7W8~yXV1kF5n*MD*TU`t{uovvLTJ_!v(EyI$~Ss7z7VW5RJh9SZ7 zm}lpF28Hd;fvoECTQF7aTszYrRu#{?L+BmToGbG~i}0aT-Z?bB`^xKzpPaZZM@pZB z3{bi+IFKw%>(~rj{W7ZdqLOP_zj`A(&)oD+kYS()54Zhh9jFOsWqCwC=P(Ef&K3OO zJ;g`R#;(2f&gZ@LDQb@M*vW!Diq51u5I)eP)C(FOY(eS9c zcBEbk;9F1saIyc4jXz-*nduxtEz!EW$%_L&_y9EgcFo$pNzq{5-^BIldc6DU?e9q# zw(UqX>>DiBg#zOY(1+`Kh@f@kF1vw;<)*Pa|FZDiIt^-VMYanQ0o9?wsy8#3&FFp) zS*{5ys^smw;evSz27PKSzbeV7j`-|P*sdU$*)3ST-c+zE0J&hp?W2`v*6l|#A>&Bx zdalR5O)yr+88o}Zr%Z0RJM-rrnEq`+ZBxs~l8^OOjy|LW!qfs~B-q+J; z?YvaPdg5%I&V6n zI7g|dymBo5>~Dm0;l*2@{nr(Xhy9Z^i~7YJ;j}5c#BXVPi#99aogE@^ec1Mrc0;i- zSN}^9qMtdnsblR>=bf355^mEGl#W7%rrui`De|k#*ouMjP9Osn@7mE%A_V`kcG7@C z+m8>h^jk$F(Z1Ml#N`-&jY@lr`d2paczeo^)aFuZ30yfH??i`-|CcMAwryDt z+q;?QNdUXOXpXrl9DIHPu)+qSqdk%=p9q>d9szi0oL_1D?|VT~K&Muhhb2)d7k;^c zAwCGZC52bMqL;boScbpm^Zdp>Re2uNsEwwq+Gu2E15^x~XOTQ-suiO|>mpnE(JApL z5Ak=p^3mE_Bw@OemMilLA~aig@zV-EqSUA!Ut39_UlnV@cH-zIV#PfWM3$uUrft~Q zFE$M7P7}tH__y7iTdSVY`Nn*5UeJ$--h^34#ohhVh9UDFJsU;Xi9IXc5S=#Lo3+o{ z1ol-z81@DW1^vdtH?X{ZEA;0{4G zoQ`T(i_A$=9xpVAv(`}4XO(%~#?n@GCWhM*t$xQ!1=vlTyI@)2I@#DVTheMmM6{iOvD)dxD}I+%QaW244V=H}jT?0d zse7{szJh6Rew0q^*Vd|eHqTGhCM)?+NtDfj*;ZaGE)#x*%?KKspA12px>EZxgotmR z*zCz_V+exKhI_TCoG<%@ilHYB9d%DjS(wA3WWNeZjW_%(vI>deqTv5bjZ;>EJBAV+O3o{uKs^OLtN6Qi8gfErxl4fO*jS z`(B7&BPwsQ$tmhOdjRyq#L~fb=~;AgE}rt^Rm1PUVe06t_BTZJ$6w=vcYN1@h>f^8 z$g;@2e)ajki`w?nC}xT~llLW>FfH2qvLtjiUgdu;HXmh`U%2_HHPu|u7hOyY*~dgy zs(GPQ{@FSM3|KG5E0^Mk7uZ*_Zp>wDO8I|-u#OMq1xOfeeaaMeMnOK((E47UY(LWI*z)|?Q)&PrcG?vtAj_|~m+cqY+Y~d5K59hUCyx@E( z$p|(6K`t|_iL)*_MGWn{b4+l7$Jb6Q_@q2{$iOgBoUK@88Zg8^TRmM5cFFnZnt1dk zJy4JILy=+I$>RMXc-2O;TxDHr_El1D%@2;*K_2j{d`Uki-Ork;GqZ+g?^?HQi6Xuy ziXuNUS^A$*!**dx_2t_Pgx8uL*T)Vitqqs*hc7o(M?Akr)!;6-X)BbB44OdjEvP8# zt$J7&o1#vE_}dq?cLz7B*JR6gL;8moiuJXk-{D2R8cTk(uHV0@2|*t-NrvL1Nf}ZJ zR%AZM;Kr44gH0?cD_%j>83|)a9!tB+bMRn8eJgkN;UArx?i+^xpdA+=gm*?)KujH^ zpGStQ}BVZ!QyQ>Qu zC5H=8Z|obU%~#H;p5ccZ^NnGV;cLk}A-HCvXB7Rnbe)4yV{$cR=k+1cYM|Lp`BhaX z(8`q@eIBI~h}xlag3APK*{~^P9m}l@d{K=4W?7p($4MHr47B-L-``9as;3)Ro2{y0a>b zudS5FHf5#N!Rmtgkd@^jl2$z)bXLswfE2x9nYG1}CF7Wh2u-dwz)@vrHn8R=`kBTS zw=LB}ABcW4T_QZNfq0W`gp7=p`nDx0!p_KD=EZld_8T|KVkRxQiB_Ew*Y|NmHqj8q zFIcb#3lDbC^H&pkWE>S7GyQ3mKxvn~Ha7L^#o84WkP1_0h7Tg7UoF@*NXuTGLy||I z;O~^_pX$4^&+>`#obYvLsig5RXFQCnEN9l5Q7I`bF_Hu4M3s6|yB%uIr&X2mMLZeQj7azsZdy{H%ilr5^FThdKLd%@SJ?EDiqSb+ zjvkBY>5GJ7McvVtGio_Ee3G*3Mv{w;8u11}@m4E@Hm4p29rkPOs5WYXG@6i-q@!9+ zfJawsf9=$@&wxa=qSc!Y$^FPoOFmJ9x-ZG|Oo|LwBCdp>Y>XxKujvYNr*qFKV>x<< zNp^Cm30E%j_ht!;0QbRQUL=LtK#7idWsA!$fsVmVmYn*c96=5Uag~(EGxf!0LX%N5;X1S?KdY_J>BiaXN#FLN;lsulXt6w{FGXwUT)rgw|xVlAp!j zkB0fvelVo+#wR+uVkC?uSmDTzx+g!BB?Jd{a}w~|vr@0AZO4l#1kn+;hjj3&tDU%yrSw;dSwPsq>;A_ zyfFD6W>CWjtH|(;a2uXks9X0G!yuQYR5OIW=>N>5yBK*_8 xW7Sojy3w7)egslsDy&FJivRyVGZWhZ@2DZ4zhsOAk^TpK3Qozhv#a-8?K|{O%9@%K zX_@`+U&b#jp_hb?M$GrixyL6x^Zdiu#AH*Dec5fN5PKPc`)3Kq`Y!Z52s?6)rGL2k z!7C>1bJFU)DK8VxZ@qeTed)(FcgKb22)*A;4Cn`z%Qgi!hBXF8l3?}!{rO)B{I3N5 z{~!To_{zmssrmugyb8Wy7pzcK?~_^QK$Rrm$8#1D6#F);TK961&KpeY9skdmoTRk6 zCXLqAeC@$4Qpd&lVz|?jcsVj)ztKwZ$b)*-pHE`N_EQ+ctcdoS|JRhTTbe(0#kdzP zFGLle2n=Ls-|$#ibxL0Nn4Zva5&o|X1-f&M2 zZN(q6cO7KDSE}<9_s|pkcOg}$f)Q%wC#{3uM~z=TEpUpNP%)3q?)vy~XJ%&47_TYC z+B;F@4db7n^XI!;Fl>u~!HsX!C&igjeM-&pq+@!5t#U-Y-(K+BzPu^#EQJwAA{9zkiChzQl~sZpULv`Rdv}d(&8{`uG8u_pJ)+ z12@cBY0TSwa&)U}S~C_p?`h8HH(F~R|K)VN$`iIpRJT%{uXvUfq0Ks~_zHT5KZlsh z+BR_7mq)7qq;IN|QQt3}ViEu4M7)Z3yJ}Rof~`D>6-y{lPx~R=d}h({9Rktc7pKYc zAEciUHOB1e3xylpLT*-RehaN&Tsd;~W!tyPrN%AWd=`&fCxq0}e4fx=T9Esd)5ibv zoZp%!6Iu>4PHunXA9c;`5G>go*CB1zvo0>wgITSF;-QqIuadl&SH*2Io!{byez_?^Vi` zrEFJ?YY|VI_}lW<#yKBcGbm%rH!idZ{bGk#89BLqkN+;P`=qfP@#VOCgRjW7E^+N% zRpunJbTc93yKi$<(Idh$1)Nid({!EYUB0>hI9<`pu$L#Y78BZj(1MZ)>J`M}0+bVi zF}#R%e+Mmx-_9v5yv!)?PE~o6#u~V7X%M8~9_%*jD<$A$SwSjHCg|u=u9=WoleBEA zQ9+{U&Z3{{M#pUQH%S;>6fc07%=CThvdyArh?>SC-fqy6mzVE+EGtzz=_#vr+*c^8 zR-iRhFwsj;+F!u-{AUA(`hmG8%jf5<)Xyde8eN3-ovo#L87D3%J%9G>SjfJZ&IaN08 zhiJ36pk?|JTlV#bK>J!ED+h7UqU$K}*2aZ(b`!Jn+`ZgLtog@}AD?@Bd#iWs*kSs< zF4bEKSuqRz7US|Ffjay4B)JRJR z+DTSiX||Tay`{d;_Q1t%X1)2T)4{>h&I+})Wnfx~kKB*>%yk{Z)d{WWe@^$lWU0Z) zLlKTN1xefdrMHgee2UI_xxr#B#oQ`=;%=5Pb>)@yJ!3zgs+e2D$#i|c3|seKf3$_5 z6H1tv76g&9zUFXbBL7nLkPA{64vBE0Mebzkt*88Lf~;uk?7W`X^)(%gSHYHE`E0H} zXDX3d1jg5v-tYSG#~=HtLszOl6XfvCII9`EKca6EdBb@<%iU3^L0%=7*eRkGW^&Jj zxm0^+zUqdBb?FY=y9p}WdcK`Lyr_EOJiWdA(>%{uUniq5UBUcj>b7l*l`aw_ObHJb z&O2};a5YO#si@bRuS9vrIJaK1qZww<}4nmZI`+7IjnzH zYs1O|)!AD!$#d#%1$PZZk_B z)s~JKobP9}o!H|3)=wa#S1v8L`IIIl>h{Kk+HH?iE;FRL@Y0?SAD*u^ZlUj%`WW}e z{+aAZf6tXyhT$;xRNnZMe9mYjrs0u-wy&T!HD}+6p2)o^%WR96#BDA~IYtmu8FbNS z`v0SeFoi;G?O6e?|8Hj|kEUSvl~qsA#|rP#s2 zscB=r(hPUsRfB^S~i}Ic8)v=xr)W?VlY#``}C`h)eGJ>x0)#26L4} z`asxYCh3!RM#}?PM#s`uk(_XE$zF*h5b_zmJ2!z)gLDt~O?d{ynd~1T&4Chsg7br` zZl}Zt^UmO$(^I${JVd;@(f&AS)Vx2AgL10IJ1rEkY&w*EpAF6PQd(@w z8cd4yqS;c!)&&!;8lN~U}{oL@R!-mbo!Ru*!Z^mNv0z`;zZ9+(^i3% zV@uEOjU_M-^6QNE_U$z z;MPV1b~sm~ilFpvZPWA*q1`9X9XmD{u26e-N4nR3hz0HP=!!TJaJ>3-4u@}t^Jl%; zpH(ko6z#1a#%Cqj5dA7DDz3KIrCQi4eZBb4+z~tWECFd#)wOz0{92#k0meU{KHC4_ zkbGj9JUK-|X*_83w2Bf4rD!C-5JJvnhJOzOH0%uQXLxJlnR*6h5=t;5F-ym8;8p;h zV>bYtcY1qd zf#&ErAENUecJ6SPd*>)y>riKecDeGWz1#)H3Ct$`OHMhL0f>8F4-fwTdsK<40|Ek8#|+M${WtpJz&4J`c=004a+UVl>$LmkMHau5iD;#b$s~3j$H6Qa zzdd*Ks}7GVdNA*8=Wj4T^mtj%lbK%Rc|+g;*Yb^yPYa`}io2&BJH*bqOwDzie-+ZJ zxXyPO*&kg4YfPBNGRLr1>G)CX15Yw1ZcPp254h#IYVDm}0cAGp%ul&mRrDGzhj{!; z%6!Mc%$?5d8$B&1VIPT>j+5?e3w>q!(xz#{1LNTaV?q-V*wOW#WXfL$i7QTRVqP-F z{?7eL2ONwgxXyrQNRaCcp%#Ofwh?XfI~k`GhJz#KsoiX+tNa%uVHxU30PujwalL@UNan_G~){|YArLo4BAWFF1;riL- zKICP4RAYP$!0DG=RC>OocCw^+ErE5jkyyJ;!-sh7;EWb$1(x%El${DrscLl&fVMz zu)4kKKfz`%%9RjoK}T2i3QgcHYhNZdT8(+I8F13L*OGLMDcb7f{yJ<9VuL>zF=yme z&{~lT^82N$w#%(KWtG{$>iu#{l{_SD*50p$m~(~EShjn{B9}7fJ0VTem6Cp7Y@l?~ z_rH7)JPjq?5d<9Z))Omwfl?^t(@zw$h%w0>6ewj65JHk=@>X< zPrYv}hR1=4eo+7>MP28uAYlT#4KUe1 z-S$s8YYBj$uT?U>1rxm51=L>DGg^%qa_SuRhy+UF<>&EwO1b-Q(lL*@)Sr>olaiVm z5o|{1D7W{yr1HO*#lI);Ln-$P0KZkWVZ8t;0Wn$k*ku|JbcEhE3qUSxj4zC*uYO%{ z$%kmfYJ!D6L3G8!<PyTx zu{IqtI7VK~FM|&LC!{%WcRk&HWA!f1v77B! z(0Ytc$I_`@tRE72Lqd0M^6WYQJLtU?zCE}#6@Ux5-&)lQmBi#cSf3zygV;%$QX zcZ06^)&Pp(96}*^3E!@uwnM07iPGgN&511Ru;ZNY#aFKa%I5vr-LW-aThdLbdiuzj zD;(#unvVIh*c>N_%3|LP_bnqElHccg=p1-`dY2OJJ5GSp%<+1ESs`R=+V+oKdJ49& z0xIUG4#Wy(y+gZlCcI4pkw-4?h7cCv3E<-8c>mpWg<}u6-k`#c(_7~Q_ks3!_mnaY z+(W)HF022T`rNYrN8-j7flq1(9k_%`DE4LC+M0~*3buWN9-C;DZ~Y;T*~$}I#XkUd zWXJ9-(Y!g}9*9Qh7=+FIeBRr0XQTuIcf?MILqg*5Ik)-?l~N*GieahK;U~AnPG5hz zDDA;|U46pL(?Z$Vx2<4}qP7dm3RmAev-QP3>j06s&oq_<;gkwFU=bet{)W&s7K+)o zyVn*zHk)+M@1*9n`x@1;7?r_r8&fYgb_NxJu{_Uq#M(!!&^DV)>pQnqY3EOlIK9p4 zB;gDA%0^=^6tvb}I8>QNW)iyqIT%|SfQTM{w&UTsjqrD z+ufaeclHDxL~neo-%+|f*dl__;fN)b2x{t%t@Hl@m-^*UJm+L~yYIO989RUC$n0Aj zEZC3VX-`J;fSZ}$_b)8lQ+Fc4ap9g2_J)N=zj^?ro=%Z43XRQ6!=;G{4|w)Z0COF8>qcX0yc7S>Of%$)II-^oo$Nm+ZvuQZG*bf@c49*_RUk64%V zI7gK>HSq|nRhP1XCzJcsQbhUfgTjND)kW;R9|jcA!^87;A&F*p8{vjuWLAw8K3cr- zX}hoD+ZXG?&RTsCI2#MQzjk9FRcen{Dm+>wggthfhpgYcx&jy6u=6PbSn)tah&~%$|<4d@JJe# zfk<5FV!tEz8q8G1Hyhpo6;g>34XGqWcTPd1&?F36aiKKNihzjM_6 zDXGxY^m}nBZ~BLr<}(Mll_!Vusm8F?Os%gUvHJ6oaKbeza8tLo&HkGpjDoX(9L4Zk z2ln~obEC1UGFFo^I@ap`DPHB*I6d-%l`b5;T{!Io71!UvW23*#$B9>zx6oF`qn90h zI$pKS9+O=V&WU&U2x|g{33Rcd0m0Y;mw(ifjyV_&g9f$7J1$s|$kEic7u1MR2B%TJ zc2d8TNAf$7QW`j`Tg);g8q> zC(L36r)fEN+YcfjNUv>+25RxH-jm{-CEF%y>{BqOpc>+Q#K z1GGKms1-`O-@RFnkP(w@XjZg3bLV}eNvfI~p1vTpCo=&674~>J=F-W1Y_-rN&$%1= zgSz#y26oDEK6L}9^f@Z76I{?6P3qE##s`ykX=|{be}++dbW<4aliFCaPK>p<3b?2bH~9E<#A-KM3m`q zk2<;LlY!+wwEPAbJ|q3bjoceW-CD-DXR?3NCi`P-tZFM1s&IB4*AUk)jJ5A*L@U&n zPgpi~mmMaDY@S#yBj?$-DCR-b(A0IrzyP+WyDkj7&E7Sb1bxfLGwvjp+rI*m?PrGb ze$w5kPy#Bhs5o~P+{i>@W8+O+0dFW8MVjAO@W%Ow$FgaRgH4?7Jrqwh#`7tkEq~Vh zrxzfmoWZ*K`H^ul@;&2_k_}GEauozEbm!)0L4M50jC<6>i#as=#CoCgs-wlE`_U11 zR(ts13T{tNk5=MKVY^TN((H*Uz_{XJ1Jg8*Pj3}B^COC8SGV_3bE% z4-0Yc8aJ-!jdY3TInqM_)5JhA&hB^W?r9GH{xZ+2fxl6PeZUs%?;)4*_mJXBv+5h; zrm@HA285YSIpOT+ZUM7z|L7=4G5>CM!swBGOZU_jdb!pxKJN3}z%u|J?Y$h69p+g{ zpkLEZmvi?$;MWF#1CJgpcQSn!ZQ2N@eT_{=jSHwn#WMtZbiTaXs_DU zURrlA@7=k~PX^1mcxlUes>(J7ilL@u%Rin}7|tBrYLKp0z7E?C(4|!hf_wD#<2%Ou zZsp$)LU9*_n5U1*y?$hv*iLue-c4Qswy{Ejj$M+{2~*w3gCMMvJ9h?ZKj3t?pUPfd zJKw&iU#|)nFi2>qR-^Nup=Qz2Kl?h1$>;?y>$l}z{x8`68tMvxS7ZC_KRImcqlDje zWLV1~a;)+&_GCqbS`3GFXWp5u;nG^_9b~0M%O0sQ!k4r&G%j7Rm>du5voVgr@X7%v zz{MlVJoaAp4ph8TeeTJ#*1&zz#`)RCjPdz1JDV!}dVb26`ZHh?_wq(xs$+dn%!ue` zthGWur@!LRefneiFRO=ytF%Xm*=Wd%r!@Gi+F95G|h9VVR*WveqD}nLa3Y_ zU!ksdBrN}ypsKys{s}ss>$~EFwO4w}S-;b_f9~+TpmeqZDgj?%L7)m8&a`EZH)jeV zQ$$m!w|F2v|G}NTH+cD)9R$s{<&bY&onrpnIUWF%Q~SJ2yDIrFpG>e9?PdH3<)NvsMJTbZ^ZuC{<-I6Mfn%{+g7(d%ycFsb&h+*^`H*env5k7Yw)uL~ zlhO2R79f>tcMB7EkMWz`@wV_Kd*`@c)m*1cyybWttNm;tM@xc+J6T`^8s_KMXmIUj zgm+K88X4u7-53s2+_#oITq^V>6i^% zMLzfmKO$TBY`1=txUhis@8Enk$!jvTgqHE(@@xe5sGOtKIq-A`%2-qY1aC(4c+At0 zGR@Hkz#TyGEg$&nbHIRx5;FAB`^&mXA(X9#^IvwoU^O{Ylt(0J*@_S7KvXJ%+4P^b zO5-UF!!aF>;CEcV4nUoy-NF-zg*KVkncxWyi_wR0(%q3gYZA=^Nj{TaNcSr;D)FDU zhj%=O>I7_jSJV6-{zRyz&019#x6gi!WKd0neEcfBzV1qDr;=+C^HgPpIBR`5KdsS%&t|4r%I`j)eGCm@^aLs^`2Yw#WemN68uBsHP(0V!WQ z@Xtx`zh6G=?Wi~fRJ>;=325*5;=8-#P_UUoZ4d~KbGohZY^Q)>@LnXj6B!raE7jN+ z&pF8>V2EI)J)#uu3iU1yVwl)zLnk0-3#1Y3|?RPwhn&z@=v{$C~)(`PLGH`ABjB(7v7j4CO<1 zHsj}-mKa`m74J5%=A%!+?V2xR&g^Q=-zg5RMZEFOnPcp#vxz}m#qqzHfzJtPEa{XV z+3sWU9Ri=s5G{!R+FzTO^NgdhoOT@WmTx`4?%ZLGZ_)SFI20)WpVDiC?gwTNj&>6s z24GsxI88sPN->5gPKddXVDMFc{0c2-h&Ul7kj6LVDM+Mc+_-1lW=$j5{l!ym?9OdI zP+>BOj_fI=8u*5uU%#LC-JC?eqL^Lg^);7wuaPJ3i1{G2VK3Tn+&CbIfZp)m9uF!5>RWc=_jHB~lfr$xDb9Z;m zyR$oW-sRU-gIYj1!>txgXrZn5bbI%DB z0$$SES+4puiS9llPmEqH?6C>aG{YzR;m;4Si{hmAtWXB|Rzl+MUac_A03Vh<9A;#m zF{!+HRg|q0_Lb`tTV2RjOoRe`Oj4nNz(_D5V-fQZLSfEaAQYb17f;+hz@5$A?)wU- zWbQn?S~$O3j^Jael;r7t3%8G^{J31%8CpzAN6HIs?>+||1{suoFGxvxn4-S2=te)^l z3dSlKMD_PFj20~^37X&ypRJ#yhlvI9&_7V`%?!qUyokD-{pZwB?!$6671D)6zl1HL z9uiKbv4ln6*Z?3ijo3ufBTNkuEl;V?gf|py$4@P#6Y$6>q*d$R1J)#o<=D6 zxLHE@{V*}hlo+qFEjM((*rDZh0f=JUf|TG9>zM&};C^#4UBg+>Jlho@5SxxeXxm;K z%quK6CDPb@l~x{9$(`$T!q^&E#+>5pM;u-MF)3+Dkf61jb-h3whbV_o2JFww(pIiEd;O105j z6nz9YkT@M&H?~_(rW(uumEBWFu6aSFSRY3@UcmjPdTyefcm|K2R6)+};@Db%4|-u5 zn53fNf^q6x{$j}djQsF4*}c#B3^aJyE|7G|BuYub78#{cGg_ntE&NCHS^{&*{=xhS z45S{P^k|sZ#!vH}R^G^z;EtZ&o?jRH{@uHG$5;Ue8o4BU6B32p24rPt4xL!Lb?M2p zx|?WqJ#*mqelPqw*v7)1FT{PCHP#Zz9>cH7PFJmfBLtN)-f}VD;|@WXtAk?#%_tan|p!ZXaMU zn~lKu+CUHy31?K8dP=rNODWwF+TqScptsuLq%@Yd6v)1&z8Ip|02OLG@AM{9A5zJJ zAow%U3X9Zql;V03bD&KQ@ijawzOV)_RPN?yG?{;4tY#zjpFS-Esk5dO(c>r%Z1~n% zLZLhp=tO%3DO_g>1zgaKKh-^>u|j_S>vWapDV~@)C!Bd*2;BtDC?pZPB#@?I#Jo`( zq==VJZ*S88W@Y}^fKdVYIFi~0`9+)oe%zaK zVQ5E+sG2iyo5fkPx_RYgSX4CFURaB;0ILEgRU6=BK|wtHWFGMY&^MCL9$-Le#d`zK zil21dp54uMi<>1=?toYxy^)u4_A;P__i2om%NQcso0IsXW=|5_`50g3ZDAyEQR8o= z@uE~p+T8F*BW)W!WR_G{eR!4B*8E;{ekB_GynveufN}TfXsQdhNdw31W_`l#1N}fX zvd*QsF1!t)f+}vvG(b>>jLKHD^_bMX-iulV8$U=epCO9q2Oi*w(UdhB7(a3Q*c^k! zcXES%C??9-lPKCN6>>PcjaL|DjuM|#%F~V!n3ra7`~ZGoY>N5>u=5LQ({v=%$4o)6 zT6PNt_uh48%mo6`x?LJ$4x|&vs#YBVh?|Li+17RO*W3r3G@s5)mAxdjXDA`(Hl|a< z7!FHqD4!cnS)8~`4tdDoOlE3{JXz@P(?9@%*VEX0#KVBxaXU(Uk-+QPUtkd~O&%$~ zU`gO+9s`g!pX`T9-IFZQ?@$IdfHn0qvt0eOw5t%az}SY>o8x9g?lPDiXK5 zhi5~gN$u%S8eD;u`eW8wJgBJFLi<8Q({$hd7;I~7KCnA@f1nyKO3=#}eFtvDnOz;D zNwusXJc5LbuQNI0LKHJ4?Oj)<@dP?J3W&(>cA?$Wu7Uob`}e{pwJNrWNn?j*g*AyF zk&c_a2=bh#KZKg|#SfezCB_PBt4OI`ordJ8&@jnqQW3f=!vfRigzwn8k|;Rs+AgV6 z=(_(53C}4*Nh3}|^}_o);+TcC#JRLr+xbW&$8^QRxw|!T(NxMSSvlagQJl+T&|An~ zb`(Mrg^q0~NqW`N#NdO_2$=)06c*!vUoiks9fNm%fos(;>0h&5VexDrIJ;(O6>;E_ z*V5&oX!5Q?=j7kV2%PiC@O**e%=B-)VIKvXsOG8h2szDO+ke(lE{ zs~szt=g}t@zJiqi%7xV42$~V>!O0xCQ^T0z8ADN6M-FAM67$60-w?cXOltMV@SiB|+- zgEeWt5H0MbMLS~<^ij1bgAc3!hKw8%DQGY=1y_X!0#FQ5@ZIUUJHZmyZI)PMxnl*K zw+XzOk3iis#NLp6%Y+tWh!h>21#xfM?+0!>;W1#LHq97nM7L3mQNiEh8piN=`>!U> zGn$e}fJg5N?bqi~)e^`fG%gAuP)+MXRqox5JV>ClY8aJ%U)|WIP*GTEPomM$n@1US z&uH<}gq6~N-p*WD&_RIr?(Fo8frARWE3r4jS%L-I1y^Y~gjiVLB z%qlj5AC5_}9=@IP3yF*VQx2!O50NPDYr|GN7w(73UdrIsevjo)Jz6KG0SA`bFOQ}Q zpF_=jjR7IfI3`?^yuAbO>Sg~z#zKNa4Z>+lXpbK+RGuQi)-`>g)c|iG09G5Ua)&y8 z2OobYgOJ%@^#R7@x!zDQ71XUO@$iZlqH&rhdBJ!ho7sLRNmBcD8d;9uygk#+O>E+v zg@|$n#qu)MmCp+Bv-R25XgFxTHGOWlSHyWu=GdcC%Rk|?V7B6gOBw6@3~A@nuJ2Hb zGeLK5<4M=-E%2((Zgowi@;CGtMB}va?caZaV?4JMZo_0IYJYW$71Bd>kJkGel3R91 ztqT-~BV9JdE&PtI=X&lvJZ2c`F2`88`|K9Zm~?KiUm*F_6?lS=aVZtRZL(2VZM#~* zKi3I*#Da;LD?f+}0ZSo)sME{)m4F8W8%P#vaaK$Qn>w7a0-G`f)RiL(H+m1%>6omN zUI~OrkdUC4K5?rY&G`4)>x(pbo=5%&HLY)~i?xG|ugBN@M^7&r)*X_TmHr?bff@^! zFojiy-srVGX7w9`x((fu{kcAY#~yIU*Jc1;p;f!q)5H!6xqWBA9qB*Zg06I1;q_6* z0WM9&>2j3o9`QYxuTG<*#WMArlqO(k<5KWv2Y02?+Nt-=hH+8O~Hg?q1?hV(G zCvCBl$k88`O_SNwS_qH5x{YDfwgNC<9@H|GI~U9+p{w2}Wc}J2BiedPZ_^|axkG(W zkLYnB@9C1XaZ$BykxwL;9vFeCL><-jr=j|&{=TnN$v&sQMJNhDd0ka>?J+OUY? zgii5~;Hz_enip2hvjk=K;|**z%v(GU!7a|*A88BIq=IKmn0QMwc!SqL=etf{ra%wl zbim@oFK3Zrw-i5s@REKO7`26A#Yd<*-;4&68Kf(-qR~`@nS@DwPmrk_8yl1HSj-$6 z8hVzkSa?ZuALJJOFq&X_grZbIjElj&af6ocXQS&!sHgheH}cx2c{<RR;V zVj*%zJs&y4OOH@FVN?j0ann4XYTiCe4mEQwpQ9_ryrA7c*veEud!pf@EOoTw+z2a$ z@taC=FLcD%QPj-apkYSbN~3BXYBK7^!ndJ_W{tDV|OiNpY&ja4+a5Gvd+UL0Va*IYDvJ6Cx`4* z3Oo*Xp!Dwx%Q*QD=7APG*fjkz4``<>688Q!HKdhc2-ezXr2ti9+CF|-Y z=p+D97-ViE_|%eyN;GIPm%ke09)0L8E_#0b98i&aCU>-l*A`7>Pa6(a8g(uZR@!uL zMz}aCMruhLJ}f8eQr`TQ9`Fx|j+o~t9w+O8OPIycrsRcB{<3r4-9G_7-k%lLwpXu3 z50XjD&1jETLU9kN^@>oo)1qu|QtkhI)jI!q#(nPHc4`-Ay!;1g+bqP!9YAHb{O>kU3 zx~;}&m`iAgH56u^UPS?d)`4ApH!h@3k3V(OEbhFKZy1p+@_08Irwg(Mr!t=K?vs!4 z-aJ9L6E84Ago;rWlbw`wKWt-m0`NjZ@;Z z9wg$jkX1qa@+TP@S$EVgiGtm5+Akz*A)S38tN43Q(RyfR6z}S>Z^UYY&c8SYjX)_} zTsH0sBqfiMM=;=YL*%sTaUshi0jPqc`p18?n-)%@`5+3E9q_soeHg>XgTDA<;8BE_ z$!g)^N>J-_F#2lyzSz8Ypr9*0WsBpuI-wVGNqD2a(MUrSZ*H0p^LR*vHO~3y| zeZjH$b?wWvB=h{YTI3-^gZIE#AOAfG>*%s+P2zEMLADojYcT1!h~>Xm45t99+tMFp z86YsXn?i_o`BtIWr#GAVNTC=?nveR&Q=f81SobMB1+a_LRKGYhTdm$5>p$+jbUiW20C_bAE7}l zQ>q#*av96oL9%>@*jcnbakcORXAJ`uH_lvHnt=?<2`23d31U1$m-IyYz1b6O({h6B|F`&ahYb>;I8% z`$#KJCl2Zf6ncr|9J6N@Sp1G#YWP+vA61}k81e#VSmt1qxJWrhrfq-J200@A!~c9= z(|go>h5+4#x7^UBxHX$4mVUQvmNKjGOpDGWFV{MeDa7pS>x*%~f}s%UAP!sb+Z{-( z(QbFn+`3? z8YlkwXyj14q|ctZa6FmY+p#IiJedgNy03i}Uu#n`Th;8!Hj>19tne*5Mt>*rM>{s5 zJ#~-%@CPgXpl+MF*|v0>_GO_cY0PHV4LYw6X!7jKplc;ZebI=9HNGd!y-??O|1wAJ zPJ6ZHdX&z)s3183*CGnz~J&;;f9KN=nG9H zlQNG93d#xCctVaV2(Vby0_GFwya!ON-oRg~8sAd6YV@PvFnqj~+%iN?5{l|miGwb; zi*^e}kqdL{eExCd?ph1i444r4srygqRe(fB6N_JyU4tp{{9iZw3{bWO&x!HA93W@h z*t1vgrYl_M9tVXIX2PqeS)7N^H{t*i+jR>rrjbyxjp8enWkvLnu4D8;uvh_eH_+e^ z%R3|cdY_20JzuY4Km(<8syxP4YwItXF^O7mfhg7vS@yMP3?Cu8oXyyRx4htzE}aS` z)Jgkx3C5|s>9T%ePv^YCJ5}O=5u@vgWsJZW2R@bnLWP;Pnys-~PTW})IN2inWVvKy6Fub zxMQfeHT~NX2CZ)C1_-L#_u!njJw6B)*z^i2kq8Db?ftZqcuE>@6D){hN(2#!;tR*- z0|sc})oO!#SXzHbENijAiLxHYcFB<62Wow^1+6wbKL>5$F!FWImxOmu;=5FMOo$8L znC7FD2IGuwomH;viz)o~OW|#XCL}zps7ufya2edr@gvBJnEgKOW>0wp92*yg3x7sn zv3dyZ)ducrpLvfUMNVWTXcOMHvL9HLyaU{mKm@@~{%G1NL4(4%qbmvGUOFxw+%so@ zc|TpgN(6@6TR;VIl#tRwW`e7B;L`qm^7?jU>yO?;sV{?oPrwvFl~@j;4(paET4p-J zXL;z6b-)wDU915>b;pxyn2Qf?7~T;g19!d=vNjm(w1h3z>x>cOqG;(?KknWpS^!b+ zLON(UJn6ANp&h}C&p#r9Iw2D(*jz$b!Q-3zXPR zA$|f>MVOeI9K3r=h#3jHyL0$v6wSqy-#6&QE%<$u3^NiF%FR&N{s)@=VPdZ{q}KrE zV5(rox(d%`j!V#R6_Z2hDTTP)%XCZ$mSsekXZ3BDJkLL2VV}7lf_im?D?YDf@Lq@v zmIao-s&+EShhOJN(?>j@CTNcxht!z=L(gG4{WOe_|Mx{N!)8WW6pQ3QU=asFuJJ-R z*2tEif%KsjwO~vAYC)h}J@62c-avvj7O!?myZ{0=g#*{v!G%}v5e#tYmJnc!uNQhM zYl6w0B6!aHHIO$iYA)Y)oi8r&BM+iW=;080GneF#RMUc!>lLjhU@=?07+ z)&N$-;~3t11tnY^Fj-#-)QFLsCAL+d2MU5XnV@M(fD>;tB_s+1)`NFuo81(m`S-Z* z!?jxyx~~C-cdn{^@eLYdpsi@P9J+V!UhR7!=14>$Nak0YD7#gClEH1*Ps4Lh=(Ku> zw_2Q%CRfQd^Jj=YW^wlZHn$v`47|n<;{o14?VW~ZjoP4>&-~{tpi{vNU#|?#YqIwl z6tWXjiI=&->gw&{X21G1&+9Awd*r&x^#2bdgh3@A030Uc#p~hOtUvxbN_F1{A$nyf z;k)iC!RCA+aTuq9ZUh`Zg8!hiBuT%e&r$C|FuXJlbG~KJoUvAdrY+uN@n6F#5u#Nd z1b?6%vF$SB@Q6`rLUATJ3FeU6X*!bRD@1%i2w*9lM^@r1KYbNfl zRu##~^Y5`0-WM!egXtQ>*v6dy%?v$(Xg$(3Q$p(yq0W|^B-{*16P>dc*mJm&oB#mx zP;tJCUkjs69{t-lkKDBSGPgC5YDEodrT-ug=q z_SxbyKF;?y-gk*B5l`ZPIMtA)>Gg3dSGhsHO_EfFxAIF2*h&_v0a zoxd6i9|5`73QQNY=3H!DX`4)#zkSv9rU~t(*r%rtX%PF~$%&dR`>k!3JHWd_3W_&X z0XG01?6-M?Q-XLjfBTFFIG0RQcW$R*0C+wIwAPAZ|M?2SYCPcJW10Knzhue%n#OgS z|8;~b0K3h$tuD~YC8RZyv?T|_En32WDGjX4= z&kxV!t^DzS?o208D)-5w*N+0ZP2nG&UZ%#YnBuVstp2>8-{_^}t+6*CM>-FmLrCnF zQfm=uzDLL$6tNj1BwitA8<3g>e(PIXJwNts!G(Ge#tmU=2Hfrd@X~N_==uJ?JxN1K z2l{Y#mYJ||76&;dq&e&Bj(s+GvOARz^ZmV$cR+`wT{5v%9Ecg0>!^Ao(WaN2rYLB8 z6WAYdQv@*ofC-5PSxYAU1c?l@n~~e#j{!+ve>8GGxrH?L zHMD|z3jYSmJJcnc25izN^X_KmEe)a6hIO|05Z;d(DAarpL5(n%v-cw30yG0#`T5Lo zJW5YQ;TnXyBZm?~0rc*lzz1kyqIYX}8FwQ97u|;|FqlLC6}0*Sr05qQBD0HKbHyO> zagrzg&YM|FqOJ`RnhvRNeIKA=dxKcFSn!2xTDqI$e^qCxJt^&QJ_cVfxbb_k*8nE| zU`-MqAC)0U(y(agj#;t0fH$c@!&r; znz`|vT!km@A0=VznLe6eC=I@OTln){!1L|D(=vVFcp*R?kS7?&3Xi~G6|4P{PKNCe z0dDW#&qn-rA*(JSGL$NCPW>x`ahOB@3cK1C8(ajR ze%MkT`*kea=r{PO8^Aki626Htp}-T2SKQ_B$RGxzCAlyULzken9NKV#iJx4dY20`EsUrR&M$ZKBQluMh*kt3WScCUjK- zG^mD89%S>#xLpDby^6a4&1?TJfYJr>m#-3r56W!Mp8(1TX=!C+K~mW*?6 z`=xvBUU65*}PaGRzCydM@mo&mo*1&|It@6h_Mt-3(429T4` zjUfI9!@LzlzO|skfLPpMWRv`TKZ#<*S71q`u=whH8BEP54(~l+v^s6E#CNp{;(HeY zu0_Of{F_DKDGtdY)+WSOqkRN9mSNqulh_Q@9WGTOx;iX9fwZJX&mrc-%3f?_P2f4tD@Y0*JvUruge@ zm&8Xa@jg%oDwDrPTut;hJm3L}!kfroyfB|1M6LojhA-Xl|2ZftL1R1ubn3eTeCBIC zJ?(s4c7H9nKx?$=4v`0X$YTX~aB?iaLlHX554ZOV{|?Vv)w}ty2pDK6nLZp2!#~Sm z5dG*NR7R#@+8e%#gc}3hH~@`o?p0EHhmvHq%PrXa4#%eB&p)}85b#g+gsh+)l7Na- z&u_PQ6}}5W=lK1Gk}*rzqGZ5bVC${8URdyLJPOtVs<#|e4G{eX2^zGN`+__EfS2YV zB%Q>Qn3iAIa2HRK!n*U6kfsU;<}{)zWhEv`lRf5AZlO6nYL`5SvTKwBUOV;LNL(L=2(B*&p8#KRsEw@z5?X z!~g_eV4-mCln^M<4dS*ip(`C%2i*c%rs$Dcc*qPn@{~9^MG)Sw3(N_|N{g}?)_jTD zxy=x0Vf_3d66PLn675@CKH<<1=zVB~KiIpmzo?l> z8>R)csxi>?z%G)C{pWjOds$$sa5aBH`xM^s2u+3jlX>vqBUf6P^8BO>5Q{K?BKRZ$ z1pQ+89LPuDnFC>DTpv0sV8af92pOOMa^#6abdfd`X`$?{TXKD%%QoSQXM51x}g%NUDqIpSAoVr1EnQ zL2b)0Rb#V(zP*8jf!K7-rl1g`nstkV{ybLuxa;nZPiF30?R3}NQWab0(GZoFwx`YU z%nfb#mo{H^EKerRD1Yp0n~iJ=y8qVd&m37YdGrTy4WKtob;=uiCTSEe9h3DF{mwgw;^ zrjp1Hwa0nhDX3Tu2_Pb~@rWKWOe4_nU!8mDB7;toltu+8fQFAhK$d>!BvA^kq*w^g z*J?wso5uLD@2@c3Mu1r{`~F!)kkC0FpKrbjwK6+87Ln5lOk7xD#}O{iHADA+HI+fI zwJ_pI__gdXd>=ZS5U?|}6lK7}SAPpq%PCI-1_aGt^%nzP^H^ z45170>A2$G4%Et@58Nxn*fChG8j{gXUm7*`ED%25@(`5TG``9szoYfc|MFW;7Ym+h zTRI)UU$;&qo+NNskod0rhL^<7!axf^|KOgE(8UxcSGw@$jPK3q>FFWhmMYhZWYo|a z{#jbq)^ZGspa#{Jb%R|2_t#Vxqs5+@occ>hyo0eznwEL^632V&Ly zf>n7w)Aqk!lES(Qi&{Z(hh59Ua}|N7A;Szy4-@jSgEHTXpDs2IVM#`&mGvv!dEts*)cTV(0~XcMVfsYv?JOwjq{zU@zo# zvKVin4cX&4OKFs@5tqjZyjcqB8@a|tSOkp&`O2J>g+{W*+it({Bj<@HqLeC$btzz0 zDIIWBJ+Ro9h#v@noNg>hUc4fenqu&(t9oc?=mlI`B`>j1 zRSX^MQ!^(YxMl55~nA_c6a}|wF$qD_Cn>f{XSv% z3ydv;Cb50{b_4*`FQa2{?-uRazXJO}Lt=azd?E^C2GBSdsIlC$KQZu8lryEN?H=wk zqj4ta82qF0^iT=03iLduan6!4=;vpv|HK@foEYUC~Ww9E<3*4Tk<%zcE?Y6Zg1Xpa7pz+4~iu_gq@e}?#u?DOBM(Sdqw>Q&PV1Hsr z*?gnR8cDdZ7?4gR(}WrG$OmP=vOsc`K(p~kIV8CEhq3d_DU{(X&(Gr+6d-2B) zG=7;Tf_hzeT8G7}-*bv=QN*%&B)m6Hgo7JsyyEy2@xhwhfI`wo8tW3_U?B+xw!_Gx z19O(3HrwCWn}mE!#>7i9UITj!m7ifo^`s2v#iP#I+TPSYm?__UMrMSaeHwQ52c!^G z3?BowY_$*Bau_ovl(CxNChUWY1i-Du-9)^24OjE{wqGeJcZ(nc^W}>FNf`|0TC0@q zF@oEG8IMuo{{8OQ|HOF^%!wlwOU<`YKw8i^et3rjRv>AOhmadln${MoZVFRq|YaFm5^4hc=t{0qezWZ>_Oz%Q9S zVj(!^93ok(u&ZMvGIalt%9x4mdrh&SD>E(v;1Xr;Tca2{xtfK3gDiKnZBDRch(yf< zBxXFEkWP!(&++#5mhn@k*ma)PNlHW3HIOpchj|C&*%=zr&@L-vxfFGBYx)-ONNC69 zj8yBXwj!l69q$$kpd34Je;-J>-@@*s$<6j9J)}g@w?9m=Ki?qb{+LHT)zr@^Z*Q^ur$em5P~7$FzXpIN5}MLt;}on%YMy%xhkAbNIFhhpvlPUt^;) zu>I6D%+mXQ5Zo$^O=@8tF=_gkiDKxT$$xQdAfXOxxIjcg=#mK=b7FggF*8Ygk{fH^ z;SC~u-dk6+fJgfB5~j9*v0&?S({xT7yKDfaeR=p=-4>;qGN@p-{FStB90}#2@t~{*(v_E_Ieu^Tu zeo*fV%3XPP?EGRhtv`=-3Cxbf*h4?rJk6jDZ8OjHo~dg5jQoeW|Nce&;Kc zoBYMBFaFSQ2K)g-;AuwZGaD%>uT`{95f#(W&U92PZzsJv$opl#Ov*_b_G721RBQ#k zOCNGEY)+_B>VLW-?|Ao)!Ac5Q%x{pButH4ZwQsA{m!HTRWe4@z{vpc+C8>l~Ly(bypM`0&! zhGlWI?yXkXs!cf|Hm?EN=vdxCj_|nwM8#}UD=?l|L&W$JA%mc*d$%Y_9-K+3Q*ln| zIOCjf(%?)8Su-qFfinOgmwy0ZbW{jHF=nt%-vR4?C}rwI1912woWH5E)TG*7P6;7x z)CYDAu1$lZLRJiEQj8QFGge*7O|84EB$7pw8tb4jRTx-gfl>mXrdV!s3jrjOlOo{Ayk2I%HD za5Mooz5|HW5%o)Is8`Nofs7>DW6w_ogQ!3^tKAHT7!UrGXih?xg_wp8QXOXa_=8z0 z<@-qS#GJJ=$@1S&cHcoI^TU zt*_8TjRYmp9CViVEoROxb^HrlfXt9U3*W0(w6ZV zSkV-RZ28y+n8#d>hP?WvR;fAi0A)SQ!>?0D#M4@V%qk`US9o+th(EWv58EG1E`tG# zkZ-1j{2`WftQoJx}#UdYZ zyuxWvknYM;o{qGp?+VFk=5sZO-st?Q!`YaD-58{GRbn1&PKAt8Y;ith_gzl0y z;eF6>78q!J4&iwdY1@w*B;0)wa3VST=DW{~9dgHp*FjG(be6{dtR2JwS6Gj7-pWAx zAwZvZHO>Uhrgn3~PNrZvHu+1SGl_mcgT^P|ib)J>=^R8?C4kzVfNk!dDtUT@(ty?L z2`+Nu&~TcM&uSDMp+m(@)~V@CEB}l>Ed!*{vn#-4xA5@NS)i`p>e@-rf$U-uMY{>t z$?lY0kW|Zg7+2zs3D&Va>m`9;h5mfKcYB#y|L2z|^5?qzC$ zNj>hIxJ4ZMt~KHZ8a@Y#GL}7+BHbRiB7&jcGuz5s0pS1P>_$t8uqf|$Ak^(0v}u1PI~ZT+RdQM9iMus z_2>y97h2sfUQ4iexyD%0Yv`f}Nhz(%tvO)8GyAkwATgHyTgvAG$dlKn2KV?q`R5b1@IHCIT=-~MAW588|i=!2XlLSq zF5$4{1T;B>O88|dXm@TmARVCHp~N=&K$QSI@0^LyHUvCg?lS5UXgsn~3%bx2E0WN$ zKU)Lo{?`o31}0s35{Y@$(MlHq35oI)+69D!{?B%hWLlq=IZ`XBQOJ)YVcxI_Q``QA zC}0W+2 zU~-#2zIZx1>{+j=3ov5CmZNl_(GGY_2VDOes9}{gr?qL1Sc&ovqS`mTR!G4vSosDV z3FvmJ2JpA@9Q2Cx0j{z>LBl+**xkpLELmcCayoE@H6GL1^~+u^Oe{z?lGIC#hVbZF zpB6$q-unC5w?cY-6Nvj6CB#X!^$440%~=mEr@-+7yg2Xk;Q&prhJqcjQ0jb<4}!F$ z9?yb(ZeQ@4d~IAX$D%3+5Zn9hj*J`NA_xJZt6iXoHhe9tXtqO=TqZOrsyjwcpavYV;=um8$pNqrA@qGD^Q^;F zzqx4xj5G zJ4`?LP%irf?W!YveNjvep15bG|l126dM`8GSk>@4ycMXn&XJEG4n)CX2(UT># zF;jr|V(LV1s28W-{By$AYJ3Zq=pNv<%5`l2)y-(dQOC;9k{{MhkGQ9h3C8%K*~U}z zVcQ>Gzl)vIWXcX|)KDks_r3KZP?EA59D>-f-&}}HHrt)ta+yre$k3XPR5wUtm74a^ zg|R)RAUEi3+z%H%0(H~A7BrD*b@=cIGFmk@T&k8ou*1` z4~a}wbnRU`7CFEe9%Xco#7rSmk53@CzbMWQ3aGso7QLLtmX`cwEg?J4yru@SX9KGa znZ8UD$f$#{^39#|a|Ep9jerT;%cL*79{cm-2PwV1a>mIhC1-GP4W#g_yKDavn7zbk zX|^Hqm(@P{+QLE7QhP|$wBiK>q-OZ2`zp6nKy$i>Gr|jU{DRQ+pz&1Mh zk$NaX?n`iYBZqBBU`H-T!DF0TDS2pii?;o_M@G`aT0-%S*D=&>*V~W@a?g;elm#7p z>z`fH&GnzKRu524Ece1;xDbCR?b}bBu(<5wM0ZX9ll|3Cr33lLn>k% zgA4;$_L~LYe7Xr5I=pFd>xr1ri5R~LTm8|kR{j;|Mg7OoIu>oHvSK!PaSB420vAr? ze}laP6q-CT(!kDO#s>=$E7-ZpzINT%HT7wsZY80v!Yxoi+HxD3rQ}!;Frue4q@L{y;Q= zZi9e{kUDt%hlJSrip9bfZ!BR24S}AG_4W0hHWEKp&`+8(U39d4=Epu(Fs*xseOaurhf1Njs%#mlu4^6pUIC6H5_hOoLjY0GW}f(=;!j`> zjO%F71JSt#J8M`pMIHc6<;1WM2(O-mon3m753Ti`ylOBD)De(`tdkbeZ(DpK!w)xr z=%ektSzk8*y0^q=E;PiRIXsHshkfWS_nolC+o9YCGtgZ94sV_d{o(xc9~*TelE_&J z%a>z6mAt-2iM^6mS`*}Kjb+im;hubPkL%cI%Q{g9_&C7yOpLN(h--13_rWCy6d}08 zUnGNZcKvykti>27@D_vb#lFVsJ*#G6d2(zIdi@;?uB^okXxi(gcJeIgaKy_)Q2XrN zZsg^5k~M|v>IQ#Z~wymL!c;F*@;OKr3G@bX_X zfawHz!Nm+i_~BEL41^DOh;VE9SqMhJ+=NBmwXXvJ;T`~#4H+b5Oj_8gwfj-au=D$0*cjBtFUt; z16s&$up3~rfpGwJ_|=Vrqw)#-CG5xTI!v$HpxiGgI+^HzRD&wBn+*N>gn?(2`KgixT}y*8NZEUXhrpcB34b9Ng`c91tlsWxz}=SAW6=3g>M#93syk-(pg zp_>8Y{;>ixuWxQ9z=uWm2>2V{>L8AY1~eOT5E0M}Zs;#G0jmwvihX%ewMexPC<{q8 zMyD>pG4bApOgeMTDGBCf0;~#5;fk4$P1`6JSSwQ&`IojCi1#=6DiQzBq58*$3;-qu zOos2!sr)9^sjgAvWmjjA$g@Cm1Rst%e@;Dv5nxgi-JKZc|7=`r{>JiS(>p zB-nm_qw$a$5`YHpCSHLwHb=Q%gRZItL`GWL>{cWM`9~Dl`uxNYlAeQv5)}nKyn|j6 zp;^5VE2C;p!t-!5SeA-s)qNHMxZ$>|V#trp#F{V&KaV#tqR|wxJnl9D_R6EK!CVFqh9>|i{!2^)ch`|1&|x$Y9pIkKp*u}? zclTv6C3o+1SRF!f-0z}aO`(2u7x6>R`}TJ#@I&^&>+;@8*|ZjV~ael~8b? z2vAgNt*0)=ZKr%xbgSp#JJ5oXo9vM7@)@P9i)f++Za+#C2kxAbW6IFFW^*7h7QD}0 zXyRV0()qUMMDQsZo__{}`pu43`<$%yxwyHR7o*d$<6^;VtWX-tbwl7jkL%OgO+A&< z)y)NRA1oGVPYq=ZC`1ClLYw3hr$Fm}puKqi{y)}ZPt#&ht12=B;-L9J0RV>!ah}C}dNHv(j#61PcS32`r`tWixTJ z8~$e?(*>nsn{NSCVjq0=losKQ*t6G~RDdt=C?vX3CAP2!V$G3m;4GF1Mp?4H5cqwy zo3ZcHIZ<6aN$v60uzeI$g-Ukv@Pm{<-^GE~))Nzmq%?5{tdyMuQ6i z(N3Lphy|zz>n8$N>hD`$u&oLbJv@P>oCK1*#c4SF;;e>wZvzr*4Pk>1=a{cxk#!Jw zQu{nzcZuS0I4L?N|Cga)6d-N(tA_?vQM?JCXc3GK30U5u38Rbr9b8m@Sp0wESpcxX zi>iV>e+pi08`{ZJ7Yp<`=;%dB!ZbFgjiCpdAr_u><9+zce!MTQZwb5%!lSUfob2qA zkkxl>0(~!G4vd7r-sNs2c@I2T?7GF>JDeQ|S!;`Hfcf0_8>^s1%L7-$ugR#i4sZ@F zNFcJ*_iG9i)p?R<(1kT85dePhZ(^hAViHHK>b_2N@Jif_6Bw zJ#4+)2a0M~dV6;{0k;wCR4p?66lrBHsDon#jaKh~0owy?M{gZ;RKT$MWlwBq5DR$#s@eonB6J0V$>R+ms{mbr^x-&;dNnah(GIQM4?$Cl`(I>rIRX7N z?PElcJo6M#Ls%G?8&lxY5Tyq_iN}_q=kvF?sf*d3=UZ?7IR?)315fBi0%&_Ks5#6M zfXwdi+*j<(7I{KY8Bqdd7ci;>#U?z5TdfH%g?mha__Rg<05Sy!fF6uBaACBtELhRb zCA*U`(1tmZug3H6$LK)lx<`Iz=>N3!f-c>oj9#=TBmXfJo?t!efU zC4DH%{M61}9vb09AuK7M!f%hGz~koOs!rT(fHhSzqwG6Zeo|4+rYx62_^k=W|79JC ztRkOK69tUU*^`8i`|uKGQYZ)8>EnI6`l%pW1&f-|5YzJ#Cezv3&|NNa%4p2f- z>CS97?#o*O}Sr>qLUfSz2cK5C$yiUL)$vU~ob3QeT! zXVDrW<4J0}V!kur8ngngMoe^M{ZR$7Mz5L$opa>oHQ$dXCBcXm?X^24Uo>TsOG&O; z{0axI4@@sa($I|3MSpa!?BM1QVoBoD2l3FiC#o`@biaW5rvp{YCd?8aO4SB&&}G-d zWWr}+08|cvX+56fJ_2_5{L!1x27NdiCCtQ=9s?}^xu6hW~T=&xGElN5>ytpdZ&(oc-uuCLWy1$O*tw?I$@hiP21Dxp)%-~`Cim7J#P{Z zCO6d2ehZ0mFsK{vsd~p^jN13-vyhv1)r|zZTwz}l(^Cc3l(EVZJOUKT91S4=*uGGO zgA#b}kwS5}*T09mxa%h}{vt;@aloVjMz=dPg7dB4Qge{;PsQGp^Ik%!p#<8_k;Opn zCZiMr{lulfoTvANpo=NWwpat)l7bbM0Ce+8tH}SrO>`2GrBc|`up4_QgFwCe$-olU zbrVc9{P;6H@DN3i{;UiN1_e@I<|6l|DxL(#);XR;=1v`5056hD7Bjzi6`jiO1?m6^ zWw?F87DQ$t9J8wm^?U*-{!z{Es5y$#y6}0Tf559k{L4WUXscez-p$$HaW3Q-y%S9Y z95^o%W$mkR5B>|A*1~xV8+wpdh0yD?D)QMY+z(F$d$}VFSh+DT<`81!eQ!Hzi0V>E zP?E4A3phDbP`tbuLB~j51_r=KoI{barlPc5;4fh8W1?e}P*+GkV1SZXuBL1~hky$B()gxySv@~p}%;q`) z)kaWK9(QCeM(v5&lijui7#p~e!R}a%Kc{v#*NxPGJ;Xj7rbqZ={*O3-%Wk_(I`b^0 z!OYr(z!@3+$XGuC*(=@wLlr!cjDHG=){o8D=`mA#$&Abc`=r^^kh^7Vxq2LqL3bhS z5+Vx#A-;punX?RWI;S_e>uXqpPzv~uI^jNEb7Ogo%Qh~vgJsdG4-IZ-JI8- z;6seGvPGyD8^aI3f{b0?>hh1kCx6YpgL}o3XZvwvua***=e_qBq&A4Ds^O1mb?)XY z??7bxB}Q#79NDjM2EK@vAsTjVznLxx_{rXW5g=<3x+K_ufT0kvko4uHO4mT)2#C_x z_u-F^T)^~NFYH}UqGb}Obv(bB$McC6npl#$$A>6bh_g7X zP>~%ia|Cj_kf#hj7ksY;X8*??_kR4_9q4{P`-?6KM+rGa9A9-P7y&~Neuys2&0{zs zk!MYSdycBG^Wo}n94m$xdi2_&z ztCzBhnw%c{<})o0Wl9^nca&~m zXt)pZk37KSoo~SbO8y1}`e)Iyzd(fV;FTGcHt;}oJze*b0O5R7TPyodv z)btXB&6`gw}K2$X*qHdA|a=OkMYv0J+!z-QwYWz!$T>H;|gB_?{ zRCGM8|Kc$^7)qcCnqQ8FHna*2w}3yC6j_B zfV;6f&-nRYE&wW2e?5(21b?@OA3a8vrU3L%%H?M94?!(z1WF`fR+Gn zI2%0@553Hw2BVD?LOghc-)R(d`~aOV3Ul~ZF4S+H_LA9^@Kr1)Iz_fvP6KhQTYb1w z>l_KvR@iDcoz0JrZj{V?L#z3dR_#cSkOt#EyJhh^@QxUbkMP|*0=V#kfB!v&_)d&{ z>7y5Y#w7{WpY((2lEzA48_e?Bq1z}AmX}$y$C|?}J4~-{ulZnlJWiWxh#?P!zME>PVp_Gk1< zpUdLcV>&@H9qbczx5bEG z?fGplC;Kj^fWtJI#a6c(v1rnAhS%5pc>D-I+ux!nnhu#_}hgUyIzUyCO>s!0dzRu*QB)m2DZ$Pku6OBL`&JWGDj z6VfF+m(V5;P$~2RMXZAYxKzJ$pp6+=)W^`@oO^Tn1j07mH=@BcCW_IuTSUKIC;7ou zuCfMuBY4G?lP!H9T^UX<4P`>44F$8TFQR#u;03O#g~H@uqTwB>_XzKS2pf1J_Y<@s zM|yP>41iZbhWIm=bjf-GvV344^(4ls!aa2Iv-XPUG(;UPd=oY@4r`VP9r zM!v;2k}x{^k6nA@_$#!HeKZl#3HGA~=yymDiu9&U{Exio_-I!lN(?5Ha9uehH_pf9 z<))klS&%r;DFKE>>t?}6rIDz+wg3(W#Kr#0z+1R~ZeuJNWL-w<_Ma3v)9d|1=?|`m zqT{?cqR)JYh=n&-KQ=&t1Mzf^t$ENR5wNo9(KzVb>uJYXgB?2v3SIOla#HAa(x$%pL zEObt>>G7qeMFW2w@M*}wO!SO1RAMuvJBNebnEnWVbMQw?noNSVlp-TD@UfsB4sA!B z*cx=TF$@QB{yCmo8}8BxJ+k0UJ+f#$Ih=wmoGJ3zvuJB{iV8H@tLW8VB&w6>horUV zx7j$4eS^RS+?IK%{8bgA-8+Py{aWzsBHLguPN_F-Hx%}rj|ChI{Q8 z(7QLMwgoot;*`rju2!s6q5(nD12I*K;LS8Z73=J-;eu~)bhENg;A;k3mJ+@H>5r4% zSJ})uI@-%|RF(nwhoPZvQIx!K7QJ+4P@D(TZ4)#M(n<_t08t;enseoOz0DJT9SFFr zrzJ{YGM(H$gQQMlQTd%3Nj>;o>49}|X5`2L> z=S@oj3p$DR89~m7PPE_vwJWE>A0CnXkuFp3Ks##@`&fhRAsrSuCG!FOR~To#e&|X= z_9{vE#B+Wg1Bz?@soypel8;|%O4pl%oBC=Xw`&U|ra=p1s4X#{)A~)UCAGy1G-OY=DdXN1q)&Bw3V5$LUQOn-Qo`2!z8v(*=6%)gHyGr@o;}n z8>rl{_aMqpLU}mO@9?`PaD=d8v5s2~Nfw+or{dr_>Jh7EhWrYJS zB~Q^Y=uG3-Y%yWlO4moy#!hmM$tu=Fn#`hGSO;Yr1m!V2Kn79nETrA>`-G5=;ssU% zT($9mRqcgsczx{4Y)Ij?i4k;z&*0?fh?CPN_S!#PV8o` zk{t2haBgGl5eMybjh(z=1AuK#RKFt!caoPhx!foeX$b)r~z%v zv=WgkfvNu`U&guRDAlt?Ttia41hB$irZW(_OCknUf6_=`?vV#gihz1w1Ur-g+I~NO zA9~e&N)l`}kp9-SOCXK6i#QGgRXsd87;~yC<1q4C9#KO@ERceaz@o>WBB#z_uMmee zpD>5aO*2esf&1htl{k3}7r0i|osQ?%B@-n*LZ9Rq)J7A26k%$igq@(r_JugYooq`T zBaT#}w!-(iHrOEam#oRZOz7#uo3v745DiK}FjYl)eDm9PSvT8&kkir~K!e6Ey82$E zPoO05CIbQ$J&2#yZ2hdI;yVb|oOGeORO^a`nZLE+HT3IK@g=eq$Te5dw`v2#|FTv# zm@&Vt?fzI7L+KsYjt_lr;r-VY;BV*O1UsO4BSUw$FawfYp^Yy5i}C(H<#9SORYmQs zFN+Y*FezejFbTakqVpIwAOO$n?Pn6L2El^~$>Rfr;F`}5w|^Nc76e^Sh_Vt!e=^e1 zzdZzZ)@2YpQs^}eZ_oU+OJAtLv)mkoTk0dTu|ak)z-_PvVqSY{Vzn5WSmUpmBtB6S zLwMgsR?tbjloj?l1D@Ytk;@E*yE3jp3WY6vA_h|XAo8soF31Ob11KQzhScvrGibT_ zt?8Ww!eG7a)YGhKF+ZO`KRNwX$uO3dOKG2kitf!Vh%mYtu9P{sGq_XVTrp<3{ zJhKz;Vz?~?ZgoeEaibHzY}HVP%WkXn z(>8vCB=>(I28PRR8q^%-^H~roY@{}I=WUfS0T1|d{Hfs0bQP8EEa%$+6j8;qGb7JhfcCwd$u zU6>EoX{b^(r^_JP!f?v6sNP;|!9W^&&o}HA`D7b87Rd#d8>sFrYLM8Aiv^@m@m%~X zkJWuI@rDGlzyybX{DbNP3-{s1Wgb;rPiSn@k7{@Q@IBxQjkx%=;NKERc~4?Ylj}|C zgfYHzL}z~6F+~2kjC8S9_W0B$ka2A|w2i>UzxaCHW#oYlk(vsP7U2t0c03tKFtp+B z-a=R^3AS&as8~DfIfESgK+4QO*Pe0BjwhWRIRJg9nsvRz?dri*^{Z!nPQc5B$kF~5 zYBvyK+RQi)MQlx4x4>w*+WgtVFzm6F^<`Za-5NoMTEXJ)3tamu@Z5neDNh2~6*urQ zZjXpVA`{zpPQ>dt9JUdKCf)xw!D$=5%=tRhcTX9x?BAZ^Ub|K{4E-)8Vc!>}QUIGHLY*+C_e)TbP$8~$q z7QBz!e2ev>vO<5%L4iOsE*Q|6|3{N!z-YzxaU+wVn4EsbG1S->xQICm73zWsnt_0{ zTx}7UxRKH8&hUvsUxrWY3t11~lpRYn`hgobn(IIeZy_3ZAe60-{!m$~(oOi3|8bp6 zN^3JuFUoM~?Pl_tRoWplMN?$I|M$T7WZYzpU?kL_eJ!Gis^L&nvHrt z<6r=?1Mu#k3)I|0;@VmkU&0Ol%##1QuJ?jjs+V!^ubE@c?+W*Q&j2p|i6CAP?$Ts* zmv;FxL|s17JYa}jMO`tfBdhv8Fa)6InZ~;ei88^Ue@30x{onyuE-h>8zlL9T)_V;T zbF$>m?fdos7$}5?Jn)!F?q-R~h6BYEx|PDjg8}hdjAJ4gN5(=<0}vIS_L`+um{(*C zM*_HRPR!tD!@MHG}$)<$AWz$m)#?q?8Q9ipKN#AF`B zP2(YI9>dnqxNB44Fq+GYz7Tozn49h(5@YH_mye7H+E%oWr80C#I3D;g!RIz%dr&$K zm6oKX1`9OX=eWMt>E~x|k3Y8{mSK-PYy;@{? zL!M42$SZciZcUUHvwYp}(~E(KMjbKWX5Pb-kwXte)r@q3m+m$EnY*#FMW$c^@lPg) zC1Qb6Q@ZfIz`n~K;?yp}3}Mk9T}QJa6c+Uk2hL=PG$`afa+d^C-*2D3Un&IAu1#7? zkhr4bqsJiA!V;j@OqK{5izKr|K-xKve#TL9T>IykTR6Z;-0=rpO4viF(Z!%M2&7Lz z)$?ajDULI@9pW}`nAdi;S8OmLrLAXyN{71p;MPThw zbORG9&mwAqzf8R(*dWL_nv zElOePxM`?55Mum~gmS1e#xMBS0C@fPwr< z1*Kbc22JJhEhs-)FU9txq2mS~lCcx5l*yzDF+hgOmk;0-P~SiS;}{sjrMKJr#>17y zYm!CO^AQ`EIDBW) z2w>5TU+y zHVZ!7UI1UW`iX!V@UpkMDyT1#!97;dp&K`=n|O{Uw(`>=LAV@0izkHWXQS2lq9siX z?{6*ZdZBJt?!>p4eMo`z7bMGt=1q%Drkz{~3FQ$r*qrvgv2F?j>-ygt&*MLxGY!g4 zuIFGNr<0aV!>bg?#s96fA%pN}tw?2ndop9EpC;2&;`%dH_AiNp4;95Qc%PmT;q{U5 z55^m#$${MQXd9l9NuLjQVpcnW3MAjMJ>5K7g^zkWq&Y%uSO{q<~)Jgdv8pQc7JAna7&12NUvC#c_YzE;`)METs z$1OPcCtH2`$05J%<$<1Y&l`e{i^9P!u!Y9nJN_^%IwGmani^Opa|J4wz_vl*Y0@z5 zSnwSgXg+o75SZK!GJkcik2w_dLdhY z11*1W$3R$PGZ7h#I~K7%ugBLmaSwl>Y>C_Bo_f;0=ptG02|UNe?__X%5%Q!`e*Vy8)iw!b@evR!nTEX7d!=2d3Uw6$-pzF;4sw=9#E&3$hf@`=u8sEb6+j&lQEHhsv)=2t# zjVyZwY!&#hGl^d}ako~uqe~5hWe4$n{0=GMKOM-&yc>BCKI-$EY8M6Ct)8e-3F-Au z#US}7FkmIB1O&rPX03tl@_0aX#^F|$Z$->WYB-PD^PJ@yg4{J}8?OjV5k0Uf{aH(f z0#*F%%m+^7O@cf=oWOE>#yCesCMxfhcGd&|LhiLc2$CGTp8rdvQ+H9B{GV{RoYT2#%>c)q4w3q0BMnQ=|@G;5bt3fn5C~f}EQlVca%cT`1 zHwdCwj;##EVnYMriQA%UV?uotFtJSmJ1@OP8~a`K@Q|eJyyj{&oK14pL--y?$g>vK zSQr5BC_oqolyrtFA&%P2QH9er+8t10#^brljLhY;Ku#HeMw|i6x=AY@9K2!2fZkPq zi2yWrml7n-Bp~I~KbSkG&k3BW2R#+f;lyJ-ntm(jVfJ;sTcB?6*3>rmEcf|EiRaNp z14UWgTR0l(=uG;W8=mcr*_;_e3EoPLfFS>KFar17o?`f;;xvl=S5Z%GgiO&Ws!k4e@C1;HA|6Bt3BWGM70h94b9nVqF>&4RRkCW0Q-KXu^IdL#lFJ7_wjw8;YB=>2WI@i z3y~0&(elQTXa3@0n98edn>RoYP?XtUwuKq_iRPgb+j*9GHw8G^Ko+lf#r!tY$kA#> ziVD8=Bcq=Ze55FFAHQ1^NbNc2HW;M(#>R>IBa#UZrB!iB~l(yl8w|1+v4(P zS>P_WxuV9HRlgWVFw&!xYZXUA`>_p$EwN&?uRFOWU$tipssxX0g(7EgS-H2(7jKfIyWNOQP9>|4L> z_K~_^ZuB0pz#eaHl&R5!A|_pChRlzB${+5_Z~Y`+xr7dB$)zqTA4(LC@8ez0V>AOM zv&TIfkBVz)?zWvZn0rTQ+~W=X6U_{ zp)+UiS!Bfdh;5GY(6t-!yus^+m{0WU_si@V__?>-5^wxV1h=_=Rk5(4AMN1d$i+7} zPr7NR4zVLsIN1tx;H5m=fSEz>NUQO^Bly%a5^gv#>V|*0!hQIIHI~ydcQ~dfP;4rS zY>ZRjEOpZ?9B5-wK?UE7vJtPvNgIItsX!E-IW@h*<}bapcHhW@cG2#uM4AeeyYxlq z5M#%Xnl?t@C4po{Fra)e8*GKiVV$C5()Ham_au6$0^MQ>{ghkL<1)^aI?1WNuWgpU z_4yXZ=sg+ZJkqTKsbhxc-nQ%*syN%Lb)Ymx6bNtNcs)97Q?wwN{>)MG*;CmaPc(|2 zVDlYUY`cwT{P_f)Zn5dla2fIJ9R;M!Ya6lKO|V^+xIPZI1-4_B)D6zxKr*UHuF+pY zclM{nuatPUT;k-WSO7?J`r7Eo-nfllyA3z%2xPwQLKz0bpT2fiXre9J{&Fm<1)Wmk z?y#ehyB^AK&DUmU$R_Ml`5>PFzTkKDN14?0MR(llqUW{m z32d3@>W;B?p#7d6bcj`S^e(N&f#%L>|5lOZ_}%BmSlvc&*+s5Cowmh-_)6BfI+o@j zK0fr*wIzVpWIOAD(6ebw0WN9J&Xvh@D_hB=09xX5ZPCJ@)$TK}(|M=fOT`ibGe zGs5$5+c`Ei$8djFY{IikjRNYljt*u72j+ra6?oi8;S?xFyx&<9K#O;0R?uI8ul5^q z{bFtww|68ikM&%my;yQgAabgRVUR@at76~28s|Ur8M*^?$Hvcv^AjJDXVwK)%Zq9r z5ILK;UqRFI3?t+ZnX7!j?FXQRI3wns%u+*%r%#`nFTG1!e@?=xhGsYKc-QeCX5nXC z_H#Q^h+%7Y2JNEOMaA=TNHaW6MU6Zj_$Bx;*x@XVEU{0?ph2B)a2fv(2vu+G*dPvh}n~slH_O z9D1TY?H%XD-=5{^frdR5g-u$8twx1ED}2V|dBVgpkf3j}O(E-1Rrcc*27*mC9IAgSsBwBb-)M&T-LznKnNx;WRdL z&fj8>>}A``n`$k0{T|&xZ;jvg6MZeeUzD+QIzujss(S-%zgJjJY!71W`(CHnn{l)+ zW+Q3Z$okrBGy-$}x9^GKl|Yw)&kQIhlQ?$lSaW0vN0`DiofFDX`w%YoE12nhx#(yZ z-C^1BE>7p(_x@u&4azz+hVr<#lqforb(YI=ZLFKlAO43JxyLna)G{1AH`w;hsG2AI z>ru-C(82Pr`|i<VcSom`{cG$+((dX$4~Sd!$~?Ln*G6`h2t#k%Av z;pJYo-D82-k8w6$tErRM+!g+w-*Hhiatb#cusk5jaV7LX&G~Y0K)<=>+DTtG zP`NH2bn-Madq<|D?2omQF2PJ&{ZMnQE2>IkI}|p*W2Vl&vhn*hH6!9gSL``fdDPbl z$4sMOflHB5u&{F_cU5O{?nKTq!oD7saWaZKa*2ED4MU1}@WT+VFeD8x5}o~99%*5m zPnjDv2JU1lcKR>g**ItFdbLB=vI*OzhFKbW?B#z{$hg$dtKKqwRvX(-4YRuNJ8BJ+ z`>3Pk#Ow2hm312fY@b(11a>dtst$EXibl$aL-ju3c1YlPDcl+SL)*wLB`jC-`IW=_>_PBRkSp8L}}4W(SxO1ZpacI$6QncZn9J9L|U%o$qIai2$#k4KYkt}`wqjGj+@9g%Ez<|i zZ6a>RYBhC%N?#84CE5r1U#okG>LM;Xo7D*ry505?PV{fi>R_f<%J-x9=;PVUboDFI z(@OPahAzaKT2wlyj;KoWMziSwz3gUht+s}~9k4q2;am;AMTbxy@z zh0!YBtl)`t-|FarbBB@{YB`~-Sxp&IqA%&h?MxQbN|+3M{RZ;Zt+kUrX)9A|D7htB za*I{amuzN=y59PQS4x7ae=yUvw{E|Xt=DO&U=_R}eckhmH4~-dr)%X$ydE1#2|A@2 z%KWbfAmD(pA28 zkrXJ6-Lk3HirFPWhvfFVAymOdll(xU3JK+UoEucAgXvSgKTU#@T?9K5K??B$oQ`cr#n zTuG9$qV&dPO2Qq9s;mnIXjLwDq4%T`Q!W%3Z?)AtYt*|rW|h)N;)4m(O3O#)@?(j! zgq^C4!jEuLnyWR_OWB1 zB&xERNB@Y;ovp4fTdjY=(Rr%%%!J?#Zkj*dy-I{+^5h`%yp#%`?wVNwm&}Sc0j5u4 zZgz(s8>$IqeZIA=|baFsVOlpac!v|Al&GbLO8Lcs#PnNnWP zm9FXui5mi|U3*WgPpr5XNa$6DT$(VgPi{5WtO1*l?aTc?69JV8FZR}ne5pQM_p~hj z0kDnzY_$l}>gh~-k2*-Lxs;?(qcdiuy=FNES9~Xu8X+D_lRHysm`QzVnxBs$DtiJ|v=ozC3jx&0!Rm)hb)Yv{1 zCHOfCOl1iS6qw5T^U$Fc1|7hRV|y{(Z~t_g3+~&$2CndLt`&K=xM9EBiFlze(#e0; zZg^h?Y+vrE&YsFtX*hvx>Aa)`-=-``FH+EDU(}?a%jxCn7$xQs%vzZ^VH(@_mrw3H z{`%{((C&ZV=YV*wZ-G1dnd-EkoR_$(&-VA&+I<^r#jJTO1;IzD#4j_{3o) zC|zDsarBQA5M^8X>A@wxx5dlvpZ5UewWuBWtbf8z*t=c;r;N>)xXit~8!r|u__{`6 zzQPJo*2>5U;%paF99LTG_##~UFKB^0Com!yDNH|)RuUkz*_Z%=9s zTJUR1!V(z`QD6udM2S6VbqtZZvwU*B_}1CK<^{}W2U@qD_0PEp`@JrRe*-4O>ilP0 z4n#dYkj?5CBJ{-dU`Aws7Vo>uo%{MHf|7{B4SmiZ%8Kz9fUy@5>~6SW1<2^Biyr(x z)pRYyajnUYeDz;`R?f9w?kn64}_l`c_4<|cdzfF3L`3=)UiK{gHA)tXXFFWu2t-_&6Vnwbvh1zNt9nU-M?oun!HN&OO|y z9(8cmP$%)mEfJ^Y%=s5lpBK%H^(n3|7_aYS{O#7@ z5Am^rzHv?`P5#gS{*MLzj|Kk!YJup{-}QJ@SC5d}PQwxweLs&06**O?zKw{Jgf58x zAaa?1(q!wO<#i(ADEUF*sfq`@6zR`z^12tisH(Y~Ki}Bt3vJwI(Q*Vhkuv4*QVs= z`t%(W0x~L_&BOfqY?C8f;^QRsjs?kr_>|t=86QOT22Ue(`hWevoH=3QB$_oN{P*y> zno1jaL}N%(*UFVED<$WGB@E{hb1*T}`G~^ENG;uPVPCrb5QhR&L(S=5&ObRmy+W4P zI;`SDXvf^%);TvG>4-LDRPf5<1ok7E^UuxXzx^Spr2qM)D_5@Qau@K8y5zSix|hGG zYM)o`ZCchae5Cw~p6=(~P2G|^{;gFS<2q+O@;jnv`QGW}zwd`Lwnd3P_&#E855>@S-3p>kXC=o zzjr9oFLz{rbwuH_%;}|3c^$vU<8w~`V!<_jN9gAncAqjLV^{ffeOtnN^CbICb6580 zQKM9n(-z0KUw1!W@O}bsZ+eAu?Y;8maGxt51Y8Gq^D-~JvfSY#=P@>0X7ct=`R#kh zNji;IKcBEa>F{fX?BIi6g5*Q`yafmNryh!?`*d+c@q*&YLfwK*vW9(K{A2S(_M}>O zhvj)K{T~i%t8EHAvLQX*per!nwC2Q-AfpjF9Zn%}O!S(Q4sk&;W07h26Q54A2M=|t zLghLA?sm8B7KaDcGaRc_eJ(sIzrRZBHtw)qR0g=weN*)>W~KiASu#q50odn{yDB? zp55(FAv4I^)TP#=W_)y<?rC_w5x8Zjqiw-|5kbV zGa-@9#^KgYB}HoGwo8*M<|n&dwto@pXksYrm%EE52r{ZZPU!BJtJs7;;S%5Hj)qywL@sbx9*0{GOD4_Tp0KmQeYt%nyPG93o8d?r8YQ-FcK&;CW&CLE)VmwU8{S z#bxPD^@DMOn)y%foz<16_a+OPLV{n22$$He*3#FwKX!;k;1Qv(LFu*;rSacN^^A{y zm)`SSQs>;$&hNP+Fh8Q;eo4sqT8qs_NldwXr&-@ARs# zldY0JPUy-h=_Gy-{6>g4W&B9L!`;mg{4It8$Irvk;cvUrrP!R^#5D*Lev9g zcG=x`#H!MF#u(MB>&u6Rb|ZzV5r^+Z>nh6HR(9|w5n?~PmUpn=;;>RLt}l;OheZscKMz((Or>H%xlY5zdeq-_Bbc2a!hiWo=_v=@ZAz! z#XROAhmcci4YI>uZMzp*-rN;ZW^CTG$KFD{HhhRy=1l1@;~hobc0HrzJfOpTOq(-L zD{zK!;AW|(vs%*z4ZXhG(l|l9Q~w*+;J@5D_$q`*H_ks<`+3$PegS`E4uANneJwGZ z-f=2fl_QfwzmgV_v9W&r4<#Rb4iF-|U6(EPOP33~o{1lhQ|XOYxn0AF*5=Ih*7luZ zUsF7uFT115lvI6m>#(%K$mX2^@>^D6{4svt3*D>NbIP?j(d+nIG?t{5H#o~}KkCBb zx3TKSR$;NFAFqoKEjlcAcjT&vt7&O*=2qznHJ<0ZR}*0*s~?IwG>f-&wud;Y)rRvn zwhYm;P~DiKzE2?jp~^zgDf#+mUu3FeIKwh-O=9qDX1UaJE*7miW$M(R)RM-aEv@qo z+Sra-(ot`>)ltyd{S(}Msp+K2{_%^7;?+aNFo2FBHY`A&glCS^7U)203k6LcTzH_KSGUFzAw)0;CYIXa$m zM6vGLkS*zV6s~O;VBz^6uC(n@{334Jbg(Rulen@mQ+8Cv(q>e0K@ka4{owoN(+MU{ z@(v3)GGg9~JEwoBYiKg$;L@_rgV7m$Ve5VI)QjrACic9l@qC4C8*FF(eb;SiQ=e4U z&pB+US^9CS*h{ta(^heuz;c_`o7}aEql))%u-?~jLt4{ov58aWtR^|>-OlC3s^>`b zg_e#gM-;MaU#3*hYp>F4H_>Y`U|Y6ITZ)=j*DR?{n5rIUPtA_5cL0Gg0%?X*QAaN> zp>7HsD{Q?gZkjK(Xi+m)+0wngj1OZdqRyS$Khf!A(r;V)WYxFCi5J!N=6q@1ltCOw z#S+&p*u&R++r2lMWw*o+<2kn{bMHi}+_(NxsQO&{UU4+$G9ED3o3Pea`}vkxb|u^H zeaZ_{-IHEnLo;FMal&eebbZYJ_v>G5Pq&nhmKWd-^TmHzDYhl940La;AZ3dGl6!5;SfE)1=2@>>@rJsbiQMbTUPdz#7V}$W8)!v+>X}tBsiTs z@U;!Q&@5M-)GU1!g;3R8b>Wiepq|2D?pRz(be!+4kq7vh2wTsPzz> z&9zxTGI^ZiAb!}b;?=cFD%0i!8UlV7Zg97xXDg^B4cBHE_?BvO)~+8OrO!E>Ir`Fv z!h|>3vRZiS(z=r-y=!2H=!#+HP3NTr4&txOczZ?&FSNa*UmplFnBA7>ZpO>68WtfL z@9XXT>89+PgAU>$`5p|OTz4kJz+5y}n*4?EUB-5m6n)P9KMXN`@*9s}iqa*)S>75s zH;4RQ(imP0(z4X&{891A@i_6QjBsRvdH@E~UjfaGvTqJ1Thn~h>Es-v?9b!Y9w+5< zh6q(n*G9`~t8g`0vSI0npp+l4AK2`x`tP_8WieqSq(xQZtGC-!O?SHXVFKov7W$l* zvw}VvJ0N;$wnaYZz|4g+Hjb0#=jSiLkTz+C!pJYA%gE(7o@VmK?*5j^eU{@fc>m{g6@1FENvzQp6!vx9cnzvG?H)MZc}V8xmn?Hz7NvwA*=UPy+(b5?Ug#@Q>5NCPqyt1MLV3k$1e zTB%S<+jsN}X+Lq8XhuOD5F?A7^G*qLgfRV{iqn@bUxsGr3jfsa zq60&X5UX`XMMYKmem3?eO$wJM6q{x5lznfZa<{y>Kf2)kW-KPfOl?Zv?$+<$zZKy6 zbEZc!ZLCxf&lITf~Km4!K&Aax0%7K8!}u)-oC1O55@>n zTDYctyFdRqfblF7r#3m}5p9y2QlktBkj(c>JG{qhCXlXw7Xle zj5vtr=B#C4$kK%d*@FCV(%ZZ)#h6WdQrFg7FS2)3uGe>R7 z5+gYfC7cjv+P8DWJi$|Mb-gY-ag32#>0cAcIO(@_&{c%^jXM&@-+?a@!&E4-AtWaF z^?irrY!<#ExDRNNdM|Qzmdxm}qr5#T`?E`9XW#DLwH&0ZYZcyARbCc?a!kHyk9F)* z$uQrXd*X{KR{xfD@IhS_W9JNAa(#K`%qCNNgKTGb?Sr40YR3pE$Fir0i4$>QktIfD z8s_-^{MAA%B0kcj_eU_3OnF^>0fSjKt+?`IZ*KKc@x!$=Jhqi;ax4Rf8vpE@04o^7 zZAiDRR z`(@NCA*V#6?P1V|$L-Xre~{YN##0*`9L{*4DGUx)T%=J;>pj^rQZ`-O?LfHF#k)Fj zCkb`8v{ZT3*qKe8U%ag%g)TRtxNna#z_*~Rjff|H=Nu{4t)?s;A@@p;C%F15s3{E} zyRaI^vB#g(&rwU(r74S8d6nC$MOX`Gc?f_NP4_eRt$bxhZwxFweJvSPjx)XRTk8XW9{T8 z7F|?H4gOmAA~xM|Jd2unrA_Mzo($eTWa4zu>16E!s_yXDcT|CU-svrC`oZ3r(`4>K zSG44m>5*WIo)PwmEBhlcFYpS|N#UYJi)_zbZ5Rz`-d&SuXKrH?=+iaAUa?6$dGh3z z?itcW1Lm7|1n$GrAgXvs1(wJjpu6Me&Ye3;RS4Buh_O>9xi!ckue?)Q+*YkhwFw+5 zJuSA`(po2?-B+TsOhFAIih|kJ57C?V;wWHX^UXJ%8xdiD?v%~HwLB#onsX_5obAL$#)u-=`1RiM%bz)mz?FGbaQ_1rf&5)o2c^{ zOKKnUp|>Z49mWVp%rn!;)Jh(7$mJJ3`B=>z4>G)WggAlDTyF)EkI1@bhO|kKdW$+h zmPgPv2-4Kl^xvFKZlC4o7;sY`(}Br2<0EkbI`6O=J{}rn$fa2vw_?f#VVsVDjPeO> zdg2rscjg~)tHaWc%kE~}w@rFdT2_W}9-LKv*_KV(%((e{E`s%(Y&wdWAm&k5HW}|h zTDzz%o*Ij^j04A1A2;AerIwR93i!r;%*GT>Q=Oi4WeR8E8&dt5HQJl%9mK{~-F%Hydy6-O6VeEg9(PyP^%+ht>KHvBG=X7uW{`&*bzix634#)&Q`)+?B ziNbx!=kQ1nuW#veFz&@%K6gt>dAF_+SFg=T{CN(htB`zf`yN-8E*>#YWU)^RA>0Cs zQxOQyy>9HRzk2oR#bY%+zcg7(VItXHafWM4*R4#Q=bd!nrxsa|+Hj7RE6-}?%=RCV zK5+NP&OQ&yB4uS|fz;ETMx=xd+?644W;fZGO%AW;mD144SMGvBL&YG3cj7^#!IaTBbkwBV9HC_k=NhDRT@^REY_Ir= zNNGmB(TJjA_{$yNLrD2_8Ho?Q-7EI!HXe>F73<7nArD#Sz(t_2 z;(|(U#Cmp3NhRsFmgH2+MDfFRhULE}4_CHua&B@51s$lEDz)D$yaiU2c>N5kSHUNi zB$dXD_}27&hC+ocfm=gbI243twUu0RixQ4CgYTtQPu+M{Jw_B>gFFiPalnr?*{w94 z=e-ncPnHIg(vQ|u|E`0n&R-3GpTwn-XY5fA@{A4mPi-w6y$3qJo}TZopqKC+)(sKt zlTxmGe@$XP7S>d2Ej_{KXkj>VEFJ6BVv(_#^=v!iN;EK?)G@e^ol8b4%t|w!;X2-` zo1E$l$$r*;9-9&x$(?ROCGfzt(D^exb{bY!6W``H_sWkb4k1;E<);SlQ5r~)T=Hm! z0|HoXOKT*~G#vu)!0ib67*P=m2TfGog!dK8aun6nZqz7eU~p|>IY0<501zcM%6mp) zfZR5dcWDGyx@f>Vt1XCEr;(WEG^9hjbRAz{aUj}h zVRrk&mk)TtYMBHxhtJLk)RT(?sc!IWwI!NqqdDH7jh9*^MGxN-z0Fwwh)HgDdkY5? z{Mhu!MMFeN@@P(1zg+j!R+1X57@#70x$hD`+}t#eX0Fo%S$a>xXwI3x#)}b9tO7fB z2c^Nsm0XC_svL=ixjwm3{E=IBl!R8OMg)FQ{Xv^#J!9O`{hIH`iKb)B>PyQfopwpV zSF|ppwsp7UY&27O`+mImgb`WC&~#avr!JNqC3iT&(xb$G*Klc$n_84U@wT9AFduSQ z8>O!5Ff>`p77--;yTyyhxS)~M)tX42^Kgkc#KH=w884Qt5NCO-==CNL9vijve%@38 z`(5)*6@y*F#nf)($ja->T`N9~7kd$uM!ouJLz6!g%1iPj*c_b|OOhweU-ESrp+O$X=|*4 z{{=y*&J&-I3{|c%Vfmz_Pa9bSfI*+Ssaa7P+X^#1P*Gko=D|>3Nc+<<>(o{yuH;9> z#AE>64vI4&mB^g)%;v*})nHXS|4Be*$UeiYF5oJ!)3D zHu2awQs}4tE<-Ygy?^*-Us9U8LJY;f^hN?<5oXSDfqtRpe3GOB;_%mTRkJ!W7&YTp zD_FO9v*NvM1%+ztdbKER0-v|D&kyn?re3N!x}-(Eh!xIJRyJuv|7IHtO4@Y4CIl7= zQ9g9ZZ_RM{Bq^mM#iaj|RX=L8&8x%@X4Z67_W`4Pbz0$_WSwX#AgBhNy{3~9gS_43 zO{m=2cCW7vpI&g=wv_TKdptu1&jNItp_s1NcF!(Gn_vmho{oP_lD;LrN7iLou187C>luuD!=Xc6i}6gIS(w5Z4t6OS+IeKnpdoysoL zv=reMySar^>P656)So$XrWxv%16O|BZ#}?2?d|Q|7`~9@JmJsUI&8kDz=iy`vbB|G zfVE;!xvoqInyybgH*an+v>;T5I)VaO%_=p~w;*Ut)VOm|vjl#n|F=T&A|L$H{n2L$ zkF^Wx8@Kt{g~(1cw)Ml zbDMMN#g+qJTemi3$%7eg+Mp^wCZ?%qu{t&aVx0lBS&Jm7jxVDsJxFgu?YtS=oAGTd zDO9j#9A^TyJrWm-0=S4i7Ay_@_+Mou-Q1wPJJg0kx}D@jN)emUI-UOsP!jCpOCvlR zdLe>bq)KHD&IsGpf{BD;5{9%vvujS2$-4tzSDM55oVKDjh(*&C_gbE<+>b#sK{|<`L0-;=h z&S{adTefZ1SiU}XmNy_NJl|s-lboD9Y?@o9L1j>PMeC>Zmcx+~oatvQmxzBk!*Xi0 zHlZ{DCio{Fkp5hg`~#P=*+iUsnole&EELB@y=O&3d@_4I_q7*T&b?DMMb=Y^CH#by3A*{uo>khM3h3Bk zwezpz-qt#@q#1t@E9k1Zz&lf=`HYiRCZ@G9cPuRtBy}b=gKX! z#{T+Z%g=u4>w5$fh}6}~g64BR0-DAaLb%K;_>me3(=-ygU7#+`KcqSO zrbNHGsq9V(Pi$Fr;7+S(F%f4VGHH_#%#UpCNd-9D!$Py>?R*_&xJPal@WjWDANT$I z*JJu=%vJ%wANBPG^u&w$;#-}W4(E3`0dt6%$t6w8kwEYLc>Te7KDinnKahJe*Q2Xy z_Yzpzpg8Vl0^!wChS@wQ>}1u$R6qg^QlF^N#<{E3M2mPPY-&Ocm$t{@_GX!pMXM)=yH~B}GceS~ZhnRLQ@!Dib2Pur-+PD1t zRX50Q%Ha;1Na{p=azqiQvgBBZ0h!U**eGf>kv@6ikh-hxY3DfZ*=g%1$+mNd`4&`@ zh21k~v9~3dfNEmjY$U05O9r*ZH8P^cT%8&x`TqS;u*zW_PTBkjLv7Q(?J6V!iP!Xq z!YhFz#5i9g!p1e5^ThY=-Am5QG`hJiZN?tbQ)ea`6Wp8UcGyk!*XTo{^@NNXr9dV? zs}kL@B=B9S6Uq^cb{u7snSI<>$@es>=-^u z(a9m>%U80ps+;aOfv0F5f+nSO^#v=0#JMZ}Bi_E@c=RQpY*)d|3lo0x5*fycsAV zznYj^TKbn*AR&fMCvUyz7TDz(WTT^sUt9Oix~HeHt@B-c(U1bqJFQ7yVS5i$29X)7 zqff9c<4N~YA%ii}LZ~Ff_+WRy=rxHe-?^uSoj84ThUDB)DT`sqE%{(ysg4ND{;q#~n zp_Tb`pa4XcU$$(S^Lw6{w%`}X@7{c;Oa`Hr>eu{c2OVP3YE%GR#o{ovjZAv{;+UcM z%)l3xUjHAI+PGgAa_v2L?AYPL^dsact2tbLw*_6xfy%QGXm$Q?^1zNRyYWSP2oS*N zmLj$w{BF^WVL(r}R$aW7O$IY`h`xS#)rg3cKmG`iSCEUCRaYDc=?~_cEL&KY}z zZoky@gwjn^6uwpX|7;)h%e&dc1?hb99-1Tj zXEyIXytqt1zZNxE84)7W&q8yBReWgI?V>F^i@#x9 zfyB78ucILxZHu3Wc{gL1d?xxp)lYVioTjd;;{2B2?sVF__HC=p#cs`ZIPTG-M_sHI zMWQZXna4N1B2)C0CE9dU>q!slmr&OCw^XZL|6t$rb@<5SRX8~C*euu`l2aih*OpHb zu#}4}YO;`S3h@a}ifq2a*5e~KT;PfGy~DX1`{cn^dp|B`rPQpkhnO`S@)(^D6wSzm zrmW1QE!e^Sx3X~6|Aj+$JQ3Qv7Cj}&XGNL85|MnXnCWw4w(o1cS2C38R3S%}q6d_S znijG1KWmT}9YU)O8bJjnS^%mFXpEdbek|L)z6cU(TH>~CeVzxp{E3jBka33+_(6vw!wtuF7~)6DbT4lirZIH-FI;JHf=l<~Wa#R!l6 z-_*>&o?-T9OB5y0yF1YK`fXtwiAX7l=cs4X^o+Wmf4;!;o#Z|a5JB|9sa0ip1CjZG zQ#~FGtf>j?5#P&hA)TF_z5p6NTS3jzC|rpAkZA=dOR7YWnZny+h(aP;#Idy2SO>D3 zVrCXvS67#un!2hdX(sXY@S90!XAKBEX26xc=Ks}Q!#w-=aod1$JG?SsMNiUfk{swU zeUOYJ$cSu`+)0x89K1vEHR4NkEcm zqW+;||dChtPi}7MlmguK(O zbLqbkLQ4YF#TDgA(JC;NM|RjD`T;r1OVo&-_P`T-J-QmVDkJRE+qBk3H^v&3#9_bm z=6zVB__i+F#5E^xdq{HCIO&xIXCKi|64XT8D!{~98W7Tx^UlqH1NKuVxG8rl) zG9NB)7(=>Bf?g2-c+F*iLHWRA@E=jJor#MtDzrzPP zL>z>=mO8k`Cn(7Fg7w}>^fP7Jv{8yc9r6^_G&RilJU|DBc{EXi(1lDx@5t1aE8Vzy z?OIJF{*sY$oQrt+NO^S$u3oif&Cmr47CgaD+~I*W(P9WP;5)Ydt?B#XV4TQDMQS=Q zWdbhmuV(m6jR;{aB?A){K7ac32e#lqkx=0sN{fV+WyJLSz=)@^-Q{B`-cFxBjX)kA z{Q0OGW+r@y5%kQ-sqDJEvq?6;OWtFYef2T^k8XKnKgx}qki-OY#7-Uq3$MF#|NhDx zw{9GuXWj1SXR*iH5MK^QtBWrFX#>Q#HUMt-$}MHV*=dL9hxsf}IQHa8WD79Uzprdg z4p-ecZT%l3rnx@Q3p27^)6?QkthBE1vBjK%YH2*Ak?i&B*F*a|(|6VVuxi~pEu`Pw zv#>Xzgjh`thJgNrCh>ju9sTr}F?EukV;Nb!IyQ`cY(T@wPR8uic;|^HQ_9%63_!!X z1N>*P0)9Zo#mgLW%n;wf;d;*VDn>-Cc5~CEwckE@X9>Cwrn2tYZvyXpSCv z;_`*1+D0nn(stKB!e@>)k*+fBB+pyAt6Vxp4-@}2hCFdw>Zn3X3iti{S-N4_G|-52 z4SId<37W$|M)?H=htkq!J93HX$bor8O_^snB!}sAzBp&h;)`<{wt_X3)*bJR+q4ux z{{_7aLe@@fXUk9VAvLblWOCnC@dK3h=%JwHpq03CGOdComc+PFiMh4(>4`UQ9`;Vr z|D(dY$C+smV0n78uZ*QBMHEDEB5sXxF{P!Z5cqUJ9Ao>E_6kOg9t|aa>}P5fY)HW> zImezZ;_QcxdzY9}IrO+g)(fPS6;B4JdcQhRKmPO#jMB1K)A5-z^>6bA5t#7s`VZ~Oy zcrZ9wx_FbLibKOHw*FIM37wW}@f>1huDrxMF)?wZqT75SDy#{MFK8f?-TnOTx3)|r zPtabcOq4wO@}6b(SF2jwL}RO46rWliNtkXXv$e&HJaJsjW7X+KEgUvlI_FCo;VA#U z49IZZ*O-{{h~-y1?j_j(af$W6xdEWjD-@sk%yeu8An^}nE^;qjP+lRQu?;9ID?&4m zQeM;Q>jO=wLDLA1e;lAb+T%HM_AGqXbYx(nzQY_k;Zx8eEhFAE`ytgG5}B!(zfq1I zf?C#3?j&9+&$x#=6(@HL=?9+IWL#B+cVRnl8sY6&9?q?WVGgZK7>Q~G!(7zBt0V)I zhp$gn4T+$Y;xU0&8c+#QtaNKEA>O^B7h-B>3|BU=Odn_?Oh=m_JKH~uKIB@#iR`G+B%7Do@ zhB=<*&4FsmrKj7R@bW;HrRHSGZ?_GGYU&N=%JMf0TX{l*m=+yC!=PqjG&rJ;iL+pE% zOLJIMHV_#{N1Gj{A4XBd1oj-2^k_mD=piwfTWFDEak5+D8FC}Y?RUytN(DP|mmU?I zPaMwKt($)CY1b_K_fUv5Ya7`3O~D#RDKd1Vm2ew1qeBHX2l`vH*yar!nZ}6HXGm|40vA!^EgrbPGNyzQW5fNwQ@>p0_R!}8F90|SPHi5~GI1RnZ}hnU%1bDe?l$&-4p1eU;bRVmi?^cIR-dt$#K zo0J;0H4q4Y(y)s5oM`Ei;c5mr{oX3rO`bj-NHxOLoq_+N{7kC?v>a#B{u0`uqZIYJ z_UDu|p=BACt%8C~S$aHv{P+z(Rj2Eto*7`4lwZ0%RB(bIcfy zdBfl^Ef6z?c^(|pXndmRM##P6E8g)RZBNSZBxGOs0GUcFkJp?K11qhs*ZLgtywd;` zY@nRGK6TLV$h69ijiN7!v8Kt4@lw(IM(Kh6%lVEfRP7;K7kJLRTfPG!J#6sH_=N)_ zEQ?=!hieO(WSWu^VK6v(H zXUk_QpJQi|8gyr=5Uln!e6@(PefxG+5umMcCbo}jpp>fO4NcjLI4(EW4FP1ZSxTe& z5i^IQw^=#m$2noDZ*y+Zwqhu&QEocQIXY+=(=2QM*>ATACMEAmrLNrd66>5u}l+~H}*x>&1D(`?PIBgtC_je%9LLDwI?TOVVkxC6OoJF-6 z?Jryqh$@}s90yA3c(!y)YCz{U`ay91iUF{X&g#t)i6h7K%s(&cp}GGsWkyQZo_EGr z$AnSlQJQu{eTqcBqo>(Nq))Zz`GTvuaxyM|zD86fo>9-;CEpC51!xfwzh_Ek2s6+p|FwAAAtt*rhH=*bp7m;Zb0%Ew$^2pvZLE>Z`AJoyi#LIzHBLNxD#Tc9!K@VHbfRb4$e4Ol9WCp zsiD4oj`NC?@_Qe6*QO&Twjtw%mGrkrV&V3@8;Tg7&>B8}g`mx^eE9HToth}6JWYgCz^1-_zjZM3)Cc0 z59D3tx#d2R9WQi~FDW0a*ZlIzg50$}8K)m~zFv#lH9>UjEgNwEM&z<3$c(N2IyyQh zF~yDMdL|(cjkl(hpJswp%mvC(dTe++UM}c_u^FSK&OQS|zz0d3u6WhPhMSCYa9iYW z72az*xJ#5z5WZNK>ibn1)M;Cun_@<=N9e+yw+`0j=DwuKT#}9(t5? zNxoky;ZX~5l?z41Ok)uOzn~#F;Fm`aAAZ{=P-HXngJm`R3C(`x^qES8SWN@5&7Za| zH9|{0q&B@uev^*wsT_SB{eo^GI#mYu??_j$(Z%|5%BGe+Aj%QuK1fMIa$+E#bQU{{Gx5MRV170n=M(*3yR%Og2?6_{nECMV`nB z3Nf;?bMMh$GV0{OkoM=gt3-ldYOL_ThR%S~%AA(D z%4Zqx1xy|=ihiIl{r8Wt&LnE|Jw9n_ZeE{~krCuk>^7g=@BlOh;}i;|7wx5*jX^;f zZLv-yimD^9l5~TOmDT*N?(RqcwKr8%EQloL;oAh{TA!wdeWw-~Rfx_R4fWc$X}g_L z$`_%Yt`me3^Ok`*irMW_76h@1hS>4U`zl%VZ$%Bu6?b@KFH$K5#1yLN$1}|mc?y_m zLd;?Snv6%jqF-Kcr6>a-ZF!+fW-e*uNO}ANttW0s#AJCPsovuh`;qA?_n9DSn;_ai zFHsJ9VHzcwDkxqPsx-Yz_{3AmZ`UMBU?O;Zk6|^X<>l$#fr0%`Zb%}?@@#VH;>*j5 zmIv*N+gcd8#2E!*onQg+Jzu<+_}+t^CvwFB)-a5MW+}>FF|24IR-W-2h`FAYH_S7{ zeytJqHmi`6u4!(9;P^PMU014|zzH*wF$qaBWLw|IPL2HO$>> zK-NJ@+n?ds@1+oMWBN*R&Coc5|4g7iTyer}t~etjqw$8~JC!AdT=BM1 z3gF%8@{9S327x@@ua9#{ecLxAM~ib4yNq)&AwCYFO39`39BE)nhJSAq1#rIPjV`h4 zsSXK8h)%KKiX(Rd$p!`nCe3~}y`!1G+^q1b^f$}uInv?=BJ}s~exqDxb*(x{PftJF z(p%oi69*`nBFz5KZ)IKS?_H)DJXM(#FgE4?OX*-(iT!xNQCy zvap`gCJhb&(=KpU6ifPCDBPYZom-?!6z_c$EbT)2wRocq9b)1 z(9z5vprM}il<}3}w9a!N#$@uvjI*e(s5V|8-`ZBu5^ULv-MF>A-RdNYuY9DBE}>Km z>yqG5YM_)Hu9za2vRPzIjG<;Q5t>q=;qyYBP=cnXh-y(nECR4wzGiyRu+4MBNg}#Q z`l>Qchakttn#3%gQ1rtp<08YPQCuv7au;&UuM z7H1LT^*xr+1+}sAJEAj?WKShGiL`-bkQjKOP^4%FCE5b%n6osW_1#`WLIEl1D^8kb z);*(@Ob~1lx6M8`7>*(m{+`hg)U_{>y>=*m_gtkX$ zYIzo8vl%S5{0VhebT&u&_~__JN{<5BJKabM$Gw2!WX769jy5mH%S|*`mdg*RUb1et zX4hJIpuGS_LkpRlw)ti-DmSPsIlg}kJ9Bxk0H^~PrEgg?+(4Y;>AmPs=hd1qZDx^F z29&6fOUJ06UFrzkn8*!>OsI7f^qs&znwNaEBdIu}B96pSbEuA9bYhOynkoJ=gLo3Z zfnLAVwK#wpLl8CpmF37ee$-wjlbrwlecr4s#N8d!yo9j$xu&fTY zIcYN61ALnrW=*WX)_(r}krfpcwNzF_$s$E<&eNDGRbn-j^}%W_!j6CqNM|U;+i7Xw zK61et#EsJtUjes|EkKb_0KJ__q8Kf8E_hw|)xsI{=%(4TB2xXdi3rX0)-CHCJzTsE z|BkG(psTCvq_M_HLEmM;?GHRM>d7oFJx}m6Y`ELwCHO^A$jnC5Jq62|a%w4;zRwry zNm?Hw$^8lQ4xhelARJJ@05btE8#_VU`=@J~qOhIq63Y`l#&7Z0ha6+pR z=bvMB=&mo#6Zxn2kXD3?{B@&@3Zvf>6Te2%Vs_KnyQ2>ybN{2qXVzFoxPO1IE?x+D zWPadl0ikcH_;`7}%}7hz-~WpanK4(K05h5DvstY2Gkwo(R52EVx_|Ubj=kRD@QpmW zqw0ZYF8`Myq4mMp(f#Ny&}r8(*ydaj?MKj0>ez#eZ?i=_RX{lRY=pjNM zpO!4#esufp-7|X~nGgK3Ivz2NFeIwqwlbS|l}+=(c7}z#qliY;j;A3r9fgKvOs<7!qIEJ|Fu5re?LFvgz@Q++rZhy8KB`KyWW4#BakN#9dF=h74Ce1<3Ac%t&KRBCn?!7EAs-M-iKGn?XV9H zGHPkULplR8!ap@Nz1@SuLybJ7W8^5j2RawFfRg@IMvOInY8k<<>N|sM`j+XBIBJal z)S~xr8S8n7^HhQFfs~XK{|Z3v_zKZZAWZ1G(Tx*jNU-B8Il*UN%Nm>gc>xYhmBH}a z?irzNk{*wDhHs^%^?shjBQB7n$OyNZkmH6*u}N(C(uLqnn*h9EdqD4S5;}0BaRPoO zUhV${D89Zjp%YsMPbwM+ee?J>q-9NIW#!(Ght=ny1$13z5Iwkdx%{yj9JK$0gb`ql zfBeyhPS1hyT3Ojy<_A#ZRY`8$+UegnREoz2aizcL5=3ee3VGZlap@pZ9CAs7pHAqI z+eu{I`t?C*88$RDkxNAl2WA+O5g96Yy)6NG7p(Ig5Y#Z4-1&cS`|eFi#K3~!?29u% zwRY`V`i8DE%Hp-S%f#s!pr{mCgtV4F8AIWR-(_(-8uy_NM>DqLKD;*2V0y#|DCzdz zga_)ANnOGS!CUWU929s1p|! zU-oIYX#}~sxw!sOx7icJ|H6Wd z_1^Ri#J3ocuHz;U(ua}IBkBaO^*J_^no9RKuDGC}AiNt`_4e_pN~KVHH(nO%96(yv zCaL`1cT^KMwQo4dv4?l38`4)M@B<%-JRAx9w3tUvzYVL|neB;}Lhg;B?jon~UhO0;Yu3ga&3*2DMwUi4~VADw8>QSy~dy zrwBX{Op@>2+v`GKu>^+peo|L1=<)v~v9X)~W5p#w%g7rNmLF#hb`2or-^aNR#BYKlG!?WgKW?ToN&WAV!Wh5}UgDi^Pvh}Po8 z`z_Wq;7cIImB5~dssNE2$#M|miZivlK+82fSN5}G0lJ&CeM)BO4k)5>TpKA5bqLf^rPp-TCmfT`q5;-pOj{93>@M|`~S3HA*}j80h?0Zy!L)d ziqBhG;~_oo-Zzw{2|{k1TrbP*(gm?DKqcvg00Y09GNThJVfuqS9KluRpcQzLW zPdpM=hzXa0H31#GkPCYphQ8Tezkw!#Zg)0_My)QR>BC3;+t%Yau_wS8=Z!Rz&Z$DO z+jehFIMRqOx&%Jkw>RR|ivC~VN*wUQpZs$>*_1mytfnN+Gyp%jQ_rG97iPAxv9Y|u zl4bs5^t!*?smwYraA);z+WLehp1)I_p%QRtSK9Q;6+0S8H99{fh??z?XuJ1m4?2Ve zdQ2P(E}-Nd+9O-G+ zdghfBBxZ;+`sO=+d1l>+d9lC5eJH}ax36%(vf`;0d1*=Vp>l74TL+TK2h7X&C1?Q) zz{?>x&=f*xWzfrWT{-(Yf5}uaw^U7?;UurEoPuKab+0Qr|(k#%boh!pCijSID(z&@h4_;gGVHtv>tE84ZbHa8yd_IOVGbZ zp-b>azzqn$2pvKlU+JCVQ&w4-xs$FStFep!OouGq^I70Us#l0Hz?72!A3XEAt*uQT z%&;Bv{N_kp2~;HX&i5#=N=sAIx8T&iS~X580KIq8(*qMNX}~1UfB9I1dwH0E2(M}& zX~ybiwVuX}8>rqfB!h6MeEar6&?jX=lE$4MAj5x%A`@i(J=Xlm=zhs2lidSN1vD)- zLQ0%DbLJvujW@6+AaNiQ>^IkYYaY%O=lQ5u9k4n$FcOh@+ougvrR z!Wcc(^4_sjZa<;-is#WEmu~q&Jeqr6ydlxt4_9 zzYSUnKi#<*tg#F1{K7S zmWv_;ngldIRpY0m|3!CWWXR=iya3tU%dvkyQhb(2PES#=>UY(~-Wmq!p3)Ew)dg7p zM`KrkRW1p7=`8f>x?!rZ+CNqIvIfk;qX4zp zL25!zvZPs`>_R<={^4`T{ZQQ&({%%F-Cbzg@nJe!I3x@a@f768A+jtLtoxZz+I;@ReY&yF*!#qa)TvD>8DSh?$OM7gZ=$F z-*ujyL#2C21PYONoqbgSTdI!1$lFW}jlspa2ZUwz(;w8W& zg7*-0CJY~JsiJ+bQnP!gG@n%eFp!KNKSHg7--VD(l4gaD9IzUg?8-+UYPtNEsYwJN zx+hW-t_j8*MqXkc9$x?oyzN4|0y20duU~%}vzsiD>ywv2+}1~q)cw7Ribbj?l}XVc}DM1hmE9DP(J*oOYM&m5iel>3dcigB;MNxQuOZyRkj~zBs+w;#={qJuzfZ0x zSRpFH^}-)7hcRa>7+r+4OwPpd$oo%Bi9d<3(|C@riP##6;AIU1of(MI>A2G;#%Gfe zNxgGt_cCj8tw7G)1&1>R;+UA2=o^Zw)aWKx(-{8YcauSSkCEjTBFp`?yn=Do?=rS$ z@&3{CZ3(lfh2cS_j(f{U0zQQ^Zae3F4k1PLWZy7jJa_NRPmK)36YZ&p7*S(u4-?VP zob_kwgNg6skr(MW(uV0DdqfHaGZ@Drxf|`g;0(kwT6qL84AqlZT~Zxex;GH%H(#IA z6AqpQz!>D?#(}vcL25-*GCp|U8uC{cr!C)Bps+BtR=B12Gh10d+gH@_6_(E$8Q8YB zguzcu_qQi83lN!sa<}`k5YpY%Wp|**KBSRW7Vs`DEH6WJcy{(lmhEJiBawX&n1^AuKXih-SiumyVS%$IGtO(|6{>fdEx_Vn)pag;^jY z`qh;=o9IO%T()5|RUBax$xEPzdw2(t9P?v#k|Fx-`DJo%3S1@i- zu)Kc#Y_dW$mp&&awVS~&1^&>b5Dil;G(+u*-$^i9(86qXW6m0qSACtLUI$y=rH?+Q znDdA+^$JmdOdw(e{dk<5S%!rjV4Y!axTvj9(xDL1DqqAfuQC;8Rmt@vm7-GmV5}b_ z_(zR`0g!{T(-^mY%m=Wv2cy3nyn4>qZaN*e{7R+}!-yD3ZI4La!o=^_!C++X2~i(& zt)F7@D-z1xf^v@D3NM1GANC;15MAl(U{ApXBafUi=PbT(7Q+7uD)MILR zTou#O8PI)vCnHhdZl$2C;E`t$KMef{;0CG>_zJ>U_ zg_hTko%BF8Z7Itcb1gSim@M@|v<`1*{J+|}_IN1Mw~s+WrY)fyMq9tA6z!^%GGryc zT8CdrDuykG4qN0@#N)8orLb#TI%tF<3eiE$YLrAO)1YPKOpU`dPBX@wp69*p+4lY8 z{qz0zef#v0c;$J(tvr-m8@aWF#ZF{t?6H{*ofCmcJ7Z&4C=C_h2`vA?v_m|*o0D7)PV zQTH@R^#sAqB5{Q#D76H_N7ENo`BlsO8QTV%+3h)@v2UV;V**m6)%9t`5hI~@;6JQyCBQR5pC`fV1L?Y@HE~5gIAnIw<9|KW+S*z|Yghv5d z?0;>DfIUkwCfq=jx8u}dAy$kb<53R$fFT*pkwoJboZ`d|;|vj6poQoE{)J^=tc*D# z#73tGC(7UQYacKTzUR{@0nDackEY!jBD@YyF~IwtQ1T=e!tFw$7sSlbX6LX-5%ya# zkz+(qp(gWsbIV2qf}B9;%zLUXTzJi{@H$S9oumDan96uofHe|fmwZSFDmhxA48Y@u zQv3#dq+hV~p%e`2qZu+7a{}>EFozj6l4B%9R$94oQL$20htf7}pd;Sf@PU+uHf4?m zig*w5T$C7vuHCAZRjXbJYLg9BXoxmYh|wo! znGkLiJjX=g8UBGJV&@e4fMQ<+`V}(>*gA0!kxWrKN>M+HBpT*R0$M?-kfefE#kU>l zP9<(O5-{`{VA99DdIHkHSQPNV58G0SEjYc5x6FRlKmPB%*W%<6fI9|@sM1L$D8MVK ztl~?0&w|tWdE!*!GnC62?_ejqX07T_ranU^9j4Kk)ngPrAb;#cw-@ntZ~z0fTo$>& zl(4Ep(MlQakIdcEm*>#V_Ze^puzzw`$bZ+uc7a(FO)|;G<>&N8bJ)RC8k4sFy{QJm zF(%|pOH&3q&`JP;C`cs`h*_oJh+7l^!s-c6i#6zPX=(X>v>pvKGxj9vfFgHl+n*9k zSPx*9JP!)~Xc7`P2!#y#2Wo$LO(unF!bS1NE>uhDu|k?;5}stoKxp_ADH>r42PRD> zCz-3S4*SP@638jLQ|hnFsC+&q8KZ(&I%L~vR|4c+HAX>x|Lbl|))qO}LBz^@i~RH(kW zt}^*=d$?K3mW&<(+Ey7noRuHyibVWs9*_g0?AR^DN(KRCs%^)C_hVEBv3Jv$uDwLT zy-Y8;BLqryvdiy#2ta*|9!QyhGw1aXs|_PH`zLRwiT5f+dCKb*7v(1PV5Im^fF@pU zRqOYL+bb1ijK3ldMG~3CFtQW|T4bI>qM~%WpaJ9Xk*E1SityUM-`AM?ih!$@7o*=A zctvutc0LAaBWnVOSjC$`EZNwwI-Y@K7+3)U6*9eQi-gX{0UC*p6Hx(rgEmr>9NRFZ zeGrx1lVW==<*6uYoFlr5qR2lVOxZqX3H6&IXQJLpCIMh!0wA|bAZ58da#WY<;$u!r z@>F(JDF4%+Q@9tAmHuN_kHU$CiXT2v;d_|k_-7BFnE$(>(&0ix*n)cs%> zIl&xxhK=$O0C5J^xrZjz|B}V00u}{Fm-qdHwIY0GhCx8HL`RpLdh6B}HL#@1;WmvG z!BbTJ2?EeEF5r?k5eyb=ef{Fl+$#VN;KU*-ojsND36#;o?ma%{ri>sBP&o)&`semk z&9SI+mOXMeczDXd5ab1|Ak({|2n725BceQOwR(s$ON0WToE|Cyw1+XCAG6GKBl(7 zRt;tITfo^1KYaMG8J>O!Aeu%1olf^P!;mk8U&3-cgygkAPWIZEL5y8X2u2XY4$j^t zoSY#9mV`$On7jvAB(XNQbM=42lL2H^7(zJ!Oz;ts*P)MJ4WFXdil}2S!#atWu8{Bk zZTLb1F@OK$&iJxw@Ddejdng(sYv5A*+V899+$Q8maG`i2`w~J!MItP~nP@yaNms6O z0S&AxDO2i22FjfrphZ+QVE7HpNreAX?c?nws-21LbEh-bfE#(LR|)60CHv771)8oC z*;DQa5mH@n00XbrBSsyG)))fv?LT^@0IMs|`!6U!TQRP0ET>HOgF(qY*-lbU@73%- z2TxTJZb)yy0Ce0vA%|K|(2NMLb_3rehgK$;Fau|~aJ<&(`ly*lueE2-AVBwsC*cmB zXHt~XBceP2$(usv3m%M+DOoLXEE6|Wx)u`Pr990dp#tsgk#kBWnqa`Ju#6{jR0MNO zrxVEIrSs)bC9s8L>BrH*J~pxC6ij>bV3C^abSqKO*ohrfiaS6CdEltCw=9Sz%CVb* zAeY;wptz-1>ZVVO))Jv~$!R5bkNR?zVfsAxS@*hd4FEWY5Is;fER&?dp>e-ojf9;< zWdnG1w?KUYfzr^t-{&1Zfu4IBp37V4hdR*;QdMr9R!3rEZLG3SUJtR30<3ZNkwL>s zP*plI4e0Rg_Ct?T@sAU7TM3nWG1|m__C|cbY4u&H2#Wdzt*#75x#t1Z>ccV+f-`Yb zbfDfx#-&I$L#LX}pLYBa%y>drK&nbCvDVn+1xAwEbc+PS(G-d02cudH)jIb#vEtp(=hIaDYscWe! zpZc`3Vz(>6G^9qng#gOh?G;+W-65g=ILHJ=yXGUy*(P8OGIfkUzEwJOc{%DRC~}N1 z#kRm*U9-Knf5xsfV6zdJS~})TjQ>@0THV|b%?pp2aa8I6qoH(b^SGDXTQ+`X2*#yf zS&kBMR4ISYgef*k5msaV*pLNoc=2UU(1STQnkZ-rYrgV+p(zoG2IG`TazHZjb<*^Z z1S1H!D4hTseT622!C9>qdIW?y=|o$*N2(I%5ebeo*mXf=2-T36BFCn^`Q#K6@W6Ra z=@8E|O`O;h#flpocsNH9mQvFRwKASC-g&7CDh+@(l!8fDIDdfI?n?BbcIs!cCwdrU z_%wK+x1fNa46oPYIRN)w51*Q7AygvTm!ru=d7}$q_C{(eS|Qyf72;CVD*7hLB~zxq z4o3x59~s#Ev2Fy^eK{tTcw#F)7N?DDlD2;$=kYxDO<1rf4wc^)Y zs2-=bWGn6iMdqXW;H$R>O;!A|Y<63`za#3}xCa~rNVo&4&3jT|ARP6wjxu<{(aBW7 zgHlWxh{bEqJe=!j(sWfmY@z~FNTIfO z8rFgWPTs=)kZHkz*^LPx!A>kBysnH;JsgaSSc;Ek<1-4`-xoKjYl=C z1ecXY7b2Ve7i9BjOwAtJVgra$Mo*};ZB_+_J%zgGYbZTez-$nfmpmQB)oORPk%+~Y z1ZB#&6VeJ8Te}Rdf%wM~s)0c;sB|y*u%{5B1w#-HCPKOn-{|ppIi&E)*(l?y$iEy7loX~K57NAuFFB@N`UI@D}oxL#E0PhO33PQ)Qu!e(zD|Lbe%A8bEV1+6a`mZ1e2Qu%NZf0-?HMW7q{*@5; zW1vp=klPHOLM;>`BpjRu0tKdkXsV}U7vI}B#*?8%Y=wBaJ-#tv)KI00r3M8mw<4C> zt_oEfgu=Er)Y#(n8B%VPyxL7{xpkV}D}uVkuK<9faeS6OGBg4Y1ykO#6JxiQs%XbJ z+T;JWpY=?D!hj4L+^kbC#b%rd6E=~m2``x*2G*hIjQk_NE}2eQoPaRf#4vhM}?PsHyBQf zj6(igkb6Z+Z01W3M=peVf|m~M;*`{r@IbPe>7S0f=;5Oz9E`_kC?S|nIDsF` zka6h(MeZL3-7F90I`&)*)X0imZx1h$L1r8FZnRpt^@K9VOI^oMb)S45*b$rUDW7L4 z0RwasQ6?lGf*MTn6Tt%!D#w81umQY5A_*A!a|1K57kDcehj~}$36)OcK#q$o4S{>rYL96Y54b7P2>dUjcrz{W66*tPkm{$M2 zU=9NxEyp1ITG1n9QN%1Nk2OeZ>?&Dq&%P92(1u3uEJnJ0_sxTN!KH+3c!}2|b!dc& z{t~X45|E-We7}_aDZ?ZGYA311`E4D(gRC)9e32Ncu zNtY`XA1me+6~j8_6(yk>k_ohX=wLUPOX1%#dHktJNc49@kR?B3pDYATh~g~Q8cOxy+U z>cS1ObX1|0W9NJ9PtcE77a0APA3nP2%L5ql(dUpPoZk|g*H;2-Q^rP5$gA8$EECZL zgts@fFa}=glzmOT2_%`S(PT&Q>oo13?0i$))-ez4VKKDVRKp8FoQhS_$~A^7=0nZy zq97d34o(|_m_wX(>kv=>^K{N<0SEv`Do0uhFKe-b=M`xYvh9Q{l#ngPKTA%O8*WfF z-@X7CWUx`g{K+zRYmHs>#aY{zWMTX5BMq{yYd6t#%o*#mYQM?CrxaxYB7dLU`7222 zOL!U>dk2--Nr`$!@B2u3IAZyv4~m(M%urgpSKNaQK{VlKiO_m2o+@5s0>C41EIH+y- zBkJ}~=>Cw8c0&PA8^CcvMBI>t?2!&-(kq-rjp@cvlR58sUpe!5TTQWY^L4WOCJpoG z6HriOoNm7z&#P8xPEj8Hmej1S(x$Cem6X8yC83n4QGxpVnnT?=>n3N?WwISqMyKVW z$)KpY8HTJ-4{^*%ix3RN!PkO$vYR3qh=UnN_-L-?5t*!+*%0gKH zNTVdx#-$qChMGq!$a}sqFbJ~AqAa`+mS`H2)(<1uWK8JPmtu-9p2P~+UqLG?9HvWt zB4Xjp6ER^C`N{e7JGZJZ>Pe9uvxa3knVvD3vu<{VA+6Vwam?nx@lIDdVR4T@84-f} zk;aWWtc9gx@1GXxs8m&ujUu<3#;nOdX^`c+7#hT;1j>n=1pDY6rnTQ#@!d^hV*R?G z*|S6PPug4Y=O-2@I{?CjDrhB-;Pkhg3A*0uB(Ka9heq)lz5Dgo@lw}KwmHSIcVL}A zV4XTxn4M-Qo0krF%{6OO5q3R6fNWd}}{-!)|ic9tpC+<v72>~P%X03U6IGbMk0VJev>z{oz z!B(mkcI?e9V^!44n5M2Q-m4r?A1}CKFL@JRkbqj`3OP6Iw=Oi_`Y(5DU4tMH#7m~O zM&`>FUfAkj#b2FRczCnHrj-VpY;0D05<@yl`%e5pzI$~xSmtp}&~l!w@^sg1*vFOW zQbF|z_Mjc3&P`wJq$PLJmx|S}Xgam$Ba1S@S}&<43tv-a0QR7aLnGwdr!A-T5WCjx z8`4&}1>02nb(XREQTo!X>pD$j)oCyFX4m;ejtMUFNDiOYIB-HtZA}fhs?V&8HEumV zWySl>f%7iE$-0rX^R~os9t?6SwBTh9Rli!9KI_eEAs_0@S=T$GHTSic^@mt3ZgwV^ z&5w=rr?2N%D|Qbg{Xr+oWRx{AS*(Tg)?>5&aigwSB%5ycmdf~m)jX`(0=ZI5DKnXA zT@YHKzGth(F0e(Z%BfKin)6gR<0=89go3>)0Z9p=u1KGB7igp`m_JQQ^l(h{PfDx; zULH%7RhpjeoVw?2AS4eLbr=QS93$H+xhMDkl<~yvNVl5!e)`1H^S4&Zw{3jImlfI0 zh}F*fMmENE=Sd5Cq_RP~OY4!$Mc$wuzen#Ku>3G!d2kXUxR~ljX|=7K1Fqr}hChqb z!&|itztJ$SHL+^3^6N^lXRl81CaX`^C-{>RtCmAo8wi$Pd%oW__`uyr| zjxXGBd{@Y|VqMqcN**^$spnPNoq96MC{CUXo|vWNynPw)Dz9?r>_t(smH|Vi`w8$tbR>TZ`Mvu*+MHf>UBP^3C*2FC9 zhXI;!>+UP#8E4k`bz0@~!s{v%>Pl|df4B{8Ha zBB@}pnmECM4XiFH40PV`c4MkvO7W6u%KDVsV^3a$mP$w)?R|^_{At2INukAaGtQ5e zhwe}!qH0e%*p0I1j$N49vYOzOp3K3`VRsv1;&SXP-+b=UUpJYqC*rW~aT;Qu)Uno2 zSKCU&K62R))Se#tQ6N4Mn>|a^q{nGtqq&9~G;+@xSdE3-bLJ=T-1B)wb=HVvzs~r4 zo~i>UKL6w{tCoDf?lx6_{&x;>!S0*38Eo2>d&!^lOO?Yjm%RU&clqQBl?pVob+$I! zS-4iG-w!VJt+d~7)!0}&eyZCk!krx|^j`lm=}2cN~8GIEmnyePqXJ(nZ|6*=lxVyxmQJ;4IWi3CC|XzP^XBLXcZRi*O>(t zF^jUuTC;qa>SEu`8mZUJo5%~&Qsy~1{^Z?Etl0AQ(2~R>b~mj~cl;}3FMA%t-!ZA} zjLHwa`)YqqFfD036>;fhk1^%J&pO=x)7W1nSl_BGV|KUuHNa@VqVA{JQ9e=~m&CTL z>AFEK?!HVulP;32kKHf1{0-v-oz`DWcX_QR8V%~=4cfi2K;q9qCYQe$GZYRQ8 zizw~b(|Y^lo4v}(W~7t_s#RvHX|D5+rmAqVRSI3TeqW$oRi6L~ID3vHUhWWQpN0Qw z9GRAX(%pU2$|l$7nWRKsr76`~<4jUgrC+?&?!uI>vbR}J)wr(KHRi6B#xF9OF&$i~ zZ5V!(YWj&*K3HjV~os-LPj16GG>aoD@p}<>1GgzVX>;5ae!k5=OJ? zTA%SEr@89sE+9AS8rxodS>pd4XJcwXo94iUTM!!kR50M^37l%%Mr*LSm=;M|;F&wG zK5kPPUVB;J36nPK&DQI&Jc%C40}acA7jldvsAJ_)50isAwDS~U^{Wz=y_mI!!`eH< zdzbSWRwJy>=n2xF6z56qOis=OoUK95IdvVsjdg!Cs5?A?-t(3e1?sB&_H8)(OZR=viJE!U&xXV4fz|_{NNoT=y zebOBn)z{fmKt390uz`2Q5r6SKG^fMlC7e~ab@|R=-}ODYspE?pk9Fo32IqS;cwT5T zXD&Xl$$i7&ftm}Fb896_?@C00z8AWTEe{@`4~Gg1ZJH6Ao}?Zzy6C1q(q?jzzLU)@ zkOdXtK)yXkY=8{;z{pv#46|@|>MUxKsdAHJy;9M&$ zC(ydm)F-bf=xg%_-!84YV8^*FtsUnUEzz*3A_K}9_ z&54s^;}n!De6oMKykLcVu>~A-yV=&7BNrjtc0Hqv(r_p92_>MT_GDD-Z>fJ>te&(hwGw%+X2x4~-C#|$ zx>bKmyMLBtIXF{Aw|uQPmu-Q3bb-R{oeaWuYQ;55Z?<)Rm7?;kvG&naXo1&A$uouc zM0dgbj59r^Sb-^4svwZu3|{R&)>%#DuYqdWFUcWIF3E+ivT9omw$WkO-ue_{PhU`j zLA5`D$g=60sGj7o=)-dJj5F=AT|OdzTb?*i=xq#A!3iqjaZ6-DcRUy~;$(S^^F%fM ztLpT*uQ{w-r^XrQ&%HtVq5v%!FC&iq12tw%)QcamK{cim^S=G}RtpWb>Ka5@xo5)CfJ+b7> z$#+luorhj$G`g)IF0UpoA8*%*<&?`HimmDq7bKteovr>B zjT(mj+i%qug+vZuMAab@>`XrTp7$6;IjP{8181TC{%OL-b$Wj?7?*0hOIBpW_CJwX z(Gy0`pE=UbYI89Wl{2c0r_b4fRTN{~!3~J@TzOH(OSdDP+#*>}sVu0xz(*3QH(Qv| zlk>Ti`;mJ3k9Cu;^=8Elv2h7>+HmH*YTEtINBue0R|BmL=JE#WLUlA=K0a>s_E=)U z_&f++3Y4GUxwK&As>h!~+OstSY*l9>eFkmb&Vc?0|5~17MWn^O%#Z?em&os4Z5$eN z-jH6%ckVeyAHETRRDM63dlM)rVEH&HRK9UbB<qD=760Ui9 zY#4T<6bwq*P;Z1+>d=_kxpsL8gWtC8KHuDV2-3Bgy_}%CRmPIg$d8TQe`a>wr9VSH zTwZA$n;z>j(`NwcNJ?ChXKD}yKFid6>-Sj{J#9lHF!F&vUi1HsU6;?h|2#DB-?=%+ z{FzkzaBXLLc$4m}x{>+{$G>Etp*9}jdXxCrY z-N?B~P3e*TqBo}}`R#a*YCWVPs>zDj6(ZPzHq`*fBoES0-phgvHneO^_0HRGZdB8d+S{*UZ=0ZTPeiKRSGgcQIrV+U-?C* zvP~lB4J}e@@?AqNL`W~?7p!?Qj=>}8b@Wj?kzT2`1|!$xkrOT4!< zwHGb27mOLbx!ikNVKfiOq)}mza_Z^oMa*y;* zs|SHj$W*LucHAFV0&{u?eSQ;s_e# zd84<~=5I^?TCdfUsHKO0Wd|X}a4x9!feT(@@ynJ!SKgKc3dyY-Y{p(CH@lj*dw)}` zu(%B09kCY=zWFPlLsIl!SR?T;8e%>U3$u>XE5&(cF0I|x1Jr_Z6&|;V0!qZB}NNiAYXIehkC+s`z z0+%n@C)}YLczdkR4E^u_|Nj3D{2$+eR-(_uXb~V(N*WTPOMeym?tk;gM)gei`?u|8 R&w|jWU7TFME8pRl_+L+oX72z1 diff --git a/index.html b/index.html deleted file mode 100644 index f18b352..0000000 --- a/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Timothy Pidashev - - - - - - - - - - - - - - - - - -

- - -
- -
- About - Blog - Projects -
-
- - - -
-
-

Hello, Im

-

Timothy

-

Pidashev

-
- line -
- - -
-
-

- I'm a 17-year-old on an - epic journey -

-

- to become a - software developer! -

-
- line -
- - -
- - -
- - - - - - - -
-
- - - - - - - - diff --git a/js/closeNav.js b/js/closeNav.js deleted file mode 100644 index c9999ca..0000000 --- a/js/closeNav.js +++ /dev/null @@ -1,3 +0,0 @@ -function closeNav() { - document.getElementById("myNav").style.width = "0%"; -} \ No newline at end of file diff --git a/js/less.js b/js/less.js deleted file mode 100644 index 9731e83..0000000 --- a/js/less.js +++ /dev/null @@ -1,11339 +0,0 @@ -/** - * Less - Leaner CSS v4.1.2 - * http://lesscss.org - * - * Copyright (c) 2009-2021, Alexis Sellier - * Licensed under the Apache-2.0 License. - * - * @license Apache-2.0 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.less = factory()); -}(this, (function () { 'use strict'; - - // Export a new default each time - function defaultOptions () { - return { - /* Inline Javascript - @plugin still allowed */ - javascriptEnabled: false, - /* Outputs a makefile import dependency list to stdout. */ - depends: false, - /* (DEPRECATED) Compress using less built-in compression. - * This does an okay job but does not utilise all the tricks of - * dedicated css compression. */ - compress: false, - /* Runs the less parser and just reports errors without any output. */ - lint: false, - /* Sets available include paths. - * If the file in an @import rule does not exist at that exact location, - * less will look for it at the location(s) passed to this option. - * You might use this for instance to specify a path to a library which - * you want to be referenced simply and relatively in the less files. */ - paths: [], - /* color output in the terminal */ - color: true, - /* The strictImports controls whether the compiler will allow an @import inside of either - * @media blocks or (a later addition) other selector blocks. - * See: https://github.com/less/less.js/issues/656 */ - strictImports: false, - /* Allow Imports from Insecure HTTPS Hosts */ - insecure: false, - /* Allows you to add a path to every generated import and url in your css. - * This does not affect less import statements that are processed, just ones - * that are left in the output css. */ - rootpath: '', - /* By default URLs are kept as-is, so if you import a file in a sub-directory - * that references an image, exactly the same URL will be output in the css. - * This option allows you to re-write URL's in imported files so that the - * URL is always relative to the base imported file */ - rewriteUrls: false, - /* How to process math - * 0 always - eagerly try to solve all operations - * 1 parens-division - require parens for division "/" - * 2 parens | strict - require parens for all operations - * 3 strict-legacy - legacy strict behavior (super-strict) - */ - math: 1, - /* Without this option, less attempts to guess at the output unit when it does maths. */ - strictUnits: false, - /* Effectively the declaration is put at the top of your base Less file, - * meaning it can be used but it also can be overridden if this variable - * is defined in the file. */ - globalVars: null, - /* As opposed to the global variable option, this puts the declaration at the - * end of your base file, meaning it will override anything defined in your Less file. */ - modifyVars: null, - /* This option allows you to specify a argument to go on to every URL. */ - urlArgs: '' - }; - } - - function extractId(href) { - return href.replace(/^[a-z-]+:\/+?[^\/]+/, '') // Remove protocol & domain - .replace(/[\?\&]livereload=\w+/, '') // Remove LiveReload cachebuster - .replace(/^\//, '') // Remove root / - .replace(/\.[a-zA-Z]+$/, '') // Remove simple extension - .replace(/[^\.\w-]+/g, '-') // Replace illegal characters - .replace(/\./g, ':'); // Replace dots with colons(for valid id) - } - function addDataAttr(options, tag) { - for (var opt in tag.dataset) { - if (tag.dataset.hasOwnProperty(opt)) { - if (opt === 'env' || opt === 'dumpLineNumbers' || opt === 'rootpath' || opt === 'errorReporting') { - options[opt] = tag.dataset[opt]; - } - else { - try { - options[opt] = JSON.parse(tag.dataset[opt]); - } - catch (_) { } - } - } - } - } - - var browser = { - createCSS: function (document, styles, sheet) { - // Strip the query-string - var href = sheet.href || ''; - // If there is no title set, use the filename, minus the extension - var id = "less:" + (sheet.title || extractId(href)); - // If this has already been inserted into the DOM, we may need to replace it - var oldStyleNode = document.getElementById(id); - var keepOldStyleNode = false; - // Create a new stylesheet node for insertion or (if necessary) replacement - var styleNode = document.createElement('style'); - styleNode.setAttribute('type', 'text/css'); - if (sheet.media) { - styleNode.setAttribute('media', sheet.media); - } - styleNode.id = id; - if (!styleNode.styleSheet) { - styleNode.appendChild(document.createTextNode(styles)); - // If new contents match contents of oldStyleNode, don't replace oldStyleNode - keepOldStyleNode = (oldStyleNode !== null && oldStyleNode.childNodes.length > 0 && styleNode.childNodes.length > 0 && - oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue); - } - var head = document.getElementsByTagName('head')[0]; - // If there is no oldStyleNode, just append; otherwise, only append if we need - // to replace oldStyleNode with an updated stylesheet - if (oldStyleNode === null || keepOldStyleNode === false) { - var nextEl = sheet && sheet.nextSibling || null; - if (nextEl) { - nextEl.parentNode.insertBefore(styleNode, nextEl); - } - else { - head.appendChild(styleNode); - } - } - if (oldStyleNode && keepOldStyleNode === false) { - oldStyleNode.parentNode.removeChild(oldStyleNode); - } - // For IE. - // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash. - // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head - if (styleNode.styleSheet) { - try { - styleNode.styleSheet.cssText = styles; - } - catch (e) { - throw new Error('Couldn\'t reassign styleSheet.cssText.'); - } - } - }, - currentScript: function (window) { - var document = window.document; - return document.currentScript || (function () { - var scripts = document.getElementsByTagName('script'); - return scripts[scripts.length - 1]; - })(); - } - }; - - var addDefaultOptions = (function (window, options) { - // use options from the current script tag data attribues - addDataAttr(options, browser.currentScript(window)); - if (options.isFileProtocol === undefined) { - options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol); - } - // Load styles asynchronously (default: false) - // - // This is set to `false` by default, so that the body - // doesn't start loading before the stylesheets are parsed. - // Setting this to `true` can result in flickering. - // - options.async = options.async || false; - options.fileAsync = options.fileAsync || false; - // Interval between watch polls - options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500); - options.env = options.env || (window.location.hostname == '127.0.0.1' || - window.location.hostname == '0.0.0.0' || - window.location.hostname == 'localhost' || - (window.location.port && - window.location.port.length > 0) || - options.isFileProtocol ? 'development' - : 'production'); - var dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash); - if (dumpLineNumbers) { - options.dumpLineNumbers = dumpLineNumbers[1]; - } - if (options.useFileCache === undefined) { - options.useFileCache = true; - } - if (options.onReady === undefined) { - options.onReady = true; - } - if (options.relativeUrls) { - options.rewriteUrls = 'all'; - } - }); - - var logger$1 = { - error: function (msg) { - this._fireEvent('error', msg); - }, - warn: function (msg) { - this._fireEvent('warn', msg); - }, - info: function (msg) { - this._fireEvent('info', msg); - }, - debug: function (msg) { - this._fireEvent('debug', msg); - }, - addListener: function (listener) { - this._listeners.push(listener); - }, - removeListener: function (listener) { - for (var i = 0; i < this._listeners.length; i++) { - if (this._listeners[i] === listener) { - this._listeners.splice(i, 1); - return; - } - } - }, - _fireEvent: function (type, msg) { - for (var i = 0; i < this._listeners.length; i++) { - var logFunction = this._listeners[i][type]; - if (logFunction) { - logFunction(msg); - } - } - }, - _listeners: [] - }; - - /** - * @todo Document why this abstraction exists, and the relationship between - * environment, file managers, and plugin manager - */ - var Environment = /** @class */ (function () { - function Environment(externalEnvironment, fileManagers) { - this.fileManagers = fileManagers || []; - externalEnvironment = externalEnvironment || {}; - var optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator']; - var requiredFunctions = []; - var functions = requiredFunctions.concat(optionalFunctions); - for (var i = 0; i < functions.length; i++) { - var propName = functions[i]; - var environmentFunc = externalEnvironment[propName]; - if (environmentFunc) { - this[propName] = environmentFunc.bind(externalEnvironment); - } - else if (i < requiredFunctions.length) { - this.warn("missing required function in environment - " + propName); - } - } - } - Environment.prototype.getFileManager = function (filename, currentDirectory, options, environment, isSync) { - if (!filename) { - logger$1.warn('getFileManager called with no filename.. Please report this issue. continuing.'); - } - if (currentDirectory == null) { - logger$1.warn('getFileManager called with null directory.. Please report this issue. continuing.'); - } - var fileManagers = this.fileManagers; - if (options.pluginManager) { - fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers()); - } - for (var i = fileManagers.length - 1; i >= 0; i--) { - var fileManager = fileManagers[i]; - if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) { - return fileManager; - } - } - return null; - }; - Environment.prototype.addFileManager = function (fileManager) { - this.fileManagers.push(fileManager); - }; - Environment.prototype.clearFileManagers = function () { - this.fileManagers = []; - }; - return Environment; - }()); - - var colors = { - 'aliceblue': '#f0f8ff', - 'antiquewhite': '#faebd7', - 'aqua': '#00ffff', - 'aquamarine': '#7fffd4', - 'azure': '#f0ffff', - 'beige': '#f5f5dc', - 'bisque': '#ffe4c4', - 'black': '#000000', - 'blanchedalmond': '#ffebcd', - 'blue': '#0000ff', - 'blueviolet': '#8a2be2', - 'brown': '#a52a2a', - 'burlywood': '#deb887', - 'cadetblue': '#5f9ea0', - 'chartreuse': '#7fff00', - 'chocolate': '#d2691e', - 'coral': '#ff7f50', - 'cornflowerblue': '#6495ed', - 'cornsilk': '#fff8dc', - 'crimson': '#dc143c', - 'cyan': '#00ffff', - 'darkblue': '#00008b', - 'darkcyan': '#008b8b', - 'darkgoldenrod': '#b8860b', - 'darkgray': '#a9a9a9', - 'darkgrey': '#a9a9a9', - 'darkgreen': '#006400', - 'darkkhaki': '#bdb76b', - 'darkmagenta': '#8b008b', - 'darkolivegreen': '#556b2f', - 'darkorange': '#ff8c00', - 'darkorchid': '#9932cc', - 'darkred': '#8b0000', - 'darksalmon': '#e9967a', - 'darkseagreen': '#8fbc8f', - 'darkslateblue': '#483d8b', - 'darkslategray': '#2f4f4f', - 'darkslategrey': '#2f4f4f', - 'darkturquoise': '#00ced1', - 'darkviolet': '#9400d3', - 'deeppink': '#ff1493', - 'deepskyblue': '#00bfff', - 'dimgray': '#696969', - 'dimgrey': '#696969', - 'dodgerblue': '#1e90ff', - 'firebrick': '#b22222', - 'floralwhite': '#fffaf0', - 'forestgreen': '#228b22', - 'fuchsia': '#ff00ff', - 'gainsboro': '#dcdcdc', - 'ghostwhite': '#f8f8ff', - 'gold': '#ffd700', - 'goldenrod': '#daa520', - 'gray': '#808080', - 'grey': '#808080', - 'green': '#008000', - 'greenyellow': '#adff2f', - 'honeydew': '#f0fff0', - 'hotpink': '#ff69b4', - 'indianred': '#cd5c5c', - 'indigo': '#4b0082', - 'ivory': '#fffff0', - 'khaki': '#f0e68c', - 'lavender': '#e6e6fa', - 'lavenderblush': '#fff0f5', - 'lawngreen': '#7cfc00', - 'lemonchiffon': '#fffacd', - 'lightblue': '#add8e6', - 'lightcoral': '#f08080', - 'lightcyan': '#e0ffff', - 'lightgoldenrodyellow': '#fafad2', - 'lightgray': '#d3d3d3', - 'lightgrey': '#d3d3d3', - 'lightgreen': '#90ee90', - 'lightpink': '#ffb6c1', - 'lightsalmon': '#ffa07a', - 'lightseagreen': '#20b2aa', - 'lightskyblue': '#87cefa', - 'lightslategray': '#778899', - 'lightslategrey': '#778899', - 'lightsteelblue': '#b0c4de', - 'lightyellow': '#ffffe0', - 'lime': '#00ff00', - 'limegreen': '#32cd32', - 'linen': '#faf0e6', - 'magenta': '#ff00ff', - 'maroon': '#800000', - 'mediumaquamarine': '#66cdaa', - 'mediumblue': '#0000cd', - 'mediumorchid': '#ba55d3', - 'mediumpurple': '#9370d8', - 'mediumseagreen': '#3cb371', - 'mediumslateblue': '#7b68ee', - 'mediumspringgreen': '#00fa9a', - 'mediumturquoise': '#48d1cc', - 'mediumvioletred': '#c71585', - 'midnightblue': '#191970', - 'mintcream': '#f5fffa', - 'mistyrose': '#ffe4e1', - 'moccasin': '#ffe4b5', - 'navajowhite': '#ffdead', - 'navy': '#000080', - 'oldlace': '#fdf5e6', - 'olive': '#808000', - 'olivedrab': '#6b8e23', - 'orange': '#ffa500', - 'orangered': '#ff4500', - 'orchid': '#da70d6', - 'palegoldenrod': '#eee8aa', - 'palegreen': '#98fb98', - 'paleturquoise': '#afeeee', - 'palevioletred': '#d87093', - 'papayawhip': '#ffefd5', - 'peachpuff': '#ffdab9', - 'peru': '#cd853f', - 'pink': '#ffc0cb', - 'plum': '#dda0dd', - 'powderblue': '#b0e0e6', - 'purple': '#800080', - 'rebeccapurple': '#663399', - 'red': '#ff0000', - 'rosybrown': '#bc8f8f', - 'royalblue': '#4169e1', - 'saddlebrown': '#8b4513', - 'salmon': '#fa8072', - 'sandybrown': '#f4a460', - 'seagreen': '#2e8b57', - 'seashell': '#fff5ee', - 'sienna': '#a0522d', - 'silver': '#c0c0c0', - 'skyblue': '#87ceeb', - 'slateblue': '#6a5acd', - 'slategray': '#708090', - 'slategrey': '#708090', - 'snow': '#fffafa', - 'springgreen': '#00ff7f', - 'steelblue': '#4682b4', - 'tan': '#d2b48c', - 'teal': '#008080', - 'thistle': '#d8bfd8', - 'tomato': '#ff6347', - 'turquoise': '#40e0d0', - 'violet': '#ee82ee', - 'wheat': '#f5deb3', - 'white': '#ffffff', - 'whitesmoke': '#f5f5f5', - 'yellow': '#ffff00', - 'yellowgreen': '#9acd32' - }; - - var unitConversions = { - length: { - 'm': 1, - 'cm': 0.01, - 'mm': 0.001, - 'in': 0.0254, - 'px': 0.0254 / 96, - 'pt': 0.0254 / 72, - 'pc': 0.0254 / 72 * 12 - }, - duration: { - 's': 1, - 'ms': 0.001 - }, - angle: { - 'rad': 1 / (2 * Math.PI), - 'deg': 1 / 360, - 'grad': 1 / 400, - 'turn': 1 - } - }; - - var data = { colors: colors, unitConversions: unitConversions }; - - /** - * The reason why Node is a class and other nodes simply do not extend - * from Node (since we're transpiling) is due to this issue: - * - * https://github.com/less/less.js/issues/3434 - */ - var Node = /** @class */ (function () { - function Node() { - this.parent = null; - this.visibilityBlocks = undefined; - this.nodeVisible = undefined; - this.rootNode = null; - this.parsed = null; - } - Object.defineProperty(Node.prototype, "currentFileInfo", { - get: function () { - return this.fileInfo(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(Node.prototype, "index", { - get: function () { - return this.getIndex(); - }, - enumerable: false, - configurable: true - }); - Node.prototype.setParent = function (nodes, parent) { - function set(node) { - if (node && node instanceof Node) { - node.parent = parent; - } - } - if (Array.isArray(nodes)) { - nodes.forEach(set); - } - else { - set(nodes); - } - }; - Node.prototype.getIndex = function () { - return this._index || (this.parent && this.parent.getIndex()) || 0; - }; - Node.prototype.fileInfo = function () { - return this._fileInfo || (this.parent && this.parent.fileInfo()) || {}; - }; - Node.prototype.isRulesetLike = function () { return false; }; - Node.prototype.toCSS = function (context) { - var strs = []; - this.genCSS(context, { - add: function (chunk, fileInfo, index) { - strs.push(chunk); - }, - isEmpty: function () { - return strs.length === 0; - } - }); - return strs.join(''); - }; - Node.prototype.genCSS = function (context, output) { - output.add(this.value); - }; - Node.prototype.accept = function (visitor) { - this.value = visitor.visit(this.value); - }; - Node.prototype.eval = function () { return this; }; - Node.prototype._operate = function (context, op, a, b) { - switch (op) { - case '+': return a + b; - case '-': return a - b; - case '*': return a * b; - case '/': return a / b; - } - }; - Node.prototype.fround = function (context, value) { - var precision = context && context.numPrecision; - // add "epsilon" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded: - return (precision) ? Number((value + 2e-16).toFixed(precision)) : value; - }; - Node.compare = function (a, b) { - /* returns: - -1: a < b - 0: a = b - 1: a > b - and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */ - if ((a.compare) && - // for "symmetric results" force toCSS-based comparison - // of Quoted or Anonymous if either value is one of those - !(b.type === 'Quoted' || b.type === 'Anonymous')) { - return a.compare(b); - } - else if (b.compare) { - return -b.compare(a); - } - else if (a.type !== b.type) { - return undefined; - } - a = a.value; - b = b.value; - if (!Array.isArray(a)) { - return a === b ? 0 : undefined; - } - if (a.length !== b.length) { - return undefined; - } - for (var i = 0; i < a.length; i++) { - if (Node.compare(a[i], b[i]) !== 0) { - return undefined; - } - } - return 0; - }; - Node.numericCompare = function (a, b) { - return a < b ? -1 - : a === b ? 0 - : a > b ? 1 : undefined; - }; - // Returns true if this node represents root of ast imported by reference - Node.prototype.blocksVisibility = function () { - if (this.visibilityBlocks == null) { - this.visibilityBlocks = 0; - } - return this.visibilityBlocks !== 0; - }; - Node.prototype.addVisibilityBlock = function () { - if (this.visibilityBlocks == null) { - this.visibilityBlocks = 0; - } - this.visibilityBlocks = this.visibilityBlocks + 1; - }; - Node.prototype.removeVisibilityBlock = function () { - if (this.visibilityBlocks == null) { - this.visibilityBlocks = 0; - } - this.visibilityBlocks = this.visibilityBlocks - 1; - }; - // Turns on node visibility - if called node will be shown in output regardless - // of whether it comes from import by reference or not - Node.prototype.ensureVisibility = function () { - this.nodeVisible = true; - }; - // Turns off node visibility - if called node will NOT be shown in output regardless - // of whether it comes from import by reference or not - Node.prototype.ensureInvisibility = function () { - this.nodeVisible = false; - }; - // return values: - // false - the node must not be visible - // true - the node must be visible - // undefined or null - the node has the same visibility as its parent - Node.prototype.isVisible = function () { - return this.nodeVisible; - }; - Node.prototype.visibilityInfo = function () { - return { - visibilityBlocks: this.visibilityBlocks, - nodeVisible: this.nodeVisible - }; - }; - Node.prototype.copyVisibilityInfo = function (info) { - if (!info) { - return; - } - this.visibilityBlocks = info.visibilityBlocks; - this.nodeVisible = info.nodeVisible; - }; - return Node; - }()); - - // - // RGB Colors - #ff0014, #eee - // - var Color = function (rgb, a, originalForm) { - var self = this; - // - // The end goal here, is to parse the arguments - // into an integer triplet, such as `128, 255, 0` - // - // This facilitates operations and conversions. - // - if (Array.isArray(rgb)) { - this.rgb = rgb; - } - else if (rgb.length >= 6) { - this.rgb = []; - rgb.match(/.{2}/g).map(function (c, i) { - if (i < 3) { - self.rgb.push(parseInt(c, 16)); - } - else { - self.alpha = (parseInt(c, 16)) / 255; - } - }); - } - else { - this.rgb = []; - rgb.split('').map(function (c, i) { - if (i < 3) { - self.rgb.push(parseInt(c + c, 16)); - } - else { - self.alpha = (parseInt(c + c, 16)) / 255; - } - }); - } - this.alpha = this.alpha || (typeof a === 'number' ? a : 1); - if (typeof originalForm !== 'undefined') { - this.value = originalForm; - } - }; - Color.prototype = Object.assign(new Node(), { - type: 'Color', - luma: function () { - var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255; - r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4); - g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4); - b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4); - return 0.2126 * r + 0.7152 * g + 0.0722 * b; - }, - genCSS: function (context, output) { - output.add(this.toCSS(context)); - }, - toCSS: function (context, doNotCompress) { - var compress = context && context.compress && !doNotCompress; - var color; - var alpha; - var colorFunction; - var args = []; - // `value` is set if this color was originally - // converted from a named color string so we need - // to respect this and try to output named color too. - alpha = this.fround(context, this.alpha); - if (this.value) { - if (this.value.indexOf('rgb') === 0) { - if (alpha < 1) { - colorFunction = 'rgba'; - } - } - else if (this.value.indexOf('hsl') === 0) { - if (alpha < 1) { - colorFunction = 'hsla'; - } - else { - colorFunction = 'hsl'; - } - } - else { - return this.value; - } - } - else { - if (alpha < 1) { - colorFunction = 'rgba'; - } - } - switch (colorFunction) { - case 'rgba': - args = this.rgb.map(function (c) { - return clamp$1(Math.round(c), 255); - }).concat(clamp$1(alpha, 1)); - break; - case 'hsla': - args.push(clamp$1(alpha, 1)); - case 'hsl': - color = this.toHSL(); - args = [ - this.fround(context, color.h), - this.fround(context, color.s * 100) + "%", - this.fround(context, color.l * 100) + "%" - ].concat(args); - } - if (colorFunction) { - // Values are capped between `0` and `255`, rounded and zero-padded. - return colorFunction + "(" + args.join("," + (compress ? '' : ' ')) + ")"; - } - color = this.toRGB(); - if (compress) { - var splitcolor = color.split(''); - // Convert color to short format - if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) { - color = "#" + splitcolor[1] + splitcolor[3] + splitcolor[5]; - } - } - return color; - }, - // - // Operations have to be done per-channel, if not, - // channels will spill onto each other. Once we have - // our result, in the form of an integer triplet, - // we create a new Color node to hold the result. - // - operate: function (context, op, other) { - var rgb = new Array(3); - var alpha = this.alpha * (1 - other.alpha) + other.alpha; - for (var c = 0; c < 3; c++) { - rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]); - } - return new Color(rgb, alpha); - }, - toRGB: function () { - return toHex(this.rgb); - }, - toHSL: function () { - var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha; - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var h; - var s; - var l = (max + min) / 2; - var d = max - min; - if (max === min) { - h = s = 0; - } - else { - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - return { h: h * 360, s: s, l: l, a: a }; - }, - // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - toHSV: function () { - var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha; - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var h; - var s; - var v = max; - var d = max - min; - if (max === 0) { - s = 0; - } - else { - s = d / max; - } - if (max === min) { - h = 0; - } - else { - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - return { h: h * 360, s: s, v: v, a: a }; - }, - toARGB: function () { - return toHex([this.alpha * 255].concat(this.rgb)); - }, - compare: function (x) { - return (x.rgb && - x.rgb[0] === this.rgb[0] && - x.rgb[1] === this.rgb[1] && - x.rgb[2] === this.rgb[2] && - x.alpha === this.alpha) ? 0 : undefined; - } - }); - Color.fromKeyword = function (keyword) { - var c; - var key = keyword.toLowerCase(); - if (colors.hasOwnProperty(key)) { - c = new Color(colors[key].slice(1)); - } - else if (key === 'transparent') { - c = new Color([0, 0, 0], 0); - } - if (c) { - c.value = keyword; - return c; - } - }; - function clamp$1(v, max) { - return Math.min(Math.max(v, 0), max); - } - function toHex(v) { - return "#" + v.map(function (c) { - c = clamp$1(Math.round(c), 255); - return (c < 16 ? '0' : '') + c.toString(16); - }).join(''); - } - - var Paren = function (node) { - this.value = node; - }; - Paren.prototype = Object.assign(new Node(), { - type: 'Paren', - genCSS: function (context, output) { - output.add('('); - this.value.genCSS(context, output); - output.add(')'); - }, - eval: function (context) { - return new Paren(this.value.eval(context)); - } - }); - - var _noSpaceCombinators = { - '': true, - ' ': true, - '|': true - }; - var Combinator = function (value) { - if (value === ' ') { - this.value = ' '; - this.emptyOrWhitespace = true; - } - else { - this.value = value ? value.trim() : ''; - this.emptyOrWhitespace = this.value === ''; - } - }; - Combinator.prototype = Object.assign(new Node(), { - type: 'Combinator', - genCSS: function (context, output) { - var spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' '; - output.add(spaceOrEmpty + this.value + spaceOrEmpty); - } - }); - - var Element = function (combinator, value, isVariable, index, currentFileInfo, visibilityInfo) { - this.combinator = combinator instanceof Combinator ? - combinator : new Combinator(combinator); - if (typeof value === 'string') { - this.value = value.trim(); - } - else if (value) { - this.value = value; - } - else { - this.value = ''; - } - this.isVariable = isVariable; - this._index = index; - this._fileInfo = currentFileInfo; - this.copyVisibilityInfo(visibilityInfo); - this.setParent(this.combinator, this); - }; - Element.prototype = Object.assign(new Node(), { - type: 'Element', - accept: function (visitor) { - var value = this.value; - this.combinator = visitor.visit(this.combinator); - if (typeof value === 'object') { - this.value = visitor.visit(value); - } - }, - eval: function (context) { - return new Element(this.combinator, this.value.eval ? this.value.eval(context) : this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo()); - }, - clone: function () { - return new Element(this.combinator, this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo()); - }, - genCSS: function (context, output) { - output.add(this.toCSS(context), this.fileInfo(), this.getIndex()); - }, - toCSS: function (context) { - context = context || {}; - var value = this.value; - var firstSelector = context.firstSelector; - if (value instanceof Paren) { - // selector in parens should not be affected by outer selector - // flags (breaks only interpolated selectors - see #1973) - context.firstSelector = true; - } - value = value.toCSS ? value.toCSS(context) : value; - context.firstSelector = firstSelector; - if (value === '' && this.combinator.value.charAt(0) === '&') { - return ''; - } - else { - return this.combinator.toCSS(context) + value; - } - } - }); - - var Math$1 = { - ALWAYS: 0, - PARENS_DIVISION: 1, - PARENS: 2 - // removed - STRICT_LEGACY: 3 - }; - var RewriteUrls = { - OFF: 0, - LOCAL: 1, - ALL: 2 - }; - - /** - * Returns the object type of the given payload - * - * @param {*} payload - * @returns {string} - */ - function getType(payload) { - return Object.prototype.toString.call(payload).slice(8, -1); - } - /** - * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is Record} - */ - function isPlainObject(payload) { - if (getType(payload) !== 'Object') - return false; - return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype; - } - /** - * Returns whether the payload is an array - * - * @param {any} payload - * @returns {payload is any[]} - */ - function isArray(payload) { - return getType(payload) === 'Array'; - } - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - } - - function assignProp(carry, key, newVal, originalObject, includeNonenumerable) { - var propType = {}.propertyIsEnumerable.call(originalObject, key) - ? 'enumerable' - : 'nonenumerable'; - if (propType === 'enumerable') - carry[key] = newVal; - if (includeNonenumerable && propType === 'nonenumerable') { - Object.defineProperty(carry, key, { - value: newVal, - enumerable: false, - writable: true, - configurable: true, - }); - } - } - /** - * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked. - * - * @export - * @template T - * @param {T} target Target can be anything - * @param {Options} [options={}] Options can be `props` or `nonenumerable` - * @returns {T} the target with replaced values - * @export - */ - function copy(target, options) { - if (options === void 0) { options = {}; } - if (isArray(target)) - return target.map(function (i) { return copy(i, options); }); - if (!isPlainObject(target)) - return target; - var props = Object.getOwnPropertyNames(target); - var symbols = Object.getOwnPropertySymbols(target); - return __spreadArrays(props, symbols).reduce(function (carry, key) { - if (isArray(options.props) && !options.props.includes(key)) { - return carry; - } - var val = target[key]; - var newVal = copy(val, options); - assignProp(carry, key, newVal, target, options.nonenumerable); - return carry; - }, {}); - } - - /* jshint proto: true */ - function getLocation(index, inputStream) { - var n = index + 1; - var line = null; - var column = -1; - while (--n >= 0 && inputStream.charAt(n) !== '\n') { - column++; - } - if (typeof index === 'number') { - line = (inputStream.slice(0, index).match(/\n/g) || '').length; - } - return { - line: line, - column: column - }; - } - function copyArray(arr) { - var i; - var length = arr.length; - var copy = new Array(length); - for (i = 0; i < length; i++) { - copy[i] = arr[i]; - } - return copy; - } - function clone(obj) { - var cloned = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - cloned[prop] = obj[prop]; - } - } - return cloned; - } - function defaults(obj1, obj2) { - var newObj = obj2 || {}; - if (!obj2._defaults) { - newObj = {}; - var defaults_1 = copy(obj1); - newObj._defaults = defaults_1; - var cloned = obj2 ? copy(obj2) : {}; - Object.assign(newObj, defaults_1, cloned); - } - return newObj; - } - function copyOptions(obj1, obj2) { - if (obj2 && obj2._defaults) { - return obj2; - } - var opts = defaults(obj1, obj2); - if (opts.strictMath) { - opts.math = Math$1.PARENS; - } - // Back compat with changed relativeUrls option - if (opts.relativeUrls) { - opts.rewriteUrls = RewriteUrls.ALL; - } - if (typeof opts.math === 'string') { - switch (opts.math.toLowerCase()) { - case 'always': - opts.math = Math$1.ALWAYS; - break; - case 'parens-division': - opts.math = Math$1.PARENS_DIVISION; - break; - case 'strict': - case 'parens': - opts.math = Math$1.PARENS; - break; - default: - opts.math = Math$1.PARENS; - } - } - if (typeof opts.rewriteUrls === 'string') { - switch (opts.rewriteUrls.toLowerCase()) { - case 'off': - opts.rewriteUrls = RewriteUrls.OFF; - break; - case 'local': - opts.rewriteUrls = RewriteUrls.LOCAL; - break; - case 'all': - opts.rewriteUrls = RewriteUrls.ALL; - break; - } - } - return opts; - } - function merge(obj1, obj2) { - for (var prop in obj2) { - if (obj2.hasOwnProperty(prop)) { - obj1[prop] = obj2[prop]; - } - } - return obj1; - } - function flattenArray(arr, result) { - if (result === void 0) { result = []; } - for (var i = 0, length_1 = arr.length; i < length_1; i++) { - var value = arr[i]; - if (Array.isArray(value)) { - flattenArray(value, result); - } - else { - if (value !== undefined) { - result.push(value); - } - } - } - return result; - } - - var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - getLocation: getLocation, - copyArray: copyArray, - clone: clone, - defaults: defaults, - copyOptions: copyOptions, - merge: merge, - flattenArray: flattenArray - }); - - var anonymousFunc = /(|Function):(\d+):(\d+)/; - /** - * This is a centralized class of any error that could be thrown internally (mostly by the parser). - * Besides standard .message it keeps some additional data like a path to the file where the error - * occurred along with line and column numbers. - * - * @class - * @extends Error - * @type {module.LessError} - * - * @prop {string} type - * @prop {string} filename - * @prop {number} index - * @prop {number} line - * @prop {number} column - * @prop {number} callLine - * @prop {number} callExtract - * @prop {string[]} extract - * - * @param {Object} e - An error object to wrap around or just a descriptive object - * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager? - * @param {string} [currentFilename] - */ - var LessError = function (e, fileContentMap, currentFilename) { - Error.call(this); - var filename = e.filename || currentFilename; - this.message = e.message; - this.stack = e.stack; - if (fileContentMap && filename) { - var input = fileContentMap.contents[filename]; - var loc = getLocation(e.index, input); - var line = loc.line; - var col = loc.column; - var callLine = e.call && getLocation(e.call, input).line; - var lines = input ? input.split('\n') : ''; - this.type = e.type || 'Syntax'; - this.filename = filename; - this.index = e.index; - this.line = typeof line === 'number' ? line + 1 : null; - this.column = col; - if (!this.line && this.stack) { - var found = this.stack.match(anonymousFunc); - /** - * We have to figure out how this environment stringifies anonymous functions - * so we can correctly map plugin errors. - * - * Note, in Node 8, the output of anonymous funcs varied based on parameters - * being present or not, so we inject dummy params. - */ - var func = new Function('a', 'throw new Error()'); - var lineAdjust = 0; - try { - func(); - } - catch (e) { - var match = e.stack.match(anonymousFunc); - var line = parseInt(match[2]); - lineAdjust = 1 - line; - } - if (found) { - if (found[2]) { - this.line = parseInt(found[2]) + lineAdjust; - } - if (found[3]) { - this.column = parseInt(found[3]); - } - } - } - this.callLine = callLine + 1; - this.callExtract = lines[callLine]; - this.extract = [ - lines[this.line - 2], - lines[this.line - 1], - lines[this.line] - ]; - } - }; - if (typeof Object.create === 'undefined') { - var F = function () { }; - F.prototype = Error.prototype; - LessError.prototype = new F(); - } - else { - LessError.prototype = Object.create(Error.prototype); - } - LessError.prototype.constructor = LessError; - /** - * An overridden version of the default Object.prototype.toString - * which uses additional information to create a helpful message. - * - * @param {Object} options - * @returns {string} - */ - LessError.prototype.toString = function (options) { - options = options || {}; - var message = ''; - var extract = this.extract || []; - var error = []; - var stylize = function (str) { return str; }; - if (options.stylize) { - var type = typeof options.stylize; - if (type !== 'function') { - throw Error("options.stylize should be a function, got a " + type + "!"); - } - stylize = options.stylize; - } - if (this.line !== null) { - if (typeof extract[0] === 'string') { - error.push(stylize(this.line - 1 + " " + extract[0], 'grey')); - } - if (typeof extract[1] === 'string') { - var errorTxt = this.line + " "; - if (extract[1]) { - errorTxt += extract[1].slice(0, this.column) + - stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') + - extract[1].slice(this.column + 1), 'red'), 'inverse'); - } - error.push(errorTxt); - } - if (typeof extract[2] === 'string') { - error.push(stylize(this.line + 1 + " " + extract[2], 'grey')); - } - error = error.join('\n') + stylize('', 'reset') + "\n"; - } - message += stylize(this.type + "Error: " + this.message, 'red'); - if (this.filename) { - message += stylize(' in ', 'red') + this.filename; - } - if (this.line) { - message += stylize(" on line " + this.line + ", column " + (this.column + 1) + ":", 'grey'); - } - message += "\n" + error; - if (this.callLine) { - message += stylize('from ', 'red') + (this.filename || '') + "/n"; - message += stylize(this.callLine, 'grey') + " " + this.callExtract + "/n"; - } - return message; - }; - - var Selector = function (elements, extendList, condition, index, currentFileInfo, visibilityInfo) { - this.extendList = extendList; - this.condition = condition; - this.evaldCondition = !condition; - this._index = index; - this._fileInfo = currentFileInfo; - this.elements = this.getElements(elements); - this.mixinElements_ = undefined; - this.copyVisibilityInfo(visibilityInfo); - this.setParent(this.elements, this); - }; - Selector.prototype = Object.assign(new Node(), { - type: 'Selector', - accept: function (visitor) { - if (this.elements) { - this.elements = visitor.visitArray(this.elements); - } - if (this.extendList) { - this.extendList = visitor.visitArray(this.extendList); - } - if (this.condition) { - this.condition = visitor.visit(this.condition); - } - }, - createDerived: function (elements, extendList, evaldCondition) { - elements = this.getElements(elements); - var newSelector = new Selector(elements, extendList || this.extendList, null, this.getIndex(), this.fileInfo(), this.visibilityInfo()); - newSelector.evaldCondition = (evaldCondition != null) ? evaldCondition : this.evaldCondition; - newSelector.mediaEmpty = this.mediaEmpty; - return newSelector; - }, - getElements: function (els) { - if (!els) { - return [new Element('', '&', false, this._index, this._fileInfo)]; - } - if (typeof els === 'string') { - this.parse.parseNode(els, ['selector'], this._index, this._fileInfo, function (err, result) { - if (err) { - throw new LessError({ - index: err.index, - message: err.message - }, this.parse.imports, this._fileInfo.filename); - } - els = result[0].elements; - }); - } - return els; - }, - createEmptySelectors: function () { - var el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)]; - sels[0].mediaEmpty = true; - return sels; - }, - match: function (other) { - var elements = this.elements; - var len = elements.length; - var olen; - var i; - other = other.mixinElements(); - olen = other.length; - if (olen === 0 || len < olen) { - return 0; - } - else { - for (i = 0; i < olen; i++) { - if (elements[i].value !== other[i]) { - return 0; - } - } - } - return olen; // return number of matched elements - }, - mixinElements: function () { - if (this.mixinElements_) { - return this.mixinElements_; - } - var elements = this.elements.map(function (v) { - return v.combinator.value + (v.value.value || v.value); - }).join('').match(/[,&#\*\.\w-]([\w-]|(\\.))*/g); - if (elements) { - if (elements[0] === '&') { - elements.shift(); - } - } - else { - elements = []; - } - return (this.mixinElements_ = elements); - }, - isJustParentSelector: function () { - return !this.mediaEmpty && - this.elements.length === 1 && - this.elements[0].value === '&' && - (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === ''); - }, - eval: function (context) { - var evaldCondition = this.condition && this.condition.eval(context); - var elements = this.elements; - var extendList = this.extendList; - elements = elements && elements.map(function (e) { return e.eval(context); }); - extendList = extendList && extendList.map(function (extend) { return extend.eval(context); }); - return this.createDerived(elements, extendList, evaldCondition); - }, - genCSS: function (context, output) { - var i, element; - if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') { - output.add(' ', this.fileInfo(), this.getIndex()); - } - for (i = 0; i < this.elements.length; i++) { - element = this.elements[i]; - element.genCSS(context, output); - } - }, - getIsOutput: function () { - return this.evaldCondition; - } - }); - - var Value = function (value) { - if (!value) { - throw new Error('Value requires an array argument'); - } - if (!Array.isArray(value)) { - this.value = [value]; - } - else { - this.value = value; - } - }; - Value.prototype = Object.assign(new Node(), { - type: 'Value', - accept: function (visitor) { - if (this.value) { - this.value = visitor.visitArray(this.value); - } - }, - eval: function (context) { - if (this.value.length === 1) { - return this.value[0].eval(context); - } - else { - return new Value(this.value.map(function (v) { - return v.eval(context); - })); - } - }, - genCSS: function (context, output) { - var i; - for (i = 0; i < this.value.length; i++) { - this.value[i].genCSS(context, output); - if (i + 1 < this.value.length) { - output.add((context && context.compress) ? ',' : ', '); - } - } - } - }); - - var Keyword = function (value) { - this.value = value; - }; - Keyword.prototype = Object.assign(new Node(), { - type: 'Keyword', - genCSS: function (context, output) { - if (this.value === '%') { - throw { type: 'Syntax', message: 'Invalid % without number' }; - } - output.add(this.value); - } - }); - Keyword.True = new Keyword('true'); - Keyword.False = new Keyword('false'); - - var Anonymous = function (value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) { - this.value = value; - this._index = index; - this._fileInfo = currentFileInfo; - this.mapLines = mapLines; - this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike; - this.allowRoot = true; - this.copyVisibilityInfo(visibilityInfo); - }; - Anonymous.prototype = Object.assign(new Node(), { - type: 'Anonymous', - eval: function () { - return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo()); - }, - compare: function (other) { - return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined; - }, - isRulesetLike: function () { - return this.rulesetLike; - }, - genCSS: function (context, output) { - this.nodeVisible = Boolean(this.value); - if (this.nodeVisible) { - output.add(this.value, this._fileInfo, this._index, this.mapLines); - } - } - }); - - var MATH$1 = Math$1; - function evalName(context, name) { - var value = ''; - var i; - var n = name.length; - var output = { add: function (s) { value += s; } }; - for (i = 0; i < n; i++) { - name[i].eval(context).genCSS(context, output); - } - return value; - } - var Declaration = function (name, value, important, merge, index, currentFileInfo, inline, variable) { - this.name = name; - this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]); - this.important = important ? " " + important.trim() : ''; - this.merge = merge; - this._index = index; - this._fileInfo = currentFileInfo; - this.inline = inline || false; - this.variable = (variable !== undefined) ? variable - : (name.charAt && (name.charAt(0) === '@')); - this.allowRoot = true; - this.setParent(this.value, this); - }; - Declaration.prototype = Object.assign(new Node(), { - type: 'Declaration', - genCSS: function (context, output) { - output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex()); - try { - this.value.genCSS(context, output); - } - catch (e) { - e.index = this._index; - e.filename = this._fileInfo.filename; - throw e; - } - output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index); - }, - eval: function (context) { - var mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable; - if (typeof name !== 'string') { - // expand 'primitive' name directly to get - // things faster (~10% for benchmark.less): - name = (name.length === 1) && (name[0] instanceof Keyword) ? - name[0].value : evalName(context, name); - variable = false; // never treat expanded interpolation as new variable name - } - // @todo remove when parens-division is default - if (name === 'font' && context.math === MATH$1.ALWAYS) { - mathBypass = true; - prevMath = context.math; - context.math = MATH$1.PARENS_DIVISION; - } - try { - context.importantScope.push({}); - evaldValue = this.value.eval(context); - if (!this.variable && evaldValue.type === 'DetachedRuleset') { - throw { message: 'Rulesets cannot be evaluated on a property.', - index: this.getIndex(), filename: this.fileInfo().filename }; - } - var important = this.important; - var importantResult = context.importantScope.pop(); - if (!important && importantResult.important) { - important = importantResult.important; - } - return new Declaration(name, evaldValue, important, this.merge, this.getIndex(), this.fileInfo(), this.inline, variable); - } - catch (e) { - if (typeof e.index !== 'number') { - e.index = this.getIndex(); - e.filename = this.fileInfo().filename; - } - throw e; - } - finally { - if (mathBypass) { - context.math = prevMath; - } - } - }, - makeImportant: function () { - return new Declaration(this.name, this.value, '!important', this.merge, this.getIndex(), this.fileInfo(), this.inline); - } - }); - - var debugInfo = /** @class */ (function () { - function debugInfo(context, ctx, lineSeparator) { - var result = ''; - if (context.dumpLineNumbers && !context.compress) { - switch (context.dumpLineNumbers) { - case 'comments': - result = debugInfo.asComment(ctx); - break; - case 'mediaquery': - result = debugInfo.asMediaQuery(ctx); - break; - case 'all': - result = debugInfo.asComment(ctx) + (lineSeparator || '') + debugInfo.asMediaQuery(ctx); - break; - } - } - return result; - } - debugInfo.asComment = function (ctx) { - return "/* line " + ctx.debugInfo.lineNumber + ", " + ctx.debugInfo.fileName + " */\n"; - }; - debugInfo.asMediaQuery = function (ctx) { - var filenameWithProtocol = ctx.debugInfo.fileName; - if (!/^[a-z]+:\/\//i.test(filenameWithProtocol)) { - filenameWithProtocol = "file://" + filenameWithProtocol; - } - return "@media -sass-debug-info{filename{font-family:" + filenameWithProtocol.replace(/([.:\/\\])/g, function (a) { - if (a == '\\') { - a = '\/'; - } - return "\\" + a; - }) + "}line{font-family:\\00003" + ctx.debugInfo.lineNumber + "}}\n"; - }; - return debugInfo; - }()); - - var Comment = function (value, isLineComment, index, currentFileInfo) { - this.value = value; - this.isLineComment = isLineComment; - this._index = index; - this._fileInfo = currentFileInfo; - this.allowRoot = true; - }; - Comment.prototype = Object.assign(new Node(), { - type: 'Comment', - genCSS: function (context, output) { - if (this.debugInfo) { - output.add(debugInfo(context, this), this.fileInfo(), this.getIndex()); - } - output.add(this.value); - }, - isSilent: function (context) { - var isCompressed = context.compress && this.value[2] !== '!'; - return this.isLineComment || isCompressed; - } - }); - - var contexts = {}; - var copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) { - if (!original) { - return; - } - for (var i = 0; i < propertiesToCopy.length; i++) { - if (original.hasOwnProperty(propertiesToCopy[i])) { - destination[propertiesToCopy[i]] = original[propertiesToCopy[i]]; - } - } - }; - /* - parse is used whilst parsing - */ - var parseCopyProperties = [ - // options - 'paths', - 'rewriteUrls', - 'rootpath', - 'strictImports', - 'insecure', - 'dumpLineNumbers', - 'compress', - 'syncImport', - 'chunkInput', - 'mime', - 'useFileCache', - // context - 'processImports', - // Used by the import manager to stop multiple import visitors being created. - 'pluginManager' // Used as the plugin manager for the session - ]; - contexts.Parse = function (options) { - copyFromOriginal(options, this, parseCopyProperties); - if (typeof this.paths === 'string') { - this.paths = [this.paths]; - } - }; - var evalCopyProperties = [ - 'paths', - 'compress', - 'math', - 'strictUnits', - 'sourceMap', - 'importMultiple', - 'urlArgs', - 'javascriptEnabled', - 'pluginManager', - 'importantScope', - 'rewriteUrls' // option - whether to adjust URL's to be relative - ]; - contexts.Eval = function (options, frames) { - copyFromOriginal(options, this, evalCopyProperties); - if (typeof this.paths === 'string') { - this.paths = [this.paths]; - } - this.frames = frames || []; - this.importantScope = this.importantScope || []; - }; - contexts.Eval.prototype.enterCalc = function () { - if (!this.calcStack) { - this.calcStack = []; - } - this.calcStack.push(true); - this.inCalc = true; - }; - contexts.Eval.prototype.exitCalc = function () { - this.calcStack.pop(); - if (!this.calcStack.length) { - this.inCalc = false; - } - }; - contexts.Eval.prototype.inParenthesis = function () { - if (!this.parensStack) { - this.parensStack = []; - } - this.parensStack.push(true); - }; - contexts.Eval.prototype.outOfParenthesis = function () { - this.parensStack.pop(); - }; - contexts.Eval.prototype.inCalc = false; - contexts.Eval.prototype.mathOn = true; - contexts.Eval.prototype.isMathOn = function (op) { - if (!this.mathOn) { - return false; - } - if (op === '/' && this.math !== Math$1.ALWAYS && (!this.parensStack || !this.parensStack.length)) { - return false; - } - if (this.math > Math$1.PARENS_DIVISION) { - return this.parensStack && this.parensStack.length; - } - return true; - }; - contexts.Eval.prototype.pathRequiresRewrite = function (path) { - var isRelative = this.rewriteUrls === RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative; - return isRelative(path); - }; - contexts.Eval.prototype.rewritePath = function (path, rootpath) { - var newPath; - rootpath = rootpath || ''; - newPath = this.normalizePath(rootpath + path); - // If a path was explicit relative and the rootpath was not an absolute path - // we must ensure that the new path is also explicit relative. - if (isPathLocalRelative(path) && - isPathRelative(rootpath) && - isPathLocalRelative(newPath) === false) { - newPath = "./" + newPath; - } - return newPath; - }; - contexts.Eval.prototype.normalizePath = function (path) { - var segments = path.split('/').reverse(); - var segment; - path = []; - while (segments.length !== 0) { - segment = segments.pop(); - switch (segment) { - case '.': - break; - case '..': - if ((path.length === 0) || (path[path.length - 1] === '..')) { - path.push(segment); - } - else { - path.pop(); - } - break; - default: - path.push(segment); - break; - } - } - return path.join('/'); - }; - function isPathRelative(path) { - return !/^(?:[a-z-]+:|\/|#)/i.test(path); - } - function isPathLocalRelative(path) { - return path.charAt(0) === '.'; - } - // todo - do the same for the toCSS ? - - function makeRegistry(base) { - return { - _data: {}, - add: function (name, func) { - // precautionary case conversion, as later querying of - // the registry by function-caller uses lower case as well. - name = name.toLowerCase(); - if (this._data.hasOwnProperty(name)) ; - this._data[name] = func; - }, - addMultiple: function (functions) { - var _this = this; - Object.keys(functions).forEach(function (name) { - _this.add(name, functions[name]); - }); - }, - get: function (name) { - return this._data[name] || (base && base.get(name)); - }, - getLocalFunctions: function () { - return this._data; - }, - inherit: function () { - return makeRegistry(this); - }, - create: function (base) { - return makeRegistry(base); - } - }; - } - var functionRegistry = makeRegistry(null); - - var defaultFunc = { - eval: function () { - var v = this.value_; - var e = this.error_; - if (e) { - throw e; - } - if (v != null) { - return v ? Keyword.True : Keyword.False; - } - }, - value: function (v) { - this.value_ = v; - }, - error: function (e) { - this.error_ = e; - }, - reset: function () { - this.value_ = this.error_ = null; - } - }; - - var Ruleset = function (selectors, rules, strictImports, visibilityInfo) { - this.selectors = selectors; - this.rules = rules; - this._lookups = {}; - this._variables = null; - this._properties = null; - this.strictImports = strictImports; - this.copyVisibilityInfo(visibilityInfo); - this.allowRoot = true; - this.setParent(this.selectors, this); - this.setParent(this.rules, this); - }; - Ruleset.prototype = Object.assign(new Node(), { - type: 'Ruleset', - isRuleset: true, - isRulesetLike: function () { return true; }, - accept: function (visitor) { - if (this.paths) { - this.paths = visitor.visitArray(this.paths, true); - } - else if (this.selectors) { - this.selectors = visitor.visitArray(this.selectors); - } - if (this.rules && this.rules.length) { - this.rules = visitor.visitArray(this.rules); - } - }, - eval: function (context) { - var selectors; - var selCnt; - var selector; - var i; - var hasVariable; - var hasOnePassingSelector = false; - if (this.selectors && (selCnt = this.selectors.length)) { - selectors = new Array(selCnt); - defaultFunc.error({ - type: 'Syntax', - message: 'it is currently only allowed in parametric mixin guards,' - }); - for (i = 0; i < selCnt; i++) { - selector = this.selectors[i].eval(context); - for (var j = 0; j < selector.elements.length; j++) { - if (selector.elements[j].isVariable) { - hasVariable = true; - break; - } - } - selectors[i] = selector; - if (selector.evaldCondition) { - hasOnePassingSelector = true; - } - } - if (hasVariable) { - var toParseSelectors = new Array(selCnt); - for (i = 0; i < selCnt; i++) { - selector = selectors[i]; - toParseSelectors[i] = selector.toCSS(context); - } - this.parse.parseNode(toParseSelectors.join(','), ["selectors"], selectors[0].getIndex(), selectors[0].fileInfo(), function (err, result) { - if (result) { - selectors = flattenArray(result); - } - }); - } - defaultFunc.reset(); - } - else { - hasOnePassingSelector = true; - } - var rules = this.rules ? copyArray(this.rules) : null; - var ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo()); - var rule; - var subRule; - ruleset.originalRuleset = this; - ruleset.root = this.root; - ruleset.firstRoot = this.firstRoot; - ruleset.allowImports = this.allowImports; - if (this.debugInfo) { - ruleset.debugInfo = this.debugInfo; - } - if (!hasOnePassingSelector) { - rules.length = 0; - } - // inherit a function registry from the frames stack when possible; - // otherwise from the global registry - ruleset.functionRegistry = (function (frames) { - var i = 0; - var n = frames.length; - var found; - for (; i !== n; ++i) { - found = frames[i].functionRegistry; - if (found) { - return found; - } - } - return functionRegistry; - }(context.frames)).inherit(); - // push the current ruleset to the frames stack - var ctxFrames = context.frames; - ctxFrames.unshift(ruleset); - // currrent selectors - var ctxSelectors = context.selectors; - if (!ctxSelectors) { - context.selectors = ctxSelectors = []; - } - ctxSelectors.unshift(this.selectors); - // Evaluate imports - if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) { - ruleset.evalImports(context); - } - // Store the frames around mixin definitions, - // so they can be evaluated like closures when the time comes. - var rsRules = ruleset.rules; - for (i = 0; (rule = rsRules[i]); i++) { - if (rule.evalFirst) { - rsRules[i] = rule.eval(context); - } - } - var mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0; - // Evaluate mixin calls. - for (i = 0; (rule = rsRules[i]); i++) { - if (rule.type === 'MixinCall') { - /* jshint loopfunc:true */ - rules = rule.eval(context).filter(function (r) { - if ((r instanceof Declaration) && r.variable) { - // do not pollute the scope if the variable is - // already there. consider returning false here - // but we need a way to "return" variable from mixins - return !(ruleset.variable(r.name)); - } - return true; - }); - rsRules.splice.apply(rsRules, [i, 1].concat(rules)); - i += rules.length - 1; - ruleset.resetCache(); - } - else if (rule.type === 'VariableCall') { - /* jshint loopfunc:true */ - rules = rule.eval(context).rules.filter(function (r) { - if ((r instanceof Declaration) && r.variable) { - // do not pollute the scope at all - return false; - } - return true; - }); - rsRules.splice.apply(rsRules, [i, 1].concat(rules)); - i += rules.length - 1; - ruleset.resetCache(); - } - } - // Evaluate everything else - for (i = 0; (rule = rsRules[i]); i++) { - if (!rule.evalFirst) { - rsRules[i] = rule = rule.eval ? rule.eval(context) : rule; - } - } - // Evaluate everything else - for (i = 0; (rule = rsRules[i]); i++) { - // for rulesets, check if it is a css guard and can be removed - if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) { - // check if it can be folded in (e.g. & where) - if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) { - rsRules.splice(i--, 1); - for (var j = 0; (subRule = rule.rules[j]); j++) { - if (subRule instanceof Node) { - subRule.copyVisibilityInfo(rule.visibilityInfo()); - if (!(subRule instanceof Declaration) || !subRule.variable) { - rsRules.splice(++i, 0, subRule); - } - } - } - } - } - } - // Pop the stack - ctxFrames.shift(); - ctxSelectors.shift(); - if (context.mediaBlocks) { - for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) { - context.mediaBlocks[i].bubbleSelectors(selectors); - } - } - return ruleset; - }, - evalImports: function (context) { - var rules = this.rules; - var i; - var importRules; - if (!rules) { - return; - } - for (i = 0; i < rules.length; i++) { - if (rules[i].type === 'Import') { - importRules = rules[i].eval(context); - if (importRules && (importRules.length || importRules.length === 0)) { - rules.splice.apply(rules, [i, 1].concat(importRules)); - i += importRules.length - 1; - } - else { - rules.splice(i, 1, importRules); - } - this.resetCache(); - } - } - }, - makeImportant: function () { - var result = new Ruleset(this.selectors, this.rules.map(function (r) { - if (r.makeImportant) { - return r.makeImportant(); - } - else { - return r; - } - }), this.strictImports, this.visibilityInfo()); - return result; - }, - matchArgs: function (args) { - return !args || args.length === 0; - }, - // lets you call a css selector with a guard - matchCondition: function (args, context) { - var lastSelector = this.selectors[this.selectors.length - 1]; - if (!lastSelector.evaldCondition) { - return false; - } - if (lastSelector.condition && - !lastSelector.condition.eval(new contexts.Eval(context, context.frames))) { - return false; - } - return true; - }, - resetCache: function () { - this._rulesets = null; - this._variables = null; - this._properties = null; - this._lookups = {}; - }, - variables: function () { - if (!this._variables) { - this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) { - if (r instanceof Declaration && r.variable === true) { - hash[r.name] = r; - } - // when evaluating variables in an import statement, imports have not been eval'd - // so we need to go inside import statements. - // guard against root being a string (in the case of inlined less) - if (r.type === 'Import' && r.root && r.root.variables) { - var vars = r.root.variables(); - for (var name_1 in vars) { - if (vars.hasOwnProperty(name_1)) { - hash[name_1] = r.root.variable(name_1); - } - } - } - return hash; - }, {}); - } - return this._variables; - }, - properties: function () { - if (!this._properties) { - this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) { - if (r instanceof Declaration && r.variable !== true) { - var name_2 = (r.name.length === 1) && (r.name[0] instanceof Keyword) ? - r.name[0].value : r.name; - // Properties don't overwrite as they can merge - if (!hash["$" + name_2]) { - hash["$" + name_2] = [r]; - } - else { - hash["$" + name_2].push(r); - } - } - return hash; - }, {}); - } - return this._properties; - }, - variable: function (name) { - var decl = this.variables()[name]; - if (decl) { - return this.parseValue(decl); - } - }, - property: function (name) { - var decl = this.properties()[name]; - if (decl) { - return this.parseValue(decl); - } - }, - lastDeclaration: function () { - for (var i = this.rules.length; i > 0; i--) { - var decl = this.rules[i - 1]; - if (decl instanceof Declaration) { - return this.parseValue(decl); - } - } - }, - parseValue: function (toParse) { - var self = this; - function transformDeclaration(decl) { - if (decl.value instanceof Anonymous && !decl.parsed) { - if (typeof decl.value.value === 'string') { - this.parse.parseNode(decl.value.value, ['value', 'important'], decl.value.getIndex(), decl.fileInfo(), function (err, result) { - if (err) { - decl.parsed = true; - } - if (result) { - decl.value = result[0]; - decl.important = result[1] || ''; - decl.parsed = true; - } - }); - } - else { - decl.parsed = true; - } - return decl; - } - else { - return decl; - } - } - if (!Array.isArray(toParse)) { - return transformDeclaration.call(self, toParse); - } - else { - var nodes_1 = []; - toParse.forEach(function (n) { - nodes_1.push(transformDeclaration.call(self, n)); - }); - return nodes_1; - } - }, - rulesets: function () { - if (!this.rules) { - return []; - } - var filtRules = []; - var rules = this.rules; - var i; - var rule; - for (i = 0; (rule = rules[i]); i++) { - if (rule.isRuleset) { - filtRules.push(rule); - } - } - return filtRules; - }, - prependRule: function (rule) { - var rules = this.rules; - if (rules) { - rules.unshift(rule); - } - else { - this.rules = [rule]; - } - this.setParent(rule, this); - }, - find: function (selector, self, filter) { - self = self || this; - var rules = []; - var match; - var foundMixins; - var key = selector.toCSS(); - if (key in this._lookups) { - return this._lookups[key]; - } - this.rulesets().forEach(function (rule) { - if (rule !== self) { - for (var j = 0; j < rule.selectors.length; j++) { - match = selector.match(rule.selectors[j]); - if (match) { - if (selector.elements.length > match) { - if (!filter || filter(rule)) { - foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter); - for (var i = 0; i < foundMixins.length; ++i) { - foundMixins[i].path.push(rule); - } - Array.prototype.push.apply(rules, foundMixins); - } - } - else { - rules.push({ rule: rule, path: [] }); - } - break; - } - } - } - }); - this._lookups[key] = rules; - return rules; - }, - genCSS: function (context, output) { - var i; - var j; - var charsetRuleNodes = []; - var ruleNodes = []; - var // Line number debugging - debugInfo$1; - var rule; - var path; - context.tabLevel = (context.tabLevel || 0); - if (!this.root) { - context.tabLevel++; - } - var tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' '); - var tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' '); - var sep; - var charsetNodeIndex = 0; - var importNodeIndex = 0; - for (i = 0; (rule = this.rules[i]); i++) { - if (rule instanceof Comment) { - if (importNodeIndex === i) { - importNodeIndex++; - } - ruleNodes.push(rule); - } - else if (rule.isCharset && rule.isCharset()) { - ruleNodes.splice(charsetNodeIndex, 0, rule); - charsetNodeIndex++; - importNodeIndex++; - } - else if (rule.type === 'Import') { - ruleNodes.splice(importNodeIndex, 0, rule); - importNodeIndex++; - } - else { - ruleNodes.push(rule); - } - } - ruleNodes = charsetRuleNodes.concat(ruleNodes); - // If this is the root node, we don't render - // a selector, or {}. - if (!this.root) { - debugInfo$1 = debugInfo(context, this, tabSetStr); - if (debugInfo$1) { - output.add(debugInfo$1); - output.add(tabSetStr); - } - var paths = this.paths; - var pathCnt = paths.length; - var pathSubCnt = void 0; - sep = context.compress ? ',' : (",\n" + tabSetStr); - for (i = 0; i < pathCnt; i++) { - path = paths[i]; - if (!(pathSubCnt = path.length)) { - continue; - } - if (i > 0) { - output.add(sep); - } - context.firstSelector = true; - path[0].genCSS(context, output); - context.firstSelector = false; - for (j = 1; j < pathSubCnt; j++) { - path[j].genCSS(context, output); - } - } - output.add((context.compress ? '{' : ' {\n') + tabRuleStr); - } - // Compile rules and rulesets - for (i = 0; (rule = ruleNodes[i]); i++) { - if (i + 1 === ruleNodes.length) { - context.lastRule = true; - } - var currentLastRule = context.lastRule; - if (rule.isRulesetLike(rule)) { - context.lastRule = false; - } - if (rule.genCSS) { - rule.genCSS(context, output); - } - else if (rule.value) { - output.add(rule.value.toString()); - } - context.lastRule = currentLastRule; - if (!context.lastRule && rule.isVisible()) { - output.add(context.compress ? '' : ("\n" + tabRuleStr)); - } - else { - context.lastRule = false; - } - } - if (!this.root) { - output.add((context.compress ? '}' : "\n" + tabSetStr + "}")); - context.tabLevel--; - } - if (!output.isEmpty() && !context.compress && this.firstRoot) { - output.add('\n'); - } - }, - joinSelectors: function (paths, context, selectors) { - for (var s = 0; s < selectors.length; s++) { - this.joinSelector(paths, context, selectors[s]); - } - }, - joinSelector: function (paths, context, selector) { - function createParenthesis(elementsToPak, originalElement) { - var replacementParen, j; - if (elementsToPak.length === 0) { - replacementParen = new Paren(elementsToPak[0]); - } - else { - var insideParent = new Array(elementsToPak.length); - for (j = 0; j < elementsToPak.length; j++) { - insideParent[j] = new Element(null, elementsToPak[j], originalElement.isVariable, originalElement._index, originalElement._fileInfo); - } - replacementParen = new Paren(new Selector(insideParent)); - } - return replacementParen; - } - function createSelector(containedElement, originalElement) { - var element, selector; - element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo); - selector = new Selector([element]); - return selector; - } - // joins selector path from `beginningPath` with selector path in `addPath` - // `replacedElement` contains element that is being replaced by `addPath` - // returns concatenated path - function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) { - var newSelectorPath, lastSelector, newJoinedSelector; - // our new selector path - newSelectorPath = []; - // construct the joined selector - if & is the first thing this will be empty, - // if not newJoinedSelector will be the last set of elements in the selector - if (beginningPath.length > 0) { - newSelectorPath = copyArray(beginningPath); - lastSelector = newSelectorPath.pop(); - newJoinedSelector = originalSelector.createDerived(copyArray(lastSelector.elements)); - } - else { - newJoinedSelector = originalSelector.createDerived([]); - } - if (addPath.length > 0) { - // /deep/ is a CSS4 selector - (removed, so should deprecate) - // that is valid without anything in front of it - // so if the & does not have a combinator that is "" or " " then - // and there is a combinator on the parent, then grab that. - // this also allows + a { & .b { .a & { ... though not sure why you would want to do that - var combinator = replacedElement.combinator; - var parentEl = addPath[0].elements[0]; - if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) { - combinator = parentEl.combinator; - } - // join the elements so far with the first part of the parent - newJoinedSelector.elements.push(new Element(combinator, parentEl.value, replacedElement.isVariable, replacedElement._index, replacedElement._fileInfo)); - newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1)); - } - // now add the joined selector - but only if it is not empty - if (newJoinedSelector.elements.length !== 0) { - newSelectorPath.push(newJoinedSelector); - } - // put together the parent selectors after the join (e.g. the rest of the parent) - if (addPath.length > 1) { - var restOfPath = addPath.slice(1); - restOfPath = restOfPath.map(function (selector) { - return selector.createDerived(selector.elements, []); - }); - newSelectorPath = newSelectorPath.concat(restOfPath); - } - return newSelectorPath; - } - // joins selector path from `beginningPath` with every selector path in `addPaths` array - // `replacedElement` contains element that is being replaced by `addPath` - // returns array with all concatenated paths - function addAllReplacementsIntoPath(beginningPath, addPaths, replacedElement, originalSelector, result) { - var j; - for (j = 0; j < beginningPath.length; j++) { - var newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector); - result.push(newSelectorPath); - } - return result; - } - function mergeElementsOnToSelectors(elements, selectors) { - var i, sel; - if (elements.length === 0) { - return; - } - if (selectors.length === 0) { - selectors.push([new Selector(elements)]); - return; - } - for (i = 0; (sel = selectors[i]); i++) { - // if the previous thing in sel is a parent this needs to join on to it - if (sel.length > 0) { - sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements)); - } - else { - sel.push(new Selector(elements)); - } - } - } - // replace all parent selectors inside `inSelector` by content of `context` array - // resulting selectors are returned inside `paths` array - // returns true if `inSelector` contained at least one parent selector - function replaceParentSelector(paths, context, inSelector) { - // The paths are [[Selector]] - // The first list is a list of comma separated selectors - // The inner list is a list of inheritance separated selectors - // e.g. - // .a, .b { - // .c { - // } - // } - // == [[.a] [.c]] [[.b] [.c]] - // - var i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector; - function findNestedSelector(element) { - var maybeSelector; - if (!(element.value instanceof Paren)) { - return null; - } - maybeSelector = element.value.value; - if (!(maybeSelector instanceof Selector)) { - return null; - } - return maybeSelector; - } - // the elements from the current selector so far - currentElements = []; - // the current list of new selectors to add to the path. - // We will build it up. We initiate it with one empty selector as we "multiply" the new selectors - // by the parents - newSelectors = [ - [] - ]; - for (i = 0; (el = inSelector.elements[i]); i++) { - // non parent reference elements just get added - if (el.value !== '&') { - var nestedSelector = findNestedSelector(el); - if (nestedSelector != null) { - // merge the current list of non parent selector elements - // on to the current list of selectors to add - mergeElementsOnToSelectors(currentElements, newSelectors); - var nestedPaths = []; - var replaced = void 0; - var replacedNewSelectors = []; - replaced = replaceParentSelector(nestedPaths, context, nestedSelector); - hadParentSelector = hadParentSelector || replaced; - // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors - for (k = 0; k < nestedPaths.length; k++) { - var replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el); - addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors); - } - newSelectors = replacedNewSelectors; - currentElements = []; - } - else { - currentElements.push(el); - } - } - else { - hadParentSelector = true; - // the new list of selectors to add - selectorsMultiplied = []; - // merge the current list of non parent selector elements - // on to the current list of selectors to add - mergeElementsOnToSelectors(currentElements, newSelectors); - // loop through our current selectors - for (j = 0; j < newSelectors.length; j++) { - sel = newSelectors[j]; - // if we don't have any parent paths, the & might be in a mixin so that it can be used - // whether there are parents or not - if (context.length === 0) { - // the combinator used on el should now be applied to the next element instead so that - // it is not lost - if (sel.length > 0) { - sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo)); - } - selectorsMultiplied.push(sel); - } - else { - // and the parent selectors - for (k = 0; k < context.length; k++) { - // We need to put the current selectors - // then join the last selector's elements on to the parents selectors - var newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector); - // add that to our new set of selectors - selectorsMultiplied.push(newSelectorPath); - } - } - } - // our new selectors has been multiplied, so reset the state - newSelectors = selectorsMultiplied; - currentElements = []; - } - } - // if we have any elements left over (e.g. .a& .b == .b) - // add them on to all the current selectors - mergeElementsOnToSelectors(currentElements, newSelectors); - for (i = 0; i < newSelectors.length; i++) { - length = newSelectors[i].length; - if (length > 0) { - paths.push(newSelectors[i]); - lastSelector = newSelectors[i][length - 1]; - newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList); - } - } - return hadParentSelector; - } - function deriveSelector(visibilityInfo, deriveFrom) { - var newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition); - newSelector.copyVisibilityInfo(visibilityInfo); - return newSelector; - } - // joinSelector code follows - var i, newPaths, hadParentSelector; - newPaths = []; - hadParentSelector = replaceParentSelector(newPaths, context, selector); - if (!hadParentSelector) { - if (context.length > 0) { - newPaths = []; - for (i = 0; i < context.length; i++) { - var concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo())); - concatenated.push(selector); - newPaths.push(concatenated); - } - } - else { - newPaths = [[selector]]; - } - } - for (i = 0; i < newPaths.length; i++) { - paths.push(newPaths[i]); - } - } - }); - - var AtRule = function (name, value, rules, index, currentFileInfo, debugInfo, isRooted, visibilityInfo) { - var i; - this.name = name; - this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value); - if (rules) { - if (Array.isArray(rules)) { - this.rules = rules; - } - else { - this.rules = [rules]; - this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors(); - } - for (i = 0; i < this.rules.length; i++) { - this.rules[i].allowImports = true; - } - this.setParent(this.rules, this); - } - this._index = index; - this._fileInfo = currentFileInfo; - this.debugInfo = debugInfo; - this.isRooted = isRooted || false; - this.copyVisibilityInfo(visibilityInfo); - this.allowRoot = true; - }; - AtRule.prototype = Object.assign(new Node(), { - type: 'AtRule', - accept: function (visitor) { - var value = this.value, rules = this.rules; - if (rules) { - this.rules = visitor.visitArray(rules); - } - if (value) { - this.value = visitor.visit(value); - } - }, - isRulesetLike: function () { - return this.rules || !this.isCharset(); - }, - isCharset: function () { - return '@charset' === this.name; - }, - genCSS: function (context, output) { - var value = this.value, rules = this.rules; - output.add(this.name, this.fileInfo(), this.getIndex()); - if (value) { - output.add(' '); - value.genCSS(context, output); - } - if (rules) { - this.outputRuleset(context, output, rules); - } - else { - output.add(';'); - } - }, - eval: function (context) { - var mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules; - // media stored inside other atrule should not bubble over it - // backpup media bubbling information - mediaPathBackup = context.mediaPath; - mediaBlocksBackup = context.mediaBlocks; - // deleted media bubbling information - context.mediaPath = []; - context.mediaBlocks = []; - if (value) { - value = value.eval(context); - } - if (rules) { - // assuming that there is only one rule at this point - that is how parser constructs the rule - rules = [rules[0].eval(context)]; - rules[0].root = true; - } - // restore media bubbling information - context.mediaPath = mediaPathBackup; - context.mediaBlocks = mediaBlocksBackup; - return new AtRule(this.name, value, rules, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo()); - }, - variable: function (name) { - if (this.rules) { - // assuming that there is only one rule at this point - that is how parser constructs the rule - return Ruleset.prototype.variable.call(this.rules[0], name); - } - }, - find: function () { - if (this.rules) { - // assuming that there is only one rule at this point - that is how parser constructs the rule - return Ruleset.prototype.find.apply(this.rules[0], arguments); - } - }, - rulesets: function () { - if (this.rules) { - // assuming that there is only one rule at this point - that is how parser constructs the rule - return Ruleset.prototype.rulesets.apply(this.rules[0]); - } - }, - outputRuleset: function (context, output, rules) { - var ruleCnt = rules.length; - var i; - context.tabLevel = (context.tabLevel | 0) + 1; - // Compressed - if (context.compress) { - output.add('{'); - for (i = 0; i < ruleCnt; i++) { - rules[i].genCSS(context, output); - } - output.add('}'); - context.tabLevel--; - return; - } - // Non-compressed - var tabSetStr = "\n" + Array(context.tabLevel).join(' '), tabRuleStr = tabSetStr + " "; - if (!ruleCnt) { - output.add(" {" + tabSetStr + "}"); - } - else { - output.add(" {" + tabRuleStr); - rules[0].genCSS(context, output); - for (i = 1; i < ruleCnt; i++) { - output.add(tabRuleStr); - rules[i].genCSS(context, output); - } - output.add(tabSetStr + "}"); - } - context.tabLevel--; - } - }); - - var DetachedRuleset = function (ruleset, frames) { - this.ruleset = ruleset; - this.frames = frames; - this.setParent(this.ruleset, this); - }; - DetachedRuleset.prototype = Object.assign(new Node(), { - type: 'DetachedRuleset', - evalFirst: true, - accept: function (visitor) { - this.ruleset = visitor.visit(this.ruleset); - }, - eval: function (context) { - var frames = this.frames || copyArray(context.frames); - return new DetachedRuleset(this.ruleset, frames); - }, - callEval: function (context) { - return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context); - } - }); - - var Unit = function (numerator, denominator, backupUnit) { - this.numerator = numerator ? copyArray(numerator).sort() : []; - this.denominator = denominator ? copyArray(denominator).sort() : []; - if (backupUnit) { - this.backupUnit = backupUnit; - } - else if (numerator && numerator.length) { - this.backupUnit = numerator[0]; - } - }; - Unit.prototype = Object.assign(new Node(), { - type: 'Unit', - clone: function () { - return new Unit(copyArray(this.numerator), copyArray(this.denominator), this.backupUnit); - }, - genCSS: function (context, output) { - // Dimension checks the unit is singular and throws an error if in strict math mode. - var strictUnits = context && context.strictUnits; - if (this.numerator.length === 1) { - output.add(this.numerator[0]); // the ideal situation - } - else if (!strictUnits && this.backupUnit) { - output.add(this.backupUnit); - } - else if (!strictUnits && this.denominator.length) { - output.add(this.denominator[0]); - } - }, - toString: function () { - var i, returnStr = this.numerator.join('*'); - for (i = 0; i < this.denominator.length; i++) { - returnStr += "/" + this.denominator[i]; - } - return returnStr; - }, - compare: function (other) { - return this.is(other.toString()) ? 0 : undefined; - }, - is: function (unitString) { - return this.toString().toUpperCase() === unitString.toUpperCase(); - }, - isLength: function () { - return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS()); - }, - isEmpty: function () { - return this.numerator.length === 0 && this.denominator.length === 0; - }, - isSingular: function () { - return this.numerator.length <= 1 && this.denominator.length === 0; - }, - map: function (callback) { - var i; - for (i = 0; i < this.numerator.length; i++) { - this.numerator[i] = callback(this.numerator[i], false); - } - for (i = 0; i < this.denominator.length; i++) { - this.denominator[i] = callback(this.denominator[i], true); - } - }, - usedUnits: function () { - var group; - var result = {}; - var mapUnit; - var groupName; - mapUnit = function (atomicUnit) { - /* jshint loopfunc:true */ - if (group.hasOwnProperty(atomicUnit) && !result[groupName]) { - result[groupName] = atomicUnit; - } - return atomicUnit; - }; - for (groupName in unitConversions) { - if (unitConversions.hasOwnProperty(groupName)) { - group = unitConversions[groupName]; - this.map(mapUnit); - } - } - return result; - }, - cancel: function () { - var counter = {}; - var atomicUnit; - var i; - for (i = 0; i < this.numerator.length; i++) { - atomicUnit = this.numerator[i]; - counter[atomicUnit] = (counter[atomicUnit] || 0) + 1; - } - for (i = 0; i < this.denominator.length; i++) { - atomicUnit = this.denominator[i]; - counter[atomicUnit] = (counter[atomicUnit] || 0) - 1; - } - this.numerator = []; - this.denominator = []; - for (atomicUnit in counter) { - if (counter.hasOwnProperty(atomicUnit)) { - var count = counter[atomicUnit]; - if (count > 0) { - for (i = 0; i < count; i++) { - this.numerator.push(atomicUnit); - } - } - else if (count < 0) { - for (i = 0; i < -count; i++) { - this.denominator.push(atomicUnit); - } - } - } - } - this.numerator.sort(); - this.denominator.sort(); - } - }); - - // - // A number with a unit - // - var Dimension = function (value, unit) { - this.value = parseFloat(value); - if (isNaN(this.value)) { - throw new Error('Dimension is not a number.'); - } - this.unit = (unit && unit instanceof Unit) ? unit : - new Unit(unit ? [unit] : undefined); - this.setParent(this.unit, this); - }; - Dimension.prototype = Object.assign(new Node(), { - type: 'Dimension', - accept: function (visitor) { - this.unit = visitor.visit(this.unit); - }, - eval: function (context) { - return this; - }, - toColor: function () { - return new Color([this.value, this.value, this.value]); - }, - genCSS: function (context, output) { - if ((context && context.strictUnits) && !this.unit.isSingular()) { - throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString()); - } - var value = this.fround(context, this.value); - var strValue = String(value); - if (value !== 0 && value < 0.000001 && value > -0.000001) { - // would be output 1e-6 etc. - strValue = value.toFixed(20).replace(/0+$/, ''); - } - if (context && context.compress) { - // Zero values doesn't need a unit - if (value === 0 && this.unit.isLength()) { - output.add(strValue); - return; - } - // Float values doesn't need a leading zero - if (value > 0 && value < 1) { - strValue = (strValue).substr(1); - } - } - output.add(strValue); - this.unit.genCSS(context, output); - }, - // In an operation between two Dimensions, - // we default to the first Dimension's unit, - // so `1px + 2` will yield `3px`. - operate: function (context, op, other) { - /* jshint noempty:false */ - var value = this._operate(context, op, this.value, other.value); - var unit = this.unit.clone(); - if (op === '+' || op === '-') { - if (unit.numerator.length === 0 && unit.denominator.length === 0) { - unit = other.unit.clone(); - if (this.unit.backupUnit) { - unit.backupUnit = this.unit.backupUnit; - } - } - else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) ; - else { - other = other.convertTo(this.unit.usedUnits()); - if (context.strictUnits && other.unit.toString() !== unit.toString()) { - throw new Error("Incompatible units. Change the units or use the unit function. " - + ("Bad units: '" + unit.toString() + "' and '" + other.unit.toString() + "'.")); - } - value = this._operate(context, op, this.value, other.value); - } - } - else if (op === '*') { - unit.numerator = unit.numerator.concat(other.unit.numerator).sort(); - unit.denominator = unit.denominator.concat(other.unit.denominator).sort(); - unit.cancel(); - } - else if (op === '/') { - unit.numerator = unit.numerator.concat(other.unit.denominator).sort(); - unit.denominator = unit.denominator.concat(other.unit.numerator).sort(); - unit.cancel(); - } - return new Dimension(value, unit); - }, - compare: function (other) { - var a, b; - if (!(other instanceof Dimension)) { - return undefined; - } - if (this.unit.isEmpty() || other.unit.isEmpty()) { - a = this; - b = other; - } - else { - a = this.unify(); - b = other.unify(); - if (a.unit.compare(b.unit) !== 0) { - return undefined; - } - } - return Node.numericCompare(a.value, b.value); - }, - unify: function () { - return this.convertTo({ length: 'px', duration: 's', angle: 'rad' }); - }, - convertTo: function (conversions) { - var value = this.value; - var unit = this.unit.clone(); - var i; - var groupName; - var group; - var targetUnit; - var derivedConversions = {}; - var applyUnit; - if (typeof conversions === 'string') { - for (i in unitConversions) { - if (unitConversions[i].hasOwnProperty(conversions)) { - derivedConversions = {}; - derivedConversions[i] = conversions; - } - } - conversions = derivedConversions; - } - applyUnit = function (atomicUnit, denominator) { - /* jshint loopfunc:true */ - if (group.hasOwnProperty(atomicUnit)) { - if (denominator) { - value = value / (group[atomicUnit] / group[targetUnit]); - } - else { - value = value * (group[atomicUnit] / group[targetUnit]); - } - return targetUnit; - } - return atomicUnit; - }; - for (groupName in conversions) { - if (conversions.hasOwnProperty(groupName)) { - targetUnit = conversions[groupName]; - group = unitConversions[groupName]; - unit.map(applyUnit); - } - } - unit.cancel(); - return new Dimension(value, unit); - } - }); - - var MATH = Math$1; - var Operation = function (op, operands, isSpaced) { - this.op = op.trim(); - this.operands = operands; - this.isSpaced = isSpaced; - }; - Operation.prototype = Object.assign(new Node(), { - type: 'Operation', - accept: function (visitor) { - this.operands = visitor.visitArray(this.operands); - }, - eval: function (context) { - var a = this.operands[0].eval(context), b = this.operands[1].eval(context), op; - if (context.isMathOn(this.op)) { - op = this.op === './' ? '/' : this.op; - if (a instanceof Dimension && b instanceof Color) { - a = a.toColor(); - } - if (b instanceof Dimension && a instanceof Color) { - b = b.toColor(); - } - if (!a.operate || !b.operate) { - if ((a instanceof Operation || b instanceof Operation) - && a.op === '/' && context.math === MATH.PARENS_DIVISION) { - return new Operation(this.op, [a, b], this.isSpaced); - } - throw { type: 'Operation', - message: 'Operation on an invalid type' }; - } - return a.operate(context, op, b); - } - else { - return new Operation(this.op, [a, b], this.isSpaced); - } - }, - genCSS: function (context, output) { - this.operands[0].genCSS(context, output); - if (this.isSpaced) { - output.add(' '); - } - output.add(this.op); - if (this.isSpaced) { - output.add(' '); - } - this.operands[1].genCSS(context, output); - } - }); - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - - function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || from); - } - - var Expression = function (value, noSpacing) { - this.value = value; - this.noSpacing = noSpacing; - if (!value) { - throw new Error('Expression requires an array parameter'); - } - }; - Expression.prototype = Object.assign(new Node(), { - type: 'Expression', - accept: function (visitor) { - this.value = visitor.visitArray(this.value); - }, - eval: function (context) { - var returnValue; - var mathOn = context.isMathOn(); - var inParenthesis = this.parens; - var doubleParen = false; - if (inParenthesis) { - context.inParenthesis(); - } - if (this.value.length > 1) { - returnValue = new Expression(this.value.map(function (e) { - if (!e.eval) { - return e; - } - return e.eval(context); - }), this.noSpacing); - } - else if (this.value.length === 1) { - if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) { - doubleParen = true; - } - returnValue = this.value[0].eval(context); - } - else { - returnValue = this; - } - if (inParenthesis) { - context.outOfParenthesis(); - } - if (this.parens && this.parensInOp && !mathOn && !doubleParen - && (!(returnValue instanceof Dimension))) { - returnValue = new Paren(returnValue); - } - return returnValue; - }, - genCSS: function (context, output) { - for (var i = 0; i < this.value.length; i++) { - this.value[i].genCSS(context, output); - if (!this.noSpacing && i + 1 < this.value.length) { - output.add(' '); - } - } - }, - throwAwayComments: function () { - this.value = this.value.filter(function (v) { - return !(v instanceof Comment); - }); - } - }); - - var functionCaller = /** @class */ (function () { - function functionCaller(name, context, index, currentFileInfo) { - this.name = name.toLowerCase(); - this.index = index; - this.context = context; - this.currentFileInfo = currentFileInfo; - this.func = context.frames[0].functionRegistry.get(this.name); - } - functionCaller.prototype.isValid = function () { - return Boolean(this.func); - }; - functionCaller.prototype.call = function (args) { - var _this = this; - if (!(Array.isArray(args))) { - args = [args]; - } - var evalArgs = this.func.evalArgs; - if (evalArgs !== false) { - args = args.map(function (a) { return a.eval(_this.context); }); - } - var commentFilter = function (item) { return !(item.type === 'Comment'); }; - // This code is terrible and should be replaced as per this issue... - // https://github.com/less/less.js/issues/2477 - args = args - .filter(commentFilter) - .map(function (item) { - if (item.type === 'Expression') { - var subNodes = item.value.filter(commentFilter); - if (subNodes.length === 1) { - // https://github.com/less/less.js/issues/3616 - if (item.parens && subNodes[0].op === '/') { - return item; - } - return subNodes[0]; - } - else { - return new Expression(subNodes); - } - } - return item; - }); - if (evalArgs === false) { - return this.func.apply(this, __spreadArray([this.context], args)); - } - return this.func.apply(this, args); - }; - return functionCaller; - }()); - - // - // A function call node. - // - var Call = function (name, args, index, currentFileInfo) { - this.name = name; - this.args = args; - this.calc = name === 'calc'; - this._index = index; - this._fileInfo = currentFileInfo; - }; - Call.prototype = Object.assign(new Node(), { - type: 'Call', - accept: function (visitor) { - if (this.args) { - this.args = visitor.visitArray(this.args); - } - }, - // - // When evaluating a function call, - // we either find the function in the functionRegistry, - // in which case we call it, passing the evaluated arguments, - // if this returns null or we cannot find the function, we - // simply print it out as it appeared originally [2]. - // - // The reason why we evaluate the arguments, is in the case where - // we try to pass a variable to a function, like: `saturate(@color)`. - // The function should receive the value, not the variable. - // - eval: function (context) { - var _this = this; - /** - * Turn off math for calc(), and switch back on for evaluating nested functions - */ - var currentMathContext = context.mathOn; - context.mathOn = !this.calc; - if (this.calc || context.inCalc) { - context.enterCalc(); - } - var exitCalc = function () { - if (_this.calc || context.inCalc) { - context.exitCalc(); - } - context.mathOn = currentMathContext; - }; - var result; - var funcCaller = new functionCaller(this.name, context, this.getIndex(), this.fileInfo()); - if (funcCaller.isValid()) { - try { - result = funcCaller.call(this.args); - exitCalc(); - } - catch (e) { - if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) { - throw e; - } - throw { - type: e.type || 'Runtime', - message: "Error evaluating function `" + this.name + "`" + (e.message ? ": " + e.message : ''), - index: this.getIndex(), - filename: this.fileInfo().filename, - line: e.lineNumber, - column: e.columnNumber - }; - } - } - if (result !== null && result !== undefined) { - // Results that that are not nodes are cast as Anonymous nodes - // Falsy values or booleans are returned as empty nodes - if (!(result instanceof Node)) { - if (!result || result === true) { - result = new Anonymous(null); - } - else { - result = new Anonymous(result.toString()); - } - } - result._index = this._index; - result._fileInfo = this._fileInfo; - return result; - } - var args = this.args.map(function (a) { return a.eval(context); }); - exitCalc(); - return new Call(this.name, args, this.getIndex(), this.fileInfo()); - }, - genCSS: function (context, output) { - output.add(this.name + "(", this.fileInfo(), this.getIndex()); - for (var i = 0; i < this.args.length; i++) { - this.args[i].genCSS(context, output); - if (i + 1 < this.args.length) { - output.add(', '); - } - } - output.add(')'); - } - }); - - var Variable = function (name, index, currentFileInfo) { - this.name = name; - this._index = index; - this._fileInfo = currentFileInfo; - }; - Variable.prototype = Object.assign(new Node(), { - type: 'Variable', - eval: function (context) { - var variable, name = this.name; - if (name.indexOf('@@') === 0) { - name = "@" + new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value; - } - if (this.evaluating) { - throw { type: 'Name', - message: "Recursive variable definition for " + name, - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - this.evaluating = true; - variable = this.find(context.frames, function (frame) { - var v = frame.variable(name); - if (v) { - if (v.important) { - var importantScope = context.importantScope[context.importantScope.length - 1]; - importantScope.important = v.important; - } - // If in calc, wrap vars in a function call to cascade evaluate args first - if (context.inCalc) { - return (new Call('_SELF', [v.value])).eval(context); - } - else { - return v.value.eval(context); - } - } - }); - if (variable) { - this.evaluating = false; - return variable; - } - else { - throw { type: 'Name', - message: "variable " + name + " is undefined", - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - }, - find: function (obj, fun) { - for (var i = 0, r = void 0; i < obj.length; i++) { - r = fun.call(obj, obj[i]); - if (r) { - return r; - } - } - return null; - } - }); - - var Property = function (name, index, currentFileInfo) { - this.name = name; - this._index = index; - this._fileInfo = currentFileInfo; - }; - Property.prototype = Object.assign(new Node(), { - type: 'Property', - eval: function (context) { - var property; - var name = this.name; - // TODO: shorten this reference - var mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules; - if (this.evaluating) { - throw { type: 'Name', - message: "Recursive property reference for " + name, - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - this.evaluating = true; - property = this.find(context.frames, function (frame) { - var v; - var vArr = frame.property(name); - if (vArr) { - for (var i = 0; i < vArr.length; i++) { - v = vArr[i]; - vArr[i] = new Declaration(v.name, v.value, v.important, v.merge, v.index, v.currentFileInfo, v.inline, v.variable); - } - mergeRules(vArr); - v = vArr[vArr.length - 1]; - if (v.important) { - var importantScope = context.importantScope[context.importantScope.length - 1]; - importantScope.important = v.important; - } - v = v.value.eval(context); - return v; - } - }); - if (property) { - this.evaluating = false; - return property; - } - else { - throw { type: 'Name', - message: "Property '" + name + "' is undefined", - filename: this.currentFileInfo.filename, - index: this.index }; - } - }, - find: function (obj, fun) { - for (var i = 0, r = void 0; i < obj.length; i++) { - r = fun.call(obj, obj[i]); - if (r) { - return r; - } - } - return null; - } - }); - - var Attribute = function (key, op, value) { - this.key = key; - this.op = op; - this.value = value; - }; - Attribute.prototype = Object.assign(new Node(), { - type: 'Attribute', - eval: function (context) { - return new Attribute(this.key.eval ? this.key.eval(context) : this.key, this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value); - }, - genCSS: function (context, output) { - output.add(this.toCSS(context)); - }, - toCSS: function (context) { - var value = this.key.toCSS ? this.key.toCSS(context) : this.key; - if (this.op) { - value += this.op; - value += (this.value.toCSS ? this.value.toCSS(context) : this.value); - } - return "[" + value + "]"; - } - }); - - var Quoted = function (str, content, escaped, index, currentFileInfo) { - this.escaped = (escaped == null) ? true : escaped; - this.value = content || ''; - this.quote = str.charAt(0); - this._index = index; - this._fileInfo = currentFileInfo; - this.variableRegex = /@\{([\w-]+)\}/g; - this.propRegex = /\$\{([\w-]+)\}/g; - this.allowRoot = escaped; - }; - Quoted.prototype = Object.assign(new Node(), { - type: 'Quoted', - genCSS: function (context, output) { - if (!this.escaped) { - output.add(this.quote, this.fileInfo(), this.getIndex()); - } - output.add(this.value); - if (!this.escaped) { - output.add(this.quote); - } - }, - containsVariables: function () { - return this.value.match(this.variableRegex); - }, - eval: function (context) { - var that = this; - var value = this.value; - var variableReplacement = function (_, name) { - var v = new Variable("@" + name, that.getIndex(), that.fileInfo()).eval(context, true); - return (v instanceof Quoted) ? v.value : v.toCSS(); - }; - var propertyReplacement = function (_, name) { - var v = new Property("$" + name, that.getIndex(), that.fileInfo()).eval(context, true); - return (v instanceof Quoted) ? v.value : v.toCSS(); - }; - function iterativeReplace(value, regexp, replacementFnc) { - var evaluatedValue = value; - do { - value = evaluatedValue.toString(); - evaluatedValue = value.replace(regexp, replacementFnc); - } while (value !== evaluatedValue); - return evaluatedValue; - } - value = iterativeReplace(value, this.variableRegex, variableReplacement); - value = iterativeReplace(value, this.propRegex, propertyReplacement); - return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo()); - }, - compare: function (other) { - // when comparing quoted strings allow the quote to differ - if (other.type === 'Quoted' && !this.escaped && !other.escaped) { - return Node.numericCompare(this.value, other.value); - } - else { - return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined; - } - } - }); - - function escapePath(path) { - return path.replace(/[\(\)'"\s]/g, function (match) { return "\\" + match; }); - } - var URL = function (val, index, currentFileInfo, isEvald) { - this.value = val; - this._index = index; - this._fileInfo = currentFileInfo; - this.isEvald = isEvald; - }; - URL.prototype = Object.assign(new Node(), { - type: 'Url', - accept: function (visitor) { - this.value = visitor.visit(this.value); - }, - genCSS: function (context, output) { - output.add('url('); - this.value.genCSS(context, output); - output.add(')'); - }, - eval: function (context) { - var val = this.value.eval(context); - var rootpath; - if (!this.isEvald) { - // Add the rootpath if the URL requires a rewrite - rootpath = this.fileInfo() && this.fileInfo().rootpath; - if (typeof rootpath === 'string' && - typeof val.value === 'string' && - context.pathRequiresRewrite(val.value)) { - if (!val.quote) { - rootpath = escapePath(rootpath); - } - val.value = context.rewritePath(val.value, rootpath); - } - else { - val.value = context.normalizePath(val.value); - } - // Add url args if enabled - if (context.urlArgs) { - if (!val.value.match(/^\s*data:/)) { - var delimiter = val.value.indexOf('?') === -1 ? '?' : '&'; - var urlArgs = delimiter + context.urlArgs; - if (val.value.indexOf('#') !== -1) { - val.value = val.value.replace('#', urlArgs + "#"); - } - else { - val.value += urlArgs; - } - } - } - } - return new URL(val, this.getIndex(), this.fileInfo(), true); - } - }); - - var Media = function (value, features, index, currentFileInfo, visibilityInfo) { - this._index = index; - this._fileInfo = currentFileInfo; - var selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors(); - this.features = new Value(features); - this.rules = [new Ruleset(selectors, value)]; - this.rules[0].allowImports = true; - this.copyVisibilityInfo(visibilityInfo); - this.allowRoot = true; - this.setParent(selectors, this); - this.setParent(this.features, this); - this.setParent(this.rules, this); - }; - Media.prototype = Object.assign(new AtRule(), { - type: 'Media', - isRulesetLike: function () { - return true; - }, - accept: function (visitor) { - if (this.features) { - this.features = visitor.visit(this.features); - } - if (this.rules) { - this.rules = visitor.visitArray(this.rules); - } - }, - genCSS: function (context, output) { - output.add('@media ', this._fileInfo, this._index); - this.features.genCSS(context, output); - this.outputRuleset(context, output, this.rules); - }, - eval: function (context) { - if (!context.mediaBlocks) { - context.mediaBlocks = []; - context.mediaPath = []; - } - var media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo()); - if (this.debugInfo) { - this.rules[0].debugInfo = this.debugInfo; - media.debugInfo = this.debugInfo; - } - media.features = this.features.eval(context); - context.mediaPath.push(media); - context.mediaBlocks.push(media); - this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit(); - context.frames.unshift(this.rules[0]); - media.rules = [this.rules[0].eval(context)]; - context.frames.shift(); - context.mediaPath.pop(); - return context.mediaPath.length === 0 ? media.evalTop(context) : - media.evalNested(context); - }, - evalTop: function (context) { - var result = this; - // Render all dependent Media blocks. - if (context.mediaBlocks.length > 1) { - var selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors(); - result = new Ruleset(selectors, context.mediaBlocks); - result.multiMedia = true; - result.copyVisibilityInfo(this.visibilityInfo()); - this.setParent(result, this); - } - delete context.mediaBlocks; - delete context.mediaPath; - return result; - }, - evalNested: function (context) { - var i; - var value; - var path = context.mediaPath.concat([this]); - // Extract the media-query conditions separated with `,` (OR). - for (i = 0; i < path.length; i++) { - value = path[i].features instanceof Value ? - path[i].features.value : path[i].features; - path[i] = Array.isArray(value) ? value : [value]; - } - // Trace all permutations to generate the resulting media-query. - // - // (a, b and c) with nested (d, e) -> - // a and d - // a and e - // b and c and d - // b and c and e - this.features = new Value(this.permute(path).map(function (path) { - path = path.map(function (fragment) { return fragment.toCSS ? fragment : new Anonymous(fragment); }); - for (i = path.length - 1; i > 0; i--) { - path.splice(i, 0, new Anonymous('and')); - } - return new Expression(path); - })); - this.setParent(this.features, this); - // Fake a tree-node that doesn't output anything. - return new Ruleset([], []); - }, - permute: function (arr) { - if (arr.length === 0) { - return []; - } - else if (arr.length === 1) { - return arr[0]; - } - else { - var result = []; - var rest = this.permute(arr.slice(1)); - for (var i = 0; i < rest.length; i++) { - for (var j = 0; j < arr[0].length; j++) { - result.push([arr[0][j]].concat(rest[i])); - } - } - return result; - } - }, - bubbleSelectors: function (selectors) { - if (!selectors) { - return; - } - this.rules = [new Ruleset(copyArray(selectors), [this.rules[0]])]; - this.setParent(this.rules, this); - } - }); - - // - // CSS @import node - // - // The general strategy here is that we don't want to wait - // for the parsing to be completed, before we start importing - // the file. That's because in the context of a browser, - // most of the time will be spent waiting for the server to respond. - // - // On creation, we push the import path to our import queue, though - // `import,push`, we also pass it a callback, which it'll call once - // the file has been fetched, and parsed. - // - var Import = function (path, features, options, index, currentFileInfo, visibilityInfo) { - this.options = options; - this._index = index; - this._fileInfo = currentFileInfo; - this.path = path; - this.features = features; - this.allowRoot = true; - if (this.options.less !== undefined || this.options.inline) { - this.css = !this.options.less || this.options.inline; - } - else { - var pathValue = this.getPath(); - if (pathValue && /[#\.\&\?]css([\?;].*)?$/.test(pathValue)) { - this.css = true; - } - } - this.copyVisibilityInfo(visibilityInfo); - this.setParent(this.features, this); - this.setParent(this.path, this); - }; - Import.prototype = Object.assign(new Node(), { - type: 'Import', - accept: function (visitor) { - if (this.features) { - this.features = visitor.visit(this.features); - } - this.path = visitor.visit(this.path); - if (!this.options.isPlugin && !this.options.inline && this.root) { - this.root = visitor.visit(this.root); - } - }, - genCSS: function (context, output) { - if (this.css && this.path._fileInfo.reference === undefined) { - output.add('@import ', this._fileInfo, this._index); - this.path.genCSS(context, output); - if (this.features) { - output.add(' '); - this.features.genCSS(context, output); - } - output.add(';'); - } - }, - getPath: function () { - return (this.path instanceof URL) ? - this.path.value.value : this.path.value; - }, - isVariableImport: function () { - var path = this.path; - if (path instanceof URL) { - path = path.value; - } - if (path instanceof Quoted) { - return path.containsVariables(); - } - return true; - }, - evalForImport: function (context) { - var path = this.path; - if (path instanceof URL) { - path = path.value; - } - return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo()); - }, - evalPath: function (context) { - var path = this.path.eval(context); - var fileInfo = this._fileInfo; - if (!(path instanceof URL)) { - // Add the rootpath if the URL requires a rewrite - var pathValue = path.value; - if (fileInfo && - pathValue && - context.pathRequiresRewrite(pathValue)) { - path.value = context.rewritePath(pathValue, fileInfo.rootpath); - } - else { - path.value = context.normalizePath(path.value); - } - } - return path; - }, - eval: function (context) { - var result = this.doEval(context); - if (this.options.reference || this.blocksVisibility()) { - if (result.length || result.length === 0) { - result.forEach(function (node) { - node.addVisibilityBlock(); - }); - } - else { - result.addVisibilityBlock(); - } - } - return result; - }, - doEval: function (context) { - var ruleset; - var registry; - var features = this.features && this.features.eval(context); - if (this.options.isPlugin) { - if (this.root && this.root.eval) { - try { - this.root.eval(context); - } - catch (e) { - e.message = 'Plugin error during evaluation'; - throw new LessError(e, this.root.imports, this.root.filename); - } - } - registry = context.frames[0] && context.frames[0].functionRegistry; - if (registry && this.root && this.root.functions) { - registry.addMultiple(this.root.functions); - } - return []; - } - if (this.skip) { - if (typeof this.skip === 'function') { - this.skip = this.skip(); - } - if (this.skip) { - return []; - } - } - if (this.options.inline) { - var contents = new Anonymous(this.root, 0, { - filename: this.importedFilename, - reference: this.path._fileInfo && this.path._fileInfo.reference - }, true, true); - return this.features ? new Media([contents], this.features.value) : [contents]; - } - else if (this.css) { - var newImport = new Import(this.evalPath(context), features, this.options, this._index); - if (!newImport.css && this.error) { - throw this.error; - } - return newImport; - } - else if (this.root) { - ruleset = new Ruleset(null, copyArray(this.root.rules)); - ruleset.evalImports(context); - return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules; - } - else { - return []; - } - } - }); - - var JsEvalNode = function () { }; - JsEvalNode.prototype = Object.assign(new Node(), { - evaluateJavaScript: function (expression, context) { - var result; - var that = this; - var evalContext = {}; - if (!context.javascriptEnabled) { - throw { message: 'Inline JavaScript is not enabled. Is it set in your options?', - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - expression = expression.replace(/@\{([\w-]+)\}/g, function (_, name) { - return that.jsify(new Variable("@" + name, that.getIndex(), that.fileInfo()).eval(context)); - }); - try { - expression = new Function("return (" + expression + ")"); - } - catch (e) { - throw { message: "JavaScript evaluation error: " + e.message + " from `" + expression + "`", - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - var variables = context.frames[0].variables(); - for (var k in variables) { - if (variables.hasOwnProperty(k)) { - /* jshint loopfunc:true */ - evalContext[k.slice(1)] = { - value: variables[k].value, - toJS: function () { - return this.value.eval(context).toCSS(); - } - }; - } - } - try { - result = expression.call(evalContext); - } - catch (e) { - throw { message: "JavaScript evaluation error: '" + e.name + ": " + e.message.replace(/["]/g, '\'') + "'", - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - return result; - }, - jsify: function (obj) { - if (Array.isArray(obj.value) && (obj.value.length > 1)) { - return "[" + obj.value.map(function (v) { return v.toCSS(); }).join(', ') + "]"; - } - else { - return obj.toCSS(); - } - } - }); - - var JavaScript = function (string, escaped, index, currentFileInfo) { - this.escaped = escaped; - this.expression = string; - this._index = index; - this._fileInfo = currentFileInfo; - }; - JavaScript.prototype = Object.assign(new JsEvalNode(), { - type: 'JavaScript', - eval: function (context) { - var result = this.evaluateJavaScript(this.expression, context); - var type = typeof result; - if (type === 'number' && !isNaN(result)) { - return new Dimension(result); - } - else if (type === 'string') { - return new Quoted("\"" + result + "\"", result, this.escaped, this._index); - } - else if (Array.isArray(result)) { - return new Anonymous(result.join(', ')); - } - else { - return new Anonymous(result); - } - } - }); - - var Assignment = function (key, val) { - this.key = key; - this.value = val; - }; - Assignment.prototype = Object.assign(new Node(), { - type: 'Assignment', - accept: function (visitor) { - this.value = visitor.visit(this.value); - }, - eval: function (context) { - if (this.value.eval) { - return new Assignment(this.key, this.value.eval(context)); - } - return this; - }, - genCSS: function (context, output) { - output.add(this.key + "="); - if (this.value.genCSS) { - this.value.genCSS(context, output); - } - else { - output.add(this.value); - } - } - }); - - var Condition = function (op, l, r, i, negate) { - this.op = op.trim(); - this.lvalue = l; - this.rvalue = r; - this._index = i; - this.negate = negate; - }; - Condition.prototype = Object.assign(new Node(), { - type: 'Condition', - accept: function (visitor) { - this.lvalue = visitor.visit(this.lvalue); - this.rvalue = visitor.visit(this.rvalue); - }, - eval: function (context) { - var result = (function (op, a, b) { - switch (op) { - case 'and': return a && b; - case 'or': return a || b; - default: - switch (Node.compare(a, b)) { - case -1: - return op === '<' || op === '=<' || op === '<='; - case 0: - return op === '=' || op === '>=' || op === '=<' || op === '<='; - case 1: - return op === '>' || op === '>='; - default: - return false; - } - } - })(this.op, this.lvalue.eval(context), this.rvalue.eval(context)); - return this.negate ? !result : result; - } - }); - - var UnicodeDescriptor = function (value) { - this.value = value; - }; - UnicodeDescriptor.prototype = Object.assign(new Node(), { - type: 'UnicodeDescriptor' - }); - - var Negative = function (node) { - this.value = node; - }; - Negative.prototype = Object.assign(new Node(), { - type: 'Negative', - genCSS: function (context, output) { - output.add('-'); - this.value.genCSS(context, output); - }, - eval: function (context) { - if (context.isMathOn()) { - return (new Operation('*', [new Dimension(-1), this.value])).eval(context); - } - return new Negative(this.value.eval(context)); - } - }); - - var Extend = function (selector, option, index, currentFileInfo, visibilityInfo) { - this.selector = selector; - this.option = option; - this.object_id = Extend.next_id++; - this.parent_ids = [this.object_id]; - this._index = index; - this._fileInfo = currentFileInfo; - this.copyVisibilityInfo(visibilityInfo); - this.allowRoot = true; - switch (option) { - case 'all': - this.allowBefore = true; - this.allowAfter = true; - break; - default: - this.allowBefore = false; - this.allowAfter = false; - break; - } - this.setParent(this.selector, this); - }; - Extend.prototype = Object.assign(new Node(), { - type: 'Extend', - accept: function (visitor) { - this.selector = visitor.visit(this.selector); - }, - eval: function (context) { - return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo()); - }, - clone: function (context) { - return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo()); - }, - // it concatenates (joins) all selectors in selector array - findSelfSelectors: function (selectors) { - var selfElements = [], i, selectorElements; - for (i = 0; i < selectors.length; i++) { - selectorElements = selectors[i].elements; - // duplicate the logic in genCSS function inside the selector node. - // future TODO - move both logics into the selector joiner visitor - if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') { - selectorElements[0].combinator.value = ' '; - } - selfElements = selfElements.concat(selectors[i].elements); - } - this.selfSelectors = [new Selector(selfElements)]; - this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo()); - } - }); - Extend.next_id = 0; - - var VariableCall = function (variable, index, currentFileInfo) { - this.variable = variable; - this._index = index; - this._fileInfo = currentFileInfo; - this.allowRoot = true; - }; - VariableCall.prototype = Object.assign(new Node(), { - type: 'VariableCall', - eval: function (context) { - var rules; - var detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context); - var error = new LessError({ message: "Could not evaluate variable call " + this.variable }); - if (!detachedRuleset.ruleset) { - if (detachedRuleset.rules) { - rules = detachedRuleset; - } - else if (Array.isArray(detachedRuleset)) { - rules = new Ruleset('', detachedRuleset); - } - else if (Array.isArray(detachedRuleset.value)) { - rules = new Ruleset('', detachedRuleset.value); - } - else { - throw error; - } - detachedRuleset = new DetachedRuleset(rules); - } - if (detachedRuleset.ruleset) { - return detachedRuleset.callEval(context); - } - throw error; - } - }); - - var NamespaceValue = function (ruleCall, lookups, index, fileInfo) { - this.value = ruleCall; - this.lookups = lookups; - this._index = index; - this._fileInfo = fileInfo; - }; - NamespaceValue.prototype = Object.assign(new Node(), { - type: 'NamespaceValue', - eval: function (context) { - var i, name, rules = this.value.eval(context); - for (i = 0; i < this.lookups.length; i++) { - name = this.lookups[i]; - /** - * Eval'd DRs return rulesets. - * Eval'd mixins return rules, so let's make a ruleset if we need it. - * We need to do this because of late parsing of values - */ - if (Array.isArray(rules)) { - rules = new Ruleset([new Selector()], rules); - } - if (name === '') { - rules = rules.lastDeclaration(); - } - else if (name.charAt(0) === '@') { - if (name.charAt(1) === '@') { - name = "@" + new Variable(name.substr(1)).eval(context).value; - } - if (rules.variables) { - rules = rules.variable(name); - } - if (!rules) { - throw { type: 'Name', - message: "variable " + name + " not found", - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - } - else { - if (name.substring(0, 2) === '$@') { - name = "$" + new Variable(name.substr(1)).eval(context).value; - } - else { - name = name.charAt(0) === '$' ? name : "$" + name; - } - if (rules.properties) { - rules = rules.property(name); - } - if (!rules) { - throw { type: 'Name', - message: "property \"" + name.substr(1) + "\" not found", - filename: this.fileInfo().filename, - index: this.getIndex() }; - } - // Properties are an array of values, since a ruleset can have multiple props. - // We pick the last one (the "cascaded" value) - rules = rules[rules.length - 1]; - } - if (rules.value) { - rules = rules.eval(context).value; - } - if (rules.ruleset) { - rules = rules.ruleset.eval(context); - } - } - return rules; - } - }); - - var Definition = function (name, params, rules, condition, variadic, frames, visibilityInfo) { - this.name = name || 'anonymous mixin'; - this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])]; - this.params = params; - this.condition = condition; - this.variadic = variadic; - this.arity = params.length; - this.rules = rules; - this._lookups = {}; - var optionalParameters = []; - this.required = params.reduce(function (count, p) { - if (!p.name || (p.name && !p.value)) { - return count + 1; - } - else { - optionalParameters.push(p.name); - return count; - } - }, 0); - this.optionalParameters = optionalParameters; - this.frames = frames; - this.copyVisibilityInfo(visibilityInfo); - this.allowRoot = true; - }; - Definition.prototype = Object.assign(new Ruleset(), { - type: 'MixinDefinition', - evalFirst: true, - accept: function (visitor) { - if (this.params && this.params.length) { - this.params = visitor.visitArray(this.params); - } - this.rules = visitor.visitArray(this.rules); - if (this.condition) { - this.condition = visitor.visit(this.condition); - } - }, - evalParams: function (context, mixinEnv, args, evaldArguments) { - /* jshint boss:true */ - var frame = new Ruleset(null, null); - var varargs; - var arg; - var params = copyArray(this.params); - var i; - var j; - var val; - var name; - var isNamedFound; - var argIndex; - var argsLength = 0; - if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) { - frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit(); - } - mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames)); - if (args) { - args = copyArray(args); - argsLength = args.length; - for (i = 0; i < argsLength; i++) { - arg = args[i]; - if (name = (arg && arg.name)) { - isNamedFound = false; - for (j = 0; j < params.length; j++) { - if (!evaldArguments[j] && name === params[j].name) { - evaldArguments[j] = arg.value.eval(context); - frame.prependRule(new Declaration(name, arg.value.eval(context))); - isNamedFound = true; - break; - } - } - if (isNamedFound) { - args.splice(i, 1); - i--; - continue; - } - else { - throw { type: 'Runtime', message: "Named argument for " + this.name + " " + args[i].name + " not found" }; - } - } - } - } - argIndex = 0; - for (i = 0; i < params.length; i++) { - if (evaldArguments[i]) { - continue; - } - arg = args && args[argIndex]; - if (name = params[i].name) { - if (params[i].variadic) { - varargs = []; - for (j = argIndex; j < argsLength; j++) { - varargs.push(args[j].value.eval(context)); - } - frame.prependRule(new Declaration(name, new Expression(varargs).eval(context))); - } - else { - val = arg && arg.value; - if (val) { - // This was a mixin call, pass in a detached ruleset of it's eval'd rules - if (Array.isArray(val)) { - val = new DetachedRuleset(new Ruleset('', val)); - } - else { - val = val.eval(context); - } - } - else if (params[i].value) { - val = params[i].value.eval(mixinEnv); - frame.resetCache(); - } - else { - throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + " (" + argsLength + " for " + this.arity + ")" }; - } - frame.prependRule(new Declaration(name, val)); - evaldArguments[i] = val; - } - } - if (params[i].variadic && args) { - for (j = argIndex; j < argsLength; j++) { - evaldArguments[j] = args[j].value.eval(context); - } - } - argIndex++; - } - return frame; - }, - makeImportant: function () { - var rules = !this.rules ? this.rules : this.rules.map(function (r) { - if (r.makeImportant) { - return r.makeImportant(true); - } - else { - return r; - } - }); - var result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames); - return result; - }, - eval: function (context) { - return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || copyArray(context.frames)); - }, - evalCall: function (context, args, important) { - var _arguments = []; - var mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames; - var frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments); - var rules; - var ruleset; - frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context))); - rules = copyArray(this.rules); - ruleset = new Ruleset(null, rules); - ruleset.originalRuleset = this; - ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames))); - if (important) { - ruleset = ruleset.makeImportant(); - } - return ruleset; - }, - matchCondition: function (args, context) { - if (this.condition && !this.condition.eval(new contexts.Eval(context, [this.evalParams(context, /* the parameter variables */ new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])] - .concat(this.frames || []) // the parent namespace/mixin frames - .concat(context.frames)))) { // the current environment frames - return false; - } - return true; - }, - matchArgs: function (args, context) { - var allArgsCnt = (args && args.length) || 0; - var len; - var optionalParameters = this.optionalParameters; - var requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) { - if (optionalParameters.indexOf(p.name) < 0) { - return count + 1; - } - else { - return count; - } - }, 0); - if (!this.variadic) { - if (requiredArgsCnt < this.required) { - return false; - } - if (allArgsCnt > this.params.length) { - return false; - } - } - else { - if (requiredArgsCnt < (this.required - 1)) { - return false; - } - } - // check patterns - len = Math.min(requiredArgsCnt, this.arity); - for (var i = 0; i < len; i++) { - if (!this.params[i].name && !this.params[i].variadic) { - if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) { - return false; - } - } - } - return true; - } - }); - - var MixinCall = function (elements, args, index, currentFileInfo, important) { - this.selector = new Selector(elements); - this.arguments = args || []; - this._index = index; - this._fileInfo = currentFileInfo; - this.important = important; - this.allowRoot = true; - this.setParent(this.selector, this); - }; - MixinCall.prototype = Object.assign(new Node(), { - type: 'MixinCall', - accept: function (visitor) { - if (this.selector) { - this.selector = visitor.visit(this.selector); - } - if (this.arguments.length) { - this.arguments = visitor.visitArray(this.arguments); - } - }, - eval: function (context) { - var mixins; - var mixin; - var mixinPath; - var args = []; - var arg; - var argValue; - var rules = []; - var match = false; - var i; - var m; - var f; - var isRecursive; - var isOneFound; - var candidates = []; - var candidate; - var conditionResult = []; - var defaultResult; - var defFalseEitherCase = -1; - var defNone = 0; - var defTrue = 1; - var defFalse = 2; - var count; - var originalRuleset; - var noArgumentsFilter; - this.selector = this.selector.eval(context); - function calcDefGroup(mixin, mixinPath) { - var f, p, namespace; - for (f = 0; f < 2; f++) { - conditionResult[f] = true; - defaultFunc.value(f); - for (p = 0; p < mixinPath.length && conditionResult[f]; p++) { - namespace = mixinPath[p]; - if (namespace.matchCondition) { - conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context); - } - } - if (mixin.matchCondition) { - conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context); - } - } - if (conditionResult[0] || conditionResult[1]) { - if (conditionResult[0] != conditionResult[1]) { - return conditionResult[1] ? - defTrue : defFalse; - } - return defNone; - } - return defFalseEitherCase; - } - for (i = 0; i < this.arguments.length; i++) { - arg = this.arguments[i]; - argValue = arg.value.eval(context); - if (arg.expand && Array.isArray(argValue.value)) { - argValue = argValue.value; - for (m = 0; m < argValue.length; m++) { - args.push({ value: argValue[m] }); - } - } - else { - args.push({ name: arg.name, value: argValue }); - } - } - noArgumentsFilter = function (rule) { return rule.matchArgs(null, context); }; - for (i = 0; i < context.frames.length; i++) { - if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) { - isOneFound = true; - // To make `default()` function independent of definition order we have two "subpasses" here. - // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`), - // and build candidate list with corresponding flags. Then, when we know all possible matches, - // we make a final decision. - for (m = 0; m < mixins.length; m++) { - mixin = mixins[m].rule; - mixinPath = mixins[m].path; - isRecursive = false; - for (f = 0; f < context.frames.length; f++) { - if ((!(mixin instanceof Definition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) { - isRecursive = true; - break; - } - } - if (isRecursive) { - continue; - } - if (mixin.matchArgs(args, context)) { - candidate = { mixin: mixin, group: calcDefGroup(mixin, mixinPath) }; - if (candidate.group !== defFalseEitherCase) { - candidates.push(candidate); - } - match = true; - } - } - defaultFunc.reset(); - count = [0, 0, 0]; - for (m = 0; m < candidates.length; m++) { - count[candidates[m].group]++; - } - if (count[defNone] > 0) { - defaultResult = defFalse; - } - else { - defaultResult = defTrue; - if ((count[defTrue] + count[defFalse]) > 1) { - throw { type: 'Runtime', - message: "Ambiguous use of `default()` found when matching for `" + this.format(args) + "`", - index: this.getIndex(), filename: this.fileInfo().filename }; - } - } - for (m = 0; m < candidates.length; m++) { - candidate = candidates[m].group; - if ((candidate === defNone) || (candidate === defaultResult)) { - try { - mixin = candidates[m].mixin; - if (!(mixin instanceof Definition)) { - originalRuleset = mixin.originalRuleset || mixin; - mixin = new Definition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo()); - mixin.originalRuleset = originalRuleset; - } - var newRules = mixin.evalCall(context, args, this.important).rules; - this._setVisibilityToReplacement(newRules); - Array.prototype.push.apply(rules, newRules); - } - catch (e) { - throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack }; - } - } - } - if (match) { - return rules; - } - } - } - if (isOneFound) { - throw { type: 'Runtime', - message: "No matching definition was found for `" + this.format(args) + "`", - index: this.getIndex(), filename: this.fileInfo().filename }; - } - else { - throw { type: 'Name', - message: this.selector.toCSS().trim() + " is undefined", - index: this.getIndex(), filename: this.fileInfo().filename }; - } - }, - _setVisibilityToReplacement: function (replacement) { - var i, rule; - if (this.blocksVisibility()) { - for (i = 0; i < replacement.length; i++) { - rule = replacement[i]; - rule.addVisibilityBlock(); - } - } - }, - format: function (args) { - return this.selector.toCSS().trim() + "(" + (args ? args.map(function (a) { - var argValue = ''; - if (a.name) { - argValue += a.name + ":"; - } - if (a.value.toCSS) { - argValue += a.value.toCSS(); - } - else { - argValue += '???'; - } - return argValue; - }).join(', ') : '') + ")"; - } - }); - - var tree = { - Node: Node, - Color: Color, - AtRule: AtRule, - DetachedRuleset: DetachedRuleset, - Operation: Operation, - Dimension: Dimension, - Unit: Unit, - Keyword: Keyword, - Variable: Variable, - Property: Property, - Ruleset: Ruleset, - Element: Element, - Attribute: Attribute, - Combinator: Combinator, - Selector: Selector, - Quoted: Quoted, - Expression: Expression, - Declaration: Declaration, - Call: Call, - URL: URL, - Import: Import, - Comment: Comment, - Anonymous: Anonymous, - Value: Value, - JavaScript: JavaScript, - Assignment: Assignment, - Condition: Condition, - Paren: Paren, - Media: Media, - UnicodeDescriptor: UnicodeDescriptor, - Negative: Negative, - Extend: Extend, - VariableCall: VariableCall, - NamespaceValue: NamespaceValue, - mixin: { - Call: MixinCall, - Definition: Definition - } - }; - - var AbstractFileManager = /** @class */ (function () { - function AbstractFileManager() { - } - AbstractFileManager.prototype.getPath = function (filename) { - var j = filename.lastIndexOf('?'); - if (j > 0) { - filename = filename.slice(0, j); - } - j = filename.lastIndexOf('/'); - if (j < 0) { - j = filename.lastIndexOf('\\'); - } - if (j < 0) { - return ''; - } - return filename.slice(0, j + 1); - }; - AbstractFileManager.prototype.tryAppendExtension = function (path, ext) { - return /(\.[a-z]*$)|([\?;].*)$/.test(path) ? path : path + ext; - }; - AbstractFileManager.prototype.tryAppendLessExtension = function (path) { - return this.tryAppendExtension(path, '.less'); - }; - AbstractFileManager.prototype.supportsSync = function () { - return false; - }; - AbstractFileManager.prototype.alwaysMakePathsAbsolute = function () { - return false; - }; - AbstractFileManager.prototype.isPathAbsolute = function (filename) { - return (/^(?:[a-z-]+:|\/|\\|#)/i).test(filename); - }; - // TODO: pull out / replace? - AbstractFileManager.prototype.join = function (basePath, laterPath) { - if (!basePath) { - return laterPath; - } - return basePath + laterPath; - }; - AbstractFileManager.prototype.pathDiff = function (url, baseUrl) { - // diff between two paths to create a relative path - var urlParts = this.extractUrlParts(url); - var baseUrlParts = this.extractUrlParts(baseUrl); - var i; - var max; - var urlDirectories; - var baseUrlDirectories; - var diff = ''; - if (urlParts.hostPart !== baseUrlParts.hostPart) { - return ''; - } - max = Math.max(baseUrlParts.directories.length, urlParts.directories.length); - for (i = 0; i < max; i++) { - if (baseUrlParts.directories[i] !== urlParts.directories[i]) { - break; - } - } - baseUrlDirectories = baseUrlParts.directories.slice(i); - urlDirectories = urlParts.directories.slice(i); - for (i = 0; i < baseUrlDirectories.length - 1; i++) { - diff += '../'; - } - for (i = 0; i < urlDirectories.length - 1; i++) { - diff += urlDirectories[i] + "/"; - } - return diff; - }; - // helper function, not part of API - AbstractFileManager.prototype.extractUrlParts = function (url, baseUrl) { - // urlParts[1] = protocol://hostname/ OR / - // urlParts[2] = / if path relative to host base - // urlParts[3] = directories - // urlParts[4] = filename - // urlParts[5] = parameters - var urlPartsRegex = /^((?:[a-z-]+:)?\/{2}(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i; - var urlParts = url.match(urlPartsRegex); - var returner = {}; - var rawDirectories = []; - var directories = []; - var i; - var baseUrlParts; - if (!urlParts) { - throw new Error("Could not parse sheet href - '" + url + "'"); - } - // Stylesheets in IE don't always return the full path - if (baseUrl && (!urlParts[1] || urlParts[2])) { - baseUrlParts = baseUrl.match(urlPartsRegex); - if (!baseUrlParts) { - throw new Error("Could not parse page url - '" + baseUrl + "'"); - } - urlParts[1] = urlParts[1] || baseUrlParts[1] || ''; - if (!urlParts[2]) { - urlParts[3] = baseUrlParts[3] + urlParts[3]; - } - } - if (urlParts[3]) { - rawDirectories = urlParts[3].replace(/\\/g, '/').split('/'); - // collapse '..' and skip '.' - for (i = 0; i < rawDirectories.length; i++) { - if (rawDirectories[i] === '..') { - directories.pop(); - } - else if (rawDirectories[i] !== '.') { - directories.push(rawDirectories[i]); - } - } - } - returner.hostPart = urlParts[1]; - returner.directories = directories; - returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/'); - returner.path = (urlParts[1] || '') + directories.join('/'); - returner.filename = urlParts[4]; - returner.fileUrl = returner.path + (urlParts[4] || ''); - returner.url = returner.fileUrl + (urlParts[5] || ''); - return returner; - }; - return AbstractFileManager; - }()); - - var AbstractPluginLoader = /** @class */ (function () { - function AbstractPluginLoader() { - // Implemented by Node.js plugin loader - this.require = function () { - return null; - }; - } - AbstractPluginLoader.prototype.evalPlugin = function (contents, context, imports, pluginOptions, fileInfo) { - var loader, registry, pluginObj, localModule, pluginManager, filename, result; - pluginManager = context.pluginManager; - if (fileInfo) { - if (typeof fileInfo === 'string') { - filename = fileInfo; - } - else { - filename = fileInfo.filename; - } - } - var shortname = (new this.less.FileManager()).extractUrlParts(filename).filename; - if (filename) { - pluginObj = pluginManager.get(filename); - if (pluginObj) { - result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions); - if (result) { - return result; - } - try { - if (pluginObj.use) { - pluginObj.use.call(this.context, pluginObj); - } - } - catch (e) { - e.message = e.message || 'Error during @plugin call'; - return new LessError(e, imports, filename); - } - return pluginObj; - } - } - localModule = { - exports: {}, - pluginManager: pluginManager, - fileInfo: fileInfo - }; - registry = functionRegistry.create(); - var registerPlugin = function (obj) { - pluginObj = obj; - }; - try { - loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents); - loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo); - } - catch (e) { - return new LessError(e, imports, filename); - } - if (!pluginObj) { - pluginObj = localModule.exports; - } - pluginObj = this.validatePlugin(pluginObj, filename, shortname); - if (pluginObj instanceof LessError) { - return pluginObj; - } - if (pluginObj) { - pluginObj.imports = imports; - pluginObj.filename = filename; - // For < 3.x (or unspecified minVersion) - setOptions() before install() - if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) { - result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions); - if (result) { - return result; - } - } - // Run on first load - pluginManager.addPlugin(pluginObj, fileInfo.filename, registry); - pluginObj.functions = registry.getLocalFunctions(); - // Need to call setOptions again because the pluginObj might have functions - result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions); - if (result) { - return result; - } - // Run every @plugin call - try { - if (pluginObj.use) { - pluginObj.use.call(this.context, pluginObj); - } - } - catch (e) { - e.message = e.message || 'Error during @plugin call'; - return new LessError(e, imports, filename); - } - } - else { - return new LessError({ message: 'Not a valid plugin' }, imports, filename); - } - return pluginObj; - }; - AbstractPluginLoader.prototype.trySetOptions = function (plugin, filename, name, options) { - if (options && !plugin.setOptions) { - return new LessError({ - message: "Options have been provided but the plugin " + name + " does not support any options." - }); - } - try { - plugin.setOptions && plugin.setOptions(options); - } - catch (e) { - return new LessError(e); - } - }; - AbstractPluginLoader.prototype.validatePlugin = function (plugin, filename, name) { - if (plugin) { - // support plugins being a function - // so that the plugin can be more usable programmatically - if (typeof plugin === 'function') { - plugin = new plugin(); - } - if (plugin.minVersion) { - if (this.compareVersion(plugin.minVersion, this.less.version) < 0) { - return new LessError({ - message: "Plugin " + name + " requires version " + this.versionToString(plugin.minVersion) - }); - } - } - return plugin; - } - return null; - }; - AbstractPluginLoader.prototype.compareVersion = function (aVersion, bVersion) { - if (typeof aVersion === 'string') { - aVersion = aVersion.match(/^(\d+)\.?(\d+)?\.?(\d+)?/); - aVersion.shift(); - } - for (var i = 0; i < aVersion.length; i++) { - if (aVersion[i] !== bVersion[i]) { - return parseInt(aVersion[i]) > parseInt(bVersion[i]) ? -1 : 1; - } - } - return 0; - }; - AbstractPluginLoader.prototype.versionToString = function (version) { - var versionString = ''; - for (var i = 0; i < version.length; i++) { - versionString += (versionString ? '.' : '') + version[i]; - } - return versionString; - }; - AbstractPluginLoader.prototype.printUsage = function (plugins) { - for (var i = 0; i < plugins.length; i++) { - var plugin = plugins[i]; - if (plugin.printUsage) { - plugin.printUsage(); - } - } - }; - return AbstractPluginLoader; - }()); - - var _visitArgs = { visitDeeper: true }; - var _hasIndexed = false; - function _noop(node) { - return node; - } - function indexNodeTypes(parent, ticker) { - // add .typeIndex to tree node types for lookup table - var key, child; - for (key in parent) { - /* eslint guard-for-in: 0 */ - child = parent[key]; - switch (typeof child) { - case 'function': - // ignore bound functions directly on tree which do not have a prototype - // or aren't nodes - if (child.prototype && child.prototype.type) { - child.prototype.typeIndex = ticker++; - } - break; - case 'object': - ticker = indexNodeTypes(child, ticker); - break; - } - } - return ticker; - } - var Visitor = /** @class */ (function () { - function Visitor(implementation) { - this._implementation = implementation; - this._visitInCache = {}; - this._visitOutCache = {}; - if (!_hasIndexed) { - indexNodeTypes(tree, 1); - _hasIndexed = true; - } - } - Visitor.prototype.visit = function (node) { - if (!node) { - return node; - } - var nodeTypeIndex = node.typeIndex; - if (!nodeTypeIndex) { - // MixinCall args aren't a node type? - if (node.value && node.value.typeIndex) { - this.visit(node.value); - } - return node; - } - var impl = this._implementation; - var func = this._visitInCache[nodeTypeIndex]; - var funcOut = this._visitOutCache[nodeTypeIndex]; - var visitArgs = _visitArgs; - var fnName; - visitArgs.visitDeeper = true; - if (!func) { - fnName = "visit" + node.type; - func = impl[fnName] || _noop; - funcOut = impl[fnName + "Out"] || _noop; - this._visitInCache[nodeTypeIndex] = func; - this._visitOutCache[nodeTypeIndex] = funcOut; - } - if (func !== _noop) { - var newNode = func.call(impl, node, visitArgs); - if (node && impl.isReplacing) { - node = newNode; - } - } - if (visitArgs.visitDeeper && node) { - if (node.length) { - for (var i = 0, cnt = node.length; i < cnt; i++) { - if (node[i].accept) { - node[i].accept(this); - } - } - } - else if (node.accept) { - node.accept(this); - } - } - if (funcOut != _noop) { - funcOut.call(impl, node); - } - return node; - }; - Visitor.prototype.visitArray = function (nodes, nonReplacing) { - if (!nodes) { - return nodes; - } - var cnt = nodes.length; - var i; - // Non-replacing - if (nonReplacing || !this._implementation.isReplacing) { - for (i = 0; i < cnt; i++) { - this.visit(nodes[i]); - } - return nodes; - } - // Replacing - var out = []; - for (i = 0; i < cnt; i++) { - var evald = this.visit(nodes[i]); - if (evald === undefined) { - continue; - } - if (!evald.splice) { - out.push(evald); - } - else if (evald.length) { - this.flatten(evald, out); - } - } - return out; - }; - Visitor.prototype.flatten = function (arr, out) { - if (!out) { - out = []; - } - var cnt, i, item, nestedCnt, j, nestedItem; - for (i = 0, cnt = arr.length; i < cnt; i++) { - item = arr[i]; - if (item === undefined) { - continue; - } - if (!item.splice) { - out.push(item); - continue; - } - for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) { - nestedItem = item[j]; - if (nestedItem === undefined) { - continue; - } - if (!nestedItem.splice) { - out.push(nestedItem); - } - else if (nestedItem.length) { - this.flatten(nestedItem, out); - } - } - } - return out; - }; - return Visitor; - }()); - - var ImportSequencer = /** @class */ (function () { - function ImportSequencer(onSequencerEmpty) { - this.imports = []; - this.variableImports = []; - this._onSequencerEmpty = onSequencerEmpty; - this._currentDepth = 0; - } - ImportSequencer.prototype.addImport = function (callback) { - var importSequencer = this, importItem = { - callback: callback, - args: null, - isReady: false - }; - this.imports.push(importItem); - return function () { - importItem.args = Array.prototype.slice.call(arguments, 0); - importItem.isReady = true; - importSequencer.tryRun(); - }; - }; - ImportSequencer.prototype.addVariableImport = function (callback) { - this.variableImports.push(callback); - }; - ImportSequencer.prototype.tryRun = function () { - this._currentDepth++; - try { - while (true) { - while (this.imports.length > 0) { - var importItem = this.imports[0]; - if (!importItem.isReady) { - return; - } - this.imports = this.imports.slice(1); - importItem.callback.apply(null, importItem.args); - } - if (this.variableImports.length === 0) { - break; - } - var variableImport = this.variableImports[0]; - this.variableImports = this.variableImports.slice(1); - variableImport(); - } - } - finally { - this._currentDepth--; - } - if (this._currentDepth === 0 && this._onSequencerEmpty) { - this._onSequencerEmpty(); - } - }; - return ImportSequencer; - }()); - - var ImportVisitor = function (importer, finish) { - this._visitor = new Visitor(this); - this._importer = importer; - this._finish = finish; - this.context = new contexts.Eval(); - this.importCount = 0; - this.onceFileDetectionMap = {}; - this.recursionDetector = {}; - this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this)); - }; - ImportVisitor.prototype = { - isReplacing: false, - run: function (root) { - try { - // process the contents - this._visitor.visit(root); - } - catch (e) { - this.error = e; - } - this.isFinished = true; - this._sequencer.tryRun(); - }, - _onSequencerEmpty: function () { - if (!this.isFinished) { - return; - } - this._finish(this.error); - }, - visitImport: function (importNode, visitArgs) { - var inlineCSS = importNode.options.inline; - if (!importNode.css || inlineCSS) { - var context = new contexts.Eval(this.context, copyArray(this.context.frames)); - var importParent = context.frames[0]; - this.importCount++; - if (importNode.isVariableImport()) { - this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent)); - } - else { - this.processImportNode(importNode, context, importParent); - } - } - visitArgs.visitDeeper = false; - }, - processImportNode: function (importNode, context, importParent) { - var evaldImportNode; - var inlineCSS = importNode.options.inline; - try { - evaldImportNode = importNode.evalForImport(context); - } - catch (e) { - if (!e.filename) { - e.index = importNode.getIndex(); - e.filename = importNode.fileInfo().filename; - } - // attempt to eval properly and treat as css - importNode.css = true; - // if that fails, this error will be thrown - importNode.error = e; - } - if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) { - if (evaldImportNode.options.multiple) { - context.importMultiple = true; - } - // try appending if we haven't determined if it is css or not - var tryAppendLessExtension = evaldImportNode.css === undefined; - for (var i = 0; i < importParent.rules.length; i++) { - if (importParent.rules[i] === importNode) { - importParent.rules[i] = evaldImportNode; - break; - } - } - var onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported); - this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(), evaldImportNode.options, sequencedOnImported); - } - else { - this.importCount--; - if (this.isFinished) { - this._sequencer.tryRun(); - } - } - }, - onImported: function (importNode, context, e, root, importedAtRoot, fullPath) { - if (e) { - if (!e.filename) { - e.index = importNode.getIndex(); - e.filename = importNode.fileInfo().filename; - } - this.error = e; - } - var importVisitor = this, inlineCSS = importNode.options.inline, isPlugin = importNode.options.isPlugin, isOptional = importNode.options.optional, duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector; - if (!context.importMultiple) { - if (duplicateImport) { - importNode.skip = true; - } - else { - importNode.skip = function () { - if (fullPath in importVisitor.onceFileDetectionMap) { - return true; - } - importVisitor.onceFileDetectionMap[fullPath] = true; - return false; - }; - } - } - if (!fullPath && isOptional) { - importNode.skip = true; - } - if (root) { - importNode.root = root; - importNode.importedFilename = fullPath; - if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) { - importVisitor.recursionDetector[fullPath] = true; - var oldContext = this.context; - this.context = context; - try { - this._visitor.visit(root); - } - catch (e) { - this.error = e; - } - this.context = oldContext; - } - } - importVisitor.importCount--; - if (importVisitor.isFinished) { - importVisitor._sequencer.tryRun(); - } - }, - visitDeclaration: function (declNode, visitArgs) { - if (declNode.value.type === 'DetachedRuleset') { - this.context.frames.unshift(declNode); - } - else { - visitArgs.visitDeeper = false; - } - }, - visitDeclarationOut: function (declNode) { - if (declNode.value.type === 'DetachedRuleset') { - this.context.frames.shift(); - } - }, - visitAtRule: function (atRuleNode, visitArgs) { - this.context.frames.unshift(atRuleNode); - }, - visitAtRuleOut: function (atRuleNode) { - this.context.frames.shift(); - }, - visitMixinDefinition: function (mixinDefinitionNode, visitArgs) { - this.context.frames.unshift(mixinDefinitionNode); - }, - visitMixinDefinitionOut: function (mixinDefinitionNode) { - this.context.frames.shift(); - }, - visitRuleset: function (rulesetNode, visitArgs) { - this.context.frames.unshift(rulesetNode); - }, - visitRulesetOut: function (rulesetNode) { - this.context.frames.shift(); - }, - visitMedia: function (mediaNode, visitArgs) { - this.context.frames.unshift(mediaNode.rules[0]); - }, - visitMediaOut: function (mediaNode) { - this.context.frames.shift(); - } - }; - - var SetTreeVisibilityVisitor = /** @class */ (function () { - function SetTreeVisibilityVisitor(visible) { - this.visible = visible; - } - SetTreeVisibilityVisitor.prototype.run = function (root) { - this.visit(root); - }; - SetTreeVisibilityVisitor.prototype.visitArray = function (nodes) { - if (!nodes) { - return nodes; - } - var cnt = nodes.length; - var i; - for (i = 0; i < cnt; i++) { - this.visit(nodes[i]); - } - return nodes; - }; - SetTreeVisibilityVisitor.prototype.visit = function (node) { - if (!node) { - return node; - } - if (node.constructor === Array) { - return this.visitArray(node); - } - if (!node.blocksVisibility || node.blocksVisibility()) { - return node; - } - if (this.visible) { - node.ensureVisibility(); - } - else { - node.ensureInvisibility(); - } - node.accept(this); - return node; - }; - return SetTreeVisibilityVisitor; - }()); - - /* jshint loopfunc:true */ - var ExtendFinderVisitor = /** @class */ (function () { - function ExtendFinderVisitor() { - this._visitor = new Visitor(this); - this.contexts = []; - this.allExtendsStack = [[]]; - } - ExtendFinderVisitor.prototype.run = function (root) { - root = this._visitor.visit(root); - root.allExtends = this.allExtendsStack[0]; - return root; - }; - ExtendFinderVisitor.prototype.visitDeclaration = function (declNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - ExtendFinderVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - ExtendFinderVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) { - if (rulesetNode.root) { - return; - } - var i; - var j; - var extend; - var allSelectorsExtendList = []; - var extendList; - // get &:extend(.a); rules which apply to all selectors in this ruleset - var rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0; - for (i = 0; i < ruleCnt; i++) { - if (rulesetNode.rules[i] instanceof tree.Extend) { - allSelectorsExtendList.push(rules[i]); - rulesetNode.extendOnEveryPath = true; - } - } - // now find every selector and apply the extends that apply to all extends - // and the ones which apply to an individual extend - var paths = rulesetNode.paths; - for (i = 0; i < paths.length; i++) { - var selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList; - extendList = selExtendList ? copyArray(selExtendList).concat(allSelectorsExtendList) - : allSelectorsExtendList; - if (extendList) { - extendList = extendList.map(function (allSelectorsExtend) { - return allSelectorsExtend.clone(); - }); - } - for (j = 0; j < extendList.length; j++) { - this.foundExtends = true; - extend = extendList[j]; - extend.findSelfSelectors(selectorPath); - extend.ruleset = rulesetNode; - if (j === 0) { - extend.firstExtendOnThisSelectorPath = true; - } - this.allExtendsStack[this.allExtendsStack.length - 1].push(extend); - } - } - this.contexts.push(rulesetNode.selectors); - }; - ExtendFinderVisitor.prototype.visitRulesetOut = function (rulesetNode) { - if (!rulesetNode.root) { - this.contexts.length = this.contexts.length - 1; - } - }; - ExtendFinderVisitor.prototype.visitMedia = function (mediaNode, visitArgs) { - mediaNode.allExtends = []; - this.allExtendsStack.push(mediaNode.allExtends); - }; - ExtendFinderVisitor.prototype.visitMediaOut = function (mediaNode) { - this.allExtendsStack.length = this.allExtendsStack.length - 1; - }; - ExtendFinderVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) { - atRuleNode.allExtends = []; - this.allExtendsStack.push(atRuleNode.allExtends); - }; - ExtendFinderVisitor.prototype.visitAtRuleOut = function (atRuleNode) { - this.allExtendsStack.length = this.allExtendsStack.length - 1; - }; - return ExtendFinderVisitor; - }()); - var ProcessExtendsVisitor = /** @class */ (function () { - function ProcessExtendsVisitor() { - this._visitor = new Visitor(this); - } - ProcessExtendsVisitor.prototype.run = function (root) { - var extendFinder = new ExtendFinderVisitor(); - this.extendIndices = {}; - extendFinder.run(root); - if (!extendFinder.foundExtends) { - return root; - } - root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends)); - this.allExtendsStack = [root.allExtends]; - var newRoot = this._visitor.visit(root); - this.checkExtendsForNonMatched(root.allExtends); - return newRoot; - }; - ProcessExtendsVisitor.prototype.checkExtendsForNonMatched = function (extendList) { - var indices = this.extendIndices; - extendList.filter(function (extend) { - return !extend.hasFoundMatches && extend.parent_ids.length == 1; - }).forEach(function (extend) { - var selector = '_unknown_'; - try { - selector = extend.selector.toCSS({}); - } - catch (_) { } - if (!indices[extend.index + " " + selector]) { - indices[extend.index + " " + selector] = true; - logger$1.warn("extend '" + selector + "' has no matches"); - } - }); - }; - ProcessExtendsVisitor.prototype.doExtendChaining = function (extendsList, extendsListTarget, iterationCount) { - // - // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering - // and pasting the selector we would do normally, but we are also adding an extend with the same target selector - // this means this new extend can then go and alter other extends - // - // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors - // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already - // processed if we look at each selector at a time, as is done in visitRuleset - var extendIndex; - var targetExtendIndex; - var matches; - var extendsToAdd = []; - var newSelector; - var extendVisitor = this; - var selectorPath; - var extend; - var targetExtend; - var newExtend; - iterationCount = iterationCount || 0; - // loop through comparing every extend with every target extend. - // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place - // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one - // and the second is the target. - // the separation into two lists allows us to process a subset of chains with a bigger set, as is the - // case when processing media queries - for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) { - for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) { - extend = extendsList[extendIndex]; - targetExtend = extendsListTarget[targetExtendIndex]; - // look for circular references - if (extend.parent_ids.indexOf(targetExtend.object_id) >= 0) { - continue; - } - // find a match in the target extends self selector (the bit before :extend) - selectorPath = [targetExtend.selfSelectors[0]]; - matches = extendVisitor.findMatch(extend, selectorPath); - if (matches.length) { - extend.hasFoundMatches = true; - // we found a match, so for each self selector.. - extend.selfSelectors.forEach(function (selfSelector) { - var info = targetExtend.visibilityInfo(); - // process the extend as usual - newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible()); - // but now we create a new extend from it - newExtend = new (tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info); - newExtend.selfSelectors = newSelector; - // add the extend onto the list of extends for that selector - newSelector[newSelector.length - 1].extendList = [newExtend]; - // record that we need to add it. - extendsToAdd.push(newExtend); - newExtend.ruleset = targetExtend.ruleset; - // remember its parents for circular references - newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids); - // only process the selector once.. if we have :extend(.a,.b) then multiple - // extends will look at the same selector path, so when extending - // we know that any others will be duplicates in terms of what is added to the css - if (targetExtend.firstExtendOnThisSelectorPath) { - newExtend.firstExtendOnThisSelectorPath = true; - targetExtend.ruleset.paths.push(newSelector); - } - }); - } - } - } - if (extendsToAdd.length) { - // try to detect circular references to stop a stack overflow. - // may no longer be needed. - this.extendChainCount++; - if (iterationCount > 100) { - var selectorOne = '{unable to calculate}'; - var selectorTwo = '{unable to calculate}'; - try { - selectorOne = extendsToAdd[0].selfSelectors[0].toCSS(); - selectorTwo = extendsToAdd[0].selector.toCSS(); - } - catch (e) { } - throw { message: "extend circular reference detected. One of the circular extends is currently:" + selectorOne + ":extend(" + selectorTwo + ")" }; - } - // now process the new extends on the existing rules so that we can handle a extending b extending c extending - // d extending e... - return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1)); - } - else { - return extendsToAdd; - } - }; - ProcessExtendsVisitor.prototype.visitDeclaration = function (ruleNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - ProcessExtendsVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - ProcessExtendsVisitor.prototype.visitSelector = function (selectorNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - ProcessExtendsVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) { - if (rulesetNode.root) { - return; - } - var matches; - var pathIndex; - var extendIndex; - var allExtends = this.allExtendsStack[this.allExtendsStack.length - 1]; - var selectorsToAdd = []; - var extendVisitor = this; - var selectorPath; - // look at each selector path in the ruleset, find any extend matches and then copy, find and replace - for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) { - for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) { - selectorPath = rulesetNode.paths[pathIndex]; - // extending extends happens initially, before the main pass - if (rulesetNode.extendOnEveryPath) { - continue; - } - var extendList = selectorPath[selectorPath.length - 1].extendList; - if (extendList && extendList.length) { - continue; - } - matches = this.findMatch(allExtends[extendIndex], selectorPath); - if (matches.length) { - allExtends[extendIndex].hasFoundMatches = true; - allExtends[extendIndex].selfSelectors.forEach(function (selfSelector) { - var extendedSelectors; - extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible()); - selectorsToAdd.push(extendedSelectors); - }); - } - } - } - rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd); - }; - ProcessExtendsVisitor.prototype.findMatch = function (extend, haystackSelectorPath) { - // - // look through the haystack selector path to try and find the needle - extend.selector - // returns an array of selector matches that can then be replaced - // - var haystackSelectorIndex; - var hackstackSelector; - var hackstackElementIndex; - var haystackElement; - var targetCombinator; - var i; - var extendVisitor = this; - var needleElements = extend.selector.elements; - var potentialMatches = []; - var potentialMatch; - var matches = []; - // loop through the haystack elements - for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) { - hackstackSelector = haystackSelectorPath[haystackSelectorIndex]; - for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) { - haystackElement = hackstackSelector.elements[hackstackElementIndex]; - // if we allow elements before our match we can add a potential match every time. otherwise only at the first element. - if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) { - potentialMatches.push({ pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0, - initialCombinator: haystackElement.combinator }); - } - for (i = 0; i < potentialMatches.length; i++) { - potentialMatch = potentialMatches[i]; - // selectors add " " onto the first element. When we use & it joins the selectors together, but if we don't - // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to - // work out what the resulting combinator will be - targetCombinator = haystackElement.combinator.value; - if (targetCombinator === '' && hackstackElementIndex === 0) { - targetCombinator = ' '; - } - // if we don't match, null our match to indicate failure - if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) || - (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) { - potentialMatch = null; - } - else { - potentialMatch.matched++; - } - // if we are still valid and have finished, test whether we have elements after and whether these are allowed - if (potentialMatch) { - potentialMatch.finished = potentialMatch.matched === needleElements.length; - if (potentialMatch.finished && - (!extend.allowAfter && - (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) { - potentialMatch = null; - } - } - // if null we remove, if not, we are still valid, so either push as a valid match or continue - if (potentialMatch) { - if (potentialMatch.finished) { - potentialMatch.length = needleElements.length; - potentialMatch.endPathIndex = haystackSelectorIndex; - potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match - potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again - matches.push(potentialMatch); - } - } - else { - potentialMatches.splice(i, 1); - i--; - } - } - } - } - return matches; - }; - ProcessExtendsVisitor.prototype.isElementValuesEqual = function (elementValue1, elementValue2) { - if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') { - return elementValue1 === elementValue2; - } - if (elementValue1 instanceof tree.Attribute) { - if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) { - return false; - } - if (!elementValue1.value || !elementValue2.value) { - if (elementValue1.value || elementValue2.value) { - return false; - } - return true; - } - elementValue1 = elementValue1.value.value || elementValue1.value; - elementValue2 = elementValue2.value.value || elementValue2.value; - return elementValue1 === elementValue2; - } - elementValue1 = elementValue1.value; - elementValue2 = elementValue2.value; - if (elementValue1 instanceof tree.Selector) { - if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) { - return false; - } - for (var i = 0; i < elementValue1.elements.length; i++) { - if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) { - if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) { - return false; - } - } - if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) { - return false; - } - } - return true; - } - return false; - }; - ProcessExtendsVisitor.prototype.extendSelector = function (matches, selectorPath, replacementSelector, isVisible) { - // for a set of matches, replace each match with the replacement selector - var currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements; - for (matchIndex = 0; matchIndex < matches.length; matchIndex++) { - match = matches[matchIndex]; - selector = selectorPath[match.pathIndex]; - firstElement = new tree.Element(match.initialCombinator, replacementSelector.elements[0].value, replacementSelector.elements[0].isVariable, replacementSelector.elements[0].getIndex(), replacementSelector.elements[0].fileInfo()); - if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) { - path[path.length - 1].elements = path[path.length - 1] - .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex)); - currentSelectorPathElementIndex = 0; - currentSelectorPathIndex++; - } - newElements = selector.elements - .slice(currentSelectorPathElementIndex, match.index) - .concat([firstElement]) - .concat(replacementSelector.elements.slice(1)); - if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) { - path[path.length - 1].elements = - path[path.length - 1].elements.concat(newElements); - } - else { - path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex)); - path.push(new tree.Selector(newElements)); - } - currentSelectorPathIndex = match.endPathIndex; - currentSelectorPathElementIndex = match.endPathElementIndex; - if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) { - currentSelectorPathElementIndex = 0; - currentSelectorPathIndex++; - } - } - if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) { - path[path.length - 1].elements = path[path.length - 1] - .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex)); - currentSelectorPathIndex++; - } - path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length)); - path = path.map(function (currentValue) { - // we can re-use elements here, because the visibility property matters only for selectors - var derived = currentValue.createDerived(currentValue.elements); - if (isVisible) { - derived.ensureVisibility(); - } - else { - derived.ensureInvisibility(); - } - return derived; - }); - return path; - }; - ProcessExtendsVisitor.prototype.visitMedia = function (mediaNode, visitArgs) { - var newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]); - newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends)); - this.allExtendsStack.push(newAllExtends); - }; - ProcessExtendsVisitor.prototype.visitMediaOut = function (mediaNode) { - var lastIndex = this.allExtendsStack.length - 1; - this.allExtendsStack.length = lastIndex; - }; - ProcessExtendsVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) { - var newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]); - newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends)); - this.allExtendsStack.push(newAllExtends); - }; - ProcessExtendsVisitor.prototype.visitAtRuleOut = function (atRuleNode) { - var lastIndex = this.allExtendsStack.length - 1; - this.allExtendsStack.length = lastIndex; - }; - return ProcessExtendsVisitor; - }()); - - var JoinSelectorVisitor = /** @class */ (function () { - function JoinSelectorVisitor() { - this.contexts = [[]]; - this._visitor = new Visitor(this); - } - JoinSelectorVisitor.prototype.run = function (root) { - return this._visitor.visit(root); - }; - JoinSelectorVisitor.prototype.visitDeclaration = function (declNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - JoinSelectorVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) { - visitArgs.visitDeeper = false; - }; - JoinSelectorVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) { - var context = this.contexts[this.contexts.length - 1]; - var paths = []; - var selectors; - this.contexts.push(paths); - if (!rulesetNode.root) { - selectors = rulesetNode.selectors; - if (selectors) { - selectors = selectors.filter(function (selector) { return selector.getIsOutput(); }); - rulesetNode.selectors = selectors.length ? selectors : (selectors = null); - if (selectors) { - rulesetNode.joinSelectors(paths, context, selectors); - } - } - if (!selectors) { - rulesetNode.rules = null; - } - rulesetNode.paths = paths; - } - }; - JoinSelectorVisitor.prototype.visitRulesetOut = function (rulesetNode) { - this.contexts.length = this.contexts.length - 1; - }; - JoinSelectorVisitor.prototype.visitMedia = function (mediaNode, visitArgs) { - var context = this.contexts[this.contexts.length - 1]; - mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia); - }; - JoinSelectorVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) { - var context = this.contexts[this.contexts.length - 1]; - if (atRuleNode.rules && atRuleNode.rules.length) { - atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null); - } - }; - return JoinSelectorVisitor; - }()); - - var CSSVisitorUtils = /** @class */ (function () { - function CSSVisitorUtils(context) { - this._visitor = new Visitor(this); - this._context = context; - } - CSSVisitorUtils.prototype.containsSilentNonBlockedChild = function (bodyRules) { - var rule; - if (!bodyRules) { - return false; - } - for (var r = 0; r < bodyRules.length; r++) { - rule = bodyRules[r]; - if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) { - // the atrule contains something that was referenced (likely by extend) - // therefore it needs to be shown in output too - return true; - } - } - return false; - }; - CSSVisitorUtils.prototype.keepOnlyVisibleChilds = function (owner) { - if (owner && owner.rules) { - owner.rules = owner.rules.filter(function (thing) { return thing.isVisible(); }); - } - }; - CSSVisitorUtils.prototype.isEmpty = function (owner) { - return (owner && owner.rules) - ? (owner.rules.length === 0) : true; - }; - CSSVisitorUtils.prototype.hasVisibleSelector = function (rulesetNode) { - return (rulesetNode && rulesetNode.paths) - ? (rulesetNode.paths.length > 0) : false; - }; - CSSVisitorUtils.prototype.resolveVisibility = function (node, originalRules) { - if (!node.blocksVisibility()) { - if (this.isEmpty(node) && !this.containsSilentNonBlockedChild(originalRules)) { - return; - } - return node; - } - var compiledRulesBody = node.rules[0]; - this.keepOnlyVisibleChilds(compiledRulesBody); - if (this.isEmpty(compiledRulesBody)) { - return; - } - node.ensureVisibility(); - node.removeVisibilityBlock(); - return node; - }; - CSSVisitorUtils.prototype.isVisibleRuleset = function (rulesetNode) { - if (rulesetNode.firstRoot) { - return true; - } - if (this.isEmpty(rulesetNode)) { - return false; - } - if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) { - return false; - } - return true; - }; - return CSSVisitorUtils; - }()); - var ToCSSVisitor = function (context) { - this._visitor = new Visitor(this); - this._context = context; - this.utils = new CSSVisitorUtils(context); - }; - ToCSSVisitor.prototype = { - isReplacing: true, - run: function (root) { - return this._visitor.visit(root); - }, - visitDeclaration: function (declNode, visitArgs) { - if (declNode.blocksVisibility() || declNode.variable) { - return; - } - return declNode; - }, - visitMixinDefinition: function (mixinNode, visitArgs) { - // mixin definitions do not get eval'd - this means they keep state - // so we have to clear that state here so it isn't used if toCSS is called twice - mixinNode.frames = []; - }, - visitExtend: function (extendNode, visitArgs) { - }, - visitComment: function (commentNode, visitArgs) { - if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) { - return; - } - return commentNode; - }, - visitMedia: function (mediaNode, visitArgs) { - var originalRules = mediaNode.rules[0].rules; - mediaNode.accept(this._visitor); - visitArgs.visitDeeper = false; - return this.utils.resolveVisibility(mediaNode, originalRules); - }, - visitImport: function (importNode, visitArgs) { - if (importNode.blocksVisibility()) { - return; - } - return importNode; - }, - visitAtRule: function (atRuleNode, visitArgs) { - if (atRuleNode.rules && atRuleNode.rules.length) { - return this.visitAtRuleWithBody(atRuleNode, visitArgs); - } - else { - return this.visitAtRuleWithoutBody(atRuleNode, visitArgs); - } - }, - visitAnonymous: function (anonymousNode, visitArgs) { - if (!anonymousNode.blocksVisibility()) { - anonymousNode.accept(this._visitor); - return anonymousNode; - } - }, - visitAtRuleWithBody: function (atRuleNode, visitArgs) { - // if there is only one nested ruleset and that one has no path, then it is - // just fake ruleset - function hasFakeRuleset(atRuleNode) { - var bodyRules = atRuleNode.rules; - return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0); - } - function getBodyRules(atRuleNode) { - var nodeRules = atRuleNode.rules; - if (hasFakeRuleset(atRuleNode)) { - return nodeRules[0].rules; - } - return nodeRules; - } - // it is still true that it is only one ruleset in array - // this is last such moment - // process childs - var originalRules = getBodyRules(atRuleNode); - atRuleNode.accept(this._visitor); - visitArgs.visitDeeper = false; - if (!this.utils.isEmpty(atRuleNode)) { - this._mergeRules(atRuleNode.rules[0].rules); - } - return this.utils.resolveVisibility(atRuleNode, originalRules); - }, - visitAtRuleWithoutBody: function (atRuleNode, visitArgs) { - if (atRuleNode.blocksVisibility()) { - return; - } - if (atRuleNode.name === '@charset') { - // Only output the debug info together with subsequent @charset definitions - // a comment (or @media statement) before the actual @charset atrule would - // be considered illegal css as it has to be on the first line - if (this.charset) { - if (atRuleNode.debugInfo) { - var comment = new tree.Comment("/* " + atRuleNode.toCSS(this._context).replace(/\n/g, '') + " */\n"); - comment.debugInfo = atRuleNode.debugInfo; - return this._visitor.visit(comment); - } - return; - } - this.charset = true; - } - return atRuleNode; - }, - checkValidNodes: function (rules, isRoot) { - if (!rules) { - return; - } - for (var i = 0; i < rules.length; i++) { - var ruleNode = rules[i]; - if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) { - throw { message: 'Properties must be inside selector blocks. They cannot be in the root', - index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename }; - } - if (ruleNode instanceof tree.Call) { - throw { message: "Function '" + ruleNode.name + "' did not return a root node", - index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename }; - } - if (ruleNode.type && !ruleNode.allowRoot) { - throw { message: ruleNode.type + " node returned by a function is not valid here", - index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename }; - } - } - }, - visitRuleset: function (rulesetNode, visitArgs) { - // at this point rulesets are nested into each other - var rule; - var rulesets = []; - this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot); - if (!rulesetNode.root) { - // remove invisible paths - this._compileRulesetPaths(rulesetNode); - // remove rulesets from this ruleset body and compile them separately - var nodeRules = rulesetNode.rules; - var nodeRuleCnt = nodeRules ? nodeRules.length : 0; - for (var i = 0; i < nodeRuleCnt;) { - rule = nodeRules[i]; - if (rule && rule.rules) { - // visit because we are moving them out from being a child - rulesets.push(this._visitor.visit(rule)); - nodeRules.splice(i, 1); - nodeRuleCnt--; - continue; - } - i++; - } - // accept the visitor to remove rules and refactor itself - // then we can decide nogw whether we want it or not - // compile body - if (nodeRuleCnt > 0) { - rulesetNode.accept(this._visitor); - } - else { - rulesetNode.rules = null; - } - visitArgs.visitDeeper = false; - } - else { // if (! rulesetNode.root) { - rulesetNode.accept(this._visitor); - visitArgs.visitDeeper = false; - } - if (rulesetNode.rules) { - this._mergeRules(rulesetNode.rules); - this._removeDuplicateRules(rulesetNode.rules); - } - // now decide whether we keep the ruleset - if (this.utils.isVisibleRuleset(rulesetNode)) { - rulesetNode.ensureVisibility(); - rulesets.splice(0, 0, rulesetNode); - } - if (rulesets.length === 1) { - return rulesets[0]; - } - return rulesets; - }, - _compileRulesetPaths: function (rulesetNode) { - if (rulesetNode.paths) { - rulesetNode.paths = rulesetNode.paths - .filter(function (p) { - var i; - if (p[0].elements[0].combinator.value === ' ') { - p[0].elements[0].combinator = new (tree.Combinator)(''); - } - for (i = 0; i < p.length; i++) { - if (p[i].isVisible() && p[i].getIsOutput()) { - return true; - } - } - return false; - }); - } - }, - _removeDuplicateRules: function (rules) { - if (!rules) { - return; - } - // remove duplicates - var ruleCache = {}; - var ruleList; - var rule; - var i; - for (i = rules.length - 1; i >= 0; i--) { - rule = rules[i]; - if (rule instanceof tree.Declaration) { - if (!ruleCache[rule.name]) { - ruleCache[rule.name] = rule; - } - else { - ruleList = ruleCache[rule.name]; - if (ruleList instanceof tree.Declaration) { - ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)]; - } - var ruleCSS = rule.toCSS(this._context); - if (ruleList.indexOf(ruleCSS) !== -1) { - rules.splice(i, 1); - } - else { - ruleList.push(ruleCSS); - } - } - } - } - }, - _mergeRules: function (rules) { - if (!rules) { - return; - } - var groups = {}; - var groupsArr = []; - for (var i = 0; i < rules.length; i++) { - var rule = rules[i]; - if (rule.merge) { - var key = rule.name; - groups[key] ? rules.splice(i--, 1) : - groupsArr.push(groups[key] = []); - groups[key].push(rule); - } - } - groupsArr.forEach(function (group) { - if (group.length > 0) { - var result_1 = group[0]; - var space_1 = []; - var comma_1 = [new tree.Expression(space_1)]; - group.forEach(function (rule) { - if ((rule.merge === '+') && (space_1.length > 0)) { - comma_1.push(new tree.Expression(space_1 = [])); - } - space_1.push(rule.value); - result_1.important = result_1.important || rule.important; - }); - result_1.value = new tree.Value(comma_1); - } - }); - } - }; - - var visitors = { - Visitor: Visitor, - ImportVisitor: ImportVisitor, - MarkVisibleSelectorsVisitor: SetTreeVisibilityVisitor, - ExtendVisitor: ProcessExtendsVisitor, - JoinSelectorVisitor: JoinSelectorVisitor, - ToCSSVisitor: ToCSSVisitor - }; - - // Split the input into chunks. - function chunker (input, fail) { - var len = input.length; - var level = 0; - var parenLevel = 0; - var lastOpening; - var lastOpeningParen; - var lastMultiComment; - var lastMultiCommentEndBrace; - var chunks = []; - var emitFrom = 0; - var chunkerCurrentIndex; - var currentChunkStartIndex; - var cc; - var cc2; - var matched; - function emitChunk(force) { - var len = chunkerCurrentIndex - emitFrom; - if (((len < 512) && !force) || !len) { - return; - } - chunks.push(input.slice(emitFrom, chunkerCurrentIndex + 1)); - emitFrom = chunkerCurrentIndex + 1; - } - for (chunkerCurrentIndex = 0; chunkerCurrentIndex < len; chunkerCurrentIndex++) { - cc = input.charCodeAt(chunkerCurrentIndex); - if (((cc >= 97) && (cc <= 122)) || (cc < 34)) { - // a-z or whitespace - continue; - } - switch (cc) { - case 40: // ( - parenLevel++; - lastOpeningParen = chunkerCurrentIndex; - continue; - case 41: // ) - if (--parenLevel < 0) { - return fail('missing opening `(`', chunkerCurrentIndex); - } - continue; - case 59: // ; - if (!parenLevel) { - emitChunk(); - } - continue; - case 123: // { - level++; - lastOpening = chunkerCurrentIndex; - continue; - case 125: // } - if (--level < 0) { - return fail('missing opening `{`', chunkerCurrentIndex); - } - if (!level && !parenLevel) { - emitChunk(); - } - continue; - case 92: // \ - if (chunkerCurrentIndex < len - 1) { - chunkerCurrentIndex++; - continue; - } - return fail('unescaped `\\`', chunkerCurrentIndex); - case 34: - case 39: - case 96: // ", ' and ` - matched = 0; - currentChunkStartIndex = chunkerCurrentIndex; - for (chunkerCurrentIndex = chunkerCurrentIndex + 1; chunkerCurrentIndex < len; chunkerCurrentIndex++) { - cc2 = input.charCodeAt(chunkerCurrentIndex); - if (cc2 > 96) { - continue; - } - if (cc2 == cc) { - matched = 1; - break; - } - if (cc2 == 92) { // \ - if (chunkerCurrentIndex == len - 1) { - return fail('unescaped `\\`', chunkerCurrentIndex); - } - chunkerCurrentIndex++; - } - } - if (matched) { - continue; - } - return fail("unmatched `" + String.fromCharCode(cc) + "`", currentChunkStartIndex); - case 47: // /, check for comment - if (parenLevel || (chunkerCurrentIndex == len - 1)) { - continue; - } - cc2 = input.charCodeAt(chunkerCurrentIndex + 1); - if (cc2 == 47) { - // //, find lnfeed - for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len; chunkerCurrentIndex++) { - cc2 = input.charCodeAt(chunkerCurrentIndex); - if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) { - break; - } - } - } - else if (cc2 == 42) { - // /*, find */ - lastMultiComment = currentChunkStartIndex = chunkerCurrentIndex; - for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len - 1; chunkerCurrentIndex++) { - cc2 = input.charCodeAt(chunkerCurrentIndex); - if (cc2 == 125) { - lastMultiCommentEndBrace = chunkerCurrentIndex; - } - if (cc2 != 42) { - continue; - } - if (input.charCodeAt(chunkerCurrentIndex + 1) == 47) { - break; - } - } - if (chunkerCurrentIndex == len - 1) { - return fail('missing closing `*/`', currentChunkStartIndex); - } - chunkerCurrentIndex++; - } - continue; - case 42: // *, check for unmatched */ - if ((chunkerCurrentIndex < len - 1) && (input.charCodeAt(chunkerCurrentIndex + 1) == 47)) { - return fail('unmatched `/*`', chunkerCurrentIndex); - } - continue; - } - } - if (level !== 0) { - if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) { - return fail('missing closing `}` or `*/`', lastOpening); - } - else { - return fail('missing closing `}`', lastOpening); - } - } - else if (parenLevel !== 0) { - return fail('missing closing `)`', lastOpeningParen); - } - emitChunk(true); - return chunks; - } - - var getParserInput = (function () { - var // Less input string - input; - var // current chunk - j; - var // holds state for backtracking - saveStack = []; - var // furthest index the parser has gone to - furthest; - var // if this is furthest we got to, this is the probably cause - furthestPossibleErrorMessage; - var // chunkified input - chunks; - var // current chunk - current; - var // index of current chunk, in `input` - currentPos; - var parserInput = {}; - var CHARCODE_SPACE = 32; - var CHARCODE_TAB = 9; - var CHARCODE_LF = 10; - var CHARCODE_CR = 13; - var CHARCODE_PLUS = 43; - var CHARCODE_COMMA = 44; - var CHARCODE_FORWARD_SLASH = 47; - var CHARCODE_9 = 57; - function skipWhitespace(length) { - var oldi = parserInput.i; - var oldj = j; - var curr = parserInput.i - currentPos; - var endIndex = parserInput.i + current.length - curr; - var mem = (parserInput.i += length); - var inp = input; - var c; - var nextChar; - var comment; - for (; parserInput.i < endIndex; parserInput.i++) { - c = inp.charCodeAt(parserInput.i); - if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) { - nextChar = inp.charAt(parserInput.i + 1); - if (nextChar === '/') { - comment = { index: parserInput.i, isLineComment: true }; - var nextNewLine = inp.indexOf('\n', parserInput.i + 2); - if (nextNewLine < 0) { - nextNewLine = endIndex; - } - parserInput.i = nextNewLine; - comment.text = inp.substr(comment.index, parserInput.i - comment.index); - parserInput.commentStore.push(comment); - continue; - } - else if (nextChar === '*') { - var nextStarSlash = inp.indexOf('*/', parserInput.i + 2); - if (nextStarSlash >= 0) { - comment = { - index: parserInput.i, - text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i), - isLineComment: false - }; - parserInput.i += comment.text.length - 1; - parserInput.commentStore.push(comment); - continue; - } - } - break; - } - if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) { - break; - } - } - current = current.slice(length + parserInput.i - mem + curr); - currentPos = parserInput.i; - if (!current.length) { - if (j < chunks.length - 1) { - current = chunks[++j]; - skipWhitespace(0); // skip space at the beginning of a chunk - return true; // things changed - } - parserInput.finished = true; - } - return oldi !== parserInput.i || oldj !== j; - } - parserInput.save = function () { - currentPos = parserInput.i; - saveStack.push({ current: current, i: parserInput.i, j: j }); - }; - parserInput.restore = function (possibleErrorMessage) { - if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) { - furthest = parserInput.i; - furthestPossibleErrorMessage = possibleErrorMessage; - } - var state = saveStack.pop(); - current = state.current; - currentPos = parserInput.i = state.i; - j = state.j; - }; - parserInput.forget = function () { - saveStack.pop(); - }; - parserInput.isWhitespace = function (offset) { - var pos = parserInput.i + (offset || 0); - var code = input.charCodeAt(pos); - return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF); - }; - // Specialization of $(tok) - parserInput.$re = function (tok) { - if (parserInput.i > currentPos) { - current = current.slice(parserInput.i - currentPos); - currentPos = parserInput.i; - } - var m = tok.exec(current); - if (!m) { - return null; - } - skipWhitespace(m[0].length); - if (typeof m === 'string') { - return m; - } - return m.length === 1 ? m[0] : m; - }; - parserInput.$char = function (tok) { - if (input.charAt(parserInput.i) !== tok) { - return null; - } - skipWhitespace(1); - return tok; - }; - parserInput.$str = function (tok) { - var tokLength = tok.length; - // https://jsperf.com/string-startswith/21 - for (var i = 0; i < tokLength; i++) { - if (input.charAt(parserInput.i + i) !== tok.charAt(i)) { - return null; - } - } - skipWhitespace(tokLength); - return tok; - }; - parserInput.$quoted = function (loc) { - var pos = loc || parserInput.i; - var startChar = input.charAt(pos); - if (startChar !== '\'' && startChar !== '"') { - return; - } - var length = input.length; - var currentPosition = pos; - for (var i = 1; i + currentPosition < length; i++) { - var nextChar = input.charAt(i + currentPosition); - switch (nextChar) { - case '\\': - i++; - continue; - case '\r': - case '\n': - break; - case startChar: - var str = input.substr(currentPosition, i + 1); - if (!loc && loc !== 0) { - skipWhitespace(i + 1); - return str; - } - return [startChar, str]; - } - } - return null; - }; - /** - * Permissive parsing. Ignores everything except matching {} [] () and quotes - * until matching token (outside of blocks) - */ - parserInput.$parseUntil = function (tok) { - var quote = ''; - var returnVal = null; - var inComment = false; - var blockDepth = 0; - var blockStack = []; - var parseGroups = []; - var length = input.length; - var startPos = parserInput.i; - var lastPos = parserInput.i; - var i = parserInput.i; - var loop = true; - var testChar; - if (typeof tok === 'string') { - testChar = function (char) { return char === tok; }; - } - else { - testChar = function (char) { return tok.test(char); }; - } - do { - var nextChar = input.charAt(i); - if (blockDepth === 0 && testChar(nextChar)) { - returnVal = input.substr(lastPos, i - lastPos); - if (returnVal) { - parseGroups.push(returnVal); - } - else { - parseGroups.push(' '); - } - returnVal = parseGroups; - skipWhitespace(i - startPos); - loop = false; - } - else { - if (inComment) { - if (nextChar === '*' && - input.charAt(i + 1) === '/') { - i++; - blockDepth--; - inComment = false; - } - i++; - continue; - } - switch (nextChar) { - case '\\': - i++; - nextChar = input.charAt(i); - parseGroups.push(input.substr(lastPos, i - lastPos + 1)); - lastPos = i + 1; - break; - case '/': - if (input.charAt(i + 1) === '*') { - i++; - inComment = true; - blockDepth++; - } - break; - case '\'': - case '"': - quote = parserInput.$quoted(i); - if (quote) { - parseGroups.push(input.substr(lastPos, i - lastPos), quote); - i += quote[1].length - 1; - lastPos = i + 1; - } - else { - skipWhitespace(i - startPos); - returnVal = nextChar; - loop = false; - } - break; - case '{': - blockStack.push('}'); - blockDepth++; - break; - case '(': - blockStack.push(')'); - blockDepth++; - break; - case '[': - blockStack.push(']'); - blockDepth++; - break; - case '}': - case ')': - case ']': - var expected = blockStack.pop(); - if (nextChar === expected) { - blockDepth--; - } - else { - // move the parser to the error and return expected - skipWhitespace(i - startPos); - returnVal = expected; - loop = false; - } - } - i++; - if (i > length) { - loop = false; - } - } - } while (loop); - return returnVal ? returnVal : null; - }; - parserInput.autoCommentAbsorb = true; - parserInput.commentStore = []; - parserInput.finished = false; - // Same as $(), but don't change the state of the parser, - // just return the match. - parserInput.peek = function (tok) { - if (typeof tok === 'string') { - // https://jsperf.com/string-startswith/21 - for (var i = 0; i < tok.length; i++) { - if (input.charAt(parserInput.i + i) !== tok.charAt(i)) { - return false; - } - } - return true; - } - else { - return tok.test(current); - } - }; - // Specialization of peek() - // TODO remove or change some currentChar calls to peekChar - parserInput.peekChar = function (tok) { return input.charAt(parserInput.i) === tok; }; - parserInput.currentChar = function () { return input.charAt(parserInput.i); }; - parserInput.prevChar = function () { return input.charAt(parserInput.i - 1); }; - parserInput.getInput = function () { return input; }; - parserInput.peekNotNumeric = function () { - var c = input.charCodeAt(parserInput.i); - // Is the first char of the dimension 0-9, '.', '+' or '-' - return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA; - }; - parserInput.start = function (str, chunkInput, failFunction) { - input = str; - parserInput.i = j = currentPos = furthest = 0; - // chunking apparently makes things quicker (but my tests indicate - // it might actually make things slower in node at least) - // and it is a non-perfect parse - it can't recognise - // unquoted urls, meaning it can't distinguish comments - // meaning comments with quotes or {}() in them get 'counted' - // and then lead to parse errors. - // In addition if the chunking chunks in the wrong place we might - // not be able to parse a parser statement in one go - // this is officially deprecated but can be switched on via an option - // in the case it causes too much performance issues. - if (chunkInput) { - chunks = chunker(str, failFunction); - } - else { - chunks = [str]; - } - current = chunks[0]; - skipWhitespace(0); - }; - parserInput.end = function () { - var message; - var isFinished = parserInput.i >= input.length; - if (parserInput.i < furthest) { - message = furthestPossibleErrorMessage; - parserInput.i = furthest; - } - return { - isFinished: isFinished, - furthest: parserInput.i, - furthestPossibleErrorMessage: message, - furthestReachedEnd: parserInput.i >= input.length - 1, - furthestChar: input[parserInput.i] - }; - }; - return parserInput; - }); - - // - // less.js - parser - // - // A relatively straight-forward predictive parser. - // There is no tokenization/lexing stage, the input is parsed - // in one sweep. - // - // To make the parser fast enough to run in the browser, several - // optimization had to be made: - // - // - Matching and slicing on a huge input is often cause of slowdowns. - // The solution is to chunkify the input into smaller strings. - // The chunks are stored in the `chunks` var, - // `j` holds the current chunk index, and `currentPos` holds - // the index of the current chunk in relation to `input`. - // This gives us an almost 4x speed-up. - // - // - In many cases, we don't need to match individual tokens; - // for example, if a value doesn't hold any variables, operations - // or dynamic references, the parser can effectively 'skip' it, - // treating it as a literal. - // An example would be '1px solid #000' - which evaluates to itself, - // we don't need to know what the individual components are. - // The drawback, of course is that you don't get the benefits of - // syntax-checking on the CSS. This gives us a 50% speed-up in the parser, - // and a smaller speed-up in the code-gen. - // - // - // Token matching is done with the `$` function, which either takes - // a terminal string or regexp, or a non-terminal function to call. - // It also takes care of moving all the indices forwards. - // - var Parser = function Parser(context, imports, fileInfo) { - var parsers; - var parserInput = getParserInput(); - function error(msg, type) { - throw new LessError({ - index: parserInput.i, - filename: fileInfo.filename, - type: type || 'Syntax', - message: msg - }, imports); - } - function expect(arg, msg) { - // some older browsers return typeof 'function' for RegExp - var result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg); - if (result) { - return result; - } - error(msg || (typeof arg === 'string' - ? "expected '" + arg + "' got '" + parserInput.currentChar() + "'" - : 'unexpected token')); - } - // Specialization of expect() - function expectChar(arg, msg) { - if (parserInput.$char(arg)) { - return arg; - } - error(msg || "expected '" + arg + "' got '" + parserInput.currentChar() + "'"); - } - function getDebugInfo(index) { - var filename = fileInfo.filename; - return { - lineNumber: getLocation(index, parserInput.getInput()).line + 1, - fileName: filename - }; - } - /** - * Used after initial parsing to create nodes on the fly - * - * @param {String} str - string to parse - * @param {Array} parseList - array of parsers to run input through e.g. ["value", "important"] - * @param {Number} currentIndex - start number to begin indexing - * @param {Object} fileInfo - fileInfo to attach to created nodes - */ - function parseNode(str, parseList, currentIndex, fileInfo, callback) { - var result; - var returnNodes = []; - var parser = parserInput; - try { - parser.start(str, false, function fail(msg, index) { - callback({ - message: msg, - index: index + currentIndex - }); - }); - for (var x = 0, p = void 0, i = void 0; (p = parseList[x]); x++) { - i = parser.i; - result = parsers[p](); - if (result) { - try { - result._index = i + currentIndex; - result._fileInfo = fileInfo; - } - catch (e) { } - returnNodes.push(result); - } - else { - returnNodes.push(null); - } - } - var endInfo = parser.end(); - if (endInfo.isFinished) { - callback(null, returnNodes); - } - else { - callback(true, null); - } - } - catch (e) { - throw new LessError({ - index: e.index + currentIndex, - message: e.message - }, imports, fileInfo.filename); - } - } - // - // The Parser - // - return { - parserInput: parserInput, - imports: imports, - fileInfo: fileInfo, - parseNode: parseNode, - // - // Parse an input string into an abstract syntax tree, - // @param str A string containing 'less' markup - // @param callback call `callback` when done. - // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply - // - parse: function (str, callback, additionalData) { - var root; - var error = null; - var globalVars; - var modifyVars; - var ignored; - var preText = ''; - globalVars = (additionalData && additionalData.globalVars) ? Parser.serializeVars(additionalData.globalVars) + "\n" : ''; - modifyVars = (additionalData && additionalData.modifyVars) ? "\n" + Parser.serializeVars(additionalData.modifyVars) : ''; - if (context.pluginManager) { - var preProcessors = context.pluginManager.getPreProcessors(); - for (var i = 0; i < preProcessors.length; i++) { - str = preProcessors[i].process(str, { context: context, imports: imports, fileInfo: fileInfo }); - } - } - if (globalVars || (additionalData && additionalData.banner)) { - preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars; - ignored = imports.contentsIgnoredChars; - ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0; - ignored[fileInfo.filename] += preText.length; - } - str = str.replace(/\r\n?/g, '\n'); - // Remove potential UTF Byte Order Mark - str = preText + str.replace(/^\uFEFF/, '') + modifyVars; - imports.contents[fileInfo.filename] = str; - // Start with the primary rule. - // The whole syntax tree is held under a Ruleset node, - // with the `root` property set to true, so no `{}` are - // output. The callback is called when the input is parsed. - try { - parserInput.start(str, context.chunkInput, function fail(msg, index) { - throw new LessError({ - index: index, - type: 'Parse', - message: msg, - filename: fileInfo.filename - }, imports); - }); - tree.Node.prototype.parse = this; - root = new tree.Ruleset(null, this.parsers.primary()); - tree.Node.prototype.rootNode = root; - root.root = true; - root.firstRoot = true; - root.functionRegistry = functionRegistry.inherit(); - } - catch (e) { - return callback(new LessError(e, imports, fileInfo.filename)); - } - // If `i` is smaller than the `input.length - 1`, - // it means the parser wasn't able to parse the whole - // string, so we've got a parsing error. - // - // We try to extract a \n delimited string, - // showing the line where the parse error occurred. - // We split it up into two parts (the part which parsed, - // and the part which didn't), so we can color them differently. - var endInfo = parserInput.end(); - if (!endInfo.isFinished) { - var message = endInfo.furthestPossibleErrorMessage; - if (!message) { - message = 'Unrecognised input'; - if (endInfo.furthestChar === '}') { - message += '. Possibly missing opening \'{\''; - } - else if (endInfo.furthestChar === ')') { - message += '. Possibly missing opening \'(\''; - } - else if (endInfo.furthestReachedEnd) { - message += '. Possibly missing something'; - } - } - error = new LessError({ - type: 'Parse', - message: message, - index: endInfo.furthest, - filename: fileInfo.filename - }, imports); - } - var finish = function (e) { - e = error || e || imports.error; - if (e) { - if (!(e instanceof LessError)) { - e = new LessError(e, imports, fileInfo.filename); - } - return callback(e); - } - else { - return callback(null, root); - } - }; - if (context.processImports !== false) { - new visitors.ImportVisitor(imports, finish) - .run(root); - } - else { - return finish(); - } - }, - // - // Here in, the parsing rules/functions - // - // The basic structure of the syntax tree generated is as follows: - // - // Ruleset -> Declaration -> Value -> Expression -> Entity - // - // Here's some Less code: - // - // .class { - // color: #fff; - // border: 1px solid #000; - // width: @w + 4px; - // > .child {...} - // } - // - // And here's what the parse tree might look like: - // - // Ruleset (Selector '.class', [ - // Declaration ("color", Value ([Expression [Color #fff]])) - // Declaration ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]])) - // Declaration ("width", Value ([Expression [Operation " + " [Variable "@w"][Dimension 4px]]])) - // Ruleset (Selector [Element '>', '.child'], [...]) - // ]) - // - // In general, most rules will try to parse a token with the `$re()` function, and if the return - // value is truly, will return a new node, of the relevant type. Sometimes, we need to check - // first, before parsing, that's when we use `peek()`. - // - parsers: parsers = { - // - // The `primary` rule is the *entry* and *exit* point of the parser. - // The rules here can appear at any level of the parse tree. - // - // The recursive nature of the grammar is an interplay between the `block` - // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule, - // as represented by this simplified grammar: - // - // primary → (ruleset | declaration)+ - // ruleset → selector+ block - // block → '{' primary '}' - // - // Only at one point is the primary rule not called from the - // block rule: at the root level. - // - primary: function () { - var mixin = this.mixin; - var root = []; - var node; - while (true) { - while (true) { - node = this.comment(); - if (!node) { - break; - } - root.push(node); - } - // always process comments before deciding if finished - if (parserInput.finished) { - break; - } - if (parserInput.peek('}')) { - break; - } - node = this.extendRule(); - if (node) { - root = root.concat(node); - continue; - } - node = mixin.definition() || this.declaration() || mixin.call(false, false) || - this.ruleset() || this.variableCall() || this.entities.call() || this.atrule(); - if (node) { - root.push(node); - } - else { - var foundSemiColon = false; - while (parserInput.$char(';')) { - foundSemiColon = true; - } - if (!foundSemiColon) { - break; - } - } - } - return root; - }, - // comments are collected by the main parsing mechanism and then assigned to nodes - // where the current structure allows it - comment: function () { - if (parserInput.commentStore.length) { - var comment = parserInput.commentStore.shift(); - return new (tree.Comment)(comment.text, comment.isLineComment, comment.index, fileInfo); - } - }, - // - // Entities are tokens which can be found inside an Expression - // - entities: { - mixinLookup: function () { - return parsers.mixin.call(true, true); - }, - // - // A string, which supports escaping " and ' - // - // "milky way" 'he\'s the one!' - // - quoted: function (forceEscaped) { - var str; - var index = parserInput.i; - var isEscaped = false; - parserInput.save(); - if (parserInput.$char('~')) { - isEscaped = true; - } - else if (forceEscaped) { - parserInput.restore(); - return; - } - str = parserInput.$quoted(); - if (!str) { - parserInput.restore(); - return; - } - parserInput.forget(); - return new (tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index, fileInfo); - }, - // - // A catch-all word, such as: - // - // black border-collapse - // - keyword: function () { - var k = parserInput.$char('%') || parserInput.$re(/^\[?(?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\]?/); - if (k) { - return tree.Color.fromKeyword(k) || new (tree.Keyword)(k); - } - }, - // - // A function call - // - // rgb(255, 0, 255) - // - // The arguments are parsed with the `entities.arguments` parser. - // - call: function () { - var name; - var args; - var func; - var index = parserInput.i; - // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18 - if (parserInput.peek(/^url\(/i)) { - return; - } - parserInput.save(); - name = parserInput.$re(/^([\w-]+|%|~|progid:[\w\.]+)\(/); - if (!name) { - parserInput.forget(); - return; - } - name = name[1]; - func = this.customFuncCall(name); - if (func) { - args = func.parse(); - if (args && func.stop) { - parserInput.forget(); - return args; - } - } - args = this.arguments(args); - if (!parserInput.$char(')')) { - parserInput.restore('Could not parse call arguments or missing \')\''); - return; - } - parserInput.forget(); - return new (tree.Call)(name, args, index, fileInfo); - }, - // - // Parsing rules for functions with non-standard args, e.g.: - // - // boolean(not(2 > 1)) - // - // This is a quick prototype, to be modified/improved when - // more custom-parsed funcs come (e.g. `selector(...)`) - // - customFuncCall: function (name) { - /* Ideally the table is to be moved out of here for faster perf., - but it's quite tricky since it relies on all these `parsers` - and `expect` available only here */ - return { - alpha: f(parsers.ieAlpha, true), - boolean: f(condition), - 'if': f(condition) - }[name.toLowerCase()]; - function f(parse, stop) { - return { - parse: parse, - stop: stop // when true - stop after parse() and return its result, - // otherwise continue for plain args - }; - } - function condition() { - return [expect(parsers.condition, 'expected condition')]; - } - }, - arguments: function (prevArgs) { - var argsComma = prevArgs || []; - var argsSemiColon = []; - var isSemiColonSeparated; - var value; - parserInput.save(); - while (true) { - if (prevArgs) { - prevArgs = false; - } - else { - value = parsers.detachedRuleset() || this.assignment() || parsers.expression(); - if (!value) { - break; - } - if (value.value && value.value.length == 1) { - value = value.value[0]; - } - argsComma.push(value); - } - if (parserInput.$char(',')) { - continue; - } - if (parserInput.$char(';') || isSemiColonSeparated) { - isSemiColonSeparated = true; - value = (argsComma.length < 1) ? argsComma[0] - : new tree.Value(argsComma); - argsSemiColon.push(value); - argsComma = []; - } - } - parserInput.forget(); - return isSemiColonSeparated ? argsSemiColon : argsComma; - }, - literal: function () { - return this.dimension() || - this.color() || - this.quoted() || - this.unicodeDescriptor(); - }, - // Assignments are argument entities for calls. - // They are present in ie filter properties as shown below. - // - // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* ) - // - assignment: function () { - var key; - var value; - parserInput.save(); - key = parserInput.$re(/^\w+(?=\s?=)/i); - if (!key) { - parserInput.restore(); - return; - } - if (!parserInput.$char('=')) { - parserInput.restore(); - return; - } - value = parsers.entity(); - if (value) { - parserInput.forget(); - return new (tree.Assignment)(key, value); - } - else { - parserInput.restore(); - } - }, - // - // Parse url() tokens - // - // We use a specific rule for urls, because they don't really behave like - // standard function calls. The difference is that the argument doesn't have - // to be enclosed within a string, so it can't be parsed as an Expression. - // - url: function () { - var value; - var index = parserInput.i; - parserInput.autoCommentAbsorb = false; - if (!parserInput.$str('url(')) { - parserInput.autoCommentAbsorb = true; - return; - } - value = this.quoted() || this.variable() || this.property() || - parserInput.$re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/) || ''; - parserInput.autoCommentAbsorb = true; - expectChar(')'); - return new (tree.URL)((value.value != null || - value instanceof tree.Variable || - value instanceof tree.Property) ? - value : new (tree.Anonymous)(value, index), index, fileInfo); - }, - // - // A Variable entity, such as `@fink`, in - // - // width: @fink + 2px - // - // We use a different parser for variable definitions, - // see `parsers.variable`. - // - variable: function () { - var ch; - var name; - var index = parserInput.i; - parserInput.save(); - if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\w-]+/))) { - ch = parserInput.currentChar(); - if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\s/)) { - // this may be a VariableCall lookup - var result = parsers.variableCall(name); - if (result) { - parserInput.forget(); - return result; - } - } - parserInput.forget(); - return new (tree.Variable)(name, index, fileInfo); - } - parserInput.restore(); - }, - // A variable entity using the protective {} e.g. @{var} - variableCurly: function () { - var curly; - var index = parserInput.i; - if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\{([\w-]+)\}/))) { - return new (tree.Variable)("@" + curly[1], index, fileInfo); - } - }, - // - // A Property accessor, such as `$color`, in - // - // background-color: $color - // - property: function () { - var name; - var index = parserInput.i; - if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\$[\w-]+/))) { - return new (tree.Property)(name, index, fileInfo); - } - }, - // A property entity useing the protective {} e.g. ${prop} - propertyCurly: function () { - var curly; - var index = parserInput.i; - if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\$\{([\w-]+)\}/))) { - return new (tree.Property)("$" + curly[1], index, fileInfo); - } - }, - // - // A Hexadecimal color - // - // #4F3C2F - // - // `rgb` and `hsl` colors are parsed through the `entities.call` parser. - // - color: function () { - var rgb; - parserInput.save(); - if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\w.#\[])?/))) { - if (!rgb[2]) { - parserInput.forget(); - return new (tree.Color)(rgb[1], undefined, rgb[0]); - } - } - parserInput.restore(); - }, - colorKeyword: function () { - parserInput.save(); - var autoCommentAbsorb = parserInput.autoCommentAbsorb; - parserInput.autoCommentAbsorb = false; - var k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/); - parserInput.autoCommentAbsorb = autoCommentAbsorb; - if (!k) { - parserInput.forget(); - return; - } - parserInput.restore(); - var color = tree.Color.fromKeyword(k); - if (color) { - parserInput.$str(k); - return color; - } - }, - // - // A Dimension, that is, a number and a unit - // - // 0.5em 95% - // - dimension: function () { - if (parserInput.peekNotNumeric()) { - return; - } - var value = parserInput.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i); - if (value) { - return new (tree.Dimension)(value[1], value[2]); - } - }, - // - // A unicode descriptor, as is used in unicode-range - // - // U+0?? or U+00A1-00A9 - // - unicodeDescriptor: function () { - var ud; - ud = parserInput.$re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/); - if (ud) { - return new (tree.UnicodeDescriptor)(ud[0]); - } - }, - // - // JavaScript code to be evaluated - // - // `window.location.href` - // - javascript: function () { - var js; - var index = parserInput.i; - parserInput.save(); - var escape = parserInput.$char('~'); - var jsQuote = parserInput.$char('`'); - if (!jsQuote) { - parserInput.restore(); - return; - } - js = parserInput.$re(/^[^`]*`/); - if (js) { - parserInput.forget(); - return new (tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index, fileInfo); - } - parserInput.restore('invalid javascript definition'); - } - }, - // - // The variable part of a variable definition. Used in the `rule` parser - // - // @fink: - // - variable: function () { - var name; - if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\w-]+)\s*:/))) { - return name[1]; - } - }, - // - // Call a variable value to retrieve a detached ruleset - // or a value from a detached ruleset's rules. - // - // @fink(); - // @fink; - // color: @fink[@color]; - // - variableCall: function (parsedName) { - var lookups; - var i = parserInput.i; - var inValue = !!parsedName; - var name = parsedName; - parserInput.save(); - if (name || (parserInput.currentChar() === '@' - && (name = parserInput.$re(/^(@[\w-]+)(\(\s*\))?/)))) { - lookups = this.mixin.ruleLookups(); - if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) { - parserInput.restore('Missing \'[...]\' lookup in variable call'); - return; - } - if (!inValue) { - name = name[1]; - } - var call = new tree.VariableCall(name, i, fileInfo); - if (!inValue && parsers.end()) { - parserInput.forget(); - return call; - } - else { - parserInput.forget(); - return new tree.NamespaceValue(call, lookups, i, fileInfo); - } - } - parserInput.restore(); - }, - // - // extend syntax - used to extend selectors - // - extend: function (isRule) { - var elements; - var e; - var index = parserInput.i; - var option; - var extendList; - var extend; - if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) { - return; - } - do { - option = null; - elements = null; - while (!(option = parserInput.$re(/^(all)(?=\s*(\)|,))/))) { - e = this.element(); - if (!e) { - break; - } - if (elements) { - elements.push(e); - } - else { - elements = [e]; - } - } - option = option && option[1]; - if (!elements) { - error('Missing target selector for :extend().'); - } - extend = new (tree.Extend)(new (tree.Selector)(elements), option, index, fileInfo); - if (extendList) { - extendList.push(extend); - } - else { - extendList = [extend]; - } - } while (parserInput.$char(',')); - expect(/^\)/); - if (isRule) { - expect(/^;/); - } - return extendList; - }, - // - // extendRule - used in a rule to extend all the parent selectors - // - extendRule: function () { - return this.extend(true); - }, - // - // Mixins - // - mixin: { - // - // A Mixin call, with an optional argument list - // - // #mixins > .square(#fff); - // #mixins.square(#fff); - // .rounded(4px, black); - // .button; - // - // We can lookup / return a value using the lookup syntax: - // - // color: #mixin.square(#fff)[@color]; - // - // The `while` loop is there because mixins can be - // namespaced, but we only support the child and descendant - // selector for now. - // - call: function (inValue, getLookup) { - var s = parserInput.currentChar(); - var important = false; - var lookups; - var index = parserInput.i; - var elements; - var args; - var hasParens; - if (s !== '.' && s !== '#') { - return; - } - parserInput.save(); // stop us absorbing part of an invalid selector - elements = this.elements(); - if (elements) { - if (parserInput.$char('(')) { - args = this.args(true).args; - expectChar(')'); - hasParens = true; - } - if (getLookup !== false) { - lookups = this.ruleLookups(); - } - if (getLookup === true && !lookups) { - parserInput.restore(); - return; - } - if (inValue && !lookups && !hasParens) { - // This isn't a valid in-value mixin call - parserInput.restore(); - return; - } - if (!inValue && parsers.important()) { - important = true; - } - if (inValue || parsers.end()) { - parserInput.forget(); - var mixin = new (tree.mixin.Call)(elements, args, index, fileInfo, !lookups && important); - if (lookups) { - return new tree.NamespaceValue(mixin, lookups); - } - else { - return mixin; - } - } - } - parserInput.restore(); - }, - /** - * Matching elements for mixins - * (Start with . or # and can have > ) - */ - elements: function () { - var elements; - var e; - var c; - var elem; - var elemIndex; - var re = /^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/; - while (true) { - elemIndex = parserInput.i; - e = parserInput.$re(re); - if (!e) { - break; - } - elem = new (tree.Element)(c, e, false, elemIndex, fileInfo); - if (elements) { - elements.push(elem); - } - else { - elements = [elem]; - } - c = parserInput.$char('>'); - } - return elements; - }, - args: function (isCall) { - var entities = parsers.entities; - var returner = { args: null, variadic: false }; - var expressions = []; - var argsSemiColon = []; - var argsComma = []; - var isSemiColonSeparated; - var expressionContainsNamed; - var name; - var nameLoop; - var value; - var arg; - var expand; - var hasSep = true; - parserInput.save(); - while (true) { - if (isCall) { - arg = parsers.detachedRuleset() || parsers.expression(); - } - else { - parserInput.commentStore.length = 0; - if (parserInput.$str('...')) { - returner.variadic = true; - if (parserInput.$char(';') && !isSemiColonSeparated) { - isSemiColonSeparated = true; - } - (isSemiColonSeparated ? argsSemiColon : argsComma) - .push({ variadic: true }); - break; - } - arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true); - } - if (!arg || !hasSep) { - break; - } - nameLoop = null; - if (arg.throwAwayComments) { - arg.throwAwayComments(); - } - value = arg; - var val = null; - if (isCall) { - // Variable - if (arg.value && arg.value.length == 1) { - val = arg.value[0]; - } - } - else { - val = arg; - } - if (val && (val instanceof tree.Variable || val instanceof tree.Property)) { - if (parserInput.$char(':')) { - if (expressions.length > 0) { - if (isSemiColonSeparated) { - error('Cannot mix ; and , as delimiter types'); - } - expressionContainsNamed = true; - } - value = parsers.detachedRuleset() || parsers.expression(); - if (!value) { - if (isCall) { - error('could not understand value for named argument'); - } - else { - parserInput.restore(); - returner.args = []; - return returner; - } - } - nameLoop = (name = val.name); - } - else if (parserInput.$str('...')) { - if (!isCall) { - returner.variadic = true; - if (parserInput.$char(';') && !isSemiColonSeparated) { - isSemiColonSeparated = true; - } - (isSemiColonSeparated ? argsSemiColon : argsComma) - .push({ name: arg.name, variadic: true }); - break; - } - else { - expand = true; - } - } - else if (!isCall) { - name = nameLoop = val.name; - value = null; - } - } - if (value) { - expressions.push(value); - } - argsComma.push({ name: nameLoop, value: value, expand: expand }); - if (parserInput.$char(',')) { - hasSep = true; - continue; - } - hasSep = parserInput.$char(';') === ';'; - if (hasSep || isSemiColonSeparated) { - if (expressionContainsNamed) { - error('Cannot mix ; and , as delimiter types'); - } - isSemiColonSeparated = true; - if (expressions.length > 1) { - value = new (tree.Value)(expressions); - } - argsSemiColon.push({ name: name, value: value, expand: expand }); - name = null; - expressions = []; - expressionContainsNamed = false; - } - } - parserInput.forget(); - returner.args = isSemiColonSeparated ? argsSemiColon : argsComma; - return returner; - }, - // - // A Mixin definition, with a list of parameters - // - // .rounded (@radius: 2px, @color) { - // ... - // } - // - // Until we have a finer grained state-machine, we have to - // do a look-ahead, to make sure we don't have a mixin call. - // See the `rule` function for more information. - // - // We start by matching `.rounded (`, and then proceed on to - // the argument list, which has optional default values. - // We store the parameters in `params`, with a `value` key, - // if there is a value, such as in the case of `@radius`. - // - // Once we've got our params list, and a closing `)`, we parse - // the `{...}` block. - // - definition: function () { - var name; - var params = []; - var match; - var ruleset; - var cond; - var variadic = false; - if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') || - parserInput.peek(/^[^{]*\}/)) { - return; - } - parserInput.save(); - match = parserInput.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/); - if (match) { - name = match[1]; - var argInfo = this.args(false); - params = argInfo.args; - variadic = argInfo.variadic; - // .mixincall("@{a}"); - // looks a bit like a mixin definition.. - // also - // .mixincall(@a: {rule: set;}); - // so we have to be nice and restore - if (!parserInput.$char(')')) { - parserInput.restore('Missing closing \')\''); - return; - } - parserInput.commentStore.length = 0; - if (parserInput.$str('when')) { // Guard - cond = expect(parsers.conditions, 'expected condition'); - } - ruleset = parsers.block(); - if (ruleset) { - parserInput.forget(); - return new (tree.mixin.Definition)(name, params, ruleset, cond, variadic); - } - else { - parserInput.restore(); - } - } - else { - parserInput.restore(); - } - }, - ruleLookups: function () { - var rule; - var lookups = []; - if (parserInput.currentChar() !== '[') { - return; - } - while (true) { - parserInput.save(); - rule = this.lookupValue(); - if (!rule && rule !== '') { - parserInput.restore(); - break; - } - lookups.push(rule); - parserInput.forget(); - } - if (lookups.length > 0) { - return lookups; - } - }, - lookupValue: function () { - parserInput.save(); - if (!parserInput.$char('[')) { - parserInput.restore(); - return; - } - var name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/); - if (!parserInput.$char(']')) { - parserInput.restore(); - return; - } - if (name || name === '') { - parserInput.forget(); - return name; - } - parserInput.restore(); - } - }, - // - // Entities are the smallest recognized token, - // and can be found inside a rule's value. - // - entity: function () { - var entities = this.entities; - return this.comment() || entities.literal() || entities.variable() || entities.url() || - entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) || - entities.javascript(); - }, - // - // A Declaration terminator. Note that we use `peek()` to check for '}', - // because the `block` rule will be expecting it, but we still need to make sure - // it's there, if ';' was omitted. - // - end: function () { - return parserInput.$char(';') || parserInput.peek('}'); - }, - // - // IE's alpha function - // - // alpha(opacity=88) - // - ieAlpha: function () { - var value; - // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18 - if (!parserInput.$re(/^opacity=/i)) { - return; - } - value = parserInput.$re(/^\d+/); - if (!value) { - value = expect(parsers.entities.variable, 'Could not parse alpha'); - value = "@{" + value.name.slice(1) + "}"; - } - expectChar(')'); - return new tree.Quoted('', "alpha(opacity=" + value + ")"); - }, - // - // A Selector Element - // - // div - // + h1 - // #socks - // input[type="text"] - // - // Elements are the building blocks for Selectors, - // they are made out of a `Combinator` (see combinator rule), - // and an element name, such as a tag a class, or `*`. - // - element: function () { - var e; - var c; - var v; - var index = parserInput.i; - c = this.combinator(); - e = parserInput.$re(/^(?:\d+\.\d+|\d+)%/) || - parserInput.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) || - parserInput.$char('*') || parserInput.$char('&') || this.attribute() || - parserInput.$re(/^\([^&()@]+\)/) || parserInput.$re(/^[\.#:](?=@)/) || - this.entities.variableCurly(); - if (!e) { - parserInput.save(); - if (parserInput.$char('(')) { - if ((v = this.selector(false)) && parserInput.$char(')')) { - e = new (tree.Paren)(v); - parserInput.forget(); - } - else { - parserInput.restore('Missing closing \')\''); - } - } - else { - parserInput.forget(); - } - } - if (e) { - return new (tree.Element)(c, e, e instanceof tree.Variable, index, fileInfo); - } - }, - // - // Combinators combine elements together, in a Selector. - // - // Because our parser isn't white-space sensitive, special care - // has to be taken, when parsing the descendant combinator, ` `, - // as it's an empty space. We have to check the previous character - // in the input, to see if it's a ` ` character. More info on how - // we deal with this in *combinator.js*. - // - combinator: function () { - var c = parserInput.currentChar(); - if (c === '/') { - parserInput.save(); - var slashedCombinator = parserInput.$re(/^\/[a-z]+\//i); - if (slashedCombinator) { - parserInput.forget(); - return new (tree.Combinator)(slashedCombinator); - } - parserInput.restore(); - } - if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') { - parserInput.i++; - if (c === '^' && parserInput.currentChar() === '^') { - c = '^^'; - parserInput.i++; - } - while (parserInput.isWhitespace()) { - parserInput.i++; - } - return new (tree.Combinator)(c); - } - else if (parserInput.isWhitespace(-1)) { - return new (tree.Combinator)(' '); - } - else { - return new (tree.Combinator)(null); - } - }, - // - // A CSS Selector - // with less extensions e.g. the ability to extend and guard - // - // .class > div + h1 - // li a:hover - // - // Selectors are made out of one or more Elements, see above. - // - selector: function (isLess) { - var index = parserInput.i; - var elements; - var extendList; - var c; - var e; - var allExtends; - var when; - var condition; - isLess = isLess !== false; - while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) { - if (when) { - condition = expect(this.conditions, 'expected condition'); - } - else if (condition) { - error('CSS guard can only be used at the end of selector'); - } - else if (extendList) { - if (allExtends) { - allExtends = allExtends.concat(extendList); - } - else { - allExtends = extendList; - } - } - else { - if (allExtends) { - error('Extend can only be used at the end of selector'); - } - c = parserInput.currentChar(); - if (elements) { - elements.push(e); - } - else { - elements = [e]; - } - e = null; - } - if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') { - break; - } - } - if (elements) { - return new (tree.Selector)(elements, allExtends, condition, index, fileInfo); - } - if (allExtends) { - error('Extend must be used to extend a selector, it cannot be used on its own'); - } - }, - selectors: function () { - var s; - var selectors; - while (true) { - s = this.selector(); - if (!s) { - break; - } - if (selectors) { - selectors.push(s); - } - else { - selectors = [s]; - } - parserInput.commentStore.length = 0; - if (s.condition && selectors.length > 1) { - error("Guards are only currently allowed on a single selector."); - } - if (!parserInput.$char(',')) { - break; - } - if (s.condition) { - error("Guards are only currently allowed on a single selector."); - } - parserInput.commentStore.length = 0; - } - return selectors; - }, - attribute: function () { - if (!parserInput.$char('[')) { - return; - } - var entities = this.entities; - var key; - var val; - var op; - if (!(key = entities.variableCurly())) { - key = expect(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/); - } - op = parserInput.$re(/^[|~*$^]?=/); - if (op) { - val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\w-]+/) || entities.variableCurly(); - } - expectChar(']'); - return new (tree.Attribute)(key, op, val); - }, - // - // The `block` rule is used by `ruleset` and `mixin.definition`. - // It's a wrapper around the `primary` rule, with added `{}`. - // - block: function () { - var content; - if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) { - return content; - } - }, - blockRuleset: function () { - var block = this.block(); - if (block) { - block = new tree.Ruleset(null, block); - } - return block; - }, - detachedRuleset: function () { - var argInfo; - var params; - var variadic; - parserInput.save(); - if (parserInput.$re(/^[.#]\(/)) { - /** - * DR args currently only implemented for each() function, and not - * yet settable as `@dr: #(@arg) {}` - * This should be done when DRs are merged with mixins. - * See: https://github.com/less/less-meta/issues/16 - */ - argInfo = this.mixin.args(false); - params = argInfo.args; - variadic = argInfo.variadic; - if (!parserInput.$char(')')) { - parserInput.restore(); - return; - } - } - var blockRuleset = this.blockRuleset(); - if (blockRuleset) { - parserInput.forget(); - if (params) { - return new tree.mixin.Definition(null, params, blockRuleset, null, variadic); - } - return new tree.DetachedRuleset(blockRuleset); - } - parserInput.restore(); - }, - // - // div, .class, body > p {...} - // - ruleset: function () { - var selectors; - var rules; - var debugInfo; - parserInput.save(); - if (context.dumpLineNumbers) { - debugInfo = getDebugInfo(parserInput.i); - } - selectors = this.selectors(); - if (selectors && (rules = this.block())) { - parserInput.forget(); - var ruleset = new (tree.Ruleset)(selectors, rules, context.strictImports); - if (context.dumpLineNumbers) { - ruleset.debugInfo = debugInfo; - } - return ruleset; - } - else { - parserInput.restore(); - } - }, - declaration: function () { - var name; - var value; - var index = parserInput.i; - var hasDR; - var c = parserInput.currentChar(); - var important; - var merge; - var isVariable; - if (c === '.' || c === '#' || c === '&' || c === ':') { - return; - } - parserInput.save(); - name = this.variable() || this.ruleProperty(); - if (name) { - isVariable = typeof name === 'string'; - if (isVariable) { - value = this.detachedRuleset(); - if (value) { - hasDR = true; - } - } - parserInput.commentStore.length = 0; - if (!value) { - // a name returned by this.ruleProperty() is always an array of the form: - // [string-1, ..., string-n, ""] or [string-1, ..., string-n, "+"] - // where each item is a tree.Keyword or tree.Variable - merge = !isVariable && name.length > 1 && name.pop().value; - // Custom property values get permissive parsing - if (name[0].value && name[0].value.slice(0, 2) === '--') { - value = this.permissiveValue(); - } - // Try to store values as anonymous - // If we need the value later we'll re-parse it in ruleset.parseValue - else { - value = this.anonymousValue(); - } - if (value) { - parserInput.forget(); - // anonymous values absorb the end ';' which is required for them to work - return new (tree.Declaration)(name, value, false, merge, index, fileInfo); - } - if (!value) { - value = this.value(); - } - if (value) { - important = this.important(); - } - else if (isVariable) { - // As a last resort, try permissiveValue - value = this.permissiveValue(); - } - } - if (value && (this.end() || hasDR)) { - parserInput.forget(); - return new (tree.Declaration)(name, value, important, merge, index, fileInfo); - } - else { - parserInput.restore(); - } - } - else { - parserInput.restore(); - } - }, - anonymousValue: function () { - var index = parserInput.i; - var match = parserInput.$re(/^([^.#@\$+\/'"*`(;{}-]*);/); - if (match) { - return new (tree.Anonymous)(match[1], index); - } - }, - /** - * Used for custom properties, at-rules, and variables (as fallback) - * Parses almost anything inside of {} [] () "" blocks - * until it reaches outer-most tokens. - * - * First, it will try to parse comments and entities to reach - * the end. This is mostly like the Expression parser except no - * math is allowed. - */ - permissiveValue: function (untilTokens) { - var i; - var e; - var done; - var value; - var tok = untilTokens || ';'; - var index = parserInput.i; - var result = []; - function testCurrentChar() { - var char = parserInput.currentChar(); - if (typeof tok === 'string') { - return char === tok; - } - else { - return tok.test(char); - } - } - if (testCurrentChar()) { - return; - } - value = []; - do { - e = this.comment(); - if (e) { - value.push(e); - continue; - } - e = this.entity(); - if (e) { - value.push(e); - } - } while (e); - done = testCurrentChar(); - if (value.length > 0) { - value = new (tree.Expression)(value); - if (done) { - return value; - } - else { - result.push(value); - } - // Preserve space before $parseUntil as it will not - if (parserInput.prevChar() === ' ') { - result.push(new tree.Anonymous(' ', index)); - } - } - parserInput.save(); - value = parserInput.$parseUntil(tok); - if (value) { - if (typeof value === 'string') { - error("Expected '" + value + "'", 'Parse'); - } - if (value.length === 1 && value[0] === ' ') { - parserInput.forget(); - return new tree.Anonymous('', index); - } - var item = void 0; - for (i = 0; i < value.length; i++) { - item = value[i]; - if (Array.isArray(item)) { - // Treat actual quotes as normal quoted values - result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo)); - } - else { - if (i === value.length - 1) { - item = item.trim(); - } - // Treat like quoted values, but replace vars like unquoted expressions - var quote = new tree.Quoted('\'', item, true, index, fileInfo); - quote.variableRegex = /@([\w-]+)/g; - quote.propRegex = /\$([\w-]+)/g; - result.push(quote); - } - } - parserInput.forget(); - return new tree.Expression(result, true); - } - parserInput.restore(); - }, - // - // An @import atrule - // - // @import "lib"; - // - // Depending on our environment, importing is done differently: - // In the browser, it's an XHR request, in Node, it would be a - // file-system operation. The function used for importing is - // stored in `import`, which we pass to the Import constructor. - // - 'import': function () { - var path; - var features; - var index = parserInput.i; - var dir = parserInput.$re(/^@import?\s+/); - if (dir) { - var options = (dir ? this.importOptions() : null) || {}; - if ((path = this.entities.quoted() || this.entities.url())) { - features = this.mediaFeatures(); - if (!parserInput.$char(';')) { - parserInput.i = index; - error('missing semi-colon or unrecognised media features on import'); - } - features = features && new (tree.Value)(features); - return new (tree.Import)(path, features, options, index, fileInfo); - } - else { - parserInput.i = index; - error('malformed import statement'); - } - } - }, - importOptions: function () { - var o; - var options = {}; - var optionName; - var value; - // list of options, surrounded by parens - if (!parserInput.$char('(')) { - return null; - } - do { - o = this.importOption(); - if (o) { - optionName = o; - value = true; - switch (optionName) { - case 'css': - optionName = 'less'; - value = false; - break; - case 'once': - optionName = 'multiple'; - value = false; - break; - } - options[optionName] = value; - if (!parserInput.$char(',')) { - break; - } - } - } while (o); - expectChar(')'); - return options; - }, - importOption: function () { - var opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/); - if (opt) { - return opt[1]; - } - }, - mediaFeature: function () { - var entities = this.entities; - var nodes = []; - var e; - var p; - parserInput.save(); - do { - e = entities.keyword() || entities.variable() || entities.mixinLookup(); - if (e) { - nodes.push(e); - } - else if (parserInput.$char('(')) { - p = this.property(); - e = this.value(); - if (parserInput.$char(')')) { - if (p && e) { - nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i, fileInfo, true))); - } - else if (e) { - nodes.push(new (tree.Paren)(e)); - } - else { - error('badly formed media feature definition'); - } - } - else { - error('Missing closing \')\'', 'Parse'); - } - } - } while (e); - parserInput.forget(); - if (nodes.length > 0) { - return new (tree.Expression)(nodes); - } - }, - mediaFeatures: function () { - var entities = this.entities; - var features = []; - var e; - do { - e = this.mediaFeature(); - if (e) { - features.push(e); - if (!parserInput.$char(',')) { - break; - } - } - else { - e = entities.variable() || entities.mixinLookup(); - if (e) { - features.push(e); - if (!parserInput.$char(',')) { - break; - } - } - } - } while (e); - return features.length > 0 ? features : null; - }, - media: function () { - var features; - var rules; - var media; - var debugInfo; - var index = parserInput.i; - if (context.dumpLineNumbers) { - debugInfo = getDebugInfo(index); - } - parserInput.save(); - if (parserInput.$str('@media')) { - features = this.mediaFeatures(); - rules = this.block(); - if (!rules) { - error('media definitions require block statements after any features'); - } - parserInput.forget(); - media = new (tree.Media)(rules, features, index, fileInfo); - if (context.dumpLineNumbers) { - media.debugInfo = debugInfo; - } - return media; - } - parserInput.restore(); - }, - // - // A @plugin directive, used to import plugins dynamically. - // - // @plugin (args) "lib"; - // - plugin: function () { - var path; - var args; - var options; - var index = parserInput.i; - var dir = parserInput.$re(/^@plugin?\s+/); - if (dir) { - args = this.pluginArgs(); - if (args) { - options = { - pluginArgs: args, - isPlugin: true - }; - } - else { - options = { isPlugin: true }; - } - if ((path = this.entities.quoted() || this.entities.url())) { - if (!parserInput.$char(';')) { - parserInput.i = index; - error('missing semi-colon on @plugin'); - } - return new (tree.Import)(path, null, options, index, fileInfo); - } - else { - parserInput.i = index; - error('malformed @plugin statement'); - } - } - }, - pluginArgs: function () { - // list of options, surrounded by parens - parserInput.save(); - if (!parserInput.$char('(')) { - parserInput.restore(); - return null; - } - var args = parserInput.$re(/^\s*([^\);]+)\)\s*/); - if (args[1]) { - parserInput.forget(); - return args[1].trim(); - } - else { - parserInput.restore(); - return null; - } - }, - // - // A CSS AtRule - // - // @charset "utf-8"; - // - atrule: function () { - var index = parserInput.i; - var name; - var value; - var rules; - var nonVendorSpecificName; - var hasIdentifier; - var hasExpression; - var hasUnknown; - var hasBlock = true; - var isRooted = true; - if (parserInput.currentChar() !== '@') { - return; - } - value = this['import']() || this.plugin() || this.media(); - if (value) { - return value; - } - parserInput.save(); - name = parserInput.$re(/^@[a-z-]+/); - if (!name) { - return; - } - nonVendorSpecificName = name; - if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) { - nonVendorSpecificName = "@" + name.slice(name.indexOf('-', 2) + 1); - } - switch (nonVendorSpecificName) { - case '@charset': - hasIdentifier = true; - hasBlock = false; - break; - case '@namespace': - hasExpression = true; - hasBlock = false; - break; - case '@keyframes': - case '@counter-style': - hasIdentifier = true; - break; - case '@document': - case '@supports': - hasUnknown = true; - isRooted = false; - break; - default: - hasUnknown = true; - break; - } - parserInput.commentStore.length = 0; - if (hasIdentifier) { - value = this.entity(); - if (!value) { - error("expected " + name + " identifier"); - } - } - else if (hasExpression) { - value = this.expression(); - if (!value) { - error("expected " + name + " expression"); - } - } - else if (hasUnknown) { - value = this.permissiveValue(/^[{;]/); - hasBlock = (parserInput.currentChar() === '{'); - if (!value) { - if (!hasBlock && parserInput.currentChar() !== ';') { - error(name + " rule is missing block or ending semi-colon"); - } - } - else if (!value.value) { - value = null; - } - } - if (hasBlock) { - rules = this.blockRuleset(); - } - if (rules || (!hasBlock && value && parserInput.$char(';'))) { - parserInput.forget(); - return new (tree.AtRule)(name, value, rules, index, fileInfo, context.dumpLineNumbers ? getDebugInfo(index) : null, isRooted); - } - parserInput.restore('at-rule options not recognised'); - }, - // - // A Value is a comma-delimited list of Expressions - // - // font-family: Baskerville, Georgia, serif; - // - // In a Rule, a Value represents everything after the `:`, - // and before the `;`. - // - value: function () { - var e; - var expressions = []; - var index = parserInput.i; - do { - e = this.expression(); - if (e) { - expressions.push(e); - if (!parserInput.$char(',')) { - break; - } - } - } while (e); - if (expressions.length > 0) { - return new (tree.Value)(expressions, index); - } - }, - important: function () { - if (parserInput.currentChar() === '!') { - return parserInput.$re(/^! *important/); - } - }, - sub: function () { - var a; - var e; - parserInput.save(); - if (parserInput.$char('(')) { - a = this.addition(); - if (a && parserInput.$char(')')) { - parserInput.forget(); - e = new (tree.Expression)([a]); - e.parens = true; - return e; - } - parserInput.restore('Expected \')\''); - return; - } - parserInput.restore(); - }, - multiplication: function () { - var m; - var a; - var op; - var operation; - var isSpaced; - m = this.operand(); - if (m) { - isSpaced = parserInput.isWhitespace(-1); - while (true) { - if (parserInput.peek(/^\/[*\/]/)) { - break; - } - parserInput.save(); - op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./'); - if (!op) { - parserInput.forget(); - break; - } - a = this.operand(); - if (!a) { - parserInput.restore(); - break; - } - parserInput.forget(); - m.parensInOp = true; - a.parensInOp = true; - operation = new (tree.Operation)(op, [operation || m, a], isSpaced); - isSpaced = parserInput.isWhitespace(-1); - } - return operation || m; - } - }, - addition: function () { - var m; - var a; - var op; - var operation; - var isSpaced; - m = this.multiplication(); - if (m) { - isSpaced = parserInput.isWhitespace(-1); - while (true) { - op = parserInput.$re(/^[-+]\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-'))); - if (!op) { - break; - } - a = this.multiplication(); - if (!a) { - break; - } - m.parensInOp = true; - a.parensInOp = true; - operation = new (tree.Operation)(op, [operation || m, a], isSpaced); - isSpaced = parserInput.isWhitespace(-1); - } - return operation || m; - } - }, - conditions: function () { - var a; - var b; - var index = parserInput.i; - var condition; - a = this.condition(true); - if (a) { - while (true) { - if (!parserInput.peek(/^,\s*(not\s*)?\(/) || !parserInput.$char(',')) { - break; - } - b = this.condition(true); - if (!b) { - break; - } - condition = new (tree.Condition)('or', condition || a, b, index); - } - return condition || a; - } - }, - condition: function (needsParens) { - var result; - var logical; - var next; - function or() { - return parserInput.$str('or'); - } - result = this.conditionAnd(needsParens); - if (!result) { - return; - } - logical = or(); - if (logical) { - next = this.condition(needsParens); - if (next) { - result = new (tree.Condition)(logical, result, next); - } - else { - return; - } - } - return result; - }, - conditionAnd: function (needsParens) { - var result; - var logical; - var next; - var self = this; - function insideCondition() { - var cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens); - if (!cond && !needsParens) { - return self.atomicCondition(needsParens); - } - return cond; - } - function and() { - return parserInput.$str('and'); - } - result = insideCondition(); - if (!result) { - return; - } - logical = and(); - if (logical) { - next = this.conditionAnd(needsParens); - if (next) { - result = new (tree.Condition)(logical, result, next); - } - else { - return; - } - } - return result; - }, - negatedCondition: function (needsParens) { - if (parserInput.$str('not')) { - var result = this.parenthesisCondition(needsParens); - if (result) { - result.negate = !result.negate; - } - return result; - } - }, - parenthesisCondition: function (needsParens) { - function tryConditionFollowedByParenthesis(me) { - var body; - parserInput.save(); - body = me.condition(needsParens); - if (!body) { - parserInput.restore(); - return; - } - if (!parserInput.$char(')')) { - parserInput.restore(); - return; - } - parserInput.forget(); - return body; - } - var body; - parserInput.save(); - if (!parserInput.$str('(')) { - parserInput.restore(); - return; - } - body = tryConditionFollowedByParenthesis(this); - if (body) { - parserInput.forget(); - return body; - } - body = this.atomicCondition(needsParens); - if (!body) { - parserInput.restore(); - return; - } - if (!parserInput.$char(')')) { - parserInput.restore("expected ')' got '" + parserInput.currentChar() + "'"); - return; - } - parserInput.forget(); - return body; - }, - atomicCondition: function (needsParens) { - var entities = this.entities; - var index = parserInput.i; - var a; - var b; - var c; - var op; - function cond() { - return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup(); - } - cond = cond.bind(this); - a = cond(); - if (a) { - if (parserInput.$char('>')) { - if (parserInput.$char('=')) { - op = '>='; - } - else { - op = '>'; - } - } - else if (parserInput.$char('<')) { - if (parserInput.$char('=')) { - op = '<='; - } - else { - op = '<'; - } - } - else if (parserInput.$char('=')) { - if (parserInput.$char('>')) { - op = '=>'; - } - else if (parserInput.$char('<')) { - op = '=<'; - } - else { - op = '='; - } - } - if (op) { - b = cond(); - if (b) { - c = new (tree.Condition)(op, a, b, index, false); - } - else { - error('expected expression'); - } - } - else { - c = new (tree.Condition)('=', a, new (tree.Keyword)('true'), index, false); - } - return c; - } - }, - // - // An operand is anything that can be part of an operation, - // such as a Color, or a Variable - // - operand: function () { - var entities = this.entities; - var negate; - if (parserInput.peek(/^-[@\$\(]/)) { - negate = parserInput.$char('-'); - } - var o = this.sub() || entities.dimension() || - entities.color() || entities.variable() || - entities.property() || entities.call() || - entities.quoted(true) || entities.colorKeyword() || - entities.mixinLookup(); - if (negate) { - o.parensInOp = true; - o = new (tree.Negative)(o); - } - return o; - }, - // - // Expressions either represent mathematical operations, - // or white-space delimited Entities. - // - // 1px solid black - // @var * 2 - // - expression: function () { - var entities = []; - var e; - var delim; - var index = parserInput.i; - do { - e = this.comment(); - if (e) { - entities.push(e); - continue; - } - e = this.addition() || this.entity(); - if (e instanceof tree.Comment) { - e = null; - } - if (e) { - entities.push(e); - // operations do not allow keyword "/" dimension (e.g. small/20px) so we support that here - if (!parserInput.peek(/^\/[\/*]/)) { - delim = parserInput.$char('/'); - if (delim) { - entities.push(new (tree.Anonymous)(delim, index)); - } - } - } - } while (e); - if (entities.length > 0) { - return new (tree.Expression)(entities); - } - }, - property: function () { - var name = parserInput.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/); - if (name) { - return name[1]; - } - }, - ruleProperty: function () { - var name = []; - var index = []; - var s; - var k; - parserInput.save(); - var simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\s*:/); - if (simpleProperty) { - name = [new (tree.Keyword)(simpleProperty[1])]; - parserInput.forget(); - return name; - } - function match(re) { - var i = parserInput.i; - var chunk = parserInput.$re(re); - if (chunk) { - index.push(i); - return name.push(chunk[1]); - } - } - match(/^(\*?)/); - while (true) { - if (!match(/^((?:[\w-]+)|(?:[@\$]\{[\w-]+\}))/)) { - break; - } - } - if ((name.length > 1) && match(/^((?:\+_|\+)?)\s*:/)) { - parserInput.forget(); - // at last, we have the complete match now. move forward, - // convert name particles to tree objects and return: - if (name[0] === '') { - name.shift(); - index.shift(); - } - for (k = 0; k < name.length; k++) { - s = name[k]; - name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ? - new (tree.Keyword)(s) : - (s.charAt(0) === '@' ? - new (tree.Variable)("@" + s.slice(2, -1), index[k], fileInfo) : - new (tree.Property)("$" + s.slice(2, -1), index[k], fileInfo)); - } - return name; - } - parserInput.restore(); - } - } - }; - }; - Parser.serializeVars = function (vars) { - var s = ''; - for (var name_1 in vars) { - if (Object.hasOwnProperty.call(vars, name_1)) { - var value = vars[name_1]; - s += ((name_1[0] === '@') ? '' : '@') + name_1 + ": " + value + ((String(value).slice(-1) === ';') ? '' : ';'); - } - } - return s; - }; - - function boolean(condition) { - return condition ? Keyword.True : Keyword.False; - } - /** - * Functions with evalArgs set to false are sent context - * as the first argument. - */ - function If(context, condition, trueValue, falseValue) { - return condition.eval(context) ? trueValue.eval(context) - : (falseValue ? falseValue.eval(context) : new Anonymous); - } - If.evalArgs = false; - function isdefined(context, variable) { - try { - variable.eval(context); - return Keyword.True; - } - catch (e) { - return Keyword.False; - } - } - isdefined.evalArgs = false; - var boolean$1 = { isdefined: isdefined, boolean: boolean, 'if': If }; - - var colorFunctions; - function clamp(val) { - return Math.min(1, Math.max(0, val)); - } - function hsla(origColor, hsl) { - var color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a); - if (color) { - if (origColor.value && - /^(rgb|hsl)/.test(origColor.value)) { - color.value = origColor.value; - } - else { - color.value = 'rgb'; - } - return color; - } - } - function toHSL(color) { - if (color.toHSL) { - return color.toHSL(); - } - else { - throw new Error('Argument cannot be evaluated to a color'); - } - } - function toHSV(color) { - if (color.toHSV) { - return color.toHSV(); - } - else { - throw new Error('Argument cannot be evaluated to a color'); - } - } - function number$1(n) { - if (n instanceof Dimension) { - return parseFloat(n.unit.is('%') ? n.value / 100 : n.value); - } - else if (typeof n === 'number') { - return n; - } - else { - throw { - type: 'Argument', - message: 'color functions take numbers as parameters' - }; - } - } - function scaled(n, size) { - if (n instanceof Dimension && n.unit.is('%')) { - return parseFloat(n.value * size / 100); - } - else { - return number$1(n); - } - } - colorFunctions = { - rgb: function (r, g, b) { - var a = 1; - /** - * Comma-less syntax - * e.g. rgb(0 128 255 / 50%) - */ - if (r instanceof Expression) { - var val = r.value; - r = val[0]; - g = val[1]; - b = val[2]; - /** - * @todo - should this be normalized in - * function caller? Or parsed differently? - */ - if (b instanceof Operation) { - var op = b; - b = op.operands[0]; - a = op.operands[1]; - } - } - var color = colorFunctions.rgba(r, g, b, a); - if (color) { - color.value = 'rgb'; - return color; - } - }, - rgba: function (r, g, b, a) { - try { - if (r instanceof Color) { - if (g) { - a = number$1(g); - } - else { - a = r.alpha; - } - return new Color(r.rgb, a, 'rgba'); - } - var rgb = [r, g, b].map(function (c) { return scaled(c, 255); }); - a = number$1(a); - return new Color(rgb, a, 'rgba'); - } - catch (e) { } - }, - hsl: function (h, s, l) { - var a = 1; - if (h instanceof Expression) { - var val = h.value; - h = val[0]; - s = val[1]; - l = val[2]; - if (l instanceof Operation) { - var op = l; - l = op.operands[0]; - a = op.operands[1]; - } - } - var color = colorFunctions.hsla(h, s, l, a); - if (color) { - color.value = 'hsl'; - return color; - } - }, - hsla: function (h, s, l, a) { - try { - if (h instanceof Color) { - if (s) { - a = number$1(s); - } - else { - a = h.alpha; - } - return new Color(h.rgb, a, 'hsla'); - } - var m1_1; - var m2_1; - function hue(h) { - h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h); - if (h * 6 < 1) { - return m1_1 + (m2_1 - m1_1) * h * 6; - } - else if (h * 2 < 1) { - return m2_1; - } - else if (h * 3 < 2) { - return m1_1 + (m2_1 - m1_1) * (2 / 3 - h) * 6; - } - else { - return m1_1; - } - } - h = (number$1(h) % 360) / 360; - s = clamp(number$1(s)); - l = clamp(number$1(l)); - a = clamp(number$1(a)); - m2_1 = l <= 0.5 ? l * (s + 1) : l + s - l * s; - m1_1 = l * 2 - m2_1; - var rgb = [ - hue(h + 1 / 3) * 255, - hue(h) * 255, - hue(h - 1 / 3) * 255 - ]; - a = number$1(a); - return new Color(rgb, a, 'hsla'); - } - catch (e) { } - }, - hsv: function (h, s, v) { - return colorFunctions.hsva(h, s, v, 1.0); - }, - hsva: function (h, s, v, a) { - h = ((number$1(h) % 360) / 360) * 360; - s = number$1(s); - v = number$1(v); - a = number$1(a); - var i; - var f; - i = Math.floor((h / 60) % 6); - f = (h / 60) - i; - var vs = [v, - v * (1 - s), - v * (1 - f * s), - v * (1 - (1 - f) * s)]; - var perm = [[0, 3, 1], - [2, 0, 1], - [1, 0, 3], - [1, 2, 0], - [3, 1, 0], - [0, 1, 2]]; - return colorFunctions.rgba(vs[perm[i][0]] * 255, vs[perm[i][1]] * 255, vs[perm[i][2]] * 255, a); - }, - hue: function (color) { - return new Dimension(toHSL(color).h); - }, - saturation: function (color) { - return new Dimension(toHSL(color).s * 100, '%'); - }, - lightness: function (color) { - return new Dimension(toHSL(color).l * 100, '%'); - }, - hsvhue: function (color) { - return new Dimension(toHSV(color).h); - }, - hsvsaturation: function (color) { - return new Dimension(toHSV(color).s * 100, '%'); - }, - hsvvalue: function (color) { - return new Dimension(toHSV(color).v * 100, '%'); - }, - red: function (color) { - return new Dimension(color.rgb[0]); - }, - green: function (color) { - return new Dimension(color.rgb[1]); - }, - blue: function (color) { - return new Dimension(color.rgb[2]); - }, - alpha: function (color) { - return new Dimension(toHSL(color).a); - }, - luma: function (color) { - return new Dimension(color.luma() * color.alpha * 100, '%'); - }, - luminance: function (color) { - var luminance = (0.2126 * color.rgb[0] / 255) + - (0.7152 * color.rgb[1] / 255) + - (0.0722 * color.rgb[2] / 255); - return new Dimension(luminance * color.alpha * 100, '%'); - }, - saturate: function (color, amount, method) { - // filter: saturate(3.2); - // should be kept as is, so check for color - if (!color.rgb) { - return null; - } - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.s += hsl.s * amount.value / 100; - } - else { - hsl.s += amount.value / 100; - } - hsl.s = clamp(hsl.s); - return hsla(color, hsl); - }, - desaturate: function (color, amount, method) { - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.s -= hsl.s * amount.value / 100; - } - else { - hsl.s -= amount.value / 100; - } - hsl.s = clamp(hsl.s); - return hsla(color, hsl); - }, - lighten: function (color, amount, method) { - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.l += hsl.l * amount.value / 100; - } - else { - hsl.l += amount.value / 100; - } - hsl.l = clamp(hsl.l); - return hsla(color, hsl); - }, - darken: function (color, amount, method) { - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.l -= hsl.l * amount.value / 100; - } - else { - hsl.l -= amount.value / 100; - } - hsl.l = clamp(hsl.l); - return hsla(color, hsl); - }, - fadein: function (color, amount, method) { - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.a += hsl.a * amount.value / 100; - } - else { - hsl.a += amount.value / 100; - } - hsl.a = clamp(hsl.a); - return hsla(color, hsl); - }, - fadeout: function (color, amount, method) { - var hsl = toHSL(color); - if (typeof method !== 'undefined' && method.value === 'relative') { - hsl.a -= hsl.a * amount.value / 100; - } - else { - hsl.a -= amount.value / 100; - } - hsl.a = clamp(hsl.a); - return hsla(color, hsl); - }, - fade: function (color, amount) { - var hsl = toHSL(color); - hsl.a = amount.value / 100; - hsl.a = clamp(hsl.a); - return hsla(color, hsl); - }, - spin: function (color, amount) { - var hsl = toHSL(color); - var hue = (hsl.h + amount.value) % 360; - hsl.h = hue < 0 ? 360 + hue : hue; - return hsla(color, hsl); - }, - // - // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein - // http://sass-lang.com - // - mix: function (color1, color2, weight) { - if (!weight) { - weight = new Dimension(50); - } - var p = weight.value / 100.0; - var w = p * 2 - 1; - var a = toHSL(color1).a - toHSL(color2).a; - var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2, - color1.rgb[1] * w1 + color2.rgb[1] * w2, - color1.rgb[2] * w1 + color2.rgb[2] * w2]; - var alpha = color1.alpha * p + color2.alpha * (1 - p); - return new Color(rgb, alpha); - }, - greyscale: function (color) { - return colorFunctions.desaturate(color, new Dimension(100)); - }, - contrast: function (color, dark, light, threshold) { - // filter: contrast(3.2); - // should be kept as is, so check for color - if (!color.rgb) { - return null; - } - if (typeof light === 'undefined') { - light = colorFunctions.rgba(255, 255, 255, 1.0); - } - if (typeof dark === 'undefined') { - dark = colorFunctions.rgba(0, 0, 0, 1.0); - } - // Figure out which is actually light and dark: - if (dark.luma() > light.luma()) { - var t = light; - light = dark; - dark = t; - } - if (typeof threshold === 'undefined') { - threshold = 0.43; - } - else { - threshold = number$1(threshold); - } - if (color.luma() < threshold) { - return light; - } - else { - return dark; - } - }, - // Changes made in 2.7.0 - Reverted in 3.0.0 - // contrast: function (color, color1, color2, threshold) { - // // Return which of `color1` and `color2` has the greatest contrast with `color` - // // according to the standard WCAG contrast ratio calculation. - // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef - // // The threshold param is no longer used, in line with SASS. - // // filter: contrast(3.2); - // // should be kept as is, so check for color - // if (!color.rgb) { - // return null; - // } - // if (typeof color1 === 'undefined') { - // color1 = colorFunctions.rgba(0, 0, 0, 1.0); - // } - // if (typeof color2 === 'undefined') { - // color2 = colorFunctions.rgba(255, 255, 255, 1.0); - // } - // var contrast1, contrast2; - // var luma = color.luma(); - // var luma1 = color1.luma(); - // var luma2 = color2.luma(); - // // Calculate contrast ratios for each color - // if (luma > luma1) { - // contrast1 = (luma + 0.05) / (luma1 + 0.05); - // } else { - // contrast1 = (luma1 + 0.05) / (luma + 0.05); - // } - // if (luma > luma2) { - // contrast2 = (luma + 0.05) / (luma2 + 0.05); - // } else { - // contrast2 = (luma2 + 0.05) / (luma + 0.05); - // } - // if (contrast1 > contrast2) { - // return color1; - // } else { - // return color2; - // } - // }, - argb: function (color) { - return new Anonymous(color.toARGB()); - }, - color: function (c) { - if ((c instanceof Quoted) && - (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) { - var val = c.value.slice(1); - return new Color(val, undefined, "#" + val); - } - if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) { - c.value = undefined; - return c; - } - throw { - type: 'Argument', - message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF' - }; - }, - tint: function (color, amount) { - return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount); - }, - shade: function (color, amount) { - return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount); - } - }; - var color = colorFunctions; - - // Color Blending - // ref: http://www.w3.org/TR/compositing-1 - function colorBlend(mode, color1, color2) { - var ab = color1.alpha; // result - var // backdrop - cb; - var as = color2.alpha; - var // source - cs; - var ar; - var cr; - var r = []; - ar = as + ab * (1 - as); - for (var i = 0; i < 3; i++) { - cb = color1.rgb[i] / 255; - cs = color2.rgb[i] / 255; - cr = mode(cb, cs); - if (ar) { - cr = (as * cs + ab * (cb - - as * (cb + cs - cr))) / ar; - } - r[i] = cr * 255; - } - return new Color(r, ar); - } - var colorBlendModeFunctions = { - multiply: function (cb, cs) { - return cb * cs; - }, - screen: function (cb, cs) { - return cb + cs - cb * cs; - }, - overlay: function (cb, cs) { - cb *= 2; - return (cb <= 1) ? - colorBlendModeFunctions.multiply(cb, cs) : - colorBlendModeFunctions.screen(cb - 1, cs); - }, - softlight: function (cb, cs) { - var d = 1; - var e = cb; - if (cs > 0.5) { - e = 1; - d = (cb > 0.25) ? Math.sqrt(cb) - : ((16 * cb - 12) * cb + 4) * cb; - } - return cb - (1 - 2 * cs) * e * (d - cb); - }, - hardlight: function (cb, cs) { - return colorBlendModeFunctions.overlay(cs, cb); - }, - difference: function (cb, cs) { - return Math.abs(cb - cs); - }, - exclusion: function (cb, cs) { - return cb + cs - 2 * cb * cs; - }, - // non-w3c functions: - average: function (cb, cs) { - return (cb + cs) / 2; - }, - negation: function (cb, cs) { - return 1 - Math.abs(cb + cs - 1); - } - }; - for (var f$1 in colorBlendModeFunctions) { - if (colorBlendModeFunctions.hasOwnProperty(f$1)) { - colorBlend[f$1] = colorBlend.bind(null, colorBlendModeFunctions[f$1]); - } - } - - var dataUri = (function (environment) { - var fallback = function (functionThis, node) { return new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); }; - return { 'data-uri': function (mimetypeNode, filePathNode) { - if (!filePathNode) { - filePathNode = mimetypeNode; - mimetypeNode = null; - } - var mimetype = mimetypeNode && mimetypeNode.value; - var filePath = filePathNode.value; - var currentFileInfo = this.currentFileInfo; - var currentDirectory = currentFileInfo.rewriteUrls ? - currentFileInfo.currentDirectory : currentFileInfo.entryPath; - var fragmentStart = filePath.indexOf('#'); - var fragment = ''; - if (fragmentStart !== -1) { - fragment = filePath.slice(fragmentStart); - filePath = filePath.slice(0, fragmentStart); - } - var context = clone(this.context); - context.rawBuffer = true; - var fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true); - if (!fileManager) { - return fallback(this, filePathNode); - } - var useBase64 = false; - // detect the mimetype if not given - if (!mimetypeNode) { - mimetype = environment.mimeLookup(filePath); - if (mimetype === 'image/svg+xml') { - useBase64 = false; - } - else { - // use base 64 unless it's an ASCII or UTF-8 format - var charset = environment.charsetLookup(mimetype); - useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0; - } - if (useBase64) { - mimetype += ';base64'; - } - } - else { - useBase64 = /;base64$/.test(mimetype); - } - var fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment); - if (!fileSync.contents) { - logger$1.warn("Skipped data-uri embedding of " + filePath + " because file not found"); - return fallback(this, filePathNode || mimetypeNode); - } - var buf = fileSync.contents; - if (useBase64 && !environment.encodeBase64) { - return fallback(this, filePathNode); - } - buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf); - var uri = "data:" + mimetype + "," + buf + fragment; - return new URL(new Quoted("\"" + uri + "\"", uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo); - } }; - }); - - var getItemsFromNode = function (node) { - // handle non-array values as an array of length 1 - // return 'undefined' if index is invalid - var items = Array.isArray(node.value) ? - node.value : Array(node); - return items; - }; - var list = { - _SELF: function (n) { - return n; - }, - '~': function () { - var expr = []; - for (var _i = 0; _i < arguments.length; _i++) { - expr[_i] = arguments[_i]; - } - if (expr.length === 1) { - return expr[0]; - } - return new Value(expr); - }, - extract: function (values, index) { - // (1-based index) - index = index.value - 1; - return getItemsFromNode(values)[index]; - }, - length: function (values) { - return new Dimension(getItemsFromNode(values).length); - }, - /** - * Creates a Less list of incremental values. - * Modeled after Lodash's range function, also exists natively in PHP - * - * @param {Dimension} [start=1] - * @param {Dimension} end - e.g. 10 or 10px - unit is added to output - * @param {Dimension} [step=1] - */ - range: function (start, end, step) { - var from; - var to; - var stepValue = 1; - var list = []; - if (end) { - to = end; - from = start.value; - if (step) { - stepValue = step.value; - } - } - else { - from = 1; - to = start; - } - for (var i = from; i <= to.value; i += stepValue) { - list.push(new Dimension(i, to.unit)); - } - return new Expression(list); - }, - each: function (list, rs) { - var _this = this; - var rules = []; - var newRules; - var iterator; - var tryEval = function (val) { - if (val instanceof Node) { - return val.eval(_this.context); - } - return val; - }; - if (list.value && !(list instanceof Quoted)) { - if (Array.isArray(list.value)) { - iterator = list.value.map(tryEval); - } - else { - iterator = [tryEval(list.value)]; - } - } - else if (list.ruleset) { - iterator = tryEval(list.ruleset).rules; - } - else if (list.rules) { - iterator = list.rules.map(tryEval); - } - else if (Array.isArray(list)) { - iterator = list.map(tryEval); - } - else { - iterator = [tryEval(list)]; - } - var valueName = '@value'; - var keyName = '@key'; - var indexName = '@index'; - if (rs.params) { - valueName = rs.params[0] && rs.params[0].name; - keyName = rs.params[1] && rs.params[1].name; - indexName = rs.params[2] && rs.params[2].name; - rs = rs.rules; - } - else { - rs = rs.ruleset; - } - for (var i = 0; i < iterator.length; i++) { - var key = void 0; - var value = void 0; - var item = iterator[i]; - if (item instanceof Declaration) { - key = typeof item.name === 'string' ? item.name : item.name[0].value; - value = item.value; - } - else { - key = new Dimension(i + 1); - value = item; - } - if (item instanceof Comment) { - continue; - } - newRules = rs.rules.slice(0); - if (valueName) { - newRules.push(new Declaration(valueName, value, false, false, this.index, this.currentFileInfo)); - } - if (indexName) { - newRules.push(new Declaration(indexName, new Dimension(i + 1), false, false, this.index, this.currentFileInfo)); - } - if (keyName) { - newRules.push(new Declaration(keyName, key, false, false, this.index, this.currentFileInfo)); - } - rules.push(new Ruleset([new (Selector)([new Element("", '&')])], newRules, rs.strictImports, rs.visibilityInfo())); - } - return new Ruleset([new (Selector)([new Element("", '&')])], rules, rs.strictImports, rs.visibilityInfo()).eval(this.context); - } - }; - - var MathHelper = function (fn, unit, n) { - if (!(n instanceof Dimension)) { - throw { type: 'Argument', message: 'argument must be a number' }; - } - if (unit == null) { - unit = n.unit; - } - else { - n = n.unify(); - } - return new Dimension(fn(parseFloat(n.value)), unit); - }; - - var mathFunctions = { - // name, unit - ceil: null, - floor: null, - sqrt: null, - abs: null, - tan: '', - sin: '', - cos: '', - atan: 'rad', - asin: 'rad', - acos: 'rad' - }; - for (var f in mathFunctions) { - if (mathFunctions.hasOwnProperty(f)) { - mathFunctions[f] = MathHelper.bind(null, Math[f], mathFunctions[f]); - } - } - mathFunctions.round = function (n, f) { - var fraction = typeof f === 'undefined' ? 0 : f.value; - return MathHelper(function (num) { return num.toFixed(fraction); }, null, n); - }; - - var minMax = function (isMin, args) { - args = Array.prototype.slice.call(args); - switch (args.length) { - case 0: throw { type: 'Argument', message: 'one or more arguments required' }; - } - var i; // key is the unit.toString() for unified Dimension values, - var j; - var current; - var currentUnified; - var referenceUnified; - var unit; - var unitStatic; - var unitClone; - var // elems only contains original argument values. - order = []; - var values = {}; - // value is the index into the order array. - for (i = 0; i < args.length; i++) { - current = args[i]; - if (!(current instanceof Dimension)) { - if (Array.isArray(args[i].value)) { - Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value)); - } - continue; - } - currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify(); - unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString(); - unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic; - unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone; - j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit]; - if (j === undefined) { - if (unitStatic !== undefined && unit !== unitStatic) { - throw { type: 'Argument', message: 'incompatible types' }; - } - values[unit] = order.length; - order.push(current); - continue; - } - referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify(); - if (isMin && currentUnified.value < referenceUnified.value || - !isMin && currentUnified.value > referenceUnified.value) { - order[j] = current; - } - } - if (order.length == 1) { - return order[0]; - } - args = order.map(function (a) { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', '); - return new Anonymous((isMin ? 'min' : 'max') + "(" + args + ")"); - }; - var number = { - min: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - try { - return minMax(true, args); - } - catch (e) { } - }, - max: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - try { - return minMax(false, args); - } - catch (e) { } - }, - convert: function (val, unit) { - return val.convertTo(unit.value); - }, - pi: function () { - return new Dimension(Math.PI); - }, - mod: function (a, b) { - return new Dimension(a.value % b.value, a.unit); - }, - pow: function (x, y) { - if (typeof x === 'number' && typeof y === 'number') { - x = new Dimension(x); - y = new Dimension(y); - } - else if (!(x instanceof Dimension) || !(y instanceof Dimension)) { - throw { type: 'Argument', message: 'arguments must be numbers' }; - } - return new Dimension(Math.pow(x.value, y.value), x.unit); - }, - percentage: function (n) { - var result = MathHelper(function (num) { return num * 100; }, '%', n); - return result; - } - }; - - var string = { - e: function (str) { - return new Quoted('"', str instanceof JavaScript ? str.evaluated : str.value, true); - }, - escape: function (str) { - return new Anonymous(encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B') - .replace(/\(/g, '%28').replace(/\)/g, '%29')); - }, - replace: function (string, pattern, replacement, flags) { - var result = string.value; - replacement = (replacement.type === 'Quoted') ? - replacement.value : replacement.toCSS(); - result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement); - return new Quoted(string.quote || '', result, string.escaped); - }, - '%': function (string /* arg, arg, ... */) { - var args = Array.prototype.slice.call(arguments, 1); - var result = string.value; - var _loop_1 = function (i) { - /* jshint loopfunc:true */ - result = result.replace(/%[sda]/i, function (token) { - var value = ((args[i].type === 'Quoted') && - token.match(/s/i)) ? args[i].value : args[i].toCSS(); - return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value; - }); - }; - for (var i = 0; i < args.length; i++) { - _loop_1(i); - } - result = result.replace(/%%/g, '%'); - return new Quoted(string.quote || '', result, string.escaped); - } - }; - - var svg = (function (environment) { - return { 'svg-gradient': function (direction) { - var stops; - var gradientDirectionSvg; - var gradientType = 'linear'; - var rectangleDimension = 'x="0" y="0" width="1" height="1"'; - var renderEnv = { compress: false }; - var returner; - var directionValue = direction.toCSS(renderEnv); - var i; - var color; - var position; - var positionValue; - var alpha; - function throwArgumentDescriptor() { - throw { type: 'Argument', - message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' + - ' end_color [end_position] or direction, color list' }; - } - if (arguments.length == 2) { - if (arguments[1].value.length < 2) { - throwArgumentDescriptor(); - } - stops = arguments[1].value; - } - else if (arguments.length < 3) { - throwArgumentDescriptor(); - } - else { - stops = Array.prototype.slice.call(arguments, 1); - } - switch (directionValue) { - case 'to bottom': - gradientDirectionSvg = 'x1="0%" y1="0%" x2="0%" y2="100%"'; - break; - case 'to right': - gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="0%"'; - break; - case 'to bottom right': - gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="100%"'; - break; - case 'to top right': - gradientDirectionSvg = 'x1="0%" y1="100%" x2="100%" y2="0%"'; - break; - case 'ellipse': - case 'ellipse at center': - gradientType = 'radial'; - gradientDirectionSvg = 'cx="50%" cy="50%" r="75%"'; - rectangleDimension = 'x="-50" y="-50" width="101" height="101"'; - break; - default: - throw { type: 'Argument', message: 'svg-gradient direction must be \'to bottom\', \'to right\',' + - ' \'to bottom right\', \'to top right\' or \'ellipse at center\'' }; - } - returner = "<" + gradientType + "Gradient id=\"g\" " + gradientDirectionSvg + ">"; - for (i = 0; i < stops.length; i += 1) { - if (stops[i] instanceof Expression) { - color = stops[i].value[0]; - position = stops[i].value[1]; - } - else { - color = stops[i]; - position = undefined; - } - if (!(color instanceof Color) || (!((i === 0 || i + 1 === stops.length) && position === undefined) && !(position instanceof Dimension))) { - throwArgumentDescriptor(); - } - positionValue = position ? position.toCSS(renderEnv) : i === 0 ? '0%' : '100%'; - alpha = color.alpha; - returner += ""; - } - returner += ""; - returner = encodeURIComponent(returner); - returner = "data:image/svg+xml," + returner; - return new URL(new Quoted("'" + returner + "'", returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo); - } }; - }); - - var isa = function (n, Type) { return (n instanceof Type) ? Keyword.True : Keyword.False; }; - var isunit = function (n, unit) { - if (unit === undefined) { - throw { type: 'Argument', message: 'missing the required second argument to isunit.' }; - } - unit = typeof unit.value === 'string' ? unit.value : unit; - if (typeof unit !== 'string') { - throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' }; - } - return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False; - }; - var types = { - isruleset: function (n) { - return isa(n, DetachedRuleset); - }, - iscolor: function (n) { - return isa(n, Color); - }, - isnumber: function (n) { - return isa(n, Dimension); - }, - isstring: function (n) { - return isa(n, Quoted); - }, - iskeyword: function (n) { - return isa(n, Keyword); - }, - isurl: function (n) { - return isa(n, URL); - }, - ispixel: function (n) { - return isunit(n, 'px'); - }, - ispercentage: function (n) { - return isunit(n, '%'); - }, - isem: function (n) { - return isunit(n, 'em'); - }, - isunit: isunit, - unit: function (val, unit) { - if (!(val instanceof Dimension)) { - throw { type: 'Argument', - message: "the first argument to unit must be a number" + (val instanceof Operation ? '. Have you forgotten parenthesis?' : '') }; - } - if (unit) { - if (unit instanceof Keyword) { - unit = unit.value; - } - else { - unit = unit.toCSS(); - } - } - else { - unit = ''; - } - return new Dimension(val.value, unit); - }, - 'get-unit': function (n) { - return new Anonymous(n.unit); - } - }; - - var functions = (function (environment) { - var functions = { functionRegistry: functionRegistry, functionCaller: functionCaller }; - // register functions - functionRegistry.addMultiple(boolean$1); - functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc)); - functionRegistry.addMultiple(color); - functionRegistry.addMultiple(colorBlend); - functionRegistry.addMultiple(dataUri(environment)); - functionRegistry.addMultiple(list); - functionRegistry.addMultiple(mathFunctions); - functionRegistry.addMultiple(number); - functionRegistry.addMultiple(string); - functionRegistry.addMultiple(svg()); - functionRegistry.addMultiple(types); - return functions; - }); - - function transformTree (root, options) { - options = options || {}; - var evaldRoot; - var variables = options.variables; - var evalEnv = new contexts.Eval(options); - // - // Allows setting variables with a hash, so: - // - // `{ color: new tree.Color('#f01') }` will become: - // - // new tree.Declaration('@color', - // new tree.Value([ - // new tree.Expression([ - // new tree.Color('#f01') - // ]) - // ]) - // ) - // - if (typeof variables === 'object' && !Array.isArray(variables)) { - variables = Object.keys(variables).map(function (k) { - var value = variables[k]; - if (!(value instanceof tree.Value)) { - if (!(value instanceof tree.Expression)) { - value = new tree.Expression([value]); - } - value = new tree.Value([value]); - } - return new tree.Declaration("@" + k, value, false, null, 0); - }); - evalEnv.frames = [new tree.Ruleset(null, variables)]; - } - var visitors$1 = [ - new visitors.JoinSelectorVisitor(), - new visitors.MarkVisibleSelectorsVisitor(true), - new visitors.ExtendVisitor(), - new visitors.ToCSSVisitor({ compress: Boolean(options.compress) }) - ]; - var preEvalVisitors = []; - var v; - var visitorIterator; - /** - * first() / get() allows visitors to be added while visiting - * - * @todo Add scoping for visitors just like functions for @plugin; right now they're global - */ - if (options.pluginManager) { - visitorIterator = options.pluginManager.visitor(); - for (var i = 0; i < 2; i++) { - visitorIterator.first(); - while ((v = visitorIterator.get())) { - if (v.isPreEvalVisitor) { - if (i === 0 || preEvalVisitors.indexOf(v) === -1) { - preEvalVisitors.push(v); - v.run(root); - } - } - else { - if (i === 0 || visitors$1.indexOf(v) === -1) { - if (v.isPreVisitor) { - visitors$1.unshift(v); - } - else { - visitors$1.push(v); - } - } - } - } - } - } - evaldRoot = root.eval(evalEnv); - for (var i = 0; i < visitors$1.length; i++) { - visitors$1[i].run(evaldRoot); - } - // Run any remaining visitors added after eval pass - if (options.pluginManager) { - visitorIterator.first(); - while ((v = visitorIterator.get())) { - if (visitors$1.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) { - v.run(evaldRoot); - } - } - } - return evaldRoot; - } - - /** - * Plugin Manager - */ - var PluginManager = /** @class */ (function () { - function PluginManager(less) { - this.less = less; - this.visitors = []; - this.preProcessors = []; - this.postProcessors = []; - this.installedPlugins = []; - this.fileManagers = []; - this.iterator = -1; - this.pluginCache = {}; - this.Loader = new less.PluginLoader(less); - } - /** - * Adds all the plugins in the array - * @param {Array} plugins - */ - PluginManager.prototype.addPlugins = function (plugins) { - if (plugins) { - for (var i = 0; i < plugins.length; i++) { - this.addPlugin(plugins[i]); - } - } - }; - /** - * - * @param plugin - * @param {String} filename - */ - PluginManager.prototype.addPlugin = function (plugin, filename, functionRegistry) { - this.installedPlugins.push(plugin); - if (filename) { - this.pluginCache[filename] = plugin; - } - if (plugin.install) { - plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry); - } - }; - /** - * - * @param filename - */ - PluginManager.prototype.get = function (filename) { - return this.pluginCache[filename]; - }; - /** - * Adds a visitor. The visitor object has options on itself to determine - * when it should run. - * @param visitor - */ - PluginManager.prototype.addVisitor = function (visitor) { - this.visitors.push(visitor); - }; - /** - * Adds a pre processor object - * @param {object} preProcessor - * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import - */ - PluginManager.prototype.addPreProcessor = function (preProcessor, priority) { - var indexToInsertAt; - for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) { - if (this.preProcessors[indexToInsertAt].priority >= priority) { - break; - } - } - this.preProcessors.splice(indexToInsertAt, 0, { preProcessor: preProcessor, priority: priority }); - }; - /** - * Adds a post processor object - * @param {object} postProcessor - * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression - */ - PluginManager.prototype.addPostProcessor = function (postProcessor, priority) { - var indexToInsertAt; - for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) { - if (this.postProcessors[indexToInsertAt].priority >= priority) { - break; - } - } - this.postProcessors.splice(indexToInsertAt, 0, { postProcessor: postProcessor, priority: priority }); - }; - /** - * - * @param manager - */ - PluginManager.prototype.addFileManager = function (manager) { - this.fileManagers.push(manager); - }; - /** - * - * @returns {Array} - * @private - */ - PluginManager.prototype.getPreProcessors = function () { - var preProcessors = []; - for (var i = 0; i < this.preProcessors.length; i++) { - preProcessors.push(this.preProcessors[i].preProcessor); - } - return preProcessors; - }; - /** - * - * @returns {Array} - * @private - */ - PluginManager.prototype.getPostProcessors = function () { - var postProcessors = []; - for (var i = 0; i < this.postProcessors.length; i++) { - postProcessors.push(this.postProcessors[i].postProcessor); - } - return postProcessors; - }; - /** - * - * @returns {Array} - * @private - */ - PluginManager.prototype.getVisitors = function () { - return this.visitors; - }; - PluginManager.prototype.visitor = function () { - var self = this; - return { - first: function () { - self.iterator = -1; - return self.visitors[self.iterator]; - }, - get: function () { - self.iterator += 1; - return self.visitors[self.iterator]; - } - }; - }; - /** - * - * @returns {Array} - * @private - */ - PluginManager.prototype.getFileManagers = function () { - return this.fileManagers; - }; - return PluginManager; - }()); - var pm; - var PluginManagerFactory = function (less, newFactory) { - if (newFactory || !pm) { - pm = new PluginManager(less); - } - return pm; - }; - - function SourceMapOutput (environment) { - var SourceMapOutput = /** @class */ (function () { - function SourceMapOutput(options) { - this._css = []; - this._rootNode = options.rootNode; - this._contentsMap = options.contentsMap; - this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap; - if (options.sourceMapFilename) { - this._sourceMapFilename = options.sourceMapFilename.replace(/\\/g, '/'); - } - this._outputFilename = options.outputFilename; - this.sourceMapURL = options.sourceMapURL; - if (options.sourceMapBasepath) { - this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\/g, '/'); - } - if (options.sourceMapRootpath) { - this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\/g, '/'); - if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') { - this._sourceMapRootpath += '/'; - } - } - else { - this._sourceMapRootpath = ''; - } - this._outputSourceFiles = options.outputSourceFiles; - this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator(); - this._lineNumber = 0; - this._column = 0; - } - SourceMapOutput.prototype.removeBasepath = function (path) { - if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) { - path = path.substring(this._sourceMapBasepath.length); - if (path.charAt(0) === '\\' || path.charAt(0) === '/') { - path = path.substring(1); - } - } - return path; - }; - SourceMapOutput.prototype.normalizeFilename = function (filename) { - filename = filename.replace(/\\/g, '/'); - filename = this.removeBasepath(filename); - return (this._sourceMapRootpath || '') + filename; - }; - SourceMapOutput.prototype.add = function (chunk, fileInfo, index, mapLines) { - // ignore adding empty strings - if (!chunk) { - return; - } - var lines, sourceLines, columns, sourceColumns, i; - if (fileInfo && fileInfo.filename) { - var inputSource = this._contentsMap[fileInfo.filename]; - // remove vars/banner added to the top of the file - if (this._contentsIgnoredCharsMap[fileInfo.filename]) { - // adjust the index - index -= this._contentsIgnoredCharsMap[fileInfo.filename]; - if (index < 0) { - index = 0; - } - // adjust the source - inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]); - } - /** - * ignore empty content, or failsafe - * if contents map is incorrect - */ - if (inputSource === undefined) { - this._css.push(chunk); - return; - } - inputSource = inputSource.substring(0, index); - sourceLines = inputSource.split('\n'); - sourceColumns = sourceLines[sourceLines.length - 1]; - } - lines = chunk.split('\n'); - columns = lines[lines.length - 1]; - if (fileInfo && fileInfo.filename) { - if (!mapLines) { - this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column }, - original: { line: sourceLines.length, column: sourceColumns.length }, - source: this.normalizeFilename(fileInfo.filename) }); - } - else { - for (i = 0; i < lines.length; i++) { - this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0 }, - original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0 }, - source: this.normalizeFilename(fileInfo.filename) }); - } - } - } - if (lines.length === 1) { - this._column += columns.length; - } - else { - this._lineNumber += lines.length - 1; - this._column = columns.length; - } - this._css.push(chunk); - }; - SourceMapOutput.prototype.isEmpty = function () { - return this._css.length === 0; - }; - SourceMapOutput.prototype.toCSS = function (context) { - this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null }); - if (this._outputSourceFiles) { - for (var filename in this._contentsMap) { - if (this._contentsMap.hasOwnProperty(filename)) { - var source = this._contentsMap[filename]; - if (this._contentsIgnoredCharsMap[filename]) { - source = source.slice(this._contentsIgnoredCharsMap[filename]); - } - this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source); - } - } - } - this._rootNode.genCSS(context, this); - if (this._css.length > 0) { - var sourceMapURL = void 0; - var sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON()); - if (this.sourceMapURL) { - sourceMapURL = this.sourceMapURL; - } - else if (this._sourceMapFilename) { - sourceMapURL = this._sourceMapFilename; - } - this.sourceMapURL = sourceMapURL; - this.sourceMap = sourceMapContent; - } - return this._css.join(''); - }; - return SourceMapOutput; - }()); - return SourceMapOutput; - } - - function SourceMapBuilder (SourceMapOutput, environment) { - var SourceMapBuilder = /** @class */ (function () { - function SourceMapBuilder(options) { - this.options = options; - } - SourceMapBuilder.prototype.toCSS = function (rootNode, options, imports) { - var sourceMapOutput = new SourceMapOutput({ - contentsIgnoredCharsMap: imports.contentsIgnoredChars, - rootNode: rootNode, - contentsMap: imports.contents, - sourceMapFilename: this.options.sourceMapFilename, - sourceMapURL: this.options.sourceMapURL, - outputFilename: this.options.sourceMapOutputFilename, - sourceMapBasepath: this.options.sourceMapBasepath, - sourceMapRootpath: this.options.sourceMapRootpath, - outputSourceFiles: this.options.outputSourceFiles, - sourceMapGenerator: this.options.sourceMapGenerator, - sourceMapFileInline: this.options.sourceMapFileInline, - disableSourcemapAnnotation: this.options.disableSourcemapAnnotation - }); - var css = sourceMapOutput.toCSS(options); - this.sourceMap = sourceMapOutput.sourceMap; - this.sourceMapURL = sourceMapOutput.sourceMapURL; - if (this.options.sourceMapInputFilename) { - this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename); - } - if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) { - this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL); - } - return css + this.getCSSAppendage(); - }; - SourceMapBuilder.prototype.getCSSAppendage = function () { - var sourceMapURL = this.sourceMapURL; - if (this.options.sourceMapFileInline) { - if (this.sourceMap === undefined) { - return ''; - } - sourceMapURL = "data:application/json;base64," + environment.encodeBase64(this.sourceMap); - } - if (this.options.disableSourcemapAnnotation) { - return ''; - } - if (sourceMapURL) { - return "/*# sourceMappingURL=" + sourceMapURL + " */"; - } - return ''; - }; - SourceMapBuilder.prototype.getExternalSourceMap = function () { - return this.sourceMap; - }; - SourceMapBuilder.prototype.setExternalSourceMap = function (sourceMap) { - this.sourceMap = sourceMap; - }; - SourceMapBuilder.prototype.isInline = function () { - return this.options.sourceMapFileInline; - }; - SourceMapBuilder.prototype.getSourceMapURL = function () { - return this.sourceMapURL; - }; - SourceMapBuilder.prototype.getOutputFilename = function () { - return this.options.sourceMapOutputFilename; - }; - SourceMapBuilder.prototype.getInputFilename = function () { - return this.sourceMapInputFilename; - }; - return SourceMapBuilder; - }()); - return SourceMapBuilder; - } - - function ParseTree (SourceMapBuilder) { - var ParseTree = /** @class */ (function () { - function ParseTree(root, imports) { - this.root = root; - this.imports = imports; - } - ParseTree.prototype.toCSS = function (options) { - var evaldRoot; - var result = {}; - var sourceMapBuilder; - try { - evaldRoot = transformTree(this.root, options); - } - catch (e) { - throw new LessError(e, this.imports); - } - try { - var compress = Boolean(options.compress); - if (compress) { - logger$1.warn('The compress option has been deprecated. ' + - 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.'); - } - var toCSSOptions = { - compress: compress, - dumpLineNumbers: options.dumpLineNumbers, - strictUnits: Boolean(options.strictUnits), - numPrecision: 8 - }; - if (options.sourceMap) { - sourceMapBuilder = new SourceMapBuilder(options.sourceMap); - result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports); - } - else { - result.css = evaldRoot.toCSS(toCSSOptions); - } - } - catch (e) { - throw new LessError(e, this.imports); - } - if (options.pluginManager) { - var postProcessors = options.pluginManager.getPostProcessors(); - for (var i = 0; i < postProcessors.length; i++) { - result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options: options, imports: this.imports }); - } - } - if (options.sourceMap) { - result.map = sourceMapBuilder.getExternalSourceMap(); - } - result.imports = []; - for (var file in this.imports.files) { - if (this.imports.files.hasOwnProperty(file) && file !== this.imports.rootFilename) { - result.imports.push(file); - } - } - return result; - }; - return ParseTree; - }()); - return ParseTree; - } - - function ImportManager (environment) { - // FileInfo = { - // 'rewriteUrls' - option - whether to adjust URL's to be relative - // 'filename' - full resolved filename of current file - // 'rootpath' - path to append to normal URLs for this node - // 'currentDirectory' - path to the current file, absolute - // 'rootFilename' - filename of the base file - // 'entryPath' - absolute path to the entry file - // 'reference' - whether the file should not be output and only output parts that are referenced - var ImportManager = /** @class */ (function () { - function ImportManager(less, context, rootFileInfo) { - this.less = less; - this.rootFilename = rootFileInfo.filename; - this.paths = context.paths || []; // Search paths, when importing - this.contents = {}; // map - filename to contents of all the files - this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore - this.mime = context.mime; - this.error = null; - this.context = context; - // Deprecated? Unused outside of here, could be useful. - this.queue = []; // Files which haven't been imported yet - this.files = {}; // Holds the imported parse trees. - } - /** - * Add an import to be imported - * @param path - the raw path - * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension) - * @param currentFileInfo - the current file info (used for instance to work out relative paths) - * @param importOptions - import options - * @param callback - callback for when it is imported - */ - ImportManager.prototype.push = function (path, tryAppendExtension, currentFileInfo, importOptions, callback) { - var importManager = this, pluginLoader = this.context.pluginManager.Loader; - this.queue.push(path); - var fileParsedFunc = function (e, root, fullPath) { - importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue - var importedEqualsRoot = fullPath === importManager.rootFilename; - if (importOptions.optional && e) { - callback(null, { rules: [] }, false, null); - logger$1.info("The file " + fullPath + " was skipped because it was not found and the import was marked optional."); - } - else { - // Inline imports aren't cached here. - // If we start to cache them, please make sure they won't conflict with non-inline imports of the - // same name as they used to do before this comment and the condition below have been added. - if (!importManager.files[fullPath] && !importOptions.inline) { - importManager.files[fullPath] = { root: root, options: importOptions }; - } - if (e && !importManager.error) { - importManager.error = e; - } - callback(e, root, importedEqualsRoot, fullPath); - } - }; - var newFileInfo = { - rewriteUrls: this.context.rewriteUrls, - entryPath: currentFileInfo.entryPath, - rootpath: currentFileInfo.rootpath, - rootFilename: currentFileInfo.rootFilename - }; - var fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment); - if (!fileManager) { - fileParsedFunc({ message: "Could not find a file-manager for " + path }); - return; - } - var loadFileCallback = function (loadedFile) { - var plugin; - var resolvedFilename = loadedFile.filename; - var contents = loadedFile.contents.replace(/^\uFEFF/, ''); - // Pass on an updated rootpath if path of imported file is relative and file - // is in a (sub|sup) directory - // - // Examples: - // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/', - // then rootpath should become 'less/module/nav/' - // - If path of imported file is '../mixins.less' and rootpath is 'less/', - // then rootpath should become 'less/../' - newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename); - if (newFileInfo.rewriteUrls) { - newFileInfo.rootpath = fileManager.join((importManager.context.rootpath || ''), fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath)); - if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) { - newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath); - } - } - newFileInfo.filename = resolvedFilename; - var newEnv = new contexts.Parse(importManager.context); - newEnv.processImports = false; - importManager.contents[resolvedFilename] = contents; - if (currentFileInfo.reference || importOptions.reference) { - newFileInfo.reference = true; - } - if (importOptions.isPlugin) { - plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo); - if (plugin instanceof LessError) { - fileParsedFunc(plugin, null, resolvedFilename); - } - else { - fileParsedFunc(null, plugin, resolvedFilename); - } - } - else if (importOptions.inline) { - fileParsedFunc(null, contents, resolvedFilename); - } - else { - // import (multiple) parse trees apparently get altered and can't be cached. - // TODO: investigate why this is - if (importManager.files[resolvedFilename] - && !importManager.files[resolvedFilename].options.multiple - && !importOptions.multiple) { - fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename); - } - else { - new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) { - fileParsedFunc(e, root, resolvedFilename); - }); - } - } - }; - var loadedFile; - var promise; - var context = clone(this.context); - if (tryAppendExtension) { - context.ext = importOptions.isPlugin ? '.js' : '.less'; - } - if (importOptions.isPlugin) { - context.mime = 'application/javascript'; - if (context.syncImport) { - loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager); - } - else { - promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager); - } - } - else { - if (context.syncImport) { - loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment); - } - else { - promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment, function (err, loadedFile) { - if (err) { - fileParsedFunc(err); - } - else { - loadFileCallback(loadedFile); - } - }); - } - } - if (loadedFile) { - if (!loadedFile.filename) { - fileParsedFunc(loadedFile); - } - else { - loadFileCallback(loadedFile); - } - } - else if (promise) { - promise.then(loadFileCallback, fileParsedFunc); - } - }; - return ImportManager; - }()); - return ImportManager; - } - - function Parse (environment, ParseTree, ImportManager) { - var parse = function (input, options, callback) { - if (typeof options === 'function') { - callback = options; - options = copyOptions(this.options, {}); - } - else { - options = copyOptions(this.options, options || {}); - } - if (!callback) { - var self_1 = this; - return new Promise(function (resolve, reject) { - parse.call(self_1, input, options, function (err, output) { - if (err) { - reject(err); - } - else { - resolve(output); - } - }); - }); - } - else { - var context_1; - var rootFileInfo = void 0; - var pluginManager_1 = new PluginManagerFactory(this, !options.reUsePluginManager); - options.pluginManager = pluginManager_1; - context_1 = new contexts.Parse(options); - if (options.rootFileInfo) { - rootFileInfo = options.rootFileInfo; - } - else { - var filename = options.filename || 'input'; - var entryPath = filename.replace(/[^\/\\]*$/, ''); - rootFileInfo = { - filename: filename, - rewriteUrls: context_1.rewriteUrls, - rootpath: context_1.rootpath || '', - currentDirectory: entryPath, - entryPath: entryPath, - rootFilename: filename - }; - // add in a missing trailing slash - if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') { - rootFileInfo.rootpath += '/'; - } - } - var imports_1 = new ImportManager(this, context_1, rootFileInfo); - this.importManager = imports_1; - // TODO: allow the plugins to be just a list of paths or names - // Do an async plugin queue like lessc - if (options.plugins) { - options.plugins.forEach(function (plugin) { - var evalResult, contents; - if (plugin.fileContent) { - contents = plugin.fileContent.replace(/^\uFEFF/, ''); - evalResult = pluginManager_1.Loader.evalPlugin(contents, context_1, imports_1, plugin.options, plugin.filename); - if (evalResult instanceof LessError) { - return callback(evalResult); - } - } - else { - pluginManager_1.addPlugin(plugin); - } - }); - } - new Parser(context_1, imports_1, rootFileInfo) - .parse(input, function (e, root) { - if (e) { - return callback(e); - } - callback(null, root, imports_1, options); - }, options); - } - }; - return parse; - } - - function Render (environment, ParseTree, ImportManager) { - var render = function (input, options, callback) { - if (typeof options === 'function') { - callback = options; - options = copyOptions(this.options, {}); - } - else { - options = copyOptions(this.options, options || {}); - } - if (!callback) { - var self_1 = this; - return new Promise(function (resolve, reject) { - render.call(self_1, input, options, function (err, output) { - if (err) { - reject(err); - } - else { - resolve(output); - } - }); - }); - } - else { - this.parse(input, options, function (err, root, imports, options) { - if (err) { - return callback(err); - } - var result; - try { - var parseTree = new ParseTree(root, imports); - result = parseTree.toCSS(options); - } - catch (err) { - return callback(err); - } - callback(null, result); - }); - } - }; - return render; - } - - var version = "4.1.2"; - - function parseNodeVersion(version) { - var match = version.match(/^v(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len - if (!match) { - throw new Error('Unable to parse: ' + version); - } - - var res = { - major: parseInt(match[1], 10), - minor: parseInt(match[2], 10), - patch: parseInt(match[3], 10), - pre: match[4] || '', - build: match[5] || '', - }; - - return res; - } - - var parseNodeVersion_1 = parseNodeVersion; - - function lessRoot (environment, fileManagers) { - var sourceMapOutput, sourceMapBuilder, parseTree, importManager; - environment = new Environment(environment, fileManagers); - sourceMapOutput = SourceMapOutput(environment); - sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment); - parseTree = ParseTree(sourceMapBuilder); - importManager = ImportManager(environment); - var render = Render(environment, parseTree); - var parse = Parse(environment, parseTree, importManager); - var v = parseNodeVersion_1("v" + version); - var initial = { - version: [v.major, v.minor, v.patch], - data: data, - tree: tree, - Environment: Environment, - AbstractFileManager: AbstractFileManager, - AbstractPluginLoader: AbstractPluginLoader, - environment: environment, - visitors: visitors, - Parser: Parser, - functions: functions(environment), - contexts: contexts, - SourceMapOutput: sourceMapOutput, - SourceMapBuilder: sourceMapBuilder, - ParseTree: parseTree, - ImportManager: importManager, - render: render, - parse: parse, - LessError: LessError, - transformTree: transformTree, - utils: utils, - PluginManager: PluginManagerFactory, - logger: logger$1 - }; - // Create a public API - var ctor = function (t) { - return function () { - var obj = Object.create(t.prototype); - t.apply(obj, Array.prototype.slice.call(arguments, 0)); - return obj; - }; - }; - var t; - var api = Object.create(initial); - for (var n in initial.tree) { - /* eslint guard-for-in: 0 */ - t = initial.tree[n]; - if (typeof t === 'function') { - api[n.toLowerCase()] = ctor(t); - } - else { - api[n] = Object.create(null); - for (var o in t) { - /* eslint guard-for-in: 0 */ - api[n][o.toLowerCase()] = ctor(t[o]); - } - } - } - /** - * Some of the functions assume a `this` context of the API object, - * which causes it to fail when wrapped for ES6 imports. - * - * An assumed `this` should be removed in the future. - */ - initial.parse = initial.parse.bind(api); - initial.render = initial.render.bind(api); - return api; - } - - /* global window, XMLHttpRequest */ - var options$1; - var logger; - var fileCache = {}; - // TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load - var FileManager = function () { }; - FileManager.prototype = Object.assign(new AbstractFileManager(), { - alwaysMakePathsAbsolute: function () { - return true; - }, - join: function (basePath, laterPath) { - if (!basePath) { - return laterPath; - } - return this.extractUrlParts(laterPath, basePath).path; - }, - doXHR: function (url, type, callback, errback) { - var xhr = new XMLHttpRequest(); - var async = options$1.isFileProtocol ? options$1.fileAsync : true; - if (typeof xhr.overrideMimeType === 'function') { - xhr.overrideMimeType('text/css'); - } - logger.debug("XHR: Getting '" + url + "'"); - xhr.open('GET', url, async); - xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5'); - xhr.send(null); - function handleResponse(xhr, callback, errback) { - if (xhr.status >= 200 && xhr.status < 300) { - callback(xhr.responseText, xhr.getResponseHeader('Last-Modified')); - } - else if (typeof errback === 'function') { - errback(xhr.status, url); - } - } - if (options$1.isFileProtocol && !options$1.fileAsync) { - if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) { - callback(xhr.responseText); - } - else { - errback(xhr.status, url); - } - } - else if (async) { - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - handleResponse(xhr, callback, errback); - } - }; - } - else { - handleResponse(xhr, callback, errback); - } - }, - supports: function () { - return true; - }, - clearFileCache: function () { - fileCache = {}; - }, - loadFile: function (filename, currentDirectory, options, environment) { - // TODO: Add prefix support like less-node? - // What about multiple paths? - if (currentDirectory && !this.isPathAbsolute(filename)) { - filename = currentDirectory + filename; - } - filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename; - options = options || {}; - // sheet may be set to the stylesheet for the initial load or a collection of properties including - // some context variables for imports - var hrefParts = this.extractUrlParts(filename, window.location.href); - var href = hrefParts.url; - var self = this; - return new Promise(function (resolve, reject) { - if (options.useFileCache && fileCache[href]) { - try { - var lessText = fileCache[href]; - return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() } }); - } - catch (e) { - return reject({ filename: href, message: "Error loading file " + href + " error was " + e.message }); - } - } - self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) { - // per file cache - fileCache[href] = data; - // Use remote copy (re-parse) - resolve({ contents: data, filename: href, webInfo: { lastModified: lastModified } }); - }, function doXHRError(status, url) { - reject({ type: 'File', message: "'" + url + "' wasn't found (" + status + ")", href: href }); - }); - }); - } - }); - var FM = (function (opts, log) { - options$1 = opts; - logger = log; - return FileManager; - }); - - // TODO: Add tests for browser @plugin - /** - * Browser Plugin Loader - */ - var PluginLoader = function (less) { - this.less = less; - // Should we shim this.require for browser? Probably not? - }; - PluginLoader.prototype = Object.assign(new AbstractPluginLoader(), { - loadPlugin: function (filename, basePath, context, environment, fileManager) { - return new Promise(function (fulfill, reject) { - fileManager.loadFile(filename, basePath, context, environment) - .then(fulfill).catch(reject); - }); - } - }); - - var LogListener = (function (less, options) { - var logLevel_debug = 4; - var logLevel_info = 3; - var logLevel_warn = 2; - var logLevel_error = 1; - // The amount of logging in the javascript console. - // 3 - Debug, information and errors - // 2 - Information and errors - // 1 - Errors - // 0 - None - // Defaults to 2 - options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error); - if (!options.loggers) { - options.loggers = [{ - debug: function (msg) { - if (options.logLevel >= logLevel_debug) { - console.log(msg); - } - }, - info: function (msg) { - if (options.logLevel >= logLevel_info) { - console.log(msg); - } - }, - warn: function (msg) { - if (options.logLevel >= logLevel_warn) { - console.warn(msg); - } - }, - error: function (msg) { - if (options.logLevel >= logLevel_error) { - console.error(msg); - } - } - }]; - } - for (var i = 0; i < options.loggers.length; i++) { - less.logger.addListener(options.loggers[i]); - } - }); - - var ErrorReporting = (function (window, less, options) { - function errorHTML(e, rootHref) { - var id = "less-error-message:" + extractId(rootHref || ''); - var template = '
  • {content}
  • '; - var elem = window.document.createElement('div'); - var timer; - var content; - var errors = []; - var filename = e.filename || rootHref; - var filenameNoPath = filename.match(/([^\/]+(\?.*)?)$/)[1]; - elem.id = id; - elem.className = 'less-error-message'; - content = "

    " + (e.type || 'Syntax') + "Error: " + (e.message || 'There is an error in your .less file') + - ("

    in " + filenameNoPath + " "); - var errorline = function (e, i, classname) { - if (e.extract[i] !== undefined) { - errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1)) - .replace(/\{class\}/, classname) - .replace(/\{content\}/, e.extract[i])); - } - }; - if (e.line) { - errorline(e, 0, ''); - errorline(e, 1, 'line'); - errorline(e, 2, ''); - content += "on line " + e.line + ", column " + (e.column + 1) + ":

      " + errors.join('') + "
    "; - } - if (e.stack && (e.extract || options.logLevel >= 4)) { - content += "
    Stack Trace
    " + e.stack.split('\n').slice(1).join('
    '); - } - elem.innerHTML = content; - // CSS for error messages - browser.createCSS(window.document, [ - '.less-error-message ul, .less-error-message li {', - 'list-style-type: none;', - 'margin-right: 15px;', - 'padding: 4px 0;', - 'margin: 0;', - '}', - '.less-error-message label {', - 'font-size: 12px;', - 'margin-right: 15px;', - 'padding: 4px 0;', - 'color: #cc7777;', - '}', - '.less-error-message pre {', - 'color: #dd6666;', - 'padding: 4px 0;', - 'margin: 0;', - 'display: inline-block;', - '}', - '.less-error-message pre.line {', - 'color: #ff0000;', - '}', - '.less-error-message h3 {', - 'font-size: 20px;', - 'font-weight: bold;', - 'padding: 15px 0 5px 0;', - 'margin: 0;', - '}', - '.less-error-message a {', - 'color: #10a', - '}', - '.less-error-message .error {', - 'color: red;', - 'font-weight: bold;', - 'padding-bottom: 2px;', - 'border-bottom: 1px dashed red;', - '}' - ].join('\n'), { title: 'error-message' }); - elem.style.cssText = [ - 'font-family: Arial, sans-serif', - 'border: 1px solid #e00', - 'background-color: #eee', - 'border-radius: 5px', - '-webkit-border-radius: 5px', - '-moz-border-radius: 5px', - 'color: #e00', - 'padding: 15px', - 'margin-bottom: 15px' - ].join(';'); - if (options.env === 'development') { - timer = setInterval(function () { - var document = window.document; - var body = document.body; - if (body) { - if (document.getElementById(id)) { - body.replaceChild(elem, document.getElementById(id)); - } - else { - body.insertBefore(elem, body.firstChild); - } - clearInterval(timer); - } - }, 10); - } - } - function removeErrorHTML(path) { - var node = window.document.getElementById("less-error-message:" + extractId(path)); - if (node) { - node.parentNode.removeChild(node); - } - } - function removeError(path) { - if (!options.errorReporting || options.errorReporting === 'html') { - removeErrorHTML(path); - } - else if (options.errorReporting === 'console') ; - else if (typeof options.errorReporting === 'function') { - options.errorReporting('remove', path); - } - } - function errorConsole(e, rootHref) { - var template = '{line} {content}'; - var filename = e.filename || rootHref; - var errors = []; - var content = (e.type || 'Syntax') + "Error: " + (e.message || 'There is an error in your .less file') + " in " + filename; - var errorline = function (e, i, classname) { - if (e.extract[i] !== undefined) { - errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1)) - .replace(/\{class\}/, classname) - .replace(/\{content\}/, e.extract[i])); - } - }; - if (e.line) { - errorline(e, 0, ''); - errorline(e, 1, 'line'); - errorline(e, 2, ''); - content += " on line " + e.line + ", column " + (e.column + 1) + ":\n" + errors.join('\n'); - } - if (e.stack && (e.extract || options.logLevel >= 4)) { - content += "\nStack Trace\n" + e.stack; - } - less.logger.error(content); - } - function error(e, rootHref) { - if (!options.errorReporting || options.errorReporting === 'html') { - errorHTML(e, rootHref); - } - else if (options.errorReporting === 'console') { - errorConsole(e, rootHref); - } - else if (typeof options.errorReporting === 'function') { - options.errorReporting('add', e, rootHref); - } - } - return { - add: error, - remove: removeError - }; - }); - - // Cache system is a bit outdated and could do with work - var Cache = (function (window, options, logger) { - var cache = null; - if (options.env !== 'development') { - try { - cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage; - } - catch (_) { } - } - return { - setCSS: function (path, lastModified, modifyVars, styles) { - if (cache) { - logger.info("saving " + path + " to cache."); - try { - cache.setItem(path, styles); - cache.setItem(path + ":timestamp", lastModified); - if (modifyVars) { - cache.setItem(path + ":vars", JSON.stringify(modifyVars)); - } - } - catch (e) { - // TODO - could do with adding more robust error handling - logger.error("failed to save \"" + path + "\" to local storage for caching."); - } - } - }, - getCSS: function (path, webInfo, modifyVars) { - var css = cache && cache.getItem(path); - var timestamp = cache && cache.getItem(path + ":timestamp"); - var vars = cache && cache.getItem(path + ":vars"); - modifyVars = modifyVars || {}; - vars = vars || "{}"; // if not set, treat as the JSON representation of an empty object - if (timestamp && webInfo.lastModified && - (new Date(webInfo.lastModified).valueOf() === - new Date(timestamp).valueOf()) && - JSON.stringify(modifyVars) === vars) { - // Use local copy - return css; - } - } - }; - }); - - var ImageSize = (function () { - function imageSize() { - throw { - type: 'Runtime', - message: 'Image size functions are not supported in browser version of less' - }; - } - var imageFunctions = { - 'image-size': function (filePathNode) { - imageSize(); - return -1; - }, - 'image-width': function (filePathNode) { - imageSize(); - return -1; - }, - 'image-height': function (filePathNode) { - imageSize(); - return -1; - } - }; - functionRegistry.addMultiple(imageFunctions); - }); - - // - var root = (function (window, options) { - var document = window.document; - var less = lessRoot(); - less.options = options; - var environment = less.environment; - var FileManager = FM(options, less.logger); - var fileManager = new FileManager(); - environment.addFileManager(fileManager); - less.FileManager = FileManager; - less.PluginLoader = PluginLoader; - LogListener(less, options); - var errors = ErrorReporting(window, less, options); - var cache = less.cache = options.cache || Cache(window, options, less.logger); - ImageSize(less.environment); - // Setup user functions - Deprecate? - if (options.functions) { - less.functions.functionRegistry.addMultiple(options.functions); - } - var typePattern = /^text\/(x-)?less$/; - function clone(obj) { - var cloned = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - cloned[prop] = obj[prop]; - } - } - return cloned; - } - // only really needed for phantom - function bind(func, thisArg) { - var curryArgs = Array.prototype.slice.call(arguments, 2); - return function () { - var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0)); - return func.apply(thisArg, args); - }; - } - function loadStyles(modifyVars) { - var styles = document.getElementsByTagName('style'); - var style; - for (var i = 0; i < styles.length; i++) { - style = styles[i]; - if (style.type.match(typePattern)) { - var instanceOptions = clone(options); - instanceOptions.modifyVars = modifyVars; - var lessText = style.innerHTML || ''; - instanceOptions.filename = document.location.href.replace(/#.*$/, ''); - /* jshint loopfunc:true */ - // use closure to store current style - less.render(lessText, instanceOptions, bind(function (style, e, result) { - if (e) { - errors.add(e, 'inline'); - } - else { - style.type = 'text/css'; - if (style.styleSheet) { - style.styleSheet.cssText = result.css; - } - else { - style.innerHTML = result.css; - } - } - }, null, style)); - } - } - } - function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) { - var instanceOptions = clone(options); - addDataAttr(instanceOptions, sheet); - instanceOptions.mime = sheet.type; - if (modifyVars) { - instanceOptions.modifyVars = modifyVars; - } - function loadInitialFileCallback(loadedFile) { - var data = loadedFile.contents; - var path = loadedFile.filename; - var webInfo = loadedFile.webInfo; - var newFileInfo = { - currentDirectory: fileManager.getPath(path), - filename: path, - rootFilename: path, - rewriteUrls: instanceOptions.rewriteUrls - }; - newFileInfo.entryPath = newFileInfo.currentDirectory; - newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory; - if (webInfo) { - webInfo.remaining = remaining; - var css = cache.getCSS(path, webInfo, instanceOptions.modifyVars); - if (!reload && css) { - webInfo.local = true; - callback(null, css, data, sheet, webInfo, path); - return; - } - } - // TODO add tests around how this behaves when reloading - errors.remove(path); - instanceOptions.rootFileInfo = newFileInfo; - less.render(data, instanceOptions, function (e, result) { - if (e) { - e.href = path; - callback(e); - } - else { - cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css); - callback(null, result.css, data, sheet, webInfo, path); - } - }); - } - fileManager.loadFile(sheet.href, null, instanceOptions, environment) - .then(function (loadedFile) { - loadInitialFileCallback(loadedFile); - }).catch(function (err) { - console.log(err); - callback(err); - }); - } - function loadStyleSheets(callback, reload, modifyVars) { - for (var i = 0; i < less.sheets.length; i++) { - loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars); - } - } - function initRunningMode() { - if (less.env === 'development') { - less.watchTimer = setInterval(function () { - if (less.watchMode) { - fileManager.clearFileCache(); - loadStyleSheets(function (e, css, _, sheet, webInfo) { - if (e) { - errors.add(e, e.href || sheet.href); - } - else if (css) { - browser.createCSS(window.document, css, sheet); - } - }); - } - }, options.poll); - } - } - // - // Watch mode - // - less.watch = function () { - if (!less.watchMode) { - less.env = 'development'; - initRunningMode(); - } - this.watchMode = true; - return true; - }; - less.unwatch = function () { clearInterval(less.watchTimer); this.watchMode = false; return false; }; - // - // Synchronously get all tags with the 'rel' attribute set to - // "stylesheet/less". - // - less.registerStylesheetsImmediately = function () { - var links = document.getElementsByTagName('link'); - less.sheets = []; - for (var i = 0; i < links.length; i++) { - if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) && - (links[i].type.match(typePattern)))) { - less.sheets.push(links[i]); - } - } - }; - // - // Asynchronously get all tags with the 'rel' attribute set to - // "stylesheet/less", returning a Promise. - // - less.registerStylesheets = function () { return new Promise(function (resolve, reject) { - less.registerStylesheetsImmediately(); - resolve(); - }); }; - // - // With this function, it's possible to alter variables and re-render - // CSS without reloading less-files - // - less.modifyVars = function (record) { return less.refresh(true, record, false); }; - less.refresh = function (reload, modifyVars, clearFileCache) { - if ((reload || clearFileCache) && clearFileCache !== false) { - fileManager.clearFileCache(); - } - return new Promise(function (resolve, reject) { - var startTime; - var endTime; - var totalMilliseconds; - var remainingSheets; - startTime = endTime = new Date(); - // Set counter for remaining unprocessed sheets - remainingSheets = less.sheets.length; - if (remainingSheets === 0) { - endTime = new Date(); - totalMilliseconds = endTime - startTime; - less.logger.info('Less has finished and no sheets were loaded.'); - resolve({ - startTime: startTime, - endTime: endTime, - totalMilliseconds: totalMilliseconds, - sheets: less.sheets.length - }); - } - else { - // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array - loadStyleSheets(function (e, css, _, sheet, webInfo) { - if (e) { - errors.add(e, e.href || sheet.href); - reject(e); - return; - } - if (webInfo.local) { - less.logger.info("Loading " + sheet.href + " from cache."); - } - else { - less.logger.info("Rendered " + sheet.href + " successfully."); - } - browser.createCSS(window.document, css, sheet); - less.logger.info("CSS for " + sheet.href + " generated in " + (new Date() - endTime) + "ms"); - // Count completed sheet - remainingSheets--; - // Check if the last remaining sheet was processed and then call the promise - if (remainingSheets === 0) { - totalMilliseconds = new Date() - startTime; - less.logger.info("Less has finished. CSS generated in " + totalMilliseconds + "ms"); - resolve({ - startTime: startTime, - endTime: endTime, - totalMilliseconds: totalMilliseconds, - sheets: less.sheets.length - }); - } - endTime = new Date(); - }, reload, modifyVars); - } - loadStyles(modifyVars); - }); - }; - less.refreshStyles = loadStyles; - return less; - }); - - /** - * Kicks off less and compiles any stylesheets - * used in the browser distributed version of less - * to kick-start less using the browser api - */ - var options = defaultOptions(); - if (window.less) { - for (var key in window.less) { - if (window.less.hasOwnProperty(key)) { - options[key] = window.less[key]; - } - } - } - addDefaultOptions(window, options); - options.plugins = options.plugins || []; - if (window.LESS_PLUGINS) { - options.plugins = options.plugins.concat(window.LESS_PLUGINS); - } - var less = root(window, options); - window.less = less; - var css; - var head; - var style; - // Always restore page visibility - function resolveOrReject(data) { - if (data.filename) { - console.warn(data); - } - if (!options.async) { - head.removeChild(style); - } - } - if (options.onReady) { - if (/!watch/.test(window.location.hash)) { - less.watch(); - } - // Simulate synchronous stylesheet loading by hiding page rendering - if (!options.async) { - css = 'body { display: none !important }'; - head = document.head || document.getElementsByTagName('head')[0]; - style = document.createElement('style'); - style.type = 'text/css'; - if (style.styleSheet) { - style.styleSheet.cssText = css; - } - else { - style.appendChild(document.createTextNode(css)); - } - head.appendChild(style); - } - less.registerStylesheetsImmediately(); - less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject); - } - - return less; - -}))); diff --git a/js/openNav.js b/js/openNav.js deleted file mode 100644 index 374d510..0000000 --- a/js/openNav.js +++ /dev/null @@ -1,3 +0,0 @@ -function openNav() { - document.getElementById("myNav").style.width = "100%"; -} \ No newline at end of file diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/login.html b/login.html deleted file mode 100644 index 16ec206..0000000 --- a/login.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - Login - - - - - - -
    -
    -

    Login

    - -
    - - - -
    -
    - -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
    - - - - - - - \ No newline at end of file diff --git a/projects.html b/projects.html deleted file mode 100644 index 2e090a8..0000000 --- a/projects.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - Projects - - - - - - - - - - - - - -
    - × - -
    - - -
    - -
    - About - Blog - Projects -
    -
    - - - -
    -
    -

    Work In Progress

    -
    - line -
    - - - - - - - - - \ No newline at end of file diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..2be3af2 --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
    +
    +

    The page you were looking for doesn't exist.

    +

    You may have mistyped the address or the page may have moved.

    +
    +

    If you are the application owner check the logs for more information.

    +
    + + diff --git a/public/422.html b/public/422.html new file mode 100644 index 0000000..c08eac0 --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
    +
    +

    The change you wanted was rejected.

    +

    Maybe you tried to change something you didn't have access to.

    +
    +

    If you are the application owner check the logs for more information.

    +
    + + diff --git a/public/500.html b/public/500.html new file mode 100644 index 0000000..78a030a --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
    +
    +

    We're sorry, but something went wrong.

    +
    +

    If you are the application owner check the logs for more information.

    +
    + + diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..e69de29 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000..e69de29 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..c19f78a --- /dev/null +++ b/public/robots.txt @@ -0,0 +1 @@ +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/python/assignments/1.1.html b/python/assignments/1.1.html deleted file mode 100644 index 46ec9a2..0000000 --- a/python/assignments/1.1.html +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/python/assignments/1.2.html b/python/assignments/1.2.html deleted file mode 100644 index 9af9e9f..0000000 --- a/python/assignments/1.2.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/python/assignments/1.3.html b/python/assignments/1.3.html deleted file mode 100644 index d3107c2..0000000 --- a/python/assignments/1.3.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/python/assignments/2.1.html b/python/assignments/2.1.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/2.1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/2.2.html b/python/assignments/2.2.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/2.2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/2.3.html b/python/assignments/2.3.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/2.3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/3.1.html b/python/assignments/3.1.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/3.1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/3.2.html b/python/assignments/3.2.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/3.2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/3.3.html b/python/assignments/3.3.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/3.3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/4.1.html b/python/assignments/4.1.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/4.1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/4.2.html b/python/assignments/4.2.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/4.2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/5.1.html b/python/assignments/5.1.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/5.1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/5.2.html b/python/assignments/5.2.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/5.2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/python/assignments/5.3.html b/python/assignments/5.3.html deleted file mode 100644 index 7e57eec..0000000 --- a/python/assignments/5.3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Assignments - - - - - - - -
    -
    -

    This lesson is not unlocked yet!

    -
    -
    - - - - - - \ No newline at end of file diff --git a/src-noconflict/ace.js b/src-noconflict/ace.js deleted file mode 100644 index b305bdc..0000000 --- a/src-noconflict/ace.js +++ /dev/null @@ -1,21402 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -/** - * Define a module along with a payload - * @param module a name for the payload - * @param payload a function to call with (require, exports, module) params - */ - -(function() { - -var ACE_NAMESPACE = "ace"; - -var global = (function() { return this; })(); -if (!global && typeof window != "undefined") global = window; // strict mode - - -if (!ACE_NAMESPACE && typeof requirejs !== "undefined") - return; - - -var define = function(module, deps, payload) { - if (typeof module !== "string") { - if (define.original) - define.original.apply(this, arguments); - else { - console.error("dropping module because define wasn\'t a string."); - console.trace(); - } - return; - } - if (arguments.length == 2) - payload = deps; - if (!define.modules[module]) { - define.payloads[module] = payload; - define.modules[module] = null; - } -}; - -define.modules = {}; -define.payloads = {}; - -/** - * Get at functionality define()ed using the function above - */ -var _require = function(parentId, module, callback) { - if (typeof module === "string") { - var payload = lookup(parentId, module); - if (payload != undefined) { - callback && callback(); - return payload; - } - } else if (Object.prototype.toString.call(module) === "[object Array]") { - var params = []; - for (var i = 0, l = module.length; i < l; ++i) { - var dep = lookup(parentId, module[i]); - if (dep == undefined && require.original) - return; - params.push(dep); - } - return callback && callback.apply(null, params) || true; - } -}; - -var require = function(module, callback) { - var packagedModule = _require("", module, callback); - if (packagedModule == undefined && require.original) - return require.original.apply(this, arguments); - return packagedModule; -}; - -var normalizeModule = function(parentId, moduleName) { - // normalize plugin requires - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); - } - // normalize relative requires - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = base + "/" + moduleName; - - while(moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - return moduleName; -}; - -/** - * Internal function to lookup moduleNames and resolve them by calling the - * definition function if needed. - */ -var lookup = function(parentId, moduleName) { - moduleName = normalizeModule(parentId, moduleName); - - var module = define.modules[moduleName]; - if (!module) { - module = define.payloads[moduleName]; - if (typeof module === 'function') { - var exports = {}; - var mod = { - id: moduleName, - uri: '', - exports: exports, - packaged: true - }; - - var req = function(module, callback) { - return _require(moduleName, module, callback); - }; - - var returnValue = module(req, exports, mod); - exports = returnValue || mod.exports; - define.modules[moduleName] = exports; - delete define.payloads[moduleName]; - } - module = define.modules[moduleName] = exports || module; - } - return module; -}; - -function exportAce(ns) { - var root = global; - if (ns) { - if (!global[ns]) - global[ns] = {}; - root = global[ns]; - } - - if (!root.define || !root.define.packaged) { - define.original = root.define; - root.define = define; - root.define.packaged = true; - } - - if (!root.require || !root.require.packaged) { - require.original = root.require; - root.require = require; - root.require.packaged = true; - } -} - -exportAce(ACE_NAMESPACE); - -})(); - -ace.define("ace/lib/fixoldbrowsers",["require","exports","module"], function(require, exports, module) { -"use strict"; -if (typeof Element != "undefined" && !Element.prototype.remove) { - Object.defineProperty(Element.prototype, "remove", { - enumerable: false, - writable: true, - configurable: true, - value: function() { this.parentNode && this.parentNode.removeChild(this); } - }); -} - - -}); - -ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.OS = { - LINUX: "LINUX", - MAC: "MAC", - WINDOWS: "WINDOWS" -}; -exports.getOS = function() { - if (exports.isMac) { - return exports.OS.MAC; - } else if (exports.isLinux) { - return exports.OS.LINUX; - } else { - return exports.OS.WINDOWS; - } -}; -var _navigator = typeof navigator == "object" ? navigator : {}; - -var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); -var ua = _navigator.userAgent || ""; -var appName = _navigator.appName || ""; -exports.isWin = (os == "win"); -exports.isMac = (os == "mac"); -exports.isLinux = (os == "linux"); -exports.isIE = - (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) - ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]) - : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]); // for ie - -exports.isOldIE = exports.isIE && exports.isIE < 9; -exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); -exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]"; -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; - -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; - -exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; - -exports.isAIR = ua.indexOf("AdobeAIR") >= 0; - -exports.isAndroid = ua.indexOf("Android") >= 0; - -exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; - -exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; - -if (exports.isIOS) exports.isMac = true; - -exports.isMobile = exports.isIOS || exports.isAndroid; - -}); - -ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var useragent = require("./useragent"); -var XHTML_NS = "http://www.w3.org/1999/xhtml"; - -exports.buildDom = function buildDom(arr, parent, refs) { - if (typeof arr == "string" && arr) { - var txt = document.createTextNode(arr); - if (parent) - parent.appendChild(txt); - return txt; - } - - if (!Array.isArray(arr)) { - if (arr && arr.appendChild && parent) - parent.appendChild(arr); - return arr; - } - if (typeof arr[0] != "string" || !arr[0]) { - var els = []; - for (var i = 0; i < arr.length; i++) { - var ch = buildDom(arr[i], parent, refs); - ch && els.push(ch); - } - return els; - } - - var el = document.createElement(arr[0]); - var options = arr[1]; - var childIndex = 1; - if (options && typeof options == "object" && !Array.isArray(options)) - childIndex = 2; - for (var i = childIndex; i < arr.length; i++) - buildDom(arr[i], el, refs); - if (childIndex == 2) { - Object.keys(options).forEach(function(n) { - var val = options[n]; - if (n === "class") { - el.className = Array.isArray(val) ? val.join(" ") : val; - } else if (typeof val == "function" || n == "value" || n[0] == "$") { - el[n] = val; - } else if (n === "ref") { - if (refs) refs[val] = el; - } else if (n === "style") { - if (typeof val == "string") el.style.cssText = val; - } else if (val != null) { - el.setAttribute(n, val); - } - }); - } - if (parent) - parent.appendChild(el); - return el; -}; - -exports.getDocumentHead = function(doc) { - if (!doc) - doc = document; - return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -}; - -exports.createElement = function(tag, ns) { - return document.createElementNS ? - document.createElementNS(ns || XHTML_NS, tag) : - document.createElement(tag); -}; - -exports.removeChildren = function(element) { - element.innerHTML = ""; -}; - -exports.createTextNode = function(textContent, element) { - var doc = element ? element.ownerDocument : document; - return doc.createTextNode(textContent); -}; - -exports.createFragment = function(element) { - var doc = element ? element.ownerDocument : document; - return doc.createDocumentFragment(); -}; - -exports.hasCssClass = function(el, name) { - var classes = (el.className + "").split(/\s+/g); - return classes.indexOf(name) !== -1; -}; -exports.addCssClass = function(el, name) { - if (!exports.hasCssClass(el, name)) { - el.className += " " + name; - } -}; -exports.removeCssClass = function(el, name) { - var classes = el.className.split(/\s+/g); - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - classes.splice(index, 1); - } - el.className = classes.join(" "); -}; - -exports.toggleCssClass = function(el, name) { - var classes = el.className.split(/\s+/g), add = true; - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - add = false; - classes.splice(index, 1); - } - if (add) - classes.push(name); - - el.className = classes.join(" "); - return add; -}; -exports.setCssClass = function(node, className, include) { - if (include) { - exports.addCssClass(node, className); - } else { - exports.removeCssClass(node, className); - } -}; - -exports.hasCssString = function(id, doc) { - var index = 0, sheets; - doc = doc || document; - if ((sheets = doc.querySelectorAll("style"))) { - while (index < sheets.length) - if (sheets[index++].id === id) - return true; - } -}; - -var strictCSP; -var cssCache = []; -exports.useStrictCSP = function(value) { - strictCSP = value; - if (value == false) insertPendingStyles(); - else if (!cssCache) cssCache = []; -}; - -function insertPendingStyles() { - var cache = cssCache; - cssCache = null; - cache && cache.forEach(function(item) { - importCssString(item[0], item[1]); - }); -} - -function importCssString(cssText, id, target) { - if (typeof document == "undefined") - return; - if (cssCache) { - if (target) { - insertPendingStyles(); - } else if (target === false) { - return cssCache.push([cssText, id]); - } - } - if (strictCSP) return; - - var container = target; - if (!target || !target.getRootNode) { - container = document; - } else { - container = target.getRootNode(); - if (!container || container == target) - container = document; - } - - var doc = container.ownerDocument || container; - if (id && exports.hasCssString(id, container)) - return null; - - if (id) - cssText += "\n/*# sourceURL=ace/css/" + id + " */"; - - var style = exports.createElement("style"); - style.appendChild(doc.createTextNode(cssText)); - if (id) - style.id = id; - - if (container == doc) - container = exports.getDocumentHead(doc); - container.insertBefore(style, container.firstChild); -} -exports.importCssString = importCssString; - -exports.importCssStylsheet = function(uri, doc) { - exports.buildDom(["link", {rel: "stylesheet", href: uri}], exports.getDocumentHead(doc)); -}; -exports.scrollbarWidth = function(document) { - var inner = exports.createElement("ace_inner"); - inner.style.width = "100%"; - inner.style.minWidth = "0px"; - inner.style.height = "200px"; - inner.style.display = "block"; - - var outer = exports.createElement("ace_outer"); - var style = outer.style; - - style.position = "absolute"; - style.left = "-10000px"; - style.overflow = "hidden"; - style.width = "200px"; - style.minWidth = "0px"; - style.height = "150px"; - style.display = "block"; - - outer.appendChild(inner); - - var body = document.documentElement; - body.appendChild(outer); - - var noScrollbar = inner.offsetWidth; - - style.overflow = "scroll"; - var withScrollbar = inner.offsetWidth; - - if (noScrollbar == withScrollbar) { - withScrollbar = outer.clientWidth; - } - - body.removeChild(outer); - - return noScrollbar-withScrollbar; -}; - -exports.computedStyle = function(element, style) { - return window.getComputedStyle(element, "") || {}; -}; - -exports.setStyle = function(styles, property, value) { - if (styles[property] !== value) { - styles[property] = value; - } -}; - -exports.HAS_CSS_ANIMATION = false; -exports.HAS_CSS_TRANSFORMS = false; -exports.HI_DPI = useragent.isWin - ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 - : true; - -if (useragent.isChromeOS) exports.HI_DPI = false; - -if (typeof document !== "undefined") { - var div = document.createElement("div"); - if (exports.HI_DPI && div.style.transform !== undefined) - exports.HAS_CSS_TRANSFORMS = true; - if (!useragent.isEdge && typeof div.style.animationName !== "undefined") - exports.HAS_CSS_ANIMATION = true; - div = null; -} - -if (exports.HAS_CSS_TRANSFORMS) { - exports.translate = function(element, tx, ty) { - element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) +"px)"; - }; -} else { - exports.translate = function(element, tx, ty) { - element.style.top = Math.round(ty) + "px"; - element.style.left = Math.round(tx) + "px"; - }; -} - -}); - -ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -exports.mixin = function(obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; - -exports.implement = function(proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var oop = require("./oop"); -var Keys = (function() { - var ret = { - MODIFIER_KEYS: { - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', - 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' - }, - - KEY_MODS: { - "ctrl": 1, "alt": 2, "option" : 2, "shift": 4, - "super": 8, "meta": 8, "command": 8, "cmd": 8, - "control": 1 - }, - - FUNCTION_KEYS : { - 8 : "Backspace", - 9 : "Tab", - 13 : "Return", - 19 : "Pause", - 27 : "Esc", - 32 : "Space", - 33 : "PageUp", - 34 : "PageDown", - 35 : "End", - 36 : "Home", - 37 : "Left", - 38 : "Up", - 39 : "Right", - 40 : "Down", - 44 : "Print", - 45 : "Insert", - 46 : "Delete", - 96 : "Numpad0", - 97 : "Numpad1", - 98 : "Numpad2", - 99 : "Numpad3", - 100: "Numpad4", - 101: "Numpad5", - 102: "Numpad6", - 103: "Numpad7", - 104: "Numpad8", - 105: "Numpad9", - '-13': "NumpadEnter", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "Numlock", - 145: "Scrolllock" - }, - - PRINTABLE_KEYS: { - 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', - 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', - 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', - 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', - 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', - 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', - 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', - 219: '[', 220: '\\',221: ']', 222: "'", 111: '/', 106: '*' - } - }; - var name, i; - for (i in ret.FUNCTION_KEYS) { - name = ret.FUNCTION_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - for (i in ret.PRINTABLE_KEYS) { - name = ret.PRINTABLE_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - oop.mixin(ret, ret.MODIFIER_KEYS); - oop.mixin(ret, ret.PRINTABLE_KEYS); - oop.mixin(ret, ret.FUNCTION_KEYS); - ret.enter = ret["return"]; - ret.escape = ret.esc; - ret.del = ret["delete"]; - ret[173] = '-'; - - (function() { - var mods = ["cmd", "ctrl", "alt", "shift"]; - for (var i = Math.pow(2, mods.length); i--;) { - ret.KEY_MODS[i] = mods.filter(function(x) { - return i & ret.KEY_MODS[x]; - }).join("-") + "-"; - } - })(); - - ret.KEY_MODS[0] = ""; - ret.KEY_MODS[-1] = "input-"; - - return ret; -})(); -oop.mixin(exports, Keys); - -exports.keyCodeToString = function(keyCode) { - var keyString = Keys[keyCode]; - if (typeof keyString != "string") - keyString = String.fromCharCode(keyCode); - return keyString.toLowerCase(); -}; - -}); - -ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var keys = require("./keys"); -var useragent = require("./useragent"); - -var pressedKeys = null; -var ts = 0; - -var activeListenerOptions; -function detectListenerOptionsSupport() { - activeListenerOptions = false; - try { - document.createComment("").addEventListener("test", function() {}, { - get passive() { - activeListenerOptions = {passive: false}; - } - }); - } catch(e) {} -} - -function getListenerOptions() { - if (activeListenerOptions == undefined) - detectListenerOptionsSupport(); - return activeListenerOptions; -} - -function EventListener(elem, type, callback) { - this.elem = elem; - this.type = type; - this.callback = callback; -} -EventListener.prototype.destroy = function() { - removeListener(this.elem, this.type, this.callback); - this.elem = this.type = this.callback = undefined; -}; - -var addListener = exports.addListener = function(elem, type, callback, destroyer) { - elem.addEventListener(type, callback, getListenerOptions()); - if (destroyer) - destroyer.$toDestroy.push(new EventListener(elem, type, callback)); -}; - -var removeListener = exports.removeListener = function(elem, type, callback) { - elem.removeEventListener(type, callback, getListenerOptions()); -}; -exports.stopEvent = function(e) { - exports.stopPropagation(e); - exports.preventDefault(e); - return false; -}; - -exports.stopPropagation = function(e) { - if (e.stopPropagation) - e.stopPropagation(); -}; - -exports.preventDefault = function(e) { - if (e.preventDefault) - e.preventDefault(); -}; -exports.getButton = function(e) { - if (e.type == "dblclick") - return 0; - if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) - return 2; - return e.button; -}; - -exports.capture = function(el, eventHandler, releaseCaptureHandler) { - var ownerDocument = el && el.ownerDocument || document; - function onMouseUp(e) { - eventHandler && eventHandler(e); - releaseCaptureHandler && releaseCaptureHandler(e); - - removeListener(ownerDocument, "mousemove", eventHandler); - removeListener(ownerDocument, "mouseup", onMouseUp); - removeListener(ownerDocument, "dragstart", onMouseUp); - } - - addListener(ownerDocument, "mousemove", eventHandler); - addListener(ownerDocument, "mouseup", onMouseUp); - addListener(ownerDocument, "dragstart", onMouseUp); - - return onMouseUp; -}; - -exports.addMouseWheelListener = function(el, callback, destroyer) { - if ("onmousewheel" in el) { - addListener(el, "mousewheel", function(e) { - var factor = 8; - if (e.wheelDeltaX !== undefined) { - e.wheelX = -e.wheelDeltaX / factor; - e.wheelY = -e.wheelDeltaY / factor; - } else { - e.wheelX = 0; - e.wheelY = -e.wheelDelta / factor; - } - callback(e); - }, destroyer); - } else if ("onwheel" in el) { - addListener(el, "wheel", function(e) { - var factor = 0.35; - switch (e.deltaMode) { - case e.DOM_DELTA_PIXEL: - e.wheelX = e.deltaX * factor || 0; - e.wheelY = e.deltaY * factor || 0; - break; - case e.DOM_DELTA_LINE: - case e.DOM_DELTA_PAGE: - e.wheelX = (e.deltaX || 0) * 5; - e.wheelY = (e.deltaY || 0) * 5; - break; - } - - callback(e); - }, destroyer); - } else { - addListener(el, "DOMMouseScroll", function(e) { - if (e.axis && e.axis == e.HORIZONTAL_AXIS) { - e.wheelX = (e.detail || 0) * 5; - e.wheelY = 0; - } else { - e.wheelX = 0; - e.wheelY = (e.detail || 0) * 5; - } - callback(e); - }, destroyer); - } -}; - -exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) { - var clicks = 0; - var startX, startY, timer; - var eventNames = { - 2: "dblclick", - 3: "tripleclick", - 4: "quadclick" - }; - - function onMousedown(e) { - if (exports.getButton(e) !== 0) { - clicks = 0; - } else if (e.detail > 1) { - clicks++; - if (clicks > 4) - clicks = 1; - } else { - clicks = 1; - } - if (useragent.isIE) { - var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; - if (!timer || isNewClick) - clicks = 1; - if (timer) - clearTimeout(timer); - timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600); - - if (clicks == 1) { - startX = e.clientX; - startY = e.clientY; - } - } - - e._clicks = clicks; - - eventHandler[callbackName]("mousedown", e); - - if (clicks > 4) - clicks = 0; - else if (clicks > 1) - return eventHandler[callbackName](eventNames[clicks], e); - } - if (!Array.isArray(elements)) - elements = [elements]; - elements.forEach(function(el) { - addListener(el, "mousedown", onMousedown, destroyer); - }); -}; - -var getModifierHash = function(e) { - return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); -}; - -exports.getModifierString = function(e) { - return keys.KEY_MODS[getModifierHash(e)]; -}; - -function normalizeCommandKeys(callback, e, keyCode) { - var hashId = getModifierHash(e); - - if (!useragent.isMac && pressedKeys) { - if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) - hashId |= 8; - if (pressedKeys.altGr) { - if ((3 & hashId) != 3) - pressedKeys.altGr = 0; - else - return; - } - if (keyCode === 18 || keyCode === 17) { - var location = "location" in e ? e.location : e.keyLocation; - if (keyCode === 17 && location === 1) { - if (pressedKeys[keyCode] == 1) - ts = e.timeStamp; - } else if (keyCode === 18 && hashId === 3 && location === 2) { - var dt = e.timeStamp - ts; - if (dt < 50) - pressedKeys.altGr = true; - } - } - } - - if (keyCode in keys.MODIFIER_KEYS) { - keyCode = -1; - } - - if (!hashId && keyCode === 13) { - var location = "location" in e ? e.location : e.keyLocation; - if (location === 3) { - callback(e, hashId, -keyCode); - if (e.defaultPrevented) - return; - } - } - - if (useragent.isChromeOS && hashId & 8) { - callback(e, hashId, keyCode); - if (e.defaultPrevented) - return; - else - hashId &= ~8; - } - if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { - return false; - } - - return callback(e, hashId, keyCode); -} - - -exports.addCommandKeyListener = function(el, callback, destroyer) { - if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { - var lastKeyDownKeyCode = null; - addListener(el, "keydown", function(e) { - lastKeyDownKeyCode = e.keyCode; - }, destroyer); - addListener(el, "keypress", function(e) { - return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); - }, destroyer); - } else { - var lastDefaultPrevented = null; - - addListener(el, "keydown", function(e) { - pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; - var result = normalizeCommandKeys(callback, e, e.keyCode); - lastDefaultPrevented = e.defaultPrevented; - return result; - }, destroyer); - - addListener(el, "keypress", function(e) { - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { - exports.stopEvent(e); - lastDefaultPrevented = null; - } - }, destroyer); - - addListener(el, "keyup", function(e) { - pressedKeys[e.keyCode] = null; - }, destroyer); - - if (!pressedKeys) { - resetPressedKeys(); - addListener(window, "focus", resetPressedKeys); - } - } -}; -function resetPressedKeys() { - pressedKeys = Object.create(null); -} - -if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { - var postMessageId = 1; - exports.nextTick = function(callback, win) { - win = win || window; - var messageName = "zero-timeout-message-" + (postMessageId++); - - var listener = function(e) { - if (e.data == messageName) { - exports.stopPropagation(e); - removeListener(win, "message", listener); - callback(); - } - }; - - addListener(win, "message", listener); - win.postMessage(messageName, "*"); - }; -} - -exports.$idleBlocked = false; -exports.onIdle = function(cb, timeout) { - return setTimeout(function handler() { - if (!exports.$idleBlocked) { - cb(); - } else { - setTimeout(handler, 100); - } - }, timeout); -}; - -exports.$idleBlockId = null; -exports.blockIdle = function(delay) { - if (exports.$idleBlockId) - clearTimeout(exports.$idleBlockId); - - exports.$idleBlocked = true; - exports.$idleBlockId = setTimeout(function() { - exports.$idleBlocked = false; - }, delay || 100); -}; - -exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || window.oRequestAnimationFrame); - -if (exports.nextFrame) - exports.nextFrame = exports.nextFrame.bind(window); -else - exports.nextFrame = function(callback) { - setTimeout(callback, 17); - }; -}); - -ace.define("ace/range",["require","exports","module"], function(require, exports, module) { -"use strict"; -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define("ace/lib/lang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i Date.now() - 50) - return true; - return $cancelT = false; - }, - cancel: function() { - $cancelT = Date.now(); - } -}; - -}); - -ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module) { -"use strict"; - -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var clipboard = require("../clipboard"); -var BROKEN_SETDATA = useragent.isChrome < 18; -var USE_IE_MIME_TYPE = useragent.isIE; -var HAS_FOCUS_ARGS = useragent.isChrome > 63; -var MAX_LINE_LENGTH = 400; - -var KEYS = require("../lib/keys"); -var MODS = KEYS.KEY_MODS; -var isIOS = useragent.isIOS; -var valueResetRegex = isIOS ? /\s/ : /\n/; -var isMobile = useragent.isMobile; - -var TextInput = function(parentNode, host) { - var text = dom.createElement("textarea"); - text.className = "ace_text-input"; - - text.setAttribute("wrap", "off"); - text.setAttribute("autocorrect", "off"); - text.setAttribute("autocapitalize", "off"); - text.setAttribute("spellcheck", false); - - text.style.opacity = "0"; - parentNode.insertBefore(text, parentNode.firstChild); - - var copied = false; - var pasted = false; - var inComposition = false; - var sendingText = false; - var tempStyle = ''; - - if (!isMobile) - text.style.fontSize = "1px"; - - var commandMode = false; - var ignoreFocusEvents = false; - - var lastValue = ""; - var lastSelectionStart = 0; - var lastSelectionEnd = 0; - var lastRestoreEnd = 0; - try { var isFocused = document.activeElement === text; } catch(e) {} - - event.addListener(text, "blur", function(e) { - if (ignoreFocusEvents) return; - host.onBlur(e); - isFocused = false; - }, host); - event.addListener(text, "focus", function(e) { - if (ignoreFocusEvents) return; - isFocused = true; - if (useragent.isEdge) { - try { - if (!document.hasFocus()) - return; - } catch(e) {} - } - host.onFocus(e); - if (useragent.isEdge) - setTimeout(resetSelection); - else - resetSelection(); - }, host); - this.$focusScroll = false; - this.focus = function() { - if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") - return text.focus({ preventScroll: true }); - - var top = text.style.top; - text.style.position = "fixed"; - text.style.top = "0px"; - try { - var isTransformed = text.getBoundingClientRect().top != 0; - } catch(e) { - return; - } - var ancestors = []; - if (isTransformed) { - var t = text.parentElement; - while (t && t.nodeType == 1) { - ancestors.push(t); - t.setAttribute("ace_nocontext", true); - if (!t.parentElement && t.getRootNode) - t = t.getRootNode().host; - else - t = t.parentElement; - } - } - text.focus({ preventScroll: true }); - if (isTransformed) { - ancestors.forEach(function(p) { - p.removeAttribute("ace_nocontext"); - }); - } - setTimeout(function() { - text.style.position = ""; - if (text.style.top == "0px") - text.style.top = top; - }, 0); - }; - this.blur = function() { - text.blur(); - }; - this.isFocused = function() { - return isFocused; - }; - - host.on("beforeEndOperation", function() { - var curOp = host.curOp; - var commandName = curOp && curOp.command && curOp.command.name; - if (commandName == "insertstring") - return; - var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); - if (inComposition && isUserAction) { - lastValue = text.value = ""; - onCompositionEnd(); - } - resetSelection(); - }); - - var resetSelection = isIOS - ? function(value) { - if (!isFocused || (copied && !value) || sendingText) return; - if (!value) - value = ""; - var newValue = "\n ab" + value + "cde fg\n"; - if (newValue != text.value) - text.value = lastValue = newValue; - - var selectionStart = 4; - var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); - - if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { - text.setSelectionRange(selectionStart, selectionEnd); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } - : function() { - if (inComposition || sendingText) - return; - if (!isFocused && !afterContextMenu) - return; - inComposition = true; - - var selectionStart = 0; - var selectionEnd = 0; - var line = ""; - - if (host.session) { - var selection = host.selection; - var range = selection.getRange(); - var row = selection.cursor.row; - selectionStart = range.start.column; - selectionEnd = range.end.column; - line = host.session.getLine(row); - - if (range.start.row != row) { - var prevLine = host.session.getLine(row - 1); - selectionStart = range.start.row < row - 1 ? 0 : selectionStart; - selectionEnd += prevLine.length + 1; - line = prevLine + "\n" + line; - } - else if (range.end.row != row) { - var nextLine = host.session.getLine(row + 1); - selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd; - selectionEnd += line.length + 1; - line = line + "\n" + nextLine; - } - else if (isMobile && row > 0) { - line = "\n" + line; - selectionEnd += 1; - selectionStart += 1; - } - - if (line.length > MAX_LINE_LENGTH) { - if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { - line = line.slice(0, MAX_LINE_LENGTH); - } else { - line = "\n"; - if (selectionStart == selectionEnd) { - selectionStart = selectionEnd = 0; - } - else { - selectionStart = 0; - selectionEnd = 1; - } - } - } - } - - var newValue = line + "\n\n"; - if (newValue != lastValue) { - text.value = lastValue = newValue; - lastSelectionStart = lastSelectionEnd = newValue.length; - } - if (afterContextMenu) { - lastSelectionStart = text.selectionStart; - lastSelectionEnd = text.selectionEnd; - } - if ( - lastSelectionEnd != selectionEnd - || lastSelectionStart != selectionStart - || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization - ) { - try { - text.setSelectionRange(selectionStart, selectionEnd); - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } catch(e){} - } - inComposition = false; - }; - this.resetSelection = resetSelection; - - if (isFocused) - host.onFocus(); - - - var isAllSelected = function(text) { - return text.selectionStart === 0 && text.selectionEnd >= lastValue.length - && text.value === lastValue && lastValue - && text.selectionEnd !== lastSelectionEnd; - }; - - var onSelect = function(e) { - if (inComposition) - return; - if (copied) { - copied = false; - } else if (isAllSelected(text)) { - host.selectAll(); - resetSelection(); - } else if (isMobile && text.selectionStart != lastSelectionStart) { - resetSelection(); - } - }; - - var inputHandler = null; - this.setInputHandler = function(cb) {inputHandler = cb;}; - this.getInputHandler = function() {return inputHandler;}; - var afterContextMenu = false; - - var sendText = function(value, fromInput) { - if (afterContextMenu) - afterContextMenu = false; - if (pasted) { - resetSelection(); - if (value) - host.onPaste(value); - pasted = false; - return ""; - } else { - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - - var extendLeft = lastSelectionStart; - var extendRight = lastValue.length - lastSelectionEnd; - - var inserted = value; - var restoreStart = value.length - selectionStart; - var restoreEnd = value.length - selectionEnd; - - var i = 0; - while (extendLeft > 0 && lastValue[i] == value[i]) { - i++; - extendLeft--; - } - inserted = inserted.slice(i); - i = 1; - while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { - i++; - extendRight--; - } - restoreStart -= i-1; - restoreEnd -= i-1; - var endIndex = inserted.length - i + 1; - if (endIndex < 0) { - extendLeft = -endIndex; - endIndex = 0; - } - inserted = inserted.slice(0, endIndex); - if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) - return ""; - sendingText = true; - var shouldReset = false; - if (useragent.isAndroid && inserted == ". ") { - inserted = " "; - shouldReset = true; - } - - if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { - host.onTextInput(inserted); - } else { - host.onTextInput(inserted, { - extendLeft: extendLeft, - extendRight: extendRight, - restoreStart: restoreStart, - restoreEnd: restoreEnd - }); - } - sendingText = false; - - lastValue = value; - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - lastRestoreEnd = restoreEnd; - return shouldReset ? "\n" : inserted; - } - }; - var onInput = function(e) { - if (inComposition) - return onCompositionUpdate(); - if (e && e.inputType) { - if (e.inputType == "historyUndo") return host.execCommand("undo"); - if (e.inputType == "historyRedo") return host.execCommand("redo"); - } - var data = text.value; - var inserted = sendText(data, true); - if ( - data.length > MAX_LINE_LENGTH + 100 - || valueResetRegex.test(inserted) - || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd - ) { - resetSelection(); - } - }; - - var handleClipboardData = function(e, data, forceIEMime) { - var clipboardData = e.clipboardData || window.clipboardData; - if (!clipboardData || BROKEN_SETDATA) - return; - var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; - try { - if (data) { - return clipboardData.setData(mime, data) !== false; - } else { - return clipboardData.getData(mime); - } - } catch(e) { - if (!forceIEMime) - return handleClipboardData(e, data, true); - } - }; - - var doCopy = function(e, isCut) { - var data = host.getCopyText(); - if (!data) - return event.preventDefault(e); - - if (handleClipboardData(e, data)) { - if (isIOS) { - resetSelection(data); - copied = data; - setTimeout(function () { - copied = false; - }, 10); - } - isCut ? host.onCut() : host.onCopy(); - event.preventDefault(e); - } else { - copied = true; - text.value = data; - text.select(); - setTimeout(function(){ - copied = false; - resetSelection(); - isCut ? host.onCut() : host.onCopy(); - }); - } - }; - - var onCut = function(e) { - doCopy(e, true); - }; - - var onCopy = function(e) { - doCopy(e, false); - }; - - var onPaste = function(e) { - var data = handleClipboardData(e); - if (clipboard.pasteCancelled()) - return; - if (typeof data == "string") { - if (data) - host.onPaste(data, e); - if (useragent.isIE) - setTimeout(resetSelection); - event.preventDefault(e); - } - else { - text.value = ""; - pasted = true; - } - }; - - event.addCommandKeyListener(text, host.onCommandKey.bind(host), host); - - event.addListener(text, "select", onSelect, host); - event.addListener(text, "input", onInput, host); - - event.addListener(text, "cut", onCut, host); - event.addListener(text, "copy", onCopy, host); - event.addListener(text, "paste", onPaste, host); - if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { - event.addListener(parentNode, "keydown", function(e) { - if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) - return; - - switch (e.keyCode) { - case 67: - onCopy(e); - break; - case 86: - onPaste(e); - break; - case 88: - onCut(e); - break; - } - }, host); - } - var onCompositionStart = function(e) { - if (inComposition || !host.onCompositionStart || host.$readOnly) - return; - - inComposition = {}; - - if (commandMode) - return; - - if (e.data) - inComposition.useTextareaForIME = false; - - setTimeout(onCompositionUpdate, 0); - host._signal("compositionStart"); - host.on("mousedown", cancelComposition); - - var range = host.getSelectionRange(); - range.end.row = range.start.row; - range.end.column = range.start.column; - inComposition.markerRange = range; - inComposition.selectionStart = lastSelectionStart; - host.onCompositionStart(inComposition); - - if (inComposition.useTextareaForIME) { - lastValue = text.value = ""; - lastSelectionStart = 0; - lastSelectionEnd = 0; - } - else { - if (text.msGetInputContext) - inComposition.context = text.msGetInputContext(); - if (text.getInputContext) - inComposition.context = text.getInputContext(); - } - }; - - var onCompositionUpdate = function() { - if (!inComposition || !host.onCompositionUpdate || host.$readOnly) - return; - if (commandMode) - return cancelComposition(); - - if (inComposition.useTextareaForIME) { - host.onCompositionUpdate(text.value); - } - else { - var data = text.value; - sendText(data); - if (inComposition.markerRange) { - if (inComposition.context) { - inComposition.markerRange.start.column = inComposition.selectionStart - = inComposition.context.compositionStartOffset; - } - inComposition.markerRange.end.column = inComposition.markerRange.start.column - + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; - } - } - }; - - var onCompositionEnd = function(e) { - if (!host.onCompositionEnd || host.$readOnly) return; - inComposition = false; - host.onCompositionEnd(); - host.off("mousedown", cancelComposition); - if (e) onInput(); - }; - - - function cancelComposition() { - ignoreFocusEvents = true; - text.blur(); - text.focus(); - ignoreFocusEvents = false; - } - - var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); - - function onKeyup(e) { - if (e.keyCode == 27 && text.value.length < text.selectionStart) { - if (!inComposition) - lastValue = text.value; - lastSelectionStart = lastSelectionEnd = -1; - resetSelection(); - } - syncComposition(); - } - - event.addListener(text, "compositionstart", onCompositionStart, host); - event.addListener(text, "compositionupdate", onCompositionUpdate, host); - event.addListener(text, "keyup", onKeyup, host); - event.addListener(text, "keydown", syncComposition, host); - event.addListener(text, "compositionend", onCompositionEnd, host); - - this.getElement = function() { - return text; - }; - this.setCommandMode = function(value) { - commandMode = value; - text.readOnly = false; - }; - - this.setReadOnly = function(readOnly) { - if (!commandMode) - text.readOnly = readOnly; - }; - - this.setCopyWithEmptySelection = function(value) { - }; - - this.onContextMenu = function(e) { - afterContextMenu = true; - resetSelection(); - host._emit("nativecontextmenu", {target: host, domEvent: e}); - this.moveToMouse(e, true); - }; - - this.moveToMouse = function(e, bringToFront) { - if (!tempStyle) - tempStyle = text.style.cssText; - text.style.cssText = (bringToFront ? "z-index:100000;" : "") - + (useragent.isIE ? "opacity:0.1;" : "") - + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; - - var rect = host.container.getBoundingClientRect(); - var style = dom.computedStyle(host.container); - var top = rect.top + (parseInt(style.borderTopWidth) || 0); - var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); - var maxTop = rect.bottom - top - text.clientHeight -2; - var move = function(e) { - dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); - }; - move(e); - - if (e.type != "mousedown") - return; - - host.renderer.$isMousePressed = true; - - clearTimeout(closeTimeout); - if (useragent.isWin) - event.capture(host.container, move, onContextMenuClose); - }; - - this.onContextMenuClose = onContextMenuClose; - var closeTimeout; - function onContextMenuClose() { - clearTimeout(closeTimeout); - closeTimeout = setTimeout(function () { - if (tempStyle) { - text.style.cssText = tempStyle; - tempStyle = ''; - } - host.renderer.$isMousePressed = false; - if (host.renderer.$keepTextAreaAtCursor) - host.renderer.$moveTextAreaToCursor(); - }, 0); - } - - var onContextMenu = function(e) { - host.textInput.onContextMenu(e); - onContextMenuClose(); - }; - event.addListener(text, "mouseup", onContextMenu, host); - event.addListener(text, "mousedown", function(e) { - e.preventDefault(); - onContextMenuClose(); - }, host); - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); - event.addListener(text, "contextmenu", onContextMenu, host); - - if (isIOS) - addIosSelectionHandler(parentNode, host, text); - - function addIosSelectionHandler(parentNode, host, text) { - var typingResetTimeout = null; - var typing = false; - - text.addEventListener("keydown", function (e) { - if (typingResetTimeout) clearTimeout(typingResetTimeout); - typing = true; - }, true); - - text.addEventListener("keyup", function (e) { - typingResetTimeout = setTimeout(function () { - typing = false; - }, 100); - }, true); - var detectArrowKeys = function(e) { - if (document.activeElement !== text) return; - if (typing || inComposition || host.$mouseHandler.isMousePressed) return; - - if (copied) { - return; - } - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - - var key = null; - var modifier = 0; - if (selectionStart == 0) { - key = KEYS.up; - } else if (selectionStart == 1) { - key = KEYS.home; - } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { - key = KEYS.end; - } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { - key = KEYS.left; - modifier = MODS.option; - } else if ( - selectionStart < lastSelectionStart - || ( - selectionStart == lastSelectionStart - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd - ) - ) { - key = KEYS.left; - } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { - key = KEYS.down; - } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { - key = KEYS.right; - modifier = MODS.option; - } else if ( - selectionEnd > lastSelectionEnd - || ( - selectionEnd == lastSelectionEnd - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd - ) - ) { - key = KEYS.right; - } - - if (selectionStart !== selectionEnd) - modifier |= MODS.shift; - - if (key) { - var result = host.onCommandKey({}, modifier, key); - if (!result && host.commands) { - key = KEYS.keyCodeToString(key); - var command = host.commands.findKeyCommand(modifier, key); - if (command) - host.execCommand(command); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - resetSelection(""); - } - }; - document.addEventListener("selectionchange", detectArrowKeys); - host.on("destroy", function() { - document.removeEventListener("selectionchange", detectArrowKeys); - }); - } -}; - -exports.TextInput = TextInput; -exports.$setUserAgentForTests = function(_isMobile, _isIOS) { - isMobile = _isMobile; - isIOS = _isIOS; -}; -}); - -ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var useragent = require("../lib/useragent"); - -var DRAG_OFFSET = 0; // pixels -var SCROLL_COOLDOWN_T = 550; // milliseconds - -function DefaultHandlers(mouseHandler) { - mouseHandler.$clickSelection = null; - - var editor = mouseHandler.editor; - editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); - editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); - editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); - editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); - editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); - - var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", - "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; - - exports.forEach(function(x) { - mouseHandler[x] = this[x]; - }, this); - - mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); - mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); -} - -(function() { - - this.onMouseDown = function(ev) { - var inSelection = ev.inSelection(); - var pos = ev.getDocumentPosition(); - this.mousedownEvent = ev; - var editor = this.editor; - - var button = ev.getButton(); - if (button !== 0) { - var selectionRange = editor.getSelectionRange(); - var selectionEmpty = selectionRange.isEmpty(); - if (selectionEmpty || button == 1) - editor.selection.moveToPosition(pos); - if (button == 2) { - editor.textInput.onContextMenu(ev.domEvent); - if (!useragent.isMozilla) - ev.preventDefault(); - } - return; - } - - this.mousedownEvent.time = Date.now(); - if (inSelection && !editor.isFocused()) { - editor.focus(); - if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { - this.setState("focusWait"); - this.captureMouse(ev); - return; - } - } - - this.captureMouse(ev); - this.startSelect(pos, ev.domEvent._clicks > 1); - return ev.preventDefault(); - }; - - this.startSelect = function(pos, waitForClickSelection) { - pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); - var editor = this.editor; - if (!this.mousedownEvent) return; - if (this.mousedownEvent.getShiftKey()) - editor.selection.selectToPosition(pos); - else if (!waitForClickSelection) - editor.selection.moveToPosition(pos); - if (!waitForClickSelection) - this.select(); - if (editor.renderer.scroller.setCapture) { - editor.renderer.scroller.setCapture(); - } - editor.setStyle("ace_selecting"); - this.setState("select"); - }; - - this.select = function() { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - if (this.$clickSelection) { - var cmp = this.$clickSelection.comparePoint(cursor); - - if (cmp == -1) { - anchor = this.$clickSelection.end; - } else if (cmp == 1) { - anchor = this.$clickSelection.start; - } else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - - this.extendSelectionBy = function(unitName) { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - var range = editor.selection[unitName](cursor.row, cursor.column); - if (this.$clickSelection) { - var cmpStart = this.$clickSelection.comparePoint(range.start); - var cmpEnd = this.$clickSelection.comparePoint(range.end); - - if (cmpStart == -1 && cmpEnd <= 0) { - anchor = this.$clickSelection.end; - if (range.end.row != cursor.row || range.end.column != cursor.column) - cursor = range.start; - } else if (cmpEnd == 1 && cmpStart >= 0) { - anchor = this.$clickSelection.start; - if (range.start.row != cursor.row || range.start.column != cursor.column) - cursor = range.end; - } else if (cmpStart == -1 && cmpEnd == 1) { - cursor = range.end; - anchor = range.start; - } else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - - this.selectEnd = - this.selectAllEnd = - this.selectByWordsEnd = - this.selectByLinesEnd = function() { - this.$clickSelection = null; - this.editor.unsetStyle("ace_selecting"); - if (this.editor.renderer.scroller.releaseCapture) { - this.editor.renderer.scroller.releaseCapture(); - } - }; - - this.focusWait = function() { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - var time = Date.now(); - - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) - this.startSelect(this.mousedownEvent.getDocumentPosition()); - }; - - this.onDoubleClick = function(ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - var session = editor.session; - - var range = session.getBracketRange(pos); - if (range) { - if (range.isEmpty()) { - range.start.column--; - range.end.column++; - } - this.setState("select"); - } else { - range = editor.selection.getWordRange(pos.row, pos.column); - this.setState("selectByWords"); - } - this.$clickSelection = range; - this.select(); - }; - - this.onTripleClick = function(ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - - this.setState("selectByLines"); - var range = editor.getSelectionRange(); - if (range.isMultiLine() && range.contains(pos.row, pos.column)) { - this.$clickSelection = editor.selection.getLineRange(range.start.row); - this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; - } else { - this.$clickSelection = editor.selection.getLineRange(pos.row); - } - this.select(); - }; - - this.onQuadClick = function(ev) { - var editor = this.editor; - - editor.selectAll(); - this.$clickSelection = editor.getSelectionRange(); - this.setState("selectAll"); - }; - - this.onMouseWheel = function(ev) { - if (ev.getAccelKey()) - return; - if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { - ev.wheelX = ev.wheelY; - ev.wheelY = 0; - } - - var editor = this.editor; - - if (!this.$lastScroll) - this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; - - var prevScroll = this.$lastScroll; - var t = ev.domEvent.timeStamp; - var dt = t - prevScroll.t; - var vx = dt ? ev.wheelX / dt : prevScroll.vx; - var vy = dt ? ev.wheelY / dt : prevScroll.vy; - if (dt < SCROLL_COOLDOWN_T) { - vx = (vx + prevScroll.vx) / 2; - vy = (vy + prevScroll.vy) / 2; - } - - var direction = Math.abs(vx / vy); - - var canScroll = false; - if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) - canScroll = true; - if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) - canScroll = true; - - if (canScroll) { - prevScroll.allowed = t; - } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { - var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) - && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); - if (isSlower) { - canScroll = true; - prevScroll.allowed = t; - } - else { - prevScroll.allowed = 0; - } - } - - prevScroll.t = t; - prevScroll.vx = vx; - prevScroll.vy = vy; - - if (canScroll) { - editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); - return ev.stop(); - } - }; - -}).call(DefaultHandlers.prototype); - -exports.DefaultHandlers = DefaultHandlers; - -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} - -function calcRangeOrientation(range, cursor) { - if (range.start.row == range.end.row) - var cmp = 2 * cursor.column - range.start.column - range.end.column; - else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) - var cmp = cursor.column - 4; - else - var cmp = 2 * cursor.row - range.start.row - range.end.row; - - if (cmp < 0) - return {cursor: range.start, anchor: range.end}; - else - return {cursor: range.end, anchor: range.start}; -} - -}); - -ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -function Tooltip (parentNode) { - this.isOpen = false; - this.$element = null; - this.$parentNode = parentNode; -} - -(function() { - this.$init = function() { - this.$element = dom.createElement("div"); - this.$element.className = "ace_tooltip"; - this.$element.style.display = "none"; - this.$parentNode.appendChild(this.$element); - return this.$element; - }; - this.getElement = function() { - return this.$element || this.$init(); - }; - this.setText = function(text) { - this.getElement().textContent = text; - }; - this.setHtml = function(html) { - this.getElement().innerHTML = html; - }; - this.setPosition = function(x, y) { - this.getElement().style.left = x + "px"; - this.getElement().style.top = y + "px"; - }; - this.setClassName = function(className) { - dom.addCssClass(this.getElement(), className); - }; - this.show = function(text, x, y) { - if (text != null) - this.setText(text); - if (x != null && y != null) - this.setPosition(x, y); - if (!this.isOpen) { - this.getElement().style.display = "block"; - this.isOpen = true; - } - }; - - this.hide = function() { - if (this.isOpen) { - this.getElement().style.display = "none"; - this.isOpen = false; - } - }; - this.getHeight = function() { - return this.getElement().offsetHeight; - }; - this.getWidth = function() { - return this.getElement().offsetWidth; - }; - - this.destroy = function() { - this.isOpen = false; - if (this.$element && this.$element.parentNode) { - this.$element.parentNode.removeChild(this.$element); - } - }; - -}).call(Tooltip.prototype); - -exports.Tooltip = Tooltip; -}); - -ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"], function(require, exports, module) { -"use strict"; -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var event = require("../lib/event"); -var Tooltip = require("../tooltip").Tooltip; - -function GutterHandler(mouseHandler) { - var editor = mouseHandler.editor; - var gutter = editor.renderer.$gutterLayer; - var tooltip = new GutterTooltip(editor.container); - - mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) { - if (!editor.isFocused() || e.getButton() != 0) - return; - var gutterRegion = gutter.getRegion(e); - - if (gutterRegion == "foldWidgets") - return; - - var row = e.getDocumentPosition().row; - var selection = editor.session.selection; - - if (e.getShiftKey()) - selection.selectTo(row, 0); - else { - if (e.domEvent.detail == 2) { - editor.selectAll(); - return e.preventDefault(); - } - mouseHandler.$clickSelection = editor.selection.getLineRange(row); - } - mouseHandler.setState("selectByLines"); - mouseHandler.captureMouse(e); - return e.preventDefault(); - }); - - - var tooltipTimeout, mouseEvent, tooltipAnnotation; - - function showTooltip() { - var row = mouseEvent.getDocumentPosition().row; - var annotation = gutter.$annotations[row]; - if (!annotation) - return hideTooltip(); - - var maxRow = editor.session.getLength(); - if (row == maxRow) { - var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; - var pos = mouseEvent.$pos; - if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) - return hideTooltip(); - } - - if (tooltipAnnotation == annotation) - return; - tooltipAnnotation = annotation.text.join("
    "); - - tooltip.setHtml(tooltipAnnotation); - tooltip.show(); - editor._signal("showGutterTooltip", tooltip); - editor.on("mousewheel", hideTooltip); - - if (mouseHandler.$tooltipFollowsMouse) { - moveTooltip(mouseEvent); - } else { - var gutterElement = mouseEvent.domEvent.target; - var rect = gutterElement.getBoundingClientRect(); - var style = tooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; - } - } - - function hideTooltip() { - if (tooltipTimeout) - tooltipTimeout = clearTimeout(tooltipTimeout); - if (tooltipAnnotation) { - tooltip.hide(); - tooltipAnnotation = null; - editor._signal("hideGutterTooltip", tooltip); - editor.off("mousewheel", hideTooltip); - } - } - - function moveTooltip(e) { - tooltip.setPosition(e.x, e.y); - } - - mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) { - var target = e.domEvent.target || e.domEvent.srcElement; - if (dom.hasCssClass(target, "ace_fold-widget")) - return hideTooltip(); - - if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse) - moveTooltip(e); - - mouseEvent = e; - if (tooltipTimeout) - return; - tooltipTimeout = setTimeout(function() { - tooltipTimeout = null; - if (mouseEvent && !mouseHandler.isMousePressed) - showTooltip(); - else - hideTooltip(); - }, 50); - }); - - event.addListener(editor.renderer.$gutter, "mouseout", function(e) { - mouseEvent = null; - if (!tooltipAnnotation || tooltipTimeout) - return; - - tooltipTimeout = setTimeout(function() { - tooltipTimeout = null; - hideTooltip(); - }, 50); - }, editor); - - editor.on("changeSession", hideTooltip); -} - -function GutterTooltip(parentNode) { - Tooltip.call(this, parentNode); -} - -oop.inherits(GutterTooltip, Tooltip); - -(function(){ - this.setPosition = function(x, y) { - var windowWidth = window.innerWidth || document.documentElement.clientWidth; - var windowHeight = window.innerHeight || document.documentElement.clientHeight; - var width = this.getWidth(); - var height = this.getHeight(); - x += 15; - y += 15; - if (x + width > windowWidth) { - x -= (x + width) - windowWidth; - } - if (y + height > windowHeight) { - y -= 20 + height; - } - Tooltip.prototype.setPosition.call(this, x, y); - }; - -}).call(GutterTooltip.prototype); - - - -exports.GutterHandler = GutterHandler; - -}); - -ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var MouseEvent = exports.MouseEvent = function(domEvent, editor) { - this.domEvent = domEvent; - this.editor = editor; - - this.x = this.clientX = domEvent.clientX; - this.y = this.clientY = domEvent.clientY; - - this.$pos = null; - this.$inSelection = null; - - this.propagationStopped = false; - this.defaultPrevented = false; -}; - -(function() { - - this.stopPropagation = function() { - event.stopPropagation(this.domEvent); - this.propagationStopped = true; - }; - - this.preventDefault = function() { - event.preventDefault(this.domEvent); - this.defaultPrevented = true; - }; - - this.stop = function() { - this.stopPropagation(); - this.preventDefault(); - }; - this.getDocumentPosition = function() { - if (this.$pos) - return this.$pos; - - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); - return this.$pos; - }; - this.inSelection = function() { - if (this.$inSelection !== null) - return this.$inSelection; - - var editor = this.editor; - - - var selectionRange = editor.getSelectionRange(); - if (selectionRange.isEmpty()) - this.$inSelection = false; - else { - var pos = this.getDocumentPosition(); - this.$inSelection = selectionRange.contains(pos.row, pos.column); - } - - return this.$inSelection; - }; - this.getButton = function() { - return event.getButton(this.domEvent); - }; - this.getShiftKey = function() { - return this.domEvent.shiftKey; - }; - - this.getAccelKey = useragent.isMac - ? function() { return this.domEvent.metaKey; } - : function() { return this.domEvent.ctrlKey; }; - -}).call(MouseEvent.prototype); - -}); - -ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); - -var AUTOSCROLL_DELAY = 200; -var SCROLL_CURSOR_DELAY = 200; -var SCROLL_CURSOR_HYSTERESIS = 5; - -function DragdropHandler(mouseHandler) { - - var editor = mouseHandler.editor; - - var dragImage = dom.createElement("div"); - dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; - dragImage.textContent = "\xa0"; - - var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; - - exports.forEach(function(x) { - mouseHandler[x] = this[x]; - }, this); - editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); - - var mouseTarget = editor.container; - var dragSelectionMarker, x, y; - var timerId, range; - var dragCursor, counter = 0; - var dragOperation; - var isInternal; - var autoScrollStartTime; - var cursorMovedTime; - var cursorPointOnCaretMoved; - - this.onDragStart = function(e) { - if (this.cancelDrag || !mouseTarget.draggable) { - var self = this; - setTimeout(function(){ - self.startSelect(); - self.captureMouse(e); - }, 0); - return e.preventDefault(); - } - range = editor.getSelectionRange(); - - var dataTransfer = e.dataTransfer; - dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; - editor.container.appendChild(dragImage); - - dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); - setTimeout(function() { - editor.container.removeChild(dragImage); - }); - dataTransfer.clearData(); - dataTransfer.setData("Text", editor.session.getTextRange()); - - isInternal = true; - this.setState("drag"); - }; - - this.onDragEnd = function(e) { - mouseTarget.draggable = false; - isInternal = false; - this.setState(null); - if (!editor.getReadOnly()) { - var dropEffect = e.dataTransfer.dropEffect; - if (!dragOperation && dropEffect == "move") - editor.session.remove(editor.getSelectionRange()); - editor.$resetCursorStyle(); - } - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - }; - - this.onDragEnter = function(e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) - addDragMarker(); - counter++; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - - this.onDragOver = function(e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) { - addDragMarker(); - counter++; - } - if (onMouseMoveTimer !== null) - onMouseMoveTimer = null; - - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - - this.onDragLeave = function(e) { - counter--; - if (counter <= 0 && dragSelectionMarker) { - clearDragMarker(); - dragOperation = null; - return event.preventDefault(e); - } - }; - - this.onDrop = function(e) { - if (!dragCursor) - return; - var dataTransfer = e.dataTransfer; - if (isInternal) { - switch (dragOperation) { - case "move": - if (range.contains(dragCursor.row, dragCursor.column)) { - range = { - start: dragCursor, - end: dragCursor - }; - } else { - range = editor.moveText(range, dragCursor); - } - break; - case "copy": - range = editor.moveText(range, dragCursor, true); - break; - } - } else { - var dropData = dataTransfer.getData('Text'); - range = { - start: dragCursor, - end: editor.session.insert(dragCursor, dropData) - }; - editor.focus(); - dragOperation = null; - } - clearDragMarker(); - return event.preventDefault(e); - }; - - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); - - function scrollCursorIntoView(cursor, prevCursor) { - var now = Date.now(); - var vMovement = !prevCursor || cursor.row != prevCursor.row; - var hMovement = !prevCursor || cursor.column != prevCursor.column; - if (!cursorMovedTime || vMovement || hMovement) { - editor.moveCursorToPosition(cursor); - cursorMovedTime = now; - cursorPointOnCaretMoved = {x: x, y: y}; - } else { - var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); - if (distance > SCROLL_CURSOR_HYSTERESIS) { - cursorMovedTime = null; - } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { - editor.renderer.scrollCursorIntoView(); - cursorMovedTime = null; - } - } - } - - function autoScroll(cursor, prevCursor) { - var now = Date.now(); - var lineHeight = editor.renderer.layerConfig.lineHeight; - var characterWidth = editor.renderer.layerConfig.characterWidth; - var editorRect = editor.renderer.scroller.getBoundingClientRect(); - var offsets = { - x: { - left: x - editorRect.left, - right: editorRect.right - x - }, - y: { - top: y - editorRect.top, - bottom: editorRect.bottom - y - } - }; - var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); - var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); - var scrollCursor = {row: cursor.row, column: cursor.column}; - if (nearestXOffset / characterWidth <= 2) { - scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); - } - if (nearestYOffset / lineHeight <= 1) { - scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); - } - var vScroll = cursor.row != scrollCursor.row; - var hScroll = cursor.column != scrollCursor.column; - var vMovement = !prevCursor || cursor.row != prevCursor.row; - if (vScroll || (hScroll && !vMovement)) { - if (!autoScrollStartTime) - autoScrollStartTime = now; - else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) - editor.renderer.scrollCursorIntoView(scrollCursor); - } else { - autoScrollStartTime = null; - } - } - - function onDragInterval() { - var prevCursor = dragCursor; - dragCursor = editor.renderer.screenToTextCoordinates(x, y); - scrollCursorIntoView(dragCursor, prevCursor); - autoScroll(dragCursor, prevCursor); - } - - function addDragMarker() { - range = editor.selection.toOrientedRange(); - dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); - editor.clearSelection(); - if (editor.isFocused()) - editor.renderer.$cursorLayer.setBlinking(false); - clearInterval(timerId); - onDragInterval(); - timerId = setInterval(onDragInterval, 20); - counter = 0; - event.addListener(document, "mousemove", onMouseMove); - } - - function clearDragMarker() { - clearInterval(timerId); - editor.session.removeMarker(dragSelectionMarker); - dragSelectionMarker = null; - editor.selection.fromOrientedRange(range); - if (editor.isFocused() && !isInternal) - editor.$resetCursorStyle(); - range = null; - dragCursor = null; - counter = 0; - autoScrollStartTime = null; - cursorMovedTime = null; - event.removeListener(document, "mousemove", onMouseMove); - } - var onMouseMoveTimer = null; - function onMouseMove() { - if (onMouseMoveTimer == null) { - onMouseMoveTimer = setTimeout(function() { - if (onMouseMoveTimer != null && dragSelectionMarker) - clearDragMarker(); - }, 20); - } - } - - function canAccept(dataTransfer) { - var types = dataTransfer.types; - return !types || Array.prototype.some.call(types, function(type) { - return type == 'text/plain' || type == 'Text'; - }); - } - - function getDropEffect(e) { - var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; - var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; - - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; - var effectAllowed = "uninitialized"; - try { - effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); - } catch (e) {} - var dropEffect = "none"; - - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - else if (moveAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "move"; - else if (copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - - return dropEffect; - } -} - -(function() { - - this.dragWait = function() { - var interval = Date.now() - this.mousedownEvent.time; - if (interval > this.editor.getDragDelay()) - this.startDrag(); - }; - - this.dragWaitEnd = function() { - var target = this.editor.container; - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - this.selectEnd(); - }; - - this.dragReadyEnd = function(e) { - this.editor.$resetCursorStyle(); - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - this.dragWaitEnd(); - }; - - this.startDrag = function(){ - this.cancelDrag = false; - var editor = this.editor; - var target = editor.container; - target.draggable = true; - editor.renderer.$cursorLayer.setBlinking(false); - editor.setStyle("ace_dragging"); - var cursorStyle = useragent.isWin ? "default" : "move"; - editor.renderer.setCursorStyle(cursorStyle); - this.setState("dragReady"); - }; - - this.onMouseDrag = function(e) { - var target = this.editor.container; - if (useragent.isIE && this.state == "dragReady") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 3) - target.dragDrop(); - } - if (this.state === "dragWait") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 0) { - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - } - } - }; - - this.onMouseDown = function(e) { - if (!this.$dragEnabled) - return; - this.mousedownEvent = e; - var editor = this.editor; - - var inSelection = e.inSelection(); - var button = e.getButton(); - var clickCount = e.domEvent.detail || 1; - if (clickCount === 1 && button === 0 && inSelection) { - if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) - return; - this.mousedownEvent.time = Date.now(); - var eventTarget = e.domEvent.target || e.domEvent.srcElement; - if ("unselectable" in eventTarget) - eventTarget.unselectable = "on"; - if (editor.getDragDelay()) { - if (useragent.isWebKit) { - this.cancelDrag = true; - var mouseTarget = editor.container; - mouseTarget.draggable = true; - } - this.setState("dragWait"); - } else { - this.startDrag(); - } - this.captureMouse(e, this.onMouseDrag.bind(this)); - e.defaultPrevented = true; - } - }; - -}).call(DragdropHandler.prototype); - - -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} - -exports.DragdropHandler = DragdropHandler; - -}); - -ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var MouseEvent = require("./mouse_event").MouseEvent; -var event = require("../lib/event"); -var dom = require("../lib/dom"); - -exports.addTouchListeners = function(el, editor) { - var mode = "scroll"; - var startX; - var startY; - var touchStartT; - var lastT; - var longTouchTimer; - var animationTimer; - var animationSteps = 0; - var pos; - var clickCount = 0; - var vX = 0; - var vY = 0; - var pressed; - var contextMenu; - - function createContextMenu() { - var clipboard = window.navigator && window.navigator.clipboard; - var isOpen = false; - var updateMenu = function() { - var selected = editor.getCopyText(); - var hasUndo = editor.session.getUndoManager().hasUndo(); - contextMenu.replaceChild( - dom.buildDom(isOpen ? ["span", - !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], - selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], - selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], - clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], - hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], - ["span", { class: "ace_mobile-button", action: "find" }, "Find"], - ["span", { class: "ace_mobile-button", action: "openCommandPallete" }, "Pallete"] - ] : ["span"]), - contextMenu.firstChild - ); - }; - var handleClick = function(e) { - var action = e.target.getAttribute("action"); - - if (action == "more" || !isOpen) { - isOpen = !isOpen; - return updateMenu(); - } - if (action == "paste") { - clipboard.readText().then(function (text) { - editor.execCommand(action, text); - }); - } - else if (action) { - if (action == "cut" || action == "copy") { - if (clipboard) - clipboard.writeText(editor.getCopyText()); - else - document.execCommand("copy"); - } - editor.execCommand(action); - } - contextMenu.firstChild.style.display = "none"; - isOpen = false; - if (action != "openCommandPallete") - editor.focus(); - }; - contextMenu = dom.buildDom(["div", - { - class: "ace_mobile-menu", - ontouchstart: function(e) { - mode = "menu"; - e.stopPropagation(); - e.preventDefault(); - editor.textInput.focus(); - }, - ontouchend: function(e) { - e.stopPropagation(); - e.preventDefault(); - handleClick(e); - }, - onclick: handleClick - }, - ["span"], - ["span", { class: "ace_mobile-button", action: "more" }, "..."] - ], editor.container); - } - function showContextMenu() { - if (!contextMenu) createContextMenu(); - var cursor = editor.selection.cursor; - var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column); - var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX; - var scrollLeft = editor.renderer.scrollLeft; - var rect = editor.container.getBoundingClientRect(); - contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px"; - if (pagePos.pageX - rect.left < rect.width - 70) { - contextMenu.style.left = ""; - contextMenu.style.right = "10px"; - } else { - contextMenu.style.right = ""; - contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px"; - } - contextMenu.style.display = ""; - contextMenu.firstChild.style.display = "none"; - editor.on("input", hideContextMenu); - } - function hideContextMenu(e) { - if (contextMenu) - contextMenu.style.display = "none"; - editor.off("input", hideContextMenu); - } - - function handleLongTap() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - var range = editor.selection.getRange(); - var inSelection = range.contains(pos.row, pos.column); - if (range.isEmpty() || !inSelection) { - editor.selection.moveToPosition(pos); - editor.selection.selectWord(); - } - mode = "wait"; - showContextMenu(); - } - function switchToSelectionMode() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - editor.selection.moveToPosition(pos); - var range = clickCount >= 2 - ? editor.selection.getLineRange(pos.row) - : editor.session.getBracketRange(pos); - if (range && !range.isEmpty()) { - editor.selection.setRange(range); - } else { - editor.selection.selectWord(); - } - mode = "wait"; - } - event.addListener(el, "contextmenu", function(e) { - if (!pressed) return; - var textarea = editor.textInput.getElement(); - textarea.focus(); - }, editor); - event.addListener(el, "touchstart", function (e) { - var touches = e.touches; - if (longTouchTimer || touches.length > 1) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - touchStartT = -1; - mode = "zoom"; - return; - } - - pressed = editor.$mouseHandler.isMousePressed = true; - var h = editor.renderer.layerConfig.lineHeight; - var w = editor.renderer.layerConfig.lineHeight; - var t = e.timeStamp; - lastT = t; - var touchObj = touches[0]; - var x = touchObj.clientX; - var y = touchObj.clientY; - if (Math.abs(startX - x) + Math.abs(startY - y) > h) - touchStartT = -1; - - startX = e.clientX = x; - startY = e.clientY = y; - vX = vY = 0; - - var ev = new MouseEvent(e, editor); - pos = ev.getDocumentPosition(); - - if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { - clickCount++; - e.preventDefault(); - e.button = 0; - switchToSelectionMode(); - } else { - clickCount = 0; - var cursor = editor.selection.cursor; - var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; - - var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); - var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); - var rect = editor.renderer.scroller.getBoundingClientRect(); - var offsetTop = editor.renderer.layerConfig.offset; - var offsetLeft = editor.renderer.scrollLeft; - var weightedDistance = function(x, y) { - x = x / w; - y = y / h - 0.75; - return x * x + y * y; - }; - - if (e.clientX < rect.left) { - mode = "zoom"; - return; - } - - var diff1 = weightedDistance( - e.clientX - rect.left - cursorPos.left + offsetLeft, - e.clientY - rect.top - cursorPos.top + offsetTop - ); - var diff2 = weightedDistance( - e.clientX - rect.left - anchorPos.left + offsetLeft, - e.clientY - rect.top - anchorPos.top + offsetTop - ); - if (diff1 < 3.5 && diff2 < 3.5) - mode = diff1 > diff2 ? "cursor" : "anchor"; - - if (diff2 < 3.5) - mode = "anchor"; - else if (diff1 < 3.5) - mode = "cursor"; - else - mode = "scroll"; - longTouchTimer = setTimeout(handleLongTap, 450); - } - touchStartT = t; - }, editor); - - event.addListener(el, "touchend", function (e) { - pressed = editor.$mouseHandler.isMousePressed = false; - if (animationTimer) clearInterval(animationTimer); - if (mode == "zoom") { - mode = ""; - animationSteps = 0; - } else if (longTouchTimer) { - editor.selection.moveToPosition(pos); - animationSteps = 0; - showContextMenu(); - } else if (mode == "scroll") { - animate(); - hideContextMenu(); - } else { - showContextMenu(); - } - clearTimeout(longTouchTimer); - longTouchTimer = null; - }, editor); - event.addListener(el, "touchmove", function (e) { - if (longTouchTimer) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - } - var touches = e.touches; - if (touches.length > 1 || mode == "zoom") return; - - var touchObj = touches[0]; - - var wheelX = startX - touchObj.clientX; - var wheelY = startY - touchObj.clientY; - - if (mode == "wait") { - if (wheelX * wheelX + wheelY * wheelY > 4) - mode = "cursor"; - else - return e.preventDefault(); - } - - startX = touchObj.clientX; - startY = touchObj.clientY; - - e.clientX = touchObj.clientX; - e.clientY = touchObj.clientY; - - var t = e.timeStamp; - var dt = t - lastT; - lastT = t; - if (mode == "scroll") { - var mouseEvent = new MouseEvent(e, editor); - mouseEvent.speed = 1; - mouseEvent.wheelX = wheelX; - mouseEvent.wheelY = wheelY; - if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0; - if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0; - if (dt != 0) { - vX = wheelX / dt; - vY = wheelY / dt; - } - editor._emit("mousewheel", mouseEvent); - if (!mouseEvent.propagationStopped) { - vX = vY = 0; - } - } - else { - var ev = new MouseEvent(e, editor); - var pos = ev.getDocumentPosition(); - if (mode == "cursor") - editor.selection.moveCursorToPosition(pos); - else if (mode == "anchor") - editor.selection.setSelectionAnchor(pos.row, pos.column); - editor.renderer.scrollCursorIntoView(pos); - e.preventDefault(); - } - }, editor); - - function animate() { - animationSteps += 60; - animationTimer = setInterval(function() { - if (animationSteps-- <= 0) { - clearInterval(animationTimer); - animationTimer = null; - } - if (Math.abs(vX) < 0.01) vX = 0; - if (Math.abs(vY) < 0.01) vY = 0; - if (animationSteps < 20) vX = 0.9 * vX; - if (animationSteps < 20) vY = 0.9 * vY; - var oldScrollTop = editor.session.getScrollTop(); - editor.renderer.scrollBy(10 * vX, 10 * vY); - if (oldScrollTop == editor.session.getScrollTop()) - animationSteps = 0; - }, 10); - } -}; - -}); - -ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; -var dom = require("./dom"); - -exports.get = function (url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - callback(xhr.responseText); - } - }; - xhr.send(null); -}; - -exports.loadScript = function(path, callback) { - var head = dom.getDocumentHead(); - var s = document.createElement('script'); - - s.src = path; - head.appendChild(s); - - s.onload = s.onreadystatechange = function(_, isAbort) { - if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { - s = s.onload = s.onreadystatechange = null; - if (!isAbort) - callback(); - } - }; -}; -exports.qualifyURL = function(url) { - var a = document.createElement('a'); - a.href = url; - return a.href; -}; - -}); - -ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i 1) - base = parts[parts.length - 2]; - var path = options[component + "Path"]; - if (path == null) { - path = options.basePath; - } else if (sep == "/") { - component = sep = ""; - } - if (path && path.slice(-1) != "/") - path += "/"; - return path + component + sep + base + this.get("suffix"); -}; - -exports.setModuleUrl = function(name, subst) { - return options.$moduleUrls[name] = subst; -}; - -exports.$loading = {}; -exports.loadModule = function(moduleName, onLoad) { - var module, moduleType; - if (Array.isArray(moduleName)) { - moduleType = moduleName[0]; - moduleName = moduleName[1]; - } - - try { - module = require(moduleName); - } catch (e) {} - if (module && !exports.$loading[moduleName]) - return onLoad && onLoad(module); - - if (!exports.$loading[moduleName]) - exports.$loading[moduleName] = []; - - exports.$loading[moduleName].push(onLoad); - - if (exports.$loading[moduleName].length > 1) - return; - - var afterLoad = function() { - require([moduleName], function(module) { - exports._emit("load.module", {name: moduleName, module: module}); - var listeners = exports.$loading[moduleName]; - exports.$loading[moduleName] = null; - listeners.forEach(function(onLoad) { - onLoad && onLoad(module); - }); - }); - }; - - if (!exports.get("packaged")) - return afterLoad(); - - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); - reportErrorIfPathIsNotConfigured(); -}; - -var reportErrorIfPathIsNotConfigured = function() { - if ( - !options.basePath && !options.workerPath - && !options.modePath && !options.themePath - && !Object.keys(options.$moduleUrls).length - ) { - console.error( - "Unable to infer path to ace from script src,", - "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", - "or with webpack use ace/webpack-resolver" - ); - reportErrorIfPathIsNotConfigured = function() {}; - } -}; -init(true);function init(packaged) { - - if (!global || !global.document) - return; - - options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged); - - var scriptOptions = {}; - var scriptUrl = ""; - var currentScript = (document.currentScript || document._currentScript ); // native or polyfill - var currentDocument = currentScript && currentScript.ownerDocument || document; - - var scripts = currentDocument.getElementsByTagName("script"); - for (var i=0; i 0){ - if (action == 0x10){ - for(i = condPos; i < ix; i++){ - levels[i] = 1; - } - condPos = -1; - } else { - condPos = -1; - } - } - cond = impTab[newState][6]; - if (cond){ - if(condPos == -1){ - condPos = ix; - } - }else{ - if (condPos > -1){ - for(i = condPos; i < ix; i++){ - levels[i] = newLevel; - } - condPos = -1; - } - } - if (charTypes[ix] == B){ - levels[ix] = 0; - } - hiLevel |= newLevel; - } - if (hasUBAT_S){ - for(i = 0; i < len; i++){ - if(charTypes[i] == S){ - levels[i] = dir; - for(var j = i - 1; j >= 0; j--){ - if(charTypes[j] == WS){ - levels[j] = dir; - }else{ - break; - } - } - } - } - } -} - -function _invertLevel(lev, levels, _array) { - if (hiLevel < lev){ - return; - } - if (lev == 1 && dir == RTL && !hasUBAT_B){ - _array.reverse(); - return; - } - var len = _array.length, start = 0, end, lo, hi, tmp; - while(start < len){ - if (levels[start] >= lev){ - end = start + 1; - while(end < len && levels[end] >= lev){ - end++; - } - for(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){ - tmp = _array[lo]; - _array[lo] = _array[hi]; - _array[hi] = tmp; - } - start = end; - } - start++; - } -} - -function _getCharClass(chars, types, classes, ix) { - var cType = types[ix], wType, nType, len, i; - switch(cType){ - case L: - case R: - lastArabic = false; - case ON: - case AN: - return cType; - case EN: - return lastArabic ? AN : EN; - case AL: - lastArabic = true; - hasUBAT_AL = true; - return R; - case WS: - return ON; - case CS: - if (ix < 1 || (ix + 1) >= types.length || - ((wType = classes[ix - 1]) != EN && wType != AN) || - ((nType = types[ix + 1]) != EN && nType != AN)){ - return ON; - } - if (lastArabic){nType = AN;} - return nType == wType ? nType : ON; - case ES: - wType = ix > 0 ? classes[ix - 1] : B; - if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){ - return EN; - } - return ON; - case ET: - if (ix > 0 && classes[ix - 1] == EN){ - return EN; - } - if (lastArabic){ - return ON; - } - i = ix + 1; - len = types.length; - while (i < len && types[i] == ET){ - i++; - } - if (i < len && types[i] == EN){ - return EN; - } - return ON; - case NSM: - len = types.length; - i = ix + 1; - while (i < len && types[i] == NSM){ - i++; - } - if (i < len){ - var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; - - wType = types[i]; - if (rtlCandidate && (wType == R || wType == AL)){ - return R; - } - } - - if (ix < 1 || (wType = types[ix - 1]) == B){ - return ON; - } - return classes[ix - 1]; - case B: - lastArabic = false; - hasUBAT_B = true; - return dir; - case S: - hasUBAT_S = true; - return ON; - case LRE: - case RLE: - case LRO: - case RLO: - case PDF: - lastArabic = false; - case BN: - return ON; - } -} - -function _getCharacterType( ch ) { - var uc = ch.charCodeAt(0), hi = uc >> 8; - - if (hi == 0) { - return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); - } else if (hi == 5) { - return (/[\u0591-\u05f4]/.test(ch) ? R : L); - } else if (hi == 6) { - if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) - return NSM; - else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) - return AN; - else if (uc == 0x066A) - return ET; - else if (/[\u06f0-\u06f9]/.test(ch)) - return EN; - else - return AL; - } else if (hi == 0x20 && uc <= 0x205F) { - return UnicodeTBL20[uc & 0xFF]; - } else if (hi == 0xFE) { - return (uc >= 0xFE70 ? AL : ON); - } - return ON; -} - -function _isArabicDiacritics( ch ) { - return (ch >= '\u064b' && ch <= '\u0655'); -} -exports.L = L; -exports.R = R; -exports.EN = EN; -exports.ON_R = 3; -exports.AN = 4; -exports.R_H = 5; -exports.B = 6; -exports.RLE = 7; - -exports.DOT = "\xB7"; -exports.doBidiReorder = function(text, textCharTypes, isRtl) { - if (text.length < 2) - return {}; - - var chars = text.split(""), logicalFromVisual = new Array(chars.length), - bidiLevels = new Array(chars.length), levels = []; - - dir = isRtl ? RTL : LTR; - - _computeLevels(chars, levels, chars.length, textCharTypes); - - for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++); - - _invertLevel(2, levels, logicalFromVisual); - _invertLevel(1, levels, logicalFromVisual); - - for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width - if (textCharTypes[i] === AN) { - levels[i] = exports.AN; - } else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) - || textCharTypes[i] === ON || textCharTypes[i] === BN)) { - levels[i] = exports.ON_R; - } else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { - levels[i - 1] = levels[i] = exports.R_H; - i++; - } - } - if (chars[chars.length - 1] === exports.DOT) - levels[chars.length - 1] = exports.B; - - if (chars[0] === '\u202B') - levels[0] = exports.RLE; - - for (var i = 0; i < logicalFromVisual.length; i++) { - bidiLevels[i] = levels[logicalFromVisual[i]]; - } - - return {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels}; -}; -exports.hasBidiCharacters = function(text, textCharTypes){ - var ret = false; - for (var i = 0; i < text.length; i++){ - textCharTypes[i] = _getCharacterType(text.charAt(i)); - if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) - ret = true; - } - return ret; -}; -exports.getVisualFromLogicalIdx = function(logIdx, rowMap) { - for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { - if (rowMap.logicalFromVisual[i] == logIdx) - return i; - } - return 0; -}; - -}); - -ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var bidiUtil = require("./lib/bidiutil"); -var lang = require("./lib/lang"); -var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; -var BidiHandler = function(session) { - this.session = session; - this.bidiMap = {}; - this.currentRow = null; - this.bidiUtil = bidiUtil; - this.charWidths = []; - this.EOL = "\xAC"; - this.showInvisibles = true; - this.isRtlDir = false; - this.$isRtl = false; - this.line = ""; - this.wrapIndent = 0; - this.EOF = "\xB6"; - this.RLE = "\u202B"; - this.contentWidth = 0; - this.fontMetrics = null; - this.rtlLineOffset = 0; - this.wrapOffset = 0; - this.isMoveLeftOperation = false; - this.seenBidi = bidiRE.test(session.getValue()); -}; - -(function() { - this.isBidiRow = function(screenRow, docRow, splitIndex) { - if (!this.seenBidi) - return false; - if (screenRow !== this.currentRow) { - this.currentRow = screenRow; - this.updateRowLine(docRow, splitIndex); - this.updateBidiMap(); - } - return this.bidiMap.bidiLevels; - }; - - this.onChange = function(delta) { - if (!this.seenBidi) { - if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { - this.seenBidi = true; - this.currentRow = null; - } - } - else { - this.currentRow = null; - } - }; - - this.getDocumentRow = function() { - var docRow = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); - if (index >= 0) - docRow = this.session.$docRowCache[index]; - } - - return docRow; - }; - - this.getSplitIndex = function() { - var splitIndex = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); - while (this.currentRow - splitIndex > 0) { - currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); - if (currentIndex !== prevIndex) - break; - - prevIndex = currentIndex; - splitIndex++; - } - } else { - splitIndex = this.currentRow; - } - - return splitIndex; - }; - - this.updateRowLine = function(docRow, splitIndex) { - if (docRow === undefined) - docRow = this.getDocumentRow(); - - var isLastRow = (docRow === this.session.getLength() - 1), - endOfLine = isLastRow ? this.EOF : this.EOL; - - this.wrapIndent = 0; - this.line = this.session.getLine(docRow); - this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; - if (this.session.$useWrapMode) { - var splits = this.session.$wrapData[docRow]; - if (splits) { - if (splitIndex === undefined) - splitIndex = this.getSplitIndex(); - - if(splitIndex > 0 && splits.length) { - this.wrapIndent = splits.indent; - this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; - this.line = (splitIndex < splits.length) ? - this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : - this.line.substring(splits[splits.length - 1]); - } else { - this.line = this.line.substring(0, splits[splitIndex]); - } - } - if (splitIndex == splits.length) - this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; - } else { - this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; - } - var session = this.session, shift = 0, size; - this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function(ch, i){ - if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { - size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; - shift += size - 1; - return lang.stringRepeat(bidiUtil.DOT, size); - } - return ch; - }); - - if (this.isRtlDir) { - this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; - this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; - } - }; - - this.updateBidiMap = function() { - var textCharTypes = []; - if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { - this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); - } else { - this.bidiMap = {}; - } - }; - this.markAsDirty = function() { - this.currentRow = null; - }; - this.updateCharacterWidths = function(fontMetrics) { - if (this.characterWidth === fontMetrics.$characterSize.width) - return; - - this.fontMetrics = fontMetrics; - var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; - var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); - - this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; - this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; - this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; - this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; - - this.currentRow = null; - }; - - this.setShowInvisibles = function(showInvisibles) { - this.showInvisibles = showInvisibles; - this.currentRow = null; - }; - - this.setEolChar = function(eolChar) { - this.EOL = eolChar; - }; - - this.setContentWidth = function(width) { - this.contentWidth = width; - }; - - this.isRtlLine = function(row) { - if (this.$isRtl) return true; - if (row != undefined) - return (this.session.getLine(row).charAt(0) == this.RLE); - else - return this.isRtlDir; - }; - - this.setRtlDirection = function(editor, isRtlDir) { - var cursor = editor.getCursorPosition(); - for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { - if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) - editor.session.doc.removeInLine(row, 0, 1); - else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) - editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE); - } - }; - this.getPosLeft = function(col) { - col -= this.wrapIndent; - var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; - var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; - var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), - levels = this.bidiMap.bidiLevels, left = 0; - - if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) - visualIdx++; - - for (var i = 0; i < visualIdx; i++) { - left += this.charWidths[levels[i]]; - } - - if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) - left += this.charWidths[levels[visualIdx]]; - - if (this.wrapIndent) - left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - - if (this.isRtlDir) - left += this.rtlLineOffset; - - return left; - }; - this.getSelections = function(startCol, endCol) { - var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, - selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, - isSelected = false, isSelectedPrev = false, selectionStart = 0; - - if (this.wrapIndent) - offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - - for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { - logIdx = map.logicalFromVisual[visIdx]; - level = levels[visIdx]; - isSelected = (logIdx >= selColMin) && (logIdx < selColMax); - if (isSelected && !isSelectedPrev) { - selectionStart = offset; - } else if (!isSelected && isSelectedPrev) { - selections.push({left: selectionStart, width: offset - selectionStart}); - } - offset += this.charWidths[level]; - isSelectedPrev = isSelected; - } - - if (isSelected && (visIdx === levels.length)) { - selections.push({left: selectionStart, width: offset - selectionStart}); - } - - if(this.isRtlDir) { - for (var i = 0; i < selections.length; i++) { - selections[i].left += this.rtlLineOffset; - } - } - return selections; - }; - this.offsetToCol = function(posX) { - if(this.isRtlDir) - posX -= this.rtlLineOffset; - - var logicalIdx = 0, posX = Math.max(posX, 0), - offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, - charWidth = this.charWidths[levels[visualIdx]]; - - if (this.wrapIndent) - posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - - while(posX > offset + charWidth/2) { - offset += charWidth; - if(visualIdx === levels.length - 1) { - charWidth = 0; - break; - } - charWidth = this.charWidths[levels[++visualIdx]]; - } - - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){ - if(posX < offset) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - - } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){ - logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] - : this.bidiMap.logicalFromVisual[visualIdx - 1]); - - } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) - || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){ - logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; - } else { - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - } - - if (logicalIdx === 0 && this.isRtlDir) - logicalIdx++; - - return (logicalIdx + this.wrapIndent); - }; - -}).call(BidiHandler.prototype); - -exports.BidiHandler = BidiHandler; -}); - -ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Selection = function(session) { - this.session = session; - this.doc = session.getDocument(); - - this.clearSelection(); - this.cursor = this.lead = this.doc.createAnchor(0, 0); - this.anchor = this.doc.createAnchor(0, 0); - this.$silent = false; - - var self = this; - this.cursor.on("change", function(e) { - self.$cursorChanged = true; - if (!self.$silent) - self._emit("changeCursor"); - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) - self.$desiredColumn = null; - }); - - this.anchor.on("change", function() { - self.$anchorChanged = true; - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - }); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.isEmpty = function() { - return this.$isEmpty || ( - this.anchor.row == this.lead.row && - this.anchor.column == this.lead.column - ); - }; - this.isMultiLine = function() { - return !this.$isEmpty && this.anchor.row != this.cursor.row; - }; - this.getCursor = function() { - return this.lead.getPosition(); - }; - this.setSelectionAnchor = function(row, column) { - this.$isEmpty = false; - this.anchor.setPosition(row, column); - }; - this.getAnchor = - this.getSelectionAnchor = function() { - if (this.$isEmpty) - return this.getSelectionLead(); - - return this.anchor.getPosition(); - }; - this.getSelectionLead = function() { - return this.lead.getPosition(); - }; - this.isBackwards = function() { - var anchor = this.anchor; - var lead = this.lead; - return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); - }; - this.getRange = function() { - var anchor = this.anchor; - var lead = this.lead; - - if (this.$isEmpty) - return Range.fromPoints(lead, lead); - - return this.isBackwards() - ? Range.fromPoints(lead, anchor) - : Range.fromPoints(anchor, lead); - }; - this.clearSelection = function() { - if (!this.$isEmpty) { - this.$isEmpty = true; - this._emit("changeSelection"); - } - }; - this.selectAll = function() { - this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); - }; - this.setRange = - this.setSelectionRange = function(range, reverse) { - var start = reverse ? range.end : range.start; - var end = reverse ? range.start : range.end; - this.$setSelection(start.row, start.column, end.row, end.column); - }; - - this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) { - if (this.$silent) - return; - var wasEmpty = this.$isEmpty; - var wasMultiselect = this.inMultiSelectMode; - this.$silent = true; - this.$cursorChanged = this.$anchorChanged = false; - this.anchor.setPosition(anchorRow, anchorColumn); - this.cursor.setPosition(cursorRow, cursorColumn); - this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); - this.$silent = false; - if (this.$cursorChanged) - this._emit("changeCursor"); - if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) - this._emit("changeSelection"); - }; - - this.$moveSelection = function(mover) { - var lead = this.lead; - if (this.$isEmpty) - this.setSelectionAnchor(lead.row, lead.column); - - mover.call(this); - }; - this.selectTo = function(row, column) { - this.$moveSelection(function() { - this.moveCursorTo(row, column); - }); - }; - this.selectToPosition = function(pos) { - this.$moveSelection(function() { - this.moveCursorToPosition(pos); - }); - }; - this.moveTo = function(row, column) { - this.clearSelection(); - this.moveCursorTo(row, column); - }; - this.moveToPosition = function(pos) { - this.clearSelection(); - this.moveCursorToPosition(pos); - }; - this.selectUp = function() { - this.$moveSelection(this.moveCursorUp); - }; - this.selectDown = function() { - this.$moveSelection(this.moveCursorDown); - }; - this.selectRight = function() { - this.$moveSelection(this.moveCursorRight); - }; - this.selectLeft = function() { - this.$moveSelection(this.moveCursorLeft); - }; - this.selectLineStart = function() { - this.$moveSelection(this.moveCursorLineStart); - }; - this.selectLineEnd = function() { - this.$moveSelection(this.moveCursorLineEnd); - }; - this.selectFileEnd = function() { - this.$moveSelection(this.moveCursorFileEnd); - }; - this.selectFileStart = function() { - this.$moveSelection(this.moveCursorFileStart); - }; - this.selectWordRight = function() { - this.$moveSelection(this.moveCursorWordRight); - }; - this.selectWordLeft = function() { - this.$moveSelection(this.moveCursorWordLeft); - }; - this.getWordRange = function(row, column) { - if (typeof column == "undefined") { - var cursor = row || this.lead; - row = cursor.row; - column = cursor.column; - } - return this.session.getWordRange(row, column); - }; - this.selectWord = function() { - this.setSelectionRange(this.getWordRange()); - }; - this.selectAWord = function() { - var cursor = this.getCursor(); - var range = this.session.getAWordRange(cursor.row, cursor.column); - this.setSelectionRange(range); - }; - - this.getLineRange = function(row, excludeLastChar) { - var rowStart = typeof row == "number" ? row : this.lead.row; - var rowEnd; - - var foldLine = this.session.getFoldLine(rowStart); - if (foldLine) { - rowStart = foldLine.start.row; - rowEnd = foldLine.end.row; - } else { - rowEnd = rowStart; - } - if (excludeLastChar === true) - return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); - else - return new Range(rowStart, 0, rowEnd + 1, 0); - }; - this.selectLine = function() { - this.setSelectionRange(this.getLineRange()); - }; - this.moveCursorUp = function() { - this.moveCursorBy(-1, 0); - }; - this.moveCursorDown = function() { - this.moveCursorBy(1, 0); - }; - this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) { - var start = cursor.column; - var end = cursor.column + tabSize; - - if (direction < 0) { - start = cursor.column - tabSize; - end = cursor.column; - } - return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length-1 == tabSize; - }; - this.moveCursorLeft = function() { - var cursor = this.lead.getPosition(), - fold; - - if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - } else if (cursor.column === 0) { - if (cursor.row > 0) { - this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); - } - } - else { - var tabSize = this.session.getTabSize(); - if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, -tabSize); - } else { - this.moveCursorBy(0, -1); - } - } - }; - this.moveCursorRight = function() { - var cursor = this.lead.getPosition(), - fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { - this.moveCursorTo(fold.end.row, fold.end.column); - } - else if (this.lead.column == this.doc.getLine(this.lead.row).length) { - if (this.lead.row < this.doc.getLength() - 1) { - this.moveCursorTo(this.lead.row + 1, 0); - } - } - else { - var tabSize = this.session.getTabSize(); - var cursor = this.lead; - if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, tabSize); - } else { - this.moveCursorBy(0, 1); - } - } - }; - this.moveCursorLineStart = function() { - var row = this.lead.row; - var column = this.lead.column; - var screenRow = this.session.documentToScreenRow(row, column); - var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); - var beforeCursor = this.session.getDisplayLine( - row, null, firstColumnPosition.row, - firstColumnPosition.column - ); - - var leadingSpace = beforeCursor.match(/^\s*/); - if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) - firstColumnPosition.column += leadingSpace[0].length; - this.moveCursorToPosition(firstColumnPosition); - }; - this.moveCursorLineEnd = function() { - var lead = this.lead; - var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); - if (this.lead.column == lineEnd.column) { - var line = this.session.getLine(lineEnd.row); - if (lineEnd.column == line.length) { - var textEnd = line.search(/\s+$/); - if (textEnd > 0) - lineEnd.column = textEnd; - } - } - - this.moveCursorTo(lineEnd.row, lineEnd.column); - }; - this.moveCursorFileEnd = function() { - var row = this.doc.getLength() - 1; - var column = this.doc.getLine(row).length; - this.moveCursorTo(row, column); - }; - this.moveCursorFileStart = function() { - this.moveCursorTo(0, 0); - }; - this.moveCursorLongWordRight = function() { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - this.moveCursorTo(fold.end.row, fold.end.column); - return; - } - if (this.session.nonTokenRe.exec(rightOfCursor)) { - column += this.session.nonTokenRe.lastIndex; - this.session.nonTokenRe.lastIndex = 0; - rightOfCursor = line.substring(column); - } - if (column >= line.length) { - this.moveCursorTo(row, line.length); - this.moveCursorRight(); - if (row < this.doc.getLength() - 1) - this.moveCursorWordRight(); - return; - } - if (this.session.tokenRe.exec(rightOfCursor)) { - column += this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - - this.moveCursorTo(row, column); - }; - this.moveCursorLongWordLeft = function() { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - return; - } - - var str = this.session.getFoldStringAt(row, column, -1); - if (str == null) { - str = this.doc.getLine(row).substring(0, column); - } - - var leftOfCursor = lang.stringReverse(str); - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - if (this.session.nonTokenRe.exec(leftOfCursor)) { - column -= this.session.nonTokenRe.lastIndex; - leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); - this.session.nonTokenRe.lastIndex = 0; - } - if (column <= 0) { - this.moveCursorTo(row, 0); - this.moveCursorLeft(); - if (row > 0) - this.moveCursorWordLeft(); - return; - } - if (this.session.tokenRe.exec(leftOfCursor)) { - column -= this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - - this.moveCursorTo(row, column); - }; - - this.$shortWordEndIndex = function(rightOfCursor) { - var index = 0, ch; - var whitespaceRe = /\s/; - var tokenRe = this.session.tokenRe; - - tokenRe.lastIndex = 0; - if (this.session.tokenRe.exec(rightOfCursor)) { - index = this.session.tokenRe.lastIndex; - } else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; - - if (index < 1) { - tokenRe.lastIndex = 0; - while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { - tokenRe.lastIndex = 0; - index ++; - if (whitespaceRe.test(ch)) { - if (index > 2) { - index--; - break; - } else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; - if (index > 2) - break; - } - } - } - } - } - tokenRe.lastIndex = 0; - - return index; - }; - - this.moveCursorShortWordRight = function() { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - - var fold = this.session.getFoldAt(row, column, 1); - if (fold) - return this.moveCursorTo(fold.end.row, fold.end.column); - - if (column == line.length) { - var l = this.doc.getLength(); - do { - row++; - rightOfCursor = this.doc.getLine(row); - } while (row < l && /^\s*$/.test(rightOfCursor)); - - if (!/^\s+/.test(rightOfCursor)) - rightOfCursor = ""; - column = 0; - } - - var index = this.$shortWordEndIndex(rightOfCursor); - - this.moveCursorTo(row, column + index); - }; - - this.moveCursorShortWordLeft = function() { - var row = this.lead.row; - var column = this.lead.column; - - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) - return this.moveCursorTo(fold.start.row, fold.start.column); - - var line = this.session.getLine(row).substring(0, column); - if (column === 0) { - do { - row--; - line = this.doc.getLine(row); - } while (row > 0 && /^\s*$/.test(line)); - - column = line.length; - if (!/\s+$/.test(line)) - line = ""; - } - - var leftOfCursor = lang.stringReverse(line); - var index = this.$shortWordEndIndex(leftOfCursor); - - return this.moveCursorTo(row, column - index); - }; - - this.moveCursorWordRight = function() { - if (this.session.$selectLongWords) - this.moveCursorLongWordRight(); - else - this.moveCursorShortWordRight(); - }; - - this.moveCursorWordLeft = function() { - if (this.session.$selectLongWords) - this.moveCursorLongWordLeft(); - else - this.moveCursorShortWordLeft(); - }; - this.moveCursorBy = function(rows, chars) { - var screenPos = this.session.documentToScreenPosition( - this.lead.row, - this.lead.column - ); - - var offsetX; - - if (chars === 0) { - if (rows !== 0) { - if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { - offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); - screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); - } else { - offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; - } - } - - if (this.$desiredColumn) - screenPos.column = this.$desiredColumn; - else - this.$desiredColumn = screenPos.column; - } - - if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { - var widget = this.session.lineWidgets[this.lead.row]; - if (rows < 0) - rows -= widget.rowsAbove || 0; - else if (rows > 0) - rows += widget.rowCount - (widget.rowsAbove || 0); - } - - var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); - - if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { - - } - this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); - }; - this.moveCursorToPosition = function(position) { - this.moveCursorTo(position.row, position.column); - }; - this.moveCursorTo = function(row, column, keepDesiredColumn) { - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - row = fold.start.row; - column = fold.start.column; - } - - this.$keepDesiredColumnOnChange = true; - var line = this.session.getLine(row); - if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { - if (this.lead.row == row && this.lead.column == column + 1) - column = column - 1; - else - column = column + 1; - } - this.lead.setPosition(row, column); - this.$keepDesiredColumnOnChange = false; - - if (!keepDesiredColumn) - this.$desiredColumn = null; - }; - this.moveCursorToScreen = function(row, column, keepDesiredColumn) { - var pos = this.session.screenToDocumentPosition(row, column); - this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); - }; - this.detach = function() { - this.lead.detach(); - this.anchor.detach(); - }; - - this.fromOrientedRange = function(range) { - this.setSelectionRange(range, range.cursor == range.start); - this.$desiredColumn = range.desiredColumn || this.$desiredColumn; - }; - - this.toOrientedRange = function(range) { - var r = this.getRange(); - if (range) { - range.start.column = r.start.column; - range.start.row = r.start.row; - range.end.column = r.end.column; - range.end.row = r.end.row; - } else { - range = r; - } - - range.cursor = this.isBackwards() ? range.start : range.end; - range.desiredColumn = this.$desiredColumn; - return range; - }; - this.getRangeOfMovements = function(func) { - var start = this.getCursor(); - try { - func(this); - var end = this.getCursor(); - return Range.fromPoints(start, end); - } catch(e) { - return Range.fromPoints(start, start); - } finally { - this.moveCursorToPosition(start); - } - }; - - this.toJSON = function() { - if (this.rangeCount) { - var data = this.ranges.map(function(r) { - var r1 = r.clone(); - r1.isBackwards = r.cursor == r.start; - return r1; - }); - } else { - var data = this.getRange(); - data.isBackwards = this.isBackwards(); - } - return data; - }; - - this.fromJSON = function(data) { - if (data.start == undefined) { - if (this.rangeList && data.length > 1) { - this.toSingleRange(data[0]); - for (var i = data.length; i--; ) { - var r = Range.fromPoints(data[i].start, data[i].end); - if (data[i].isBackwards) - r.cursor = r.start; - this.addRange(r, true); - } - return; - } else { - data = data[0]; - } - } - if (this.rangeList) - this.toSingleRange(data); - this.setSelectionRange(data, data.isBackwards); - }; - - this.isEqual = function(data) { - if ((data.length || this.rangeCount) && data.length != this.rangeCount) - return false; - if (!data.length || !this.ranges) - return this.getRange().isEqual(data); - - for (var i = this.ranges.length; i--; ) { - if (!this.ranges[i].isEqual(data[i])) - return false; - } - return true; - }; - -}).call(Selection.prototype); - -exports.Selection = Selection; -}); - -ace.define("ace/tokenizer",["require","exports","module","ace/config"], function(require, exports, module) { -"use strict"; - -var config = require("./config"); -var MAX_TOKEN_COUNT = 2000; -var Tokenizer = function(rules) { - this.states = rules; - - this.regExps = {}; - this.matchMappings = {}; - for (var key in this.states) { - var state = this.states[key]; - var ruleRegExps = []; - var matchTotal = 0; - var mapping = this.matchMappings[key] = {defaultToken: "text"}; - var flag = "g"; - - var splitterRurles = []; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.defaultToken) - mapping.defaultToken = rule.defaultToken; - if (rule.caseInsensitive) - flag = "gi"; - if (rule.regex == null) - continue; - - if (rule.regex instanceof RegExp) - rule.regex = rule.regex.toString().slice(1, -1); - var adjustedregex = rule.regex; - var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; - if (Array.isArray(rule.token)) { - if (rule.token.length == 1 || matchcount == 1) { - rule.token = rule.token[0]; - } else if (matchcount - 1 != rule.token.length) { - this.reportError("number of classes and regexp groups doesn't match", { - rule: rule, - groupCount: matchcount - 1 - }); - rule.token = rule.token[0]; - } else { - rule.tokenArray = rule.token; - rule.token = null; - rule.onMatch = this.$arrayTokens; - } - } else if (typeof rule.token == "function" && !rule.onMatch) { - if (matchcount > 1) - rule.onMatch = this.$applyToken; - else - rule.onMatch = rule.token; - } - - if (matchcount > 1) { - if (/\\\d/.test(rule.regex)) { - adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) { - return "\\" + (parseInt(digit, 10) + matchTotal + 1); - }); - } else { - matchcount = 1; - adjustedregex = this.removeCapturingGroups(rule.regex); - } - if (!rule.splitRegex && typeof rule.token != "string") - splitterRurles.push(rule); // flag will be known only at the very end - } - - mapping[matchTotal] = i; - matchTotal += matchcount; - - ruleRegExps.push(adjustedregex); - if (!rule.onMatch) - rule.onMatch = null; - } - - if (!ruleRegExps.length) { - mapping[0] = 0; - ruleRegExps.push("$"); - } - - splitterRurles.forEach(function(rule) { - rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); - }, this); - - this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); - } -}; - -(function() { - this.$setMaxTokenCount = function(m) { - MAX_TOKEN_COUNT = m | 0; - }; - - this.$applyToken = function(str) { - var values = this.splitRegex.exec(str).slice(1); - var types = this.token.apply(this, values); - if (typeof types === "string") - return [{type: types, value: str}]; - - var tokens = []; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i]) - tokens[tokens.length] = { - type: types[i], - value: values[i] - }; - } - return tokens; - }; - - this.$arrayTokens = function(str) { - if (!str) - return []; - var values = this.splitRegex.exec(str); - if (!values) - return "text"; - var tokens = []; - var types = this.tokenArray; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i + 1]) - tokens[tokens.length] = { - type: types[i], - value: values[i + 1] - }; - } - return tokens; - }; - - this.removeCapturingGroups = function(src) { - var r = src.replace( - /\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, - function(x, y) {return y ? "(?:" : x;} - ); - return r; - }; - - this.createSplitterRegexp = function(src, flag) { - if (src.indexOf("(?=") != -1) { - var stack = 0; - var inChClass = false; - var lastCapture = {}; - src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function( - m, esc, parenOpen, parenClose, square, index - ) { - if (inChClass) { - inChClass = square != "]"; - } else if (square) { - inChClass = true; - } else if (parenClose) { - if (stack == lastCapture.stack) { - lastCapture.end = index+1; - lastCapture.stack = -1; - } - stack--; - } else if (parenOpen) { - stack++; - if (parenOpen.length != 1) { - lastCapture.stack = stack; - lastCapture.start = index; - } - } - return m; - }); - - if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) - src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); - } - if (src.charAt(0) != "^") src = "^" + src; - if (src.charAt(src.length - 1) != "$") src += "$"; - - return new RegExp(src, (flag||"").replace("g", "")); - }; - this.getLineTokens = function(line, startState) { - if (startState && typeof startState != "string") { - var stack = startState.slice(0); - startState = stack[0]; - if (startState === "#tmp") { - stack.shift(); - startState = stack.shift(); - } - } else - var stack = []; - - var currentState = startState || "start"; - var state = this.states[currentState]; - if (!state) { - currentState = "start"; - state = this.states[currentState]; - } - var mapping = this.matchMappings[currentState]; - var re = this.regExps[currentState]; - re.lastIndex = 0; - - var match, tokens = []; - var lastIndex = 0; - var matchAttempts = 0; - - var token = {type: null, value: ""}; - - while (match = re.exec(line)) { - var type = mapping.defaultToken; - var rule = null; - var value = match[0]; - var index = re.lastIndex; - - if (index - value.length > lastIndex) { - var skipped = line.substring(lastIndex, index - value.length); - if (token.type == type) { - token.value += skipped; - } else { - if (token.type) - tokens.push(token); - token = {type: type, value: skipped}; - } - } - - for (var i = 0; i < match.length-2; i++) { - if (match[i + 1] === undefined) - continue; - - rule = state[mapping[i]]; - - if (rule.onMatch) - type = rule.onMatch(value, currentState, stack, line); - else - type = rule.token; - - if (rule.next) { - if (typeof rule.next == "string") { - currentState = rule.next; - } else { - currentState = rule.next(currentState, stack); - } - - state = this.states[currentState]; - if (!state) { - this.reportError("state doesn't exist", currentState); - currentState = "start"; - state = this.states[currentState]; - } - mapping = this.matchMappings[currentState]; - lastIndex = index; - re = this.regExps[currentState]; - re.lastIndex = index; - } - if (rule.consumeLineEnd) - lastIndex = index; - break; - } - - if (value) { - if (typeof type === "string") { - if ((!rule || rule.merge !== false) && token.type === type) { - token.value += value; - } else { - if (token.type) - tokens.push(token); - token = {type: type, value: value}; - } - } else if (type) { - if (token.type) - tokens.push(token); - token = {type: null, value: ""}; - for (var i = 0; i < type.length; i++) - tokens.push(type[i]); - } - } - - if (lastIndex == line.length) - break; - - lastIndex = index; - - if (matchAttempts++ > MAX_TOKEN_COUNT) { - if (matchAttempts > 2 * line.length) { - this.reportError("infinite loop with in ace tokenizer", { - startState: startState, - line: line - }); - } - while (lastIndex < line.length) { - if (token.type) - tokens.push(token); - token = { - value: line.substring(lastIndex, lastIndex += 500), - type: "overflow" - }; - } - currentState = "start"; - stack = []; - break; - } - } - - if (token.type) - tokens.push(token); - - if (stack.length > 1) { - if (stack[0] !== currentState) - stack.unshift("#tmp", currentState); - } - return { - tokens : tokens, - state : stack.length ? stack : currentState - }; - }; - - this.reportError = config.reportError; - -}).call(Tokenizer.prototype); - -exports.Tokenizer = Tokenizer; -}); - -ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var lang = require("../lib/lang"); - -var TextHighlightRules = function() { - - this.$rules = { - "start" : [{ - token : "empty_line", - regex : '^$' - }, { - defaultToken : "text" - }] - }; -}; - -(function() { - - this.addRules = function(rules, prefix) { - if (!prefix) { - for (var key in rules) - this.$rules[key] = rules[key]; - return; - } - for (var key in rules) { - var state = rules[key]; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.next || rule.onMatch) { - if (typeof rule.next == "string") { - if (rule.next.indexOf(prefix) !== 0) - rule.next = prefix + rule.next; - } - if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) - rule.nextState = prefix + rule.nextState; - } - } - this.$rules[prefix + key] = state; - } - }; - - this.getRules = function() { - return this.$rules; - }; - - this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { - var embedRules = typeof HighlightRules == "function" - ? new HighlightRules().getRules() - : HighlightRules; - if (states) { - for (var i = 0; i < states.length; i++) - states[i] = prefix + states[i]; - } else { - states = []; - for (var key in embedRules) - states.push(prefix + key); - } - - this.addRules(embedRules, prefix); - - if (escapeRules) { - var addRules = Array.prototype[append ? "push" : "unshift"]; - for (var i = 0; i < states.length; i++) - addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules)); - } - - if (!this.$embeds) - this.$embeds = []; - this.$embeds.push(prefix); - }; - - this.getEmbeds = function() { - return this.$embeds; - }; - - var pushState = function(currentState, stack) { - if (currentState != "start" || stack.length) - stack.unshift(this.nextState, currentState); - return this.nextState; - }; - var popState = function(currentState, stack) { - stack.shift(); - return stack.shift() || "start"; - }; - - this.normalizeRules = function() { - var id = 0; - var rules = this.$rules; - function processState(key) { - var state = rules[key]; - state.processed = true; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - var toInsert = null; - if (Array.isArray(rule)) { - toInsert = rule; - rule = {}; - } - if (!rule.regex && rule.start) { - rule.regex = rule.start; - if (!rule.next) - rule.next = []; - rule.next.push({ - defaultToken: rule.token - }, { - token: rule.token + ".end", - regex: rule.end || rule.start, - next: "pop" - }); - rule.token = rule.token + ".start"; - rule.push = true; - } - var next = rule.next || rule.push; - if (next && Array.isArray(next)) { - var stateName = rule.stateName; - if (!stateName) { - stateName = rule.token; - if (typeof stateName != "string") - stateName = stateName[0] || ""; - if (rules[stateName]) - stateName += id++; - } - rules[stateName] = next; - rule.next = stateName; - processState(stateName); - } else if (next == "pop") { - rule.next = popState; - } - - if (rule.push) { - rule.nextState = rule.next || rule.push; - rule.next = pushState; - delete rule.push; - } - - if (rule.rules) { - for (var r in rule.rules) { - if (rules[r]) { - if (rules[r].push) - rules[r].push.apply(rules[r], rule.rules[r]); - } else { - rules[r] = rule.rules[r]; - } - } - } - var includeName = typeof rule == "string" ? rule : rule.include; - if (includeName) { - if (Array.isArray(includeName)) - toInsert = includeName.map(function(x) { return rules[x]; }); - else - toInsert = rules[includeName]; - } - - if (toInsert) { - var args = [i, 1].concat(toInsert); - if (rule.noEscape) - args = args.filter(function(x) {return !x.next;}); - state.splice.apply(state, args); - i--; - } - - if (rule.keywordMap) { - rule.token = this.createKeywordMapper( - rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive - ); - delete rule.defaultToken; - } - } - } - Object.keys(rules).forEach(processState, this); - }; - - this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) { - var keywords = Object.create(null); - this.$keywordList = []; - Object.keys(map).forEach(function(className) { - var a = map[className]; - var list = a.split(splitChar || "|"); - for (var i = list.length; i--; ) { - var word = list[i]; - this.$keywordList.push(word); - if (ignoreCase) - word = word.toLowerCase(); - keywords[word] = className; - } - }, this); - map = null; - return ignoreCase - ? function(value) {return keywords[value.toLowerCase()] || defaultToken; } - : function(value) {return keywords[value] || defaultToken; }; - }; - - this.getKeywords = function() { - return this.$keywords; - }; - -}).call(TextHighlightRules.prototype); - -exports.TextHighlightRules = TextHighlightRules; -}); - -ace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var Behaviour = function() { - this.$behaviours = {}; -}; - -(function () { - - this.add = function (name, action, callback) { - switch (undefined) { - case this.$behaviours: - this.$behaviours = {}; - case this.$behaviours[name]: - this.$behaviours[name] = {}; - } - this.$behaviours[name][action] = callback; - }; - - this.addBehaviours = function (behaviours) { - for (var key in behaviours) { - for (var action in behaviours[key]) { - this.add(key, action, behaviours[key][action]); - } - } - }; - - this.remove = function (name) { - if (this.$behaviours && this.$behaviours[name]) { - delete this.$behaviours[name]; - } - }; - - this.inherit = function (mode, filter) { - if (typeof mode === "function") { - var behaviours = new mode().getBehaviours(filter); - } else { - var behaviours = mode.getBehaviours(filter); - } - this.addBehaviours(behaviours); - }; - - this.getBehaviours = function (filter) { - if (!filter) { - return this.$behaviours; - } else { - var ret = {}; - for (var i = 0; i < filter.length; i++) { - if (this.$behaviours[filter[i]]) { - ret[filter[i]] = this.$behaviours[filter[i]]; - } - } - return ret; - } - }; - -}).call(Behaviour.prototype); - -exports.Behaviour = Behaviour; -}); - -ace.define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("./range").Range; -var TokenIterator = function(session, initialRow, initialColumn) { - this.$session = session; - this.$row = initialRow; - this.$rowTokens = session.getTokens(initialRow); - - var token = session.getTokenAt(initialRow, initialColumn); - this.$tokenIndex = token ? token.index : -1; -}; - -(function() { - this.stepBackward = function() { - this.$tokenIndex -= 1; - - while (this.$tokenIndex < 0) { - this.$row -= 1; - if (this.$row < 0) { - this.$row = 0; - return null; - } - - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = this.$rowTokens.length - 1; - } - - return this.$rowTokens[this.$tokenIndex]; - }; - this.stepForward = function() { - this.$tokenIndex += 1; - var rowCount; - while (this.$tokenIndex >= this.$rowTokens.length) { - this.$row += 1; - if (!rowCount) - rowCount = this.$session.getLength(); - if (this.$row >= rowCount) { - this.$row = rowCount - 1; - return null; - } - - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = 0; - } - - return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentToken = function () { - return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentTokenRow = function () { - return this.$row; - }; - this.getCurrentTokenColumn = function() { - var rowTokens = this.$rowTokens; - var tokenIndex = this.$tokenIndex; - var column = rowTokens[tokenIndex].start; - if (column !== undefined) - return column; - - column = 0; - while (tokenIndex > 0) { - tokenIndex -= 1; - column += rowTokens[tokenIndex].value.length; - } - - return column; - }; - this.getCurrentTokenPosition = function() { - return {row: this.$row, column: this.getCurrentTokenColumn()}; - }; - this.getCurrentTokenRange = function() { - var token = this.$rowTokens[this.$tokenIndex]; - var column = this.getCurrentTokenColumn(); - return new Range(this.$row, column, this.$row, column + token.value.length); - }; - -}).call(TokenIterator.prototype); - -exports.TokenIterator = TokenIterator; -}); - -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; - -var context; -var contextCache = {}; -var defaultQuotes = {'"' : '"', "'" : "'"}; - -var initContext = function(editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; - -var getWrapped = function(selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; - -var CstyleBehaviour = function(options) { - this.add("braces", "insertion", function(state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - context.maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - var quotes = session.$mode.$quotes || defaultQuotes; - if (text.length == 1 && quotes[text]) { - if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) - return; - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - if (pair && /string\.end/.test(rightToken.type)) - pair = false; - } else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - var charBefore = line[cursor.column - 2]; - if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) - return null; - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var quotes = session.$mode.$quotes || defaultQuotes; - - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) - return true; - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; - -CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; -}; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; - -CstyleBehaviour.popAutoInsertedClosing = function() { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; - - - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define("ace/unicode",["require","exports","module"], function(require, exports, module) { -"use strict"; -var wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2]; - -var code = 0; -var str = []; -for (var i = 0; i < wordChars.length; i += 2) { - str.push(code += wordChars[i]); - if (wordChars[i + 1]) - str.push(45, code += wordChars[i + 1]); -} - -exports.wordChars = String.fromCharCode.apply(null, str); - -}); - -ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) { -"use strict"; -var config = require("../config"); - -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var unicode = require("../unicode"); -var lang = require("../lib/lang"); -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = TextHighlightRules; -}; - -(function() { - this.$defaultBehaviour = new CstyleBehaviour(); - - this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); - - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); - - this.getTokenizer = function() { - if (!this.$tokenizer) { - this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); - this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); - } - return this.$tokenizer; - }; - - this.lineCommentStart = ""; - this.blockComment = ""; - - this.toggleCommentLines = function(state, session, startRow, endRow) { - var doc = session.doc; - - var ignoreBlankLines = true; - var shouldRemove = true; - var minIndent = Infinity; - var tabSize = session.getTabSize(); - var insertAtTabStop = false; - - if (!this.lineCommentStart) { - if (!this.blockComment) - return false; - var lineCommentStart = this.blockComment.start; - var lineCommentEnd = this.blockComment.end; - var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); - var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); - - var comment = function(line, i) { - if (testRemove(line, i)) - return; - if (!ignoreBlankLines || /\S/.test(line)) { - doc.insertInLine({row: i, column: line.length}, lineCommentEnd); - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); - } - }; - - var uncomment = function(line, i) { - var m; - if (m = line.match(regexpEnd)) - doc.removeInLine(i, line.length - m[0].length, line.length); - if (m = line.match(regexpStart)) - doc.removeInLine(i, m[1].length, m[0].length); - }; - - var testRemove = function(line, row) { - if (regexpStart.test(line)) - return true; - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].type === "comment") - return true; - } - }; - } else { - if (Array.isArray(this.lineCommentStart)) { - var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); - var lineCommentStart = this.lineCommentStart[0]; - } else { - var regexpStart = lang.escapeRegExp(this.lineCommentStart); - var lineCommentStart = this.lineCommentStart; - } - regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); - - insertAtTabStop = session.getUseSoftTabs(); - - var uncomment = function(line, i) { - var m = line.match(regexpStart); - if (!m) return; - var start = m[1].length, end = m[0].length; - if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") - end--; - doc.removeInLine(i, start, end); - }; - var commentWithSpace = lineCommentStart + " "; - var comment = function(line, i) { - if (!ignoreBlankLines || /\S/.test(line)) { - if (shouldInsertSpace(line, minIndent, minIndent)) - doc.insertInLine({row: i, column: minIndent}, commentWithSpace); - else - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); - } - }; - var testRemove = function(line, i) { - return regexpStart.test(line); - }; - - var shouldInsertSpace = function(line, before, after) { - var spaces = 0; - while (before-- && line.charAt(before) == " ") - spaces++; - if (spaces % tabSize != 0) - return false; - var spaces = 0; - while (line.charAt(after++) == " ") - spaces++; - if (tabSize > 2) - return spaces % tabSize != tabSize - 1; - else - return spaces % tabSize == 0; - }; - } - - function iter(fun) { - for (var i = startRow; i <= endRow; i++) - fun(doc.getLine(i), i); - } - - - var minEmptyLength = Infinity; - iter(function(line, i) { - var indent = line.search(/\S/); - if (indent !== -1) { - if (indent < minIndent) - minIndent = indent; - if (shouldRemove && !testRemove(line, i)) - shouldRemove = false; - } else if (minEmptyLength > line.length) { - minEmptyLength = line.length; - } - }); - - if (minIndent == Infinity) { - minIndent = minEmptyLength; - ignoreBlankLines = false; - shouldRemove = false; - } - - if (insertAtTabStop && minIndent % tabSize != 0) - minIndent = Math.floor(minIndent / tabSize) * tabSize; - - iter(shouldRemove ? uncomment : comment); - }; - - this.toggleBlockComment = function(state, session, range, cursor) { - var comment = this.blockComment; - if (!comment) - return; - if (!comment.start && comment[0]) - comment = comment[0]; - - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - var sel = session.selection; - var initialRange = session.selection.toOrientedRange(); - var startRow, colDiff; - - if (token && /comment/.test(token.type)) { - var startRange, endRange; - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.start); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - startRange = new Range(row, column, row, column + comment.start.length); - break; - } - token = iterator.stepBackward(); - } - - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.end); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - endRange = new Range(row, column, row, column + comment.end.length); - break; - } - token = iterator.stepForward(); - } - if (endRange) - session.remove(endRange); - if (startRange) { - session.remove(startRange); - startRow = startRange.start.row; - colDiff = -comment.start.length; - } - } else { - colDiff = comment.start.length; - startRow = range.start.row; - session.insert(range.end, comment.end); - session.insert(range.start, comment.start); - } - if (initialRange.start.row == startRow) - initialRange.start.column += colDiff; - if (initialRange.end.row == startRow) - initialRange.end.column += colDiff; - session.selection.fromOrientedRange(initialRange); - }; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.autoOutdent = function(state, doc, row) { - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - - this.createWorker = function(session) { - return null; - }; - - this.createModeDelegates = function (mapping) { - this.$embeds = []; - this.$modes = {}; - for (var i in mapping) { - if (mapping[i]) { - var Mode = mapping[i]; - var id = Mode.prototype.$id; - var mode = config.$modes[id]; - if (!mode) - config.$modes[id] = mode = new Mode(); - if (!config.$modes[i]) - config.$modes[i] = mode; - this.$embeds.push(i); - this.$modes[i] = mode; - } - } - - var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", - "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; - - for (var i = 0; i < delegations.length; i++) { - (function(scope) { - var functionName = delegations[i]; - var defaultHandler = scope[functionName]; - scope[delegations[i]] = function() { - return this.$delegator(functionName, arguments, defaultHandler); - }; - }(this)); - } - }; - - this.$delegator = function(method, args, defaultHandler) { - var state = args[0] || "start"; - if (typeof state != "string") { - if (Array.isArray(state[2])) { - var language = state[2][state[2].length - 1]; - var mode = this.$modes[language]; - if (mode) - return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); - } - state = state[0] || "start"; - } - - for (var i = 0; i < this.$embeds.length; i++) { - if (!this.$modes[this.$embeds[i]]) continue; - - var split = state.split(this.$embeds[i]); - if (!split[0] && split[1]) { - args[0] = split[1]; - var mode = this.$modes[this.$embeds[i]]; - return mode[method].apply(mode, args); - } - } - var ret = defaultHandler.apply(this, args); - return defaultHandler ? ret : undefined; - }; - - this.transformAction = function(state, action, editor, session, param) { - if (this.$behaviour) { - var behaviours = this.$behaviour.getBehaviours(); - for (var key in behaviours) { - if (behaviours[key][action]) { - var ret = behaviours[key][action].apply(this, arguments); - if (ret) { - return ret; - } - } - } - } - }; - - this.getKeywords = function(append) { - if (!this.completionKeywords) { - var rules = this.$tokenizer.rules; - var completionKeywords = []; - for (var rule in rules) { - var ruleItr = rules[rule]; - for (var r = 0, l = ruleItr.length; r < l; r++) { - if (typeof ruleItr[r].token === "string") { - if (/keyword|support|storage/.test(ruleItr[r].token)) - completionKeywords.push(ruleItr[r].regex); - } - else if (typeof ruleItr[r].token === "object") { - for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { - if (/keyword|support|storage/.test(ruleItr[r].token[a])) { - var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; - completionKeywords.push(rule.substr(1, rule.length - 2)); - } - } - } - } - } - this.completionKeywords = completionKeywords; - } - if (!append) - return this.$keywordList; - return completionKeywords.concat(this.$keywordList || []); - }; - - this.$createKeywordList = function() { - if (!this.$highlightRules) - this.getTokenizer(); - return this.$keywordList = this.$highlightRules.$keywordList || []; - }; - - this.getCompletions = function(state, session, pos, prefix) { - var keywords = this.$keywordList || this.$createKeywordList(); - return keywords.map(function(word) { - return { - name: word, - value: word, - score: 0, - meta: "keyword" - }; - }); - }; - - this.$id = "ace/mode/text"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} - -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} - -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} - -exports.applyDelta = function(docLines, delta, doNotValidate) { - - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); - } - break; - } -}; -}); - -ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Anchor = exports.Anchor = function(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.getPosition = function() { - return this.$clipPositionToDocument(this.row, this.column); - }; - this.getDocument = function() { - return this.document; - }; - this.$insertRight = false; - this.onChange = function(delta) { - if (delta.start.row == delta.end.row && delta.start.row != this.row) - return; - - if (delta.start.row > this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column - }; - } - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.off("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - this.getLinesForRange = function(range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - this.insertLines = function(row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - this.removeLines = function(firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - this.insert = function(position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - - return this.insertMergedLines(position, this.$split(text)); - }; - this.insertInLine = function(position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - - return this.clonePos(end); - }; - - this.clippedPos = function(row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } else if (row < 0) { - row = 0; - } else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; - }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; - }; - - this.pos = function(row, column) { - return {row: row, column: column}; - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - this.insertFullLines = function(row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - - return this.clonePos(end); - }; - this.remove = function(range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }); - return this.clonePos(start); - }; - this.removeInLine = function(row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }, true); - - return this.clonePos(start); - }; - this.removeFullLines = function(firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - this.removeNewLine = function(row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - this.replace = function(range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - this.revertDelta(deltas[i]); - } - }; - this.applyDelta = function(delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - - this.$safeApplyDelta = function(delta) { - var docLength = this.$lines.length; - if ( - delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength - ) { - this.applyDelta(delta); - } - }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - this.revertDelta = function(delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: index + lines[l-1].length + newlineLength}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var BackgroundTokenizer = function(tokenizer, editor) { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.tokenizer = tokenizer; - - var self = this; - - this.$worker = function() { - if (!self.running) { return; } - - var workerStart = new Date(); - var currentLine = self.currentLine; - var endLine = -1; - var doc = self.doc; - - var startLine = currentLine; - while (self.lines[currentLine]) - currentLine++; - - var len = doc.getLength(); - var processedLines = 0; - self.running = false; - while (currentLine < len) { - self.$tokenizeRow(currentLine); - endLine = currentLine; - do { - currentLine++; - } while (self.lines[currentLine]); - processedLines ++; - if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { - self.running = setTimeout(self.$worker, 20); - break; - } - } - self.currentLine = currentLine; - - if (endLine == -1) - endLine = currentLine; - - if (startLine <= endLine) - self.fireUpdateEvent(startLine, endLine); - }; -}; - -(function(){ - - oop.implement(this, EventEmitter); - this.setTokenizer = function(tokenizer) { - this.tokenizer = tokenizer; - this.lines = []; - this.states = []; - - this.start(0); - }; - this.setDocument = function(doc) { - this.doc = doc; - this.lines = []; - this.states = []; - - this.stop(); - }; - this.fireUpdateEvent = function(firstRow, lastRow) { - var data = { - first: firstRow, - last: lastRow - }; - this._signal("update", {data: data}); - }; - this.start = function(startRow) { - this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); - this.lines.splice(this.currentLine, this.lines.length); - this.states.splice(this.currentLine, this.states.length); - - this.stop(); - this.running = setTimeout(this.$worker, 700); - }; - - this.scheduleStart = function() { - if (!this.running) - this.running = setTimeout(this.$worker, 700); - }; - - this.$updateOnChange = function(delta) { - var startRow = delta.start.row; - var len = delta.end.row - startRow; - - if (len === 0) { - this.lines[startRow] = null; - } else if (delta.action == "remove") { - this.lines.splice(startRow, len + 1, null); - this.states.splice(startRow, len + 1, null); - } else { - var args = Array(len + 1); - args.unshift(startRow, 1); - this.lines.splice.apply(this.lines, args); - this.states.splice.apply(this.states, args); - } - - this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); - - this.stop(); - }; - this.stop = function() { - if (this.running) - clearTimeout(this.running); - this.running = false; - }; - this.getTokens = function(row) { - return this.lines[row] || this.$tokenizeRow(row); - }; - this.getState = function(row) { - if (this.currentLine == row) - this.$tokenizeRow(row); - return this.states[row] || "start"; - }; - - this.$tokenizeRow = function(row) { - var line = this.doc.getLine(row); - var state = this.states[row - 1]; - - var data = this.tokenizer.getLineTokens(line, state, row); - - if (this.states[row] + "" !== data.state + "") { - this.states[row] = data.state; - this.lines[row + 1] = null; - if (this.currentLine > row + 1) - this.currentLine = row + 1; - } else if (this.currentLine == row) { - this.currentLine = row + 1; - } - - return this.lines[row] = data.tokens; - }; - -}).call(BackgroundTokenizer.prototype); - -exports.BackgroundTokenizer = BackgroundTokenizer; -}); - -ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) { -"use strict"; - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; - -var SearchHighlight = function(regExp, clazz, type) { - this.setRegexp(regExp); - this.clazz = clazz; - this.type = type || "text"; -}; - -(function() { - this.MAX_RANGES = 500; - - this.setRegexp = function(regExp) { - if (this.regExp+"" == regExp+"") - return; - this.regExp = regExp; - this.cache = []; - }; - - this.update = function(html, markerLayer, session, config) { - if (!this.regExp) - return; - var start = config.firstRow, end = config.lastRow; - - for (var i = start; i <= end; i++) { - var ranges = this.cache[i]; - if (ranges == null) { - ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); - if (ranges.length > this.MAX_RANGES) - ranges = ranges.slice(0, this.MAX_RANGES); - ranges = ranges.map(function(match) { - return new Range(i, match.offset, i, match.offset + match.length); - }); - this.cache[i] = ranges.length ? ranges : ""; - } - - for (var j = ranges.length; j --; ) { - markerLayer.drawSingleLineMarker( - html, ranges[j].toScreenRange(session), this.clazz, config); - } - } - }; - -}).call(SearchHighlight.prototype); - -exports.SearchHighlight = SearchHighlight; -}); - -ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -function FoldLine(foldData, folds) { - this.foldData = foldData; - if (Array.isArray(folds)) { - this.folds = folds; - } else { - folds = this.folds = [ folds ]; - } - - var last = folds[folds.length - 1]; - this.range = new Range(folds[0].start.row, folds[0].start.column, - last.end.row, last.end.column); - this.start = this.range.start; - this.end = this.range.end; - - this.folds.forEach(function(fold) { - fold.setFoldLine(this); - }, this); -} - -(function() { - this.shiftRow = function(shift) { - this.start.row += shift; - this.end.row += shift; - this.folds.forEach(function(fold) { - fold.start.row += shift; - fold.end.row += shift; - }); - }; - - this.addFold = function(fold) { - if (fold.sameRow) { - if (fold.start.row < this.startRow || fold.endRow > this.endRow) { - throw new Error("Can't add a fold to this FoldLine as it has no connection"); - } - this.folds.push(fold); - this.folds.sort(function(a, b) { - return -a.range.compareEnd(b.start.row, b.start.column); - }); - if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - } else if (fold.start.row == this.end.row) { - this.folds.push(fold); - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } else if (fold.end.row == this.start.row) { - this.folds.unshift(fold); - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } else { - throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); - } - fold.foldLine = this; - }; - - this.containsRow = function(row) { - return row >= this.start.row && row <= this.end.row; - }; - - this.walk = function(callback, endRow, endColumn) { - var lastEnd = 0, - folds = this.folds, - fold, - cmp, stop, isNewRow = true; - - if (endRow == null) { - endRow = this.end.row; - endColumn = this.end.column; - } - - for (var i = 0; i < folds.length; i++) { - fold = folds[i]; - - cmp = fold.range.compareStart(endRow, endColumn); - if (cmp == -1) { - callback(null, endRow, endColumn, lastEnd, isNewRow); - return; - } - - stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); - stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); - if (stop || cmp === 0) { - return; - } - isNewRow = !fold.sameRow; - lastEnd = fold.end.column; - } - callback(null, endRow, endColumn, lastEnd, isNewRow); - }; - - this.getNextFoldTo = function(row, column) { - var fold, cmp; - for (var i = 0; i < this.folds.length; i++) { - fold = this.folds[i]; - cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - return { - fold: fold, - kind: "after" - }; - } else if (cmp === 0) { - return { - fold: fold, - kind: "inside" - }; - } - } - return null; - }; - - this.addRemoveChars = function(row, column, len) { - var ret = this.getNextFoldTo(row, column), - fold, folds; - if (ret) { - fold = ret.fold; - if (ret.kind == "inside" - && fold.start.column != column - && fold.start.row != row) - { - window.console && window.console.log(row, column, fold); - } else if (fold.start.row == row) { - folds = this.folds; - var i = folds.indexOf(fold); - if (i === 0) { - this.start.column += len; - } - for (i; i < folds.length; i++) { - fold = folds[i]; - fold.start.column += len; - if (!fold.sameRow) { - return; - } - fold.end.column += len; - } - this.end.column += len; - } - } - }; - - this.split = function(row, column) { - var pos = this.getNextFoldTo(row, column); - - if (!pos || pos.kind == "inside") - return null; - - var fold = pos.fold; - var folds = this.folds; - var foldData = this.foldData; - - var i = folds.indexOf(fold); - var foldBefore = folds[i - 1]; - this.end.row = foldBefore.end.row; - this.end.column = foldBefore.end.column; - folds = folds.splice(i, folds.length - i); - - var newFoldLine = new FoldLine(foldData, folds); - foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); - return newFoldLine; - }; - - this.merge = function(foldLineNext) { - var folds = foldLineNext.folds; - for (var i = 0; i < folds.length; i++) { - this.addFold(folds[i]); - } - var foldData = this.foldData; - foldData.splice(foldData.indexOf(foldLineNext), 1); - }; - - this.toString = function() { - var ret = [this.range.toString() + ": [" ]; - - this.folds.forEach(function(fold) { - ret.push(" " + fold.toString()); - }); - ret.push("]"); - return ret.join("\n"); - }; - - this.idxToPosition = function(idx) { - var lastFoldEndColumn = 0; - - for (var i = 0; i < this.folds.length; i++) { - var fold = this.folds[i]; - - idx -= fold.start.column - lastFoldEndColumn; - if (idx < 0) { - return { - row: fold.start.row, - column: fold.start.column + idx - }; - } - - idx -= fold.placeholder.length; - if (idx < 0) { - return fold.start; - } - - lastFoldEndColumn = fold.end.column; - } - - return { - row: this.end.row, - column: this.end.column + idx - }; - }; -}).call(FoldLine.prototype); - -exports.FoldLine = FoldLine; -}); - -ace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; -var Range = require("./range").Range; -var comparePoints = Range.comparePoints; - -var RangeList = function() { - this.ranges = []; - this.$bias = 1; -}; - -(function() { - this.comparePoints = comparePoints; - - this.pointIndex = function(pos, excludeEdges, startIndex) { - var list = this.ranges; - - for (var i = startIndex || 0; i < list.length; i++) { - var range = list[i]; - var cmpEnd = comparePoints(pos, range.end); - if (cmpEnd > 0) - continue; - var cmpStart = comparePoints(pos, range.start); - if (cmpEnd === 0) - return excludeEdges && cmpStart !== 0 ? -i-2 : i; - if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) - return i; - - return -i-1; - } - return -i - 1; - }; - - this.add = function(range) { - var excludeEdges = !range.isEmpty(); - var startIndex = this.pointIndex(range.start, excludeEdges); - if (startIndex < 0) - startIndex = -startIndex - 1; - - var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); - - if (endIndex < 0) - endIndex = -endIndex - 1; - else - endIndex++; - return this.ranges.splice(startIndex, endIndex - startIndex, range); - }; - - this.addList = function(list) { - var removed = []; - for (var i = list.length; i--; ) { - removed.push.apply(removed, this.add(list[i])); - } - return removed; - }; - - this.substractPoint = function(pos) { - var i = this.pointIndex(pos); - - if (i >= 0) - return this.ranges.splice(i, 1); - }; - this.merge = function() { - var removed = []; - var list = this.ranges; - - list = list.sort(function(a, b) { - return comparePoints(a.start, b.start); - }); - - var next = list[0], range; - for (var i = 1; i < list.length; i++) { - range = next; - next = list[i]; - var cmp = comparePoints(range.end, next.start); - if (cmp < 0) - continue; - - if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) - continue; - - if (comparePoints(range.end, next.end) < 0) { - range.end.row = next.end.row; - range.end.column = next.end.column; - } - - list.splice(i, 1); - removed.push(next); - next = range; - i--; - } - - this.ranges = list; - - return removed; - }; - - this.contains = function(row, column) { - return this.pointIndex({row: row, column: column}) >= 0; - }; - - this.containsPoint = function(pos) { - return this.pointIndex(pos) >= 0; - }; - - this.rangeAtPoint = function(pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges[i]; - }; - - - this.clipRows = function(startRow, endRow) { - var list = this.ranges; - if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) - return []; - - var startIndex = this.pointIndex({row: startRow, column: 0}); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - - var clipped = []; - for (var i = startIndex; i < endIndex; i++) { - clipped.push(list[i]); - } - return clipped; - }; - - this.removeAll = function() { - return this.ranges.splice(0, this.ranges.length); - }; - - this.attach = function(session) { - if (this.session) - this.detach(); - - this.session = session; - this.onChange = this.$onChange.bind(this); - - this.session.on('change', this.onChange); - }; - - this.detach = function() { - if (!this.session) - return; - this.session.removeListener('change', this.onChange); - this.session = null; - }; - - this.$onChange = function(delta) { - var start = delta.start; - var end = delta.end; - var startRow = start.row; - var endRow = end.row; - var ranges = this.ranges; - for (var i = 0, n = ranges.length; i < n; i++) { - var r = ranges[i]; - if (r.end.row >= startRow) - break; - } - - if (delta.action == "insert") { - var lineDif = endRow - startRow; - var colDiff = -start.column + end.column; - for (; i < n; i++) { - var r = ranges[i]; - if (r.start.row > startRow) - break; - - if (r.start.row == startRow && r.start.column >= start.column) { - if (r.start.column == start.column && this.$bias <= 0) { - } else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - if (r.end.row == startRow && r.end.column >= start.column) { - if (r.end.column == start.column && this.$bias < 0) { - continue; - } - if (r.end.column == start.column && colDiff > 0 && i < n - 1) { - if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column) - r.end.column -= colDiff; - } - r.end.column += colDiff; - r.end.row += lineDif; - } - } - } else { - var lineDif = startRow - endRow; - var colDiff = start.column - end.column; - for (; i < n; i++) { - var r = ranges[i]; - - if (r.start.row > endRow) - break; - - if (r.end.row < endRow - && ( - startRow < r.end.row - || startRow == r.end.row && start.column < r.end.column - ) - ) { - r.end.row = startRow; - r.end.column = start.column; - } - else if (r.end.row == endRow) { - if (r.end.column <= end.column) { - if (lineDif || r.end.column > start.column) { - r.end.column = start.column; - r.end.row = start.row; - } - } - else { - r.end.column += colDiff; - r.end.row += lineDif; - } - } - else if (r.end.row > endRow) { - r.end.row += lineDif; - } - - if (r.start.row < endRow - && ( - startRow < r.start.row - || startRow == r.start.row && start.column < r.start.column - ) - ) { - r.start.row = startRow; - r.start.column = start.column; - } - else if (r.start.row == endRow) { - if (r.start.column <= end.column) { - if (lineDif || r.start.column > start.column) { - r.start.column = start.column; - r.start.row = start.row; - } - } - else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - else if (r.start.row > endRow) { - r.start.row += lineDif; - } - } - } - - if (lineDif != 0 && i < n) { - for (; i < n; i++) { - var r = ranges[i]; - r.start.row += lineDif; - r.end.row += lineDif; - } - } - }; - -}).call(RangeList.prototype); - -exports.RangeList = RangeList; -}); - -ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var RangeList = require("../range_list").RangeList; -var oop = require("../lib/oop"); -var Fold = exports.Fold = function(range, placeholder) { - this.foldLine = null; - this.placeholder = placeholder; - this.range = range; - this.start = range.start; - this.end = range.end; - - this.sameRow = range.start.row == range.end.row; - this.subFolds = this.ranges = []; -}; - -oop.inherits(Fold, RangeList); - -(function() { - - this.toString = function() { - return '"' + this.placeholder + '" ' + this.range.toString(); - }; - - this.setFoldLine = function(foldLine) { - this.foldLine = foldLine; - this.subFolds.forEach(function(fold) { - fold.setFoldLine(foldLine); - }); - }; - - this.clone = function() { - var range = this.range.clone(); - var fold = new Fold(range, this.placeholder); - this.subFolds.forEach(function(subFold) { - fold.subFolds.push(subFold.clone()); - }); - fold.collapseChildren = this.collapseChildren; - return fold; - }; - - this.addSubFold = function(fold) { - if (this.range.isEqual(fold)) - return; - consumeRange(fold, this.start); - - var row = fold.start.row, column = fold.start.column; - for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { - cmp = this.subFolds[i].range.compare(row, column); - if (cmp != 1) - break; - } - var afterStart = this.subFolds[i]; - var firstConsumed = 0; - - if (cmp == 0) { - if (afterStart.range.containsRange(fold)) - return afterStart.addSubFold(fold); - else - firstConsumed = 1; - } - var row = fold.range.end.row, column = fold.range.end.column; - for (var j = i, cmp = -1; j < this.subFolds.length; j++) { - cmp = this.subFolds[j].range.compare(row, column); - if (cmp != 1) - break; - } - if (cmp == 0) j++; - var consumedFolds = this.subFolds.splice(i, j - i, fold); - var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; - for (var k = firstConsumed; k < last; k++) { - fold.addSubFold(consumedFolds[k]); - } - fold.setFoldLine(this.foldLine); - - return fold; - }; - - this.restoreRange = function(range) { - return restoreRange(range, this.start); - }; - -}).call(Fold.prototype); - -function consumePoint(point, anchor) { - point.row -= anchor.row; - if (point.row == 0) - point.column -= anchor.column; -} -function consumeRange(range, anchor) { - consumePoint(range.start, anchor); - consumePoint(range.end, anchor); -} -function restorePoint(point, anchor) { - if (point.row == 0) - point.column += anchor.column; - point.row += anchor.row; -} -function restoreRange(range, anchor) { - restorePoint(range.start, anchor); - restorePoint(range.end, anchor); -} - -}); - -ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -var FoldLine = require("./fold_line").FoldLine; -var Fold = require("./fold").Fold; -var TokenIterator = require("../token_iterator").TokenIterator; - -function Folding() { - this.getFoldAt = function(row, column, side) { - var foldLine = this.getFoldLine(row); - if (!foldLine) - return null; - - var folds = foldLine.folds; - for (var i = 0; i < folds.length; i++) { - var range = folds[i].range; - if (range.contains(row, column)) { - if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { - continue; - } else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { - continue; - } - return folds[i]; - } - } - }; - this.getFoldsInRange = function(range) { - var start = range.start; - var end = range.end; - var foldLines = this.$foldData; - var foundFolds = []; - - start.column += 1; - end.column -= 1; - - for (var i = 0; i < foldLines.length; i++) { - var cmp = foldLines[i].range.compareRange(range); - if (cmp == 2) { - continue; - } - else if (cmp == -2) { - break; - } - - var folds = foldLines[i].folds; - for (var j = 0; j < folds.length; j++) { - var fold = folds[j]; - cmp = fold.range.compareRange(range); - if (cmp == -2) { - break; - } else if (cmp == 2) { - continue; - } else - if (cmp == 42) { - break; - } - foundFolds.push(fold); - } - } - start.column -= 1; - end.column += 1; - - return foundFolds; - }; - - this.getFoldsInRangeList = function(ranges) { - if (Array.isArray(ranges)) { - var folds = []; - ranges.forEach(function(range) { - folds = folds.concat(this.getFoldsInRange(range)); - }, this); - } else { - var folds = this.getFoldsInRange(ranges); - } - return folds; - }; - this.getAllFolds = function() { - var folds = []; - var foldLines = this.$foldData; - - for (var i = 0; i < foldLines.length; i++) - for (var j = 0; j < foldLines[i].folds.length; j++) - folds.push(foldLines[i].folds[j]); - - return folds; - }; - this.getFoldStringAt = function(row, column, trim, foldLine) { - foldLine = foldLine || this.getFoldLine(row); - if (!foldLine) - return null; - - var lastFold = { - end: { column: 0 } - }; - var str, fold; - for (var i = 0; i < foldLine.folds.length; i++) { - fold = foldLine.folds[i]; - var cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - str = this - .getLine(fold.start.row) - .substring(lastFold.end.column, fold.start.column); - break; - } - else if (cmp === 0) { - return null; - } - lastFold = fold; - } - if (!str) - str = this.getLine(fold.start.row).substring(lastFold.end.column); - - if (trim == -1) - return str.substring(0, column - lastFold.end.column); - else if (trim == 1) - return str.substring(column - lastFold.end.column); - else - return str; - }; - - this.getFoldLine = function(docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { - return foldLine; - } else if (foldLine.end.row > docRow) { - return null; - } - } - return null; - }; - this.getNextFoldLine = function(docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.end.row >= docRow) { - return foldLine; - } - } - return null; - }; - - this.getFoldedRowCount = function(first, last) { - var foldData = this.$foldData, rowCount = last-first+1; - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i], - end = foldLine.end.row, - start = foldLine.start.row; - if (end >= last) { - if (start < last) { - if (start >= first) - rowCount -= last-start; - else - rowCount = 0; // in one fold - } - break; - } else if (end >= first){ - if (start >= first) // fold inside range - rowCount -= end-start; - else - rowCount -= end-first+1; - } - } - return rowCount; - }; - - this.$addFoldLine = function(foldLine) { - this.$foldData.push(foldLine); - this.$foldData.sort(function(a, b) { - return a.start.row - b.start.row; - }); - return foldLine; - }; - this.addFold = function(placeholder, range) { - var foldData = this.$foldData; - var added = false; - var fold; - - if (placeholder instanceof Fold) - fold = placeholder; - else { - fold = new Fold(range, placeholder); - fold.collapseChildren = range.collapseChildren; - } - this.$clipRangeToDocument(fold.range); - - var startRow = fold.start.row; - var startColumn = fold.start.column; - var endRow = fold.end.row; - var endColumn = fold.end.column; - - var startFold = this.getFoldAt(startRow, startColumn, 1); - var endFold = this.getFoldAt(endRow, endColumn, -1); - if (startFold && endFold == startFold) - return startFold.addSubFold(fold); - - if (startFold && !startFold.range.isStart(startRow, startColumn)) - this.removeFold(startFold); - - if (endFold && !endFold.range.isEnd(endRow, endColumn)) - this.removeFold(endFold); - var folds = this.getFoldsInRange(fold.range); - if (folds.length > 0) { - this.removeFolds(folds); - if (!fold.collapseChildren) { - folds.forEach(function(subFold) { - fold.addSubFold(subFold); - }); - } - } - - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (endRow == foldLine.start.row) { - foldLine.addFold(fold); - added = true; - break; - } else if (startRow == foldLine.end.row) { - foldLine.addFold(fold); - added = true; - if (!fold.sameRow) { - var foldLineNext = foldData[i + 1]; - if (foldLineNext && foldLineNext.start.row == endRow) { - foldLine.merge(foldLineNext); - break; - } - } - break; - } else if (endRow <= foldLine.start.row) { - break; - } - } - - if (!added) - foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); - - if (this.$useWrapMode) - this.$updateWrapData(foldLine.start.row, foldLine.start.row); - else - this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); - this.$modified = true; - this._signal("changeFold", { data: fold, action: "add" }); - - return fold; - }; - - this.addFolds = function(folds) { - folds.forEach(function(fold) { - this.addFold(fold); - }, this); - }; - - this.removeFold = function(fold) { - var foldLine = fold.foldLine; - var startRow = foldLine.start.row; - var endRow = foldLine.end.row; - - var foldLines = this.$foldData; - var folds = foldLine.folds; - if (folds.length == 1) { - foldLines.splice(foldLines.indexOf(foldLine), 1); - } else - if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { - folds.pop(); - foldLine.end.row = folds[folds.length - 1].end.row; - foldLine.end.column = folds[folds.length - 1].end.column; - } else - if (foldLine.range.isStart(fold.start.row, fold.start.column)) { - folds.shift(); - foldLine.start.row = folds[0].start.row; - foldLine.start.column = folds[0].start.column; - } else - if (fold.sameRow) { - folds.splice(folds.indexOf(fold), 1); - } else - { - var newFoldLine = foldLine.split(fold.start.row, fold.start.column); - folds = newFoldLine.folds; - folds.shift(); - newFoldLine.start.row = folds[0].start.row; - newFoldLine.start.column = folds[0].start.column; - } - - if (!this.$updating) { - if (this.$useWrapMode) - this.$updateWrapData(startRow, endRow); - else - this.$updateRowLengthCache(startRow, endRow); - } - this.$modified = true; - this._signal("changeFold", { data: fold, action: "remove" }); - }; - - this.removeFolds = function(folds) { - var cloneFolds = []; - for (var i = 0; i < folds.length; i++) { - cloneFolds.push(folds[i]); - } - - cloneFolds.forEach(function(fold) { - this.removeFold(fold); - }, this); - this.$modified = true; - }; - - this.expandFold = function(fold) { - this.removeFold(fold); - fold.subFolds.forEach(function(subFold) { - fold.restoreRange(subFold); - this.addFold(subFold); - }, this); - if (fold.collapseChildren > 0) { - this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1); - } - fold.subFolds = []; - }; - - this.expandFolds = function(folds) { - folds.forEach(function(fold) { - this.expandFold(fold); - }, this); - }; - - this.unfold = function(location, expandInner) { - var range, folds; - if (location == null) { - range = new Range(0, 0, this.getLength(), 0); - if (expandInner == null) expandInner = true; - } else if (typeof location == "number") { - range = new Range(location, 0, location, this.getLine(location).length); - } else if ("row" in location) { - range = Range.fromPoints(location, location); - } else if (Array.isArray(location)) { - folds = []; - location.forEach(function(range) { - folds = folds.concat(this.unfold(range)); - }, this); - return folds; - } else { - range = location; - } - - folds = this.getFoldsInRangeList(range); - var outermostFolds = folds; - while ( - folds.length == 1 - && Range.comparePoints(folds[0].start, range.start) < 0 - && Range.comparePoints(folds[0].end, range.end) > 0 - ) { - this.expandFolds(folds); - folds = this.getFoldsInRangeList(range); - } - - if (expandInner != false) { - this.removeFolds(folds); - } else { - this.expandFolds(folds); - } - if (outermostFolds.length) - return outermostFolds; - }; - this.isRowFolded = function(docRow, startFoldRow) { - return !!this.getFoldLine(docRow, startFoldRow); - }; - - this.getRowFoldEnd = function(docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.end.row : docRow; - }; - - this.getRowFoldStart = function(docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.start.row : docRow; - }; - - this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) { - if (startRow == null) - startRow = foldLine.start.row; - if (startColumn == null) - startColumn = 0; - if (endRow == null) - endRow = foldLine.end.row; - if (endColumn == null) - endColumn = this.getLine(endRow).length; - var doc = this.doc; - var textLine = ""; - - foldLine.walk(function(placeholder, row, column, lastColumn) { - if (row < startRow) - return; - if (row == startRow) { - if (column < startColumn) - return; - lastColumn = Math.max(startColumn, lastColumn); - } - - if (placeholder != null) { - textLine += placeholder; - } else { - textLine += doc.getLine(row).substring(lastColumn, column); - } - }, endRow, endColumn); - return textLine; - }; - - this.getDisplayLine = function(row, endColumn, startRow, startColumn) { - var foldLine = this.getFoldLine(row); - - if (!foldLine) { - var line; - line = this.doc.getLine(row); - return line.substring(startColumn || 0, endColumn || line.length); - } else { - return this.getFoldDisplayLine( - foldLine, row, endColumn, startRow, startColumn); - } - }; - - this.$cloneFoldData = function() { - var fd = []; - fd = this.$foldData.map(function(foldLine) { - var folds = foldLine.folds.map(function(fold) { - return fold.clone(); - }); - return new FoldLine(fd, folds); - }); - - return fd; - }; - - this.toggleFold = function(tryToUnfold) { - var selection = this.selection; - var range = selection.getRange(); - var fold; - var bracketPos; - - if (range.isEmpty()) { - var cursor = range.start; - fold = this.getFoldAt(cursor.row, cursor.column); - - if (fold) { - this.expandFold(fold); - return; - } else if (bracketPos = this.findMatchingBracket(cursor)) { - if (range.comparePoint(bracketPos) == 1) { - range.end = bracketPos; - } else { - range.start = bracketPos; - range.start.column++; - range.end.column--; - } - } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) { - if (range.comparePoint(bracketPos) == 1) - range.end = bracketPos; - else - range.start = bracketPos; - - range.start.column++; - } else { - range = this.getCommentFoldRange(cursor.row, cursor.column) || range; - } - } else { - var folds = this.getFoldsInRange(range); - if (tryToUnfold && folds.length) { - this.expandFolds(folds); - return; - } else if (folds.length == 1 ) { - fold = folds[0]; - } - } - - if (!fold) - fold = this.getFoldAt(range.start.row, range.start.column); - - if (fold && fold.range.toString() == range.toString()) { - this.expandFold(fold); - return; - } - - var placeholder = "..."; - if (!range.isMultiLine()) { - placeholder = this.getTextRange(range); - if (placeholder.length < 4) - return; - placeholder = placeholder.trim().substring(0, 2) + ".."; - } - - this.addFold(placeholder, range); - }; - - this.getCommentFoldRange = function(row, column, dir) { - var iterator = new TokenIterator(this, row, column); - var token = iterator.getCurrentToken(); - var type = token && token.type; - if (token && /^comment|string/.test(type)) { - type = type.match(/comment|string/)[0]; - if (type == "comment") - type += "|doc-start"; - var re = new RegExp(type); - var range = new Range(); - if (dir != 1) { - do { - token = iterator.stepBackward(); - } while (token && re.test(token.type)); - iterator.stepForward(); - } - - range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + 2; - - iterator = new TokenIterator(this, row, column); - - if (dir != -1) { - var lastRow = -1; - do { - token = iterator.stepForward(); - if (lastRow == -1) { - var state = this.getState(iterator.$row); - if (!re.test(state)) - lastRow = iterator.$row; - } else if (iterator.$row > lastRow) { - break; - } - } while (token && re.test(token.type)); - token = iterator.stepBackward(); - } else - token = iterator.getCurrentToken(); - - range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2; - return range; - } - }; - - this.foldAll = function(startRow, endRow, depth, test) { - if (depth == undefined) - depth = 100000; // JSON.stringify doesn't hanle Infinity - var foldWidgets = this.foldWidgets; - if (!foldWidgets) - return; // mode doesn't support folding - endRow = endRow || this.getLength(); - startRow = startRow || 0; - for (var row = startRow; row < endRow; row++) { - if (foldWidgets[row] == null) - foldWidgets[row] = this.getFoldWidget(row); - if (foldWidgets[row] != "start") - continue; - - if (test && !test(row)) continue; - - var range = this.getFoldWidgetRange(row); - if (range && range.isMultiLine() - && range.end.row <= endRow - && range.start.row >= startRow - ) { - row = range.end.row; - range.collapseChildren = depth; - this.addFold("...", range); - } - } - }; - - this.foldToLevel = function(level) { - this.foldAll(); - while (level-- > 0) - this.unfold(null, false); - }; - - this.foldAllComments = function() { - var session = this; - this.foldAll(null, null, null, function(row) { - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "text" && /^\s+$/.test(token.value)) - continue; - if (/comment/.test(token.type)) - return true; - return false; - } - }); - }; - this.$foldStyles = { - "manual": 1, - "markbegin": 1, - "markbeginend": 1 - }; - this.$foldStyle = "markbegin"; - this.setFoldStyle = function(style) { - if (!this.$foldStyles[style]) - throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); - - if (this.$foldStyle == style) - return; - - this.$foldStyle = style; - - if (style == "manual") - this.unfold(); - var mode = this.$foldMode; - this.$setFolding(null); - this.$setFolding(mode); - }; - - this.$setFolding = function(foldMode) { - if (this.$foldMode == foldMode) - return; - - this.$foldMode = foldMode; - - this.off('change', this.$updateFoldWidgets); - this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - this._signal("changeAnnotation"); - - if (!foldMode || this.$foldStyle == "manual") { - this.foldWidgets = null; - return; - } - - this.foldWidgets = []; - this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); - this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); - - this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); - this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); - this.on('change', this.$updateFoldWidgets); - this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - }; - - this.getParentFoldRangeData = function (row, ignoreCurrent) { - var fw = this.foldWidgets; - if (!fw || (ignoreCurrent && fw[row])) - return {}; - - var i = row - 1, firstRange; - while (i >= 0) { - var c = fw[i]; - if (c == null) - c = fw[i] = this.getFoldWidget(i); - - if (c == "start") { - var range = this.getFoldWidgetRange(i); - if (!firstRange) - firstRange = range; - if (range && range.end.row >= row) - break; - } - i--; - } - - return { - range: i !== -1 && range, - firstRange: firstRange - }; - }; - - this.onFoldWidgetClick = function(row, e) { - e = e.domEvent; - var options = { - children: e.shiftKey, - all: e.ctrlKey || e.metaKey, - siblings: e.altKey - }; - - var range = this.$toggleFoldWidget(row, options); - if (!range) { - var el = (e.target || e.srcElement); - if (el && /ace_fold-widget/.test(el.className)) - el.className += " ace_invalid"; - } - }; - - this.$toggleFoldWidget = function(row, options) { - if (!this.getFoldWidget) - return; - var type = this.getFoldWidget(row); - var line = this.getLine(row); - - var dir = type === "end" ? -1 : 1; - var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); - - if (fold) { - if (options.children || options.all) - this.removeFold(fold); - else - this.expandFold(fold); - return fold; - } - - var range = this.getFoldWidgetRange(row, true); - if (range && !range.isMultiLine()) { - fold = this.getFoldAt(range.start.row, range.start.column, 1); - if (fold && range.isEqual(fold.range)) { - this.removeFold(fold); - return fold; - } - } - - if (options.siblings) { - var data = this.getParentFoldRangeData(row); - if (data.range) { - var startRow = data.range.start.row + 1; - var endRow = data.range.end.row; - } - this.foldAll(startRow, endRow, options.all ? 10000 : 0); - } else if (options.children) { - endRow = range ? range.end.row : this.getLength(); - this.foldAll(row + 1, endRow, options.all ? 10000 : 0); - } else if (range) { - if (options.all) - range.collapseChildren = 10000; - this.addFold("...", range); - } - - return range; - }; - - - - this.toggleFoldWidget = function(toggleParent) { - var row = this.selection.getCursor().row; - row = this.getRowFoldStart(row); - var range = this.$toggleFoldWidget(row, {}); - - if (range) - return; - var data = this.getParentFoldRangeData(row, true); - range = data.range || data.firstRange; - - if (range) { - row = range.start.row; - var fold = this.getFoldAt(row, this.getLine(row).length, 1); - - if (fold) { - this.removeFold(fold); - } else { - this.addFold("...", range); - } - } - }; - - this.updateFoldWidgets = function(delta) { - var firstRow = delta.start.row; - var len = delta.end.row - firstRow; - - if (len === 0) { - this.foldWidgets[firstRow] = null; - } else if (delta.action == 'remove') { - this.foldWidgets.splice(firstRow, len + 1, null); - } else { - var args = Array(len + 1); - args.unshift(firstRow, 1); - this.foldWidgets.splice.apply(this.foldWidgets, args); - } - }; - this.tokenizerUpdateFoldWidgets = function(e) { - var rows = e.data; - if (rows.first != rows.last) { - if (this.foldWidgets.length > rows.first) - this.foldWidgets.splice(rows.first, this.foldWidgets.length); - } - }; -} - -exports.Folding = Folding; - -}); - -ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; - - -function BracketMatch() { - - this.findMatchingBracket = function(position, chr) { - if (position.column == 0) return null; - - var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1); - if (charBeforeCursor == "") return null; - - var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); - if (!match) - return null; - - if (match[1]) - return this.$findClosingBracket(match[1], position); - else - return this.$findOpeningBracket(match[2], position); - }; - - this.getBracketRange = function(pos) { - var line = this.getLine(pos.row); - var before = true, range; - - var chr = line.charAt(pos.column - 1); - var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - if (!match) { - chr = line.charAt(pos.column); - pos = {row: pos.row, column: pos.column + 1}; - match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - before = false; - } - if (!match) - return null; - - if (match[1]) { - var bracketPos = this.$findClosingBracket(match[1], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(pos, bracketPos); - if (!before) { - range.end.column++; - range.start.column--; - } - range.cursor = range.end; - } else { - var bracketPos = this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(bracketPos, pos); - if (!before) { - range.start.column++; - range.end.column--; - } - range.cursor = range.start; - } - - return range; - }; - this.getMatchingBracketRanges = function(pos) { - var line = this.getLine(pos.row); - - var chr = line.charAt(pos.column - 1); - var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - if (!match) { - chr = line.charAt(pos.column); - pos = {row: pos.row, column: pos.column + 1}; - match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - } - - if (!match) - return null; - - var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); - var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) - : this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return [startRange]; - var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); - - return [startRange, endRange]; - }; - - this.$brackets = { - ")": "(", - "(": ")", - "]": "[", - "[": "]", - "{": "}", - "}": "{", - "<": ">", - ">": "<" - }; - - this.$findOpeningBracket = function(bracket, position, typeRe) { - var openBracket = this.$brackets[bracket]; - var depth = 1; - - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + - token.type.replace(".", "\\.").replace("rparen", ".paren") - .replace(/\b(?:end)\b/, "(?:start|begin|end)") - + ")+" - ); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; - var value = token.value; - - while (true) { - - while (valueIndex >= 0) { - var chr = value.charAt(valueIndex); - if (chr == openBracket) { - depth -= 1; - if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex -= 1; - } - do { - token = iterator.stepBackward(); - } while (token && !typeRe.test(token.type)); - - if (token == null) - break; - - value = token.value; - valueIndex = value.length - 1; - } - - return null; - }; - - this.$findClosingBracket = function(bracket, position, typeRe) { - var closingBracket = this.$brackets[bracket]; - var depth = 1; - - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + - token.type.replace(".", "\\.").replace("lparen", ".paren") - .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") - + ")+" - ); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn(); - - while (true) { - - var value = token.value; - var valueLength = value.length; - while (valueIndex < valueLength) { - var chr = value.charAt(valueIndex); - if (chr == closingBracket) { - depth -= 1; - if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex += 1; - } - do { - token = iterator.stepForward(); - } while (token && !typeRe.test(token.type)); - - if (token == null) - break; - - valueIndex = 0; - } - - return null; - }; -} -exports.BracketMatch = BracketMatch; - -}); - -ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var BidiHandler = require("./bidihandler").BidiHandler; -var config = require("./config"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Selection = require("./selection").Selection; -var TextMode = require("./mode/text").Mode; -var Range = require("./range").Range; -var Document = require("./document").Document; -var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; -var SearchHighlight = require("./search_highlight").SearchHighlight; - -var EditSession = function(text, mode) { - this.$breakpoints = []; - this.$decorations = []; - this.$frontMarkers = {}; - this.$backMarkers = {}; - this.$markerId = 1; - this.$undoSelect = true; - - this.$foldData = []; - this.id = "session" + (++EditSession.$uid); - this.$foldData.toString = function() { - return this.join("\n"); - }; - this.on("changeFold", this.onChangeFold.bind(this)); - this.$onChange = this.onChange.bind(this); - - if (typeof text != "object" || !text.getLine) - text = new Document(text); - - this.setDocument(text); - this.selection = new Selection(this); - this.$bidiHandler = new BidiHandler(this); - - config.resetOptions(this); - this.setMode(mode); - config._signal("session", this); -}; - - -EditSession.$uid = 0; - -(function() { - - oop.implement(this, EventEmitter); - this.setDocument = function(doc) { - if (this.doc) - this.doc.off("change", this.$onChange); - - this.doc = doc; - doc.on("change", this.$onChange); - - if (this.bgTokenizer) - this.bgTokenizer.setDocument(this.getDocument()); - - this.resetCaches(); - }; - this.getDocument = function() { - return this.doc; - }; - this.$resetRowCache = function(docRow) { - if (!docRow) { - this.$docRowCache = []; - this.$screenRowCache = []; - return; - } - var l = this.$docRowCache.length; - var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; - if (l > i) { - this.$docRowCache.splice(i, l); - this.$screenRowCache.splice(i, l); - } - }; - - this.$getRowCacheIndex = function(cacheArray, val) { - var low = 0; - var hi = cacheArray.length - 1; - - while (low <= hi) { - var mid = (low + hi) >> 1; - var c = cacheArray[mid]; - - if (val > c) - low = mid + 1; - else if (val < c) - hi = mid - 1; - else - return mid; - } - - return low -1; - }; - - this.resetCaches = function() { - this.$modified = true; - this.$wrapData = []; - this.$rowLengthCache = []; - this.$resetRowCache(0); - if (this.bgTokenizer) - this.bgTokenizer.start(0); - }; - - this.onChangeFold = function(e) { - var fold = e.data; - this.$resetRowCache(fold.start.row); - }; - - this.onChange = function(delta) { - this.$modified = true; - this.$bidiHandler.onChange(delta); - this.$resetRowCache(delta.start.row); - - var removedFolds = this.$updateInternalDataOnChange(delta); - if (!this.$fromUndo && this.$undoManager) { - if (removedFolds && removedFolds.length) { - this.$undoManager.add({ - action: "removeFolds", - folds: removedFolds - }, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - } - this.$undoManager.add(delta, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - - this.$informUndoManager.schedule(); - } - - this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta); - this._signal("change", delta); - }; - this.setValue = function(text) { - this.doc.setValue(text); - this.selection.moveTo(0, 0); - - this.$resetRowCache(0); - this.setUndoManager(this.$undoManager); - this.getUndoManager().reset(); - }; - this.getValue = - this.toString = function() { - return this.doc.getValue(); - }; - this.getSelection = function() { - return this.selection; - }; - this.getState = function(row) { - return this.bgTokenizer.getState(row); - }; - this.getTokens = function(row) { - return this.bgTokenizer.getTokens(row); - }; - this.getTokenAt = function(row, column) { - var tokens = this.bgTokenizer.getTokens(row); - var token, c = 0; - if (column == null) { - var i = tokens.length - 1; - c = this.getLine(row).length; - } else { - for (var i = 0; i < tokens.length; i++) { - c += tokens[i].value.length; - if (c >= column) - break; - } - } - token = tokens[i]; - if (!token) - return null; - token.index = i; - token.start = c - token.value.length; - return token; - }; - this.setUndoManager = function(undoManager) { - this.$undoManager = undoManager; - - if (this.$informUndoManager) - this.$informUndoManager.cancel(); - - if (undoManager) { - var self = this; - undoManager.addSession(this); - this.$syncInformUndoManager = function() { - self.$informUndoManager.cancel(); - self.mergeUndoDeltas = false; - }; - this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); - } else { - this.$syncInformUndoManager = function() {}; - } - }; - this.markUndoGroup = function() { - if (this.$syncInformUndoManager) - this.$syncInformUndoManager(); - }; - - this.$defaultUndoManager = { - undo: function() {}, - redo: function() {}, - hasUndo: function() {}, - hasRedo: function() {}, - reset: function() {}, - add: function() {}, - addSelection: function() {}, - startNewGroup: function() {}, - addSession: function() {} - }; - this.getUndoManager = function() { - return this.$undoManager || this.$defaultUndoManager; - }; - this.getTabString = function() { - if (this.getUseSoftTabs()) { - return lang.stringRepeat(" ", this.getTabSize()); - } else { - return "\t"; - } - }; - this.setUseSoftTabs = function(val) { - this.setOption("useSoftTabs", val); - }; - this.getUseSoftTabs = function() { - return this.$useSoftTabs && !this.$mode.$indentWithTabs; - }; - this.setTabSize = function(tabSize) { - this.setOption("tabSize", tabSize); - }; - this.getTabSize = function() { - return this.$tabSize; - }; - this.isTabStop = function(position) { - return this.$useSoftTabs && (position.column % this.$tabSize === 0); - }; - this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { - this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); - }; - this.getNavigateWithinSoftTabs = function() { - return this.$navigateWithinSoftTabs; - }; - - this.$overwrite = false; - this.setOverwrite = function(overwrite) { - this.setOption("overwrite", overwrite); - }; - this.getOverwrite = function() { - return this.$overwrite; - }; - this.toggleOverwrite = function() { - this.setOverwrite(!this.$overwrite); - }; - this.addGutterDecoration = function(row, className) { - if (!this.$decorations[row]) - this.$decorations[row] = ""; - this.$decorations[row] += " " + className; - this._signal("changeBreakpoint", {}); - }; - this.removeGutterDecoration = function(row, className) { - this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); - this._signal("changeBreakpoint", {}); - }; - this.getBreakpoints = function() { - return this.$breakpoints; - }; - this.setBreakpoints = function(rows) { - this.$breakpoints = []; - for (var i=0; i 0) - inToken = !!line.charAt(column - 1).match(this.tokenRe); - - if (!inToken) - inToken = !!line.charAt(column).match(this.tokenRe); - - if (inToken) - var re = this.tokenRe; - else if (/^\s+$/.test(line.slice(column-1, column+1))) - var re = /\s/; - else - var re = this.nonTokenRe; - - var start = column; - if (start > 0) { - do { - start--; - } - while (start >= 0 && line.charAt(start).match(re)); - start++; - } - - var end = column; - while (end < line.length && line.charAt(end).match(re)) { - end++; - } - - return new Range(row, start, row, end); - }; - this.getAWordRange = function(row, column) { - var wordRange = this.getWordRange(row, column); - var line = this.getLine(wordRange.end.row); - - while (line.charAt(wordRange.end.column).match(/[ \t]/)) { - wordRange.end.column += 1; - } - return wordRange; - }; - this.setNewLineMode = function(newLineMode) { - this.doc.setNewLineMode(newLineMode); - }; - this.getNewLineMode = function() { - return this.doc.getNewLineMode(); - }; - this.setUseWorker = function(useWorker) { this.setOption("useWorker", useWorker); }; - this.getUseWorker = function() { return this.$useWorker; }; - this.onReloadTokenizer = function(e) { - var rows = e.data; - this.bgTokenizer.start(rows.first); - this._signal("tokenizerUpdate", e); - }; - - this.$modes = config.$modes; - this.$mode = null; - this.$modeId = null; - this.setMode = function(mode, cb) { - if (mode && typeof mode === "object") { - if (mode.getTokenizer) - return this.$onChangeMode(mode); - var options = mode; - var path = options.path; - } else { - path = mode || "ace/mode/text"; - } - if (!this.$modes["ace/mode/text"]) - this.$modes["ace/mode/text"] = new TextMode(); - - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - cb && cb(); - return; - } - this.$modeId = path; - config.loadModule(["mode", path], function(m) { - if (this.$modeId !== path) - return cb && cb(); - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - } else if (m && m.Mode) { - m = new m.Mode(options); - if (!options) { - this.$modes[path] = m; - m.$id = path; - } - this.$onChangeMode(m); - } - cb && cb(); - }.bind(this)); - if (!this.$mode) - this.$onChangeMode(this.$modes["ace/mode/text"], true); - }; - - this.$onChangeMode = function(mode, $isPlaceholder) { - if (!$isPlaceholder) - this.$modeId = mode.$id; - if (this.$mode === mode) - return; - - var oldMode = this.$mode; - this.$mode = mode; - - this.$stopWorker(); - - if (this.$useWorker) - this.$startWorker(); - - var tokenizer = mode.getTokenizer(); - - if(tokenizer.on !== undefined) { - var onReloadTokenizer = this.onReloadTokenizer.bind(this); - tokenizer.on("update", onReloadTokenizer); - } - - if (!this.bgTokenizer) { - this.bgTokenizer = new BackgroundTokenizer(tokenizer); - var _self = this; - this.bgTokenizer.on("update", function(e) { - _self._signal("tokenizerUpdate", e); - }); - } else { - this.bgTokenizer.setTokenizer(tokenizer); - } - - this.bgTokenizer.setDocument(this.getDocument()); - - this.tokenRe = mode.tokenRe; - this.nonTokenRe = mode.nonTokenRe; - - - if (!$isPlaceholder) { - if (mode.attachToSession) - mode.attachToSession(this); - this.$options.wrapMethod.set.call(this, this.$wrapMethod); - this.$setFolding(mode.foldingRules); - this.bgTokenizer.start(0); - this._emit("changeMode", {oldMode: oldMode, mode: mode}); - } - }; - - this.$stopWorker = function() { - if (this.$worker) { - this.$worker.terminate(); - this.$worker = null; - } - }; - - this.$startWorker = function() { - try { - this.$worker = this.$mode.createWorker(this); - } catch (e) { - config.warn("Could not load worker", e); - this.$worker = null; - } - }; - this.getMode = function() { - return this.$mode; - }; - - this.$scrollTop = 0; - this.setScrollTop = function(scrollTop) { - if (this.$scrollTop === scrollTop || isNaN(scrollTop)) - return; - - this.$scrollTop = scrollTop; - this._signal("changeScrollTop", scrollTop); - }; - this.getScrollTop = function() { - return this.$scrollTop; - }; - - this.$scrollLeft = 0; - this.setScrollLeft = function(scrollLeft) { - if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) - return; - - this.$scrollLeft = scrollLeft; - this._signal("changeScrollLeft", scrollLeft); - }; - this.getScrollLeft = function() { - return this.$scrollLeft; - }; - this.getScreenWidth = function() { - this.$computeWidth(); - if (this.lineWidgets) - return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); - return this.screenWidth; - }; - - this.getLineWidgetMaxWidth = function() { - if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth; - var width = 0; - this.lineWidgets.forEach(function(w) { - if (w && w.screenWidth > width) - width = w.screenWidth; - }); - return this.lineWidgetWidth = width; - }; - - this.$computeWidth = function(force) { - if (this.$modified || force) { - this.$modified = false; - - if (this.$useWrapMode) - return this.screenWidth = this.$wrapLimit; - - var lines = this.doc.getAllLines(); - var cache = this.$rowLengthCache; - var longestScreenLine = 0; - var foldIndex = 0; - var foldLine = this.$foldData[foldIndex]; - var foldStart = foldLine ? foldLine.start.row : Infinity; - var len = lines.length; - - for (var i = 0; i < len; i++) { - if (i > foldStart) { - i = foldLine.end.row + 1; - if (i >= len) - break; - foldLine = this.$foldData[foldIndex++]; - foldStart = foldLine ? foldLine.start.row : Infinity; - } - - if (cache[i] == null) - cache[i] = this.$getStringScreenWidth(lines[i])[0]; - - if (cache[i] > longestScreenLine) - longestScreenLine = cache[i]; - } - this.screenWidth = longestScreenLine; - } - }; - this.getLine = function(row) { - return this.doc.getLine(row); - }; - this.getLines = function(firstRow, lastRow) { - return this.doc.getLines(firstRow, lastRow); - }; - this.getLength = function() { - return this.doc.getLength(); - }; - this.getTextRange = function(range) { - return this.doc.getTextRange(range || this.selection.getRange()); - }; - this.insert = function(position, text) { - return this.doc.insert(position, text); - }; - this.remove = function(range) { - return this.doc.remove(range); - }; - this.removeFullLines = function(firstRow, lastRow){ - return this.doc.removeFullLines(firstRow, lastRow); - }; - this.undoChanges = function(deltas, dontSelect) { - if (!deltas.length) - return; - - this.$fromUndo = true; - for (var i = deltas.length - 1; i != -1; i--) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.revertDelta(delta); - } else if (delta.folds) { - this.addFolds(delta.folds); - } - } - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionBefore) - this.selection.fromJSON(deltas.selectionBefore); - else - this.selection.setRange(this.$getUndoSelection(deltas, true)); - } - this.$fromUndo = false; - }; - this.redoChanges = function(deltas, dontSelect) { - if (!deltas.length) - return; - - this.$fromUndo = true; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.$safeApplyDelta(delta); - } - } - - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionAfter) - this.selection.fromJSON(deltas.selectionAfter); - else - this.selection.setRange(this.$getUndoSelection(deltas, false)); - } - this.$fromUndo = false; - }; - this.setUndoSelect = function(enable) { - this.$undoSelect = enable; - }; - - this.$getUndoSelection = function(deltas, isUndo) { - function isInsert(delta) { - return isUndo ? delta.action !== "insert" : delta.action === "insert"; - } - - var range, point; - - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (!delta.start) continue; // skip folds - if (!range) { - if (isInsert(delta)) { - range = Range.fromPoints(delta.start, delta.end); - } else { - range = Range.fromPoints(delta.start, delta.start); - } - continue; - } - - if (isInsert(delta)) { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range.setStart(point); - } - point = delta.end; - if (range.compare(point.row, point.column) == 1) { - range.setEnd(point); - } - } else { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range = Range.fromPoints(delta.start, delta.start); - } - } - } - return range; - }; - this.replace = function(range, text) { - return this.doc.replace(range, text); - }; - this.moveText = function(fromRange, toPosition, copy) { - var text = this.getTextRange(fromRange); - var folds = this.getFoldsInRange(fromRange); - - var toRange = Range.fromPoints(toPosition, toPosition); - if (!copy) { - this.remove(fromRange); - var rowDiff = fromRange.start.row - fromRange.end.row; - var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; - if (collDiff) { - if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) - toRange.start.column += collDiff; - if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) - toRange.end.column += collDiff; - } - if (rowDiff && toRange.start.row >= fromRange.end.row) { - toRange.start.row += rowDiff; - toRange.end.row += rowDiff; - } - } - - toRange.end = this.insert(toRange.start, text); - if (folds.length) { - var oldStart = fromRange.start; - var newStart = toRange.start; - var rowDiff = newStart.row - oldStart.row; - var collDiff = newStart.column - oldStart.column; - this.addFolds(folds.map(function(x) { - x = x.clone(); - if (x.start.row == oldStart.row) - x.start.column += collDiff; - if (x.end.row == oldStart.row) - x.end.column += collDiff; - x.start.row += rowDiff; - x.end.row += rowDiff; - return x; - })); - } - - return toRange; - }; - this.indentRows = function(startRow, endRow, indentString) { - indentString = indentString.replace(/\t/g, this.getTabString()); - for (var row=startRow; row<=endRow; row++) - this.doc.insertInLine({row: row, column: 0}, indentString); - }; - this.outdentRows = function (range) { - var rowRange = range.collapseRows(); - var deleteRange = new Range(0, 0, 0, 0); - var size = this.getTabSize(); - - for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { - var line = this.getLine(i); - - deleteRange.start.row = i; - deleteRange.end.row = i; - for (var j = 0; j < size; ++j) - if (line.charAt(j) != ' ') - break; - if (j < size && line.charAt(j) == '\t') { - deleteRange.start.column = j; - deleteRange.end.column = j + 1; - } else { - deleteRange.start.column = 0; - deleteRange.end.column = j; - } - this.remove(deleteRange); - } - }; - - this.$moveLines = function(firstRow, lastRow, dir) { - firstRow = this.getRowFoldStart(firstRow); - lastRow = this.getRowFoldEnd(lastRow); - if (dir < 0) { - var row = this.getRowFoldStart(firstRow + dir); - if (row < 0) return 0; - var diff = row-firstRow; - } else if (dir > 0) { - var row = this.getRowFoldEnd(lastRow + dir); - if (row > this.doc.getLength()-1) return 0; - var diff = row-lastRow; - } else { - firstRow = this.$clipRowToDocument(firstRow); - lastRow = this.$clipRowToDocument(lastRow); - var diff = lastRow - firstRow + 1; - } - - var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); - var folds = this.getFoldsInRange(range).map(function(x){ - x = x.clone(); - x.start.row += diff; - x.end.row += diff; - return x; - }); - - var lines = dir == 0 - ? this.doc.getLines(firstRow, lastRow) - : this.doc.removeFullLines(firstRow, lastRow); - this.doc.insertFullLines(firstRow+diff, lines); - folds.length && this.addFolds(folds); - return diff; - }; - this.moveLinesUp = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, -1); - }; - this.moveLinesDown = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 1); - }; - this.duplicateLines = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 0); - }; - - - this.$clipRowToDocument = function(row) { - return Math.max(0, Math.min(row, this.doc.getLength()-1)); - }; - - this.$clipColumnToRow = function(row, column) { - if (column < 0) - return 0; - return Math.min(this.doc.getLine(row).length, column); - }; - - - this.$clipPositionToDocument = function(row, column) { - column = Math.max(0, column); - - if (row < 0) { - row = 0; - column = 0; - } else { - var len = this.doc.getLength(); - if (row >= len) { - row = len - 1; - column = this.doc.getLine(len-1).length; - } else { - column = Math.min(this.doc.getLine(row).length, column); - } - } - - return { - row: row, - column: column - }; - }; - - this.$clipRangeToDocument = function(range) { - if (range.start.row < 0) { - range.start.row = 0; - range.start.column = 0; - } else { - range.start.column = this.$clipColumnToRow( - range.start.row, - range.start.column - ); - } - - var len = this.doc.getLength() - 1; - if (range.end.row > len) { - range.end.row = len; - range.end.column = this.doc.getLine(len).length; - } else { - range.end.column = this.$clipColumnToRow( - range.end.row, - range.end.column - ); - } - return range; - }; - this.$wrapLimit = 80; - this.$useWrapMode = false; - this.$wrapLimitRange = { - min : null, - max : null - }; - this.setUseWrapMode = function(useWrapMode) { - if (useWrapMode != this.$useWrapMode) { - this.$useWrapMode = useWrapMode; - this.$modified = true; - this.$resetRowCache(0); - if (useWrapMode) { - var len = this.getLength(); - this.$wrapData = Array(len); - this.$updateWrapData(0, len - 1); - } - - this._signal("changeWrapMode"); - } - }; - this.getUseWrapMode = function() { - return this.$useWrapMode; - }; - this.setWrapLimitRange = function(min, max) { - if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { - this.$wrapLimitRange = { min: min, max: max }; - this.$modified = true; - this.$bidiHandler.markAsDirty(); - if (this.$useWrapMode) - this._signal("changeWrapMode"); - } - }; - this.adjustWrapLimit = function(desiredLimit, $printMargin) { - var limits = this.$wrapLimitRange; - if (limits.max < 0) - limits = {min: $printMargin, max: $printMargin}; - var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); - if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { - this.$wrapLimit = wrapLimit; - this.$modified = true; - if (this.$useWrapMode) { - this.$updateWrapData(0, this.getLength() - 1); - this.$resetRowCache(0); - this._signal("changeWrapLimit"); - } - return true; - } - return false; - }; - - this.$constrainWrapLimit = function(wrapLimit, min, max) { - if (min) - wrapLimit = Math.max(min, wrapLimit); - - if (max) - wrapLimit = Math.min(max, wrapLimit); - - return wrapLimit; - }; - this.getWrapLimit = function() { - return this.$wrapLimit; - }; - this.setWrapLimit = function (limit) { - this.setWrapLimitRange(limit, limit); - }; - this.getWrapLimitRange = function() { - return { - min : this.$wrapLimitRange.min, - max : this.$wrapLimitRange.max - }; - }; - - this.$updateInternalDataOnChange = function(delta) { - var useWrapMode = this.$useWrapMode; - var action = delta.action; - var start = delta.start; - var end = delta.end; - var firstRow = start.row; - var lastRow = end.row; - var len = lastRow - firstRow; - var removedFolds = null; - - this.$updating = true; - if (len != 0) { - if (action === "remove") { - this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); - - var foldLines = this.$foldData; - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - - var foldLine = this.getFoldLine(end.row); - var idx = 0; - if (foldLine) { - foldLine.addRemoveChars(end.row, end.column, start.column - end.column); - foldLine.shiftRow(-len); - - var foldLineBefore = this.getFoldLine(firstRow); - if (foldLineBefore && foldLineBefore !== foldLine) { - foldLineBefore.merge(foldLine); - foldLine = foldLineBefore; - } - idx = foldLines.indexOf(foldLine) + 1; - } - - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= end.row) { - foldLine.shiftRow(-len); - } - } - - lastRow = firstRow; - } else { - var args = Array(len); - args.unshift(firstRow, 0); - var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; - arr.splice.apply(arr, args); - var foldLines = this.$foldData; - var foldLine = this.getFoldLine(firstRow); - var idx = 0; - if (foldLine) { - var cmp = foldLine.range.compareInside(start.row, start.column); - if (cmp == 0) { - foldLine = foldLine.split(start.row, start.column); - if (foldLine) { - foldLine.shiftRow(len); - foldLine.addRemoveChars(lastRow, 0, end.column - start.column); - } - } else - if (cmp == -1) { - foldLine.addRemoveChars(firstRow, 0, end.column - start.column); - foldLine.shiftRow(len); - } - idx = foldLines.indexOf(foldLine) + 1; - } - - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= firstRow) { - foldLine.shiftRow(len); - } - } - } - } else { - len = Math.abs(delta.start.column - delta.end.column); - if (action === "remove") { - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - - len = -len; - } - var foldLine = this.getFoldLine(firstRow); - if (foldLine) { - foldLine.addRemoveChars(firstRow, start.column, len); - } - } - - if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { - console.error("doc.getLength() and $wrapData.length have to be the same!"); - } - this.$updating = false; - - if (useWrapMode) - this.$updateWrapData(firstRow, lastRow); - else - this.$updateRowLengthCache(firstRow, lastRow); - - return removedFolds; - }; - - this.$updateRowLengthCache = function(firstRow, lastRow, b) { - this.$rowLengthCache[firstRow] = null; - this.$rowLengthCache[lastRow] = null; - }; - - this.$updateWrapData = function(firstRow, lastRow) { - var lines = this.doc.getAllLines(); - var tabSize = this.getTabSize(); - var wrapData = this.$wrapData; - var wrapLimit = this.$wrapLimit; - var tokens; - var foldLine; - - var row = firstRow; - lastRow = Math.min(lastRow, lines.length - 1); - while (row <= lastRow) { - foldLine = this.getFoldLine(row, foldLine); - if (!foldLine) { - tokens = this.$getDisplayTokens(lines[row]); - wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row ++; - } else { - tokens = []; - foldLine.walk(function(placeholder, row, column, lastColumn) { - var walkTokens; - if (placeholder != null) { - walkTokens = this.$getDisplayTokens( - placeholder, tokens.length); - walkTokens[0] = PLACEHOLDER_START; - for (var i = 1; i < walkTokens.length; i++) { - walkTokens[i] = PLACEHOLDER_BODY; - } - } else { - walkTokens = this.$getDisplayTokens( - lines[row].substring(lastColumn, column), - tokens.length); - } - tokens = tokens.concat(walkTokens); - }.bind(this), - foldLine.end.row, - lines[foldLine.end.row].length + 1 - ); - - wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row = foldLine.end.row + 1; - } - } - }; - var CHAR = 1, - CHAR_EXT = 2, - PLACEHOLDER_START = 3, - PLACEHOLDER_BODY = 4, - PUNCTUATION = 9, - SPACE = 10, - TAB = 11, - TAB_SPACE = 12; - - - this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) { - if (tokens.length == 0) { - return []; - } - - var splits = []; - var displayLength = tokens.length; - var lastSplit = 0, lastDocSplit = 0; - - var isCode = this.$wrapAsCode; - - var indentedSoftWrap = this.$indentedSoftWrap; - var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) - || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); - - function getWrapIndent() { - var indentation = 0; - if (maxIndent === 0) - return indentation; - if (indentedSoftWrap) { - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token == SPACE) - indentation += 1; - else if (token == TAB) - indentation += tabSize; - else if (token == TAB_SPACE) - continue; - else - break; - } - } - if (isCode && indentedSoftWrap !== false) - indentation += tabSize; - return Math.min(indentation, maxIndent); - } - function addSplit(screenPos) { - var len = screenPos - lastSplit; - for (var i = lastSplit; i < screenPos; i++) { - var ch = tokens[i]; - if (ch === 12 || ch === 2) len -= 1; - } - - if (!splits.length) { - indent = getWrapIndent(); - splits.indent = indent; - } - lastDocSplit += len; - splits.push(lastDocSplit); - lastSplit = screenPos; - } - var indent = 0; - while (displayLength - lastSplit > wrapLimit - indent) { - var split = lastSplit + wrapLimit - indent; - if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { - addSplit(split); - continue; - } - if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { - for (split; split != lastSplit - 1; split--) { - if (tokens[split] == PLACEHOLDER_START) { - break; - } - } - if (split > lastSplit) { - addSplit(split); - continue; - } - split = lastSplit + wrapLimit; - for (split; split < tokens.length; split++) { - if (tokens[split] != PLACEHOLDER_BODY) { - break; - } - } - if (split == tokens.length) { - break; // Breaks the while-loop. - } - addSplit(split); - continue; - } - var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1); - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; - } - if (isCode) { - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; - } - while (split > minSplit && tokens[split] == PUNCTUATION) { - split --; - } - } else { - while (split > minSplit && tokens[split] < SPACE) { - split --; - } - } - if (split > minSplit) { - addSplit(++split); - continue; - } - split = lastSplit + wrapLimit; - if (tokens[split] == CHAR_EXT) - split--; - addSplit(split - indent); - } - return splits; - }; - this.$getDisplayTokens = function(str, offset) { - var arr = []; - var tabSize; - offset = offset || 0; - - for (var i = 0; i < str.length; i++) { - var c = str.charCodeAt(i); - if (c == 9) { - tabSize = this.getScreenTabSize(arr.length + offset); - arr.push(TAB); - for (var n = 1; n < tabSize; n++) { - arr.push(TAB_SPACE); - } - } - else if (c == 32) { - arr.push(SPACE); - } else if((c > 39 && c < 48) || (c > 57 && c < 64)) { - arr.push(PUNCTUATION); - } - else if (c >= 0x1100 && isFullWidth(c)) { - arr.push(CHAR, CHAR_EXT); - } else { - arr.push(CHAR); - } - } - return arr; - }; - this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { - if (maxScreenColumn == 0) - return [0, 0]; - if (maxScreenColumn == null) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charCodeAt(column); - if (c == 9) { - screenColumn += this.getScreenTabSize(screenColumn); - } - else if (c >= 0x1100 && isFullWidth(c)) { - screenColumn += 2; - } else { - screenColumn += 1; - } - if (screenColumn > maxScreenColumn) { - break; - } - } - - return [screenColumn, column]; - }; - - this.lineWidgets = null; - this.getRowLength = function(row) { - var h = 1; - if (this.lineWidgets) - h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - - if (!this.$useWrapMode || !this.$wrapData[row]) - return h; - else - return this.$wrapData[row].length + h; - }; - this.getRowLineCount = function(row) { - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1; - } else { - return this.$wrapData[row].length + 1; - } - }; - - this.getRowWrapIndent = function(screenRow) { - if (this.$useWrapMode) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - var splits = this.$wrapData[pos.row]; - return splits.length && splits[0] < pos.column ? splits.indent : 0; - } else { - return 0; - } - }; - this.getScreenLastRowColumn = function(screenRow) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - return this.documentToScreenColumn(pos.row, pos.column); - }; - this.getDocumentLastRowColumn = function(docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.getScreenLastRowColumn(screenRow); - }; - this.getDocumentLastRowColumnPosition = function(docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); - }; - this.getRowSplitData = function(row) { - if (!this.$useWrapMode) { - return undefined; - } else { - return this.$wrapData[row]; - } - }; - this.getScreenTabSize = function(screenColumn) { - return this.$tabSize - (screenColumn % this.$tabSize | 0); - }; - - - this.screenToDocumentRow = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).row; - }; - - - this.screenToDocumentColumn = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).column; - }; - this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) { - if (screenRow < 0) - return {row: 0, column: 0}; - - var line; - var docRow = 0; - var docColumn = 0; - var column; - var row = 0; - var rowLength = 0; - - var rowCache = this.$screenRowCache; - var i = this.$getRowCacheIndex(rowCache, screenRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var docRow = this.$docRowCache[i]; - var doCache = screenRow > rowCache[l - 1]; - } else { - var doCache = !l; - } - - var maxRow = this.getLength() - 1; - var foldLine = this.getNextFoldLine(docRow); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (row <= screenRow) { - rowLength = this.getRowLength(docRow); - if (row + rowLength > screenRow || docRow >= maxRow) { - break; - } else { - row += rowLength; - docRow++; - if (docRow > foldStart) { - docRow = foldLine.end.row+1; - foldLine = this.getNextFoldLine(docRow, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - } - - if (doCache) { - this.$docRowCache.push(docRow); - this.$screenRowCache.push(row); - } - } - - if (foldLine && foldLine.start.row <= docRow) { - line = this.getFoldDisplayLine(foldLine); - docRow = foldLine.start.row; - } else if (row + rowLength <= screenRow || docRow > maxRow) { - return { - row: maxRow, - column: this.getLine(maxRow).length - }; - } else { - line = this.getLine(docRow); - foldLine = null; - } - var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); - if (this.$useWrapMode) { - var splits = this.$wrapData[docRow]; - if (splits) { - column = splits[splitIndex]; - if(splitIndex > 0 && splits.length) { - wrapIndent = splits.indent; - docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; - line = line.substring(docColumn); - } - } - } - - if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) - screenColumn = this.$bidiHandler.offsetToCol(offsetX); - - docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; - if (this.$useWrapMode && docColumn >= column) - docColumn = column - 1; - - if (foldLine) - return foldLine.idxToPosition(docColumn); - - return {row: docRow, column: docColumn}; - }; - this.documentToScreenPosition = function(docRow, docColumn) { - if (typeof docColumn === "undefined") - var pos = this.$clipPositionToDocument(docRow.row, docRow.column); - else - pos = this.$clipPositionToDocument(docRow, docColumn); - - docRow = pos.row; - docColumn = pos.column; - - var screenRow = 0; - var foldStartRow = null; - var fold = null; - fold = this.getFoldAt(docRow, docColumn, 1); - if (fold) { - docRow = fold.start.row; - docColumn = fold.start.column; - } - - var rowEnd, row = 0; - - - var rowCache = this.$docRowCache; - var i = this.$getRowCacheIndex(rowCache, docRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var screenRow = this.$screenRowCache[i]; - var doCache = docRow > rowCache[l - 1]; - } else { - var doCache = !l; - } - - var foldLine = this.getNextFoldLine(row); - var foldStart = foldLine ?foldLine.start.row :Infinity; - - while (row < docRow) { - if (row >= foldStart) { - rowEnd = foldLine.end.row + 1; - if (rowEnd > docRow) - break; - foldLine = this.getNextFoldLine(rowEnd, foldLine); - foldStart = foldLine ?foldLine.start.row :Infinity; - } - else { - rowEnd = row + 1; - } - - screenRow += this.getRowLength(row); - row = rowEnd; - - if (doCache) { - this.$docRowCache.push(row); - this.$screenRowCache.push(screenRow); - } - } - var textLine = ""; - if (foldLine && row >= foldStart) { - textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); - foldStartRow = foldLine.start.row; - } else { - textLine = this.getLine(docRow).substring(0, docColumn); - foldStartRow = docRow; - } - var wrapIndent = 0; - if (this.$useWrapMode) { - var wrapRow = this.$wrapData[foldStartRow]; - if (wrapRow) { - var screenRowOffset = 0; - while (textLine.length >= wrapRow[screenRowOffset]) { - screenRow ++; - screenRowOffset++; - } - textLine = textLine.substring( - wrapRow[screenRowOffset - 1] || 0, textLine.length - ); - wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; - } - } - - if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) - screenRow += this.lineWidgets[row].rowsAbove; - - return { - row: screenRow, - column: wrapIndent + this.$getStringScreenWidth(textLine)[0] - }; - }; - this.documentToScreenColumn = function(row, docColumn) { - return this.documentToScreenPosition(row, docColumn).column; - }; - this.documentToScreenRow = function(docRow, docColumn) { - return this.documentToScreenPosition(docRow, docColumn).row; - }; - this.getScreenLength = function() { - var screenRows = 0; - var fold = null; - if (!this.$useWrapMode) { - screenRows = this.getLength(); - var foldData = this.$foldData; - for (var i = 0; i < foldData.length; i++) { - fold = foldData[i]; - screenRows -= fold.end.row - fold.start.row; - } - } else { - var lastRow = this.$wrapData.length; - var row = 0, i = 0; - var fold = this.$foldData[i++]; - var foldStart = fold ? fold.start.row :Infinity; - - while (row < lastRow) { - var splits = this.$wrapData[row]; - screenRows += splits ? splits.length + 1 : 1; - row ++; - if (row > foldStart) { - row = fold.end.row+1; - fold = this.$foldData[i++]; - foldStart = fold ?fold.start.row :Infinity; - } - } - } - if (this.lineWidgets) - screenRows += this.$getWidgetScreenLength(); - - return screenRows; - }; - this.$setFontMetrics = function(fm) { - if (!this.$enableVarChar) return; - this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { - if (maxScreenColumn === 0) - return [0, 0]; - if (!maxScreenColumn) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charAt(column); - if (c === "\t") { - screenColumn += this.getScreenTabSize(screenColumn); - } else { - screenColumn += fm.getCharacterWidth(c); - } - if (screenColumn > maxScreenColumn) { - break; - } - } - - return [screenColumn, column]; - }; - }; - - this.destroy = function() { - if (this.bgTokenizer) { - this.bgTokenizer.setDocument(null); - this.bgTokenizer = null; - } - this.$stopWorker(); - this.removeAllListeners(); - if (this.doc) { - this.doc.off("change", this.$onChange); - } - this.selection.detach(); - }; - - this.isFullWidth = isFullWidth; - function isFullWidth(c) { - if (c < 0x1100) - return false; - return c >= 0x1100 && c <= 0x115F || - c >= 0x11A3 && c <= 0x11A7 || - c >= 0x11FA && c <= 0x11FF || - c >= 0x2329 && c <= 0x232A || - c >= 0x2E80 && c <= 0x2E99 || - c >= 0x2E9B && c <= 0x2EF3 || - c >= 0x2F00 && c <= 0x2FD5 || - c >= 0x2FF0 && c <= 0x2FFB || - c >= 0x3000 && c <= 0x303E || - c >= 0x3041 && c <= 0x3096 || - c >= 0x3099 && c <= 0x30FF || - c >= 0x3105 && c <= 0x312D || - c >= 0x3131 && c <= 0x318E || - c >= 0x3190 && c <= 0x31BA || - c >= 0x31C0 && c <= 0x31E3 || - c >= 0x31F0 && c <= 0x321E || - c >= 0x3220 && c <= 0x3247 || - c >= 0x3250 && c <= 0x32FE || - c >= 0x3300 && c <= 0x4DBF || - c >= 0x4E00 && c <= 0xA48C || - c >= 0xA490 && c <= 0xA4C6 || - c >= 0xA960 && c <= 0xA97C || - c >= 0xAC00 && c <= 0xD7A3 || - c >= 0xD7B0 && c <= 0xD7C6 || - c >= 0xD7CB && c <= 0xD7FB || - c >= 0xF900 && c <= 0xFAFF || - c >= 0xFE10 && c <= 0xFE19 || - c >= 0xFE30 && c <= 0xFE52 || - c >= 0xFE54 && c <= 0xFE66 || - c >= 0xFE68 && c <= 0xFE6B || - c >= 0xFF01 && c <= 0xFF60 || - c >= 0xFFE0 && c <= 0xFFE6; - } - -}).call(EditSession.prototype); - -require("./edit_session/folding").Folding.call(EditSession.prototype); -require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); - - -config.defineOptions(EditSession.prototype, "session", { - wrap: { - set: function(value) { - if (!value || value == "off") - value = false; - else if (value == "free") - value = true; - else if (value == "printMargin") - value = -1; - else if (typeof value == "string") - value = parseInt(value, 10) || false; - - if (this.$wrap == value) - return; - this.$wrap = value; - if (!value) { - this.setUseWrapMode(false); - } else { - var col = typeof value == "number" ? value : null; - this.setWrapLimitRange(col, col); - this.setUseWrapMode(true); - } - }, - get: function() { - if (this.getUseWrapMode()) { - if (this.$wrap == -1) - return "printMargin"; - if (!this.getWrapLimitRange().min) - return "free"; - return this.$wrap; - } - return "off"; - }, - handlesSet: true - }, - wrapMethod: { - set: function(val) { - val = val == "auto" - ? this.$mode.type != "text" - : val != "text"; - if (val != this.$wrapAsCode) { - this.$wrapAsCode = val; - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - } - }, - initialValue: "auto" - }, - indentedSoftWrap: { - set: function() { - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - }, - initialValue: true - }, - firstLineNumber: { - set: function() {this._signal("changeBreakpoint");}, - initialValue: 1 - }, - useWorker: { - set: function(useWorker) { - this.$useWorker = useWorker; - - this.$stopWorker(); - if (useWorker) - this.$startWorker(); - }, - initialValue: true - }, - useSoftTabs: {initialValue: true}, - tabSize: { - set: function(tabSize) { - tabSize = parseInt(tabSize); - if (tabSize > 0 && this.$tabSize !== tabSize) { - this.$modified = true; - this.$rowLengthCache = []; - this.$tabSize = tabSize; - this._signal("changeTabSize"); - } - }, - initialValue: 4, - handlesSet: true - }, - navigateWithinSoftTabs: {initialValue: false}, - foldStyle: { - set: function(val) {this.setFoldStyle(val);}, - handlesSet: true - }, - overwrite: { - set: function(val) {this._signal("changeOverwrite");}, - initialValue: false - }, - newLineMode: { - set: function(val) {this.doc.setNewLineMode(val);}, - get: function() {return this.doc.getNewLineMode();}, - handlesSet: true - }, - mode: { - set: function(val) { this.setMode(val); }, - get: function() { return this.$modeId; }, - handlesSet: true - } -}); - -exports.EditSession = EditSession; -}); - -ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) { -"use strict"; - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; - -var Search = function() { - this.$options = {}; -}; - -(function() { - this.set = function(options) { - oop.mixin(this.$options, options); - return this; - }; - this.getOptions = function() { - return lang.copyObject(this.$options); - }; - this.setOptions = function(options) { - this.$options = options; - }; - this.find = function(session) { - var options = this.$options; - var iterator = this.$matchIterator(session, options); - if (!iterator) - return false; - - var firstRange = null; - iterator.forEach(function(sr, sc, er, ec) { - firstRange = new Range(sr, sc, er, ec); - if (sc == ec && options.start && options.start.start - && options.skipCurrent != false && firstRange.isEqual(options.start) - ) { - firstRange = null; - return false; - } - - return true; - }); - - return firstRange; - }; - this.findAll = function(session) { - var options = this.$options; - if (!options.needle) - return []; - this.$assembleRegExp(options); - - var range = options.range; - var lines = range - ? session.getLines(range.start.row, range.end.row) - : session.doc.getAllLines(); - - var ranges = []; - var re = options.re; - if (options.$isMultiLine) { - var len = re.length; - var maxRow = lines.length - len; - var prevRange; - outer: for (var row = re.offset || 0; row <= maxRow; row++) { - for (var j = 0; j < len; j++) - if (lines[row + j].search(re[j]) == -1) - continue outer; - - var startLine = lines[row]; - var line = lines[row + len - 1]; - var startIndex = startLine.length - startLine.match(re[0])[0].length; - var endIndex = line.match(re[len - 1])[0].length; - - if (prevRange && prevRange.end.row === row && - prevRange.end.column > startIndex - ) { - continue; - } - ranges.push(prevRange = new Range( - row, startIndex, row + len - 1, endIndex - )); - if (len > 2) - row = row + len - 2; - } - } else { - for (var i = 0; i < lines.length; i++) { - var matches = lang.getMatchOffsets(lines[i], re); - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - ranges.push(new Range(i, match.offset, i, match.offset + match.length)); - } - } - } - - if (range) { - var startColumn = range.start.column; - var endColumn = range.start.column; - var i = 0, j = ranges.length - 1; - while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row) - i++; - - while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row) - j--; - - ranges = ranges.slice(i, j + 1); - for (i = 0, j = ranges.length; i < j; i++) { - ranges[i].start.row += range.start.row; - ranges[i].end.row += range.start.row; - } - } - - return ranges; - }; - this.replace = function(input, replacement) { - var options = this.$options; - - var re = this.$assembleRegExp(options); - if (options.$isMultiLine) - return replacement; - - if (!re) - return; - - var match = re.exec(input); - if (!match || match[0].length != input.length) - return null; - - replacement = input.replace(re, replacement); - if (options.preserveCase) { - replacement = replacement.split(""); - for (var i = Math.min(input.length, input.length); i--; ) { - var ch = input[i]; - if (ch && ch.toLowerCase() != ch) - replacement[i] = replacement[i].toUpperCase(); - else - replacement[i] = replacement[i].toLowerCase(); - } - replacement = replacement.join(""); - } - - return replacement; - }; - - this.$assembleRegExp = function(options, $disableFakeMultiline) { - if (options.needle instanceof RegExp) - return options.re = options.needle; - - var needle = options.needle; - - if (!options.needle) - return options.re = false; - - if (!options.regExp) - needle = lang.escapeRegExp(needle); - - if (options.wholeWord) - needle = addWordBoundary(needle, options); - - var modifier = options.caseSensitive ? "gm" : "gmi"; - - options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); - if (options.$isMultiLine) - return options.re = this.$assembleMultilineRegExp(needle, modifier); - - try { - var re = new RegExp(needle, modifier); - } catch(e) { - re = false; - } - return options.re = re; - }; - - this.$assembleMultilineRegExp = function(needle, modifier) { - var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); - var re = []; - for (var i = 0; i < parts.length; i++) try { - re.push(new RegExp(parts[i], modifier)); - } catch(e) { - return false; - } - return re; - }; - - this.$matchIterator = function(session, options) { - var re = this.$assembleRegExp(options); - if (!re) - return false; - var backwards = options.backwards == true; - var skipCurrent = options.skipCurrent != false; - - var range = options.range; - var start = options.start; - if (!start) - start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); - - if (start.start) - start = start[skipCurrent != backwards ? "end" : "start"]; - - var firstRow = range ? range.start.row : 0; - var lastRow = range ? range.end.row : session.getLength() - 1; - - if (backwards) { - var forEach = function(callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row--; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - if (options.wrap == false) - return; - for (row = lastRow, firstRow = start.row; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - }; - } - else { - var forEach = function(callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row = row + 1; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - if (options.wrap == false) - return; - for (row = firstRow, lastRow = start.row; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - }; - } - - if (options.$isMultiLine) { - var len = re.length; - var forEachInLine = function(row, offset, callback) { - var startRow = backwards ? row - len + 1 : row; - if (startRow < 0 || startRow + len > session.getLength()) return; - var line = session.getLine(startRow); - var startIndex = line.search(re[0]); - if (!backwards && startIndex < offset || startIndex === -1) return; - for (var i = 1; i < len; i++) { - line = session.getLine(startRow + i); - if (line.search(re[i]) == -1) - return; - } - var endIndex = line.match(re[len - 1])[0].length; - if (backwards && endIndex > offset) return; - if (callback(startRow, startIndex, startRow + len - 1, endIndex)) - return true; - }; - } - else if (backwards) { - var forEachInLine = function(row, endIndex, callback) { - var line = session.getLine(row); - var matches = []; - var m, last = 0; - re.lastIndex = 0; - while((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (!length) { - if (last >= line.length) break; - re.lastIndex = last += 1; - } - if (m.index + length > endIndex) - break; - matches.push(m.index, length); - } - for (var i = matches.length - 1; i >= 0; i -= 2) { - var column = matches[i - 1]; - var length = matches[i]; - if (callback(row, column, row, column + length)) - return true; - } - }; - } - else { - var forEachInLine = function(row, startIndex, callback) { - var line = session.getLine(row); - var last; - var m; - re.lastIndex = startIndex; - while((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (callback(row, last, row,last + length)) - return true; - if (!length) { - re.lastIndex = last += 1; - if (last >= line.length) return false; - } - } - }; - } - return {forEach: forEach}; - }; - -}).call(Search.prototype); - -function addWordBoundary(needle, options) { - function wordBoundary(c) { - if (/\w/.test(c) || options.regExp) return "\\b"; - return ""; - } - return wordBoundary(needle[0]) + needle - + wordBoundary(needle[needle.length - 1]); -} - -exports.Search = Search; -}); - -ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var keyUtil = require("../lib/keys"); -var useragent = require("../lib/useragent"); -var KEY_MODS = keyUtil.KEY_MODS; - -function HashHandler(config, platform) { - this.platform = platform || (useragent.isMac ? "mac" : "win"); - this.commands = {}; - this.commandKeyBinding = {}; - this.addCommands(config); - this.$singleCommand = true; -} - -function MultiHashHandler(config, platform) { - HashHandler.call(this, config, platform); - this.$singleCommand = false; -} - -MultiHashHandler.prototype = HashHandler.prototype; - -(function() { - - - this.addCommand = function(command) { - if (this.commands[command.name]) - this.removeCommand(command); - - this.commands[command.name] = command; - - if (command.bindKey) - this._buildKeyHash(command); - }; - - this.removeCommand = function(command, keepCommand) { - var name = command && (typeof command === 'string' ? command : command.name); - command = this.commands[name]; - if (!keepCommand) - delete this.commands[name]; - var ckb = this.commandKeyBinding; - for (var keyId in ckb) { - var cmdGroup = ckb[keyId]; - if (cmdGroup == command) { - delete ckb[keyId]; - } else if (Array.isArray(cmdGroup)) { - var i = cmdGroup.indexOf(command); - if (i != -1) { - cmdGroup.splice(i, 1); - if (cmdGroup.length == 1) - ckb[keyId] = cmdGroup[0]; - } - } - } - }; - - this.bindKey = function(key, command, position) { - if (typeof key == "object" && key) { - if (position == undefined) - position = key.position; - key = key[this.platform]; - } - if (!key) - return; - if (typeof command == "function") - return this.addCommand({exec: command, bindKey: key, name: command.name || key}); - - key.split("|").forEach(function(keyPart) { - var chain = ""; - if (keyPart.indexOf(" ") != -1) { - var parts = keyPart.split(/\s+/); - keyPart = parts.pop(); - parts.forEach(function(keyPart) { - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - chain += (chain ? " " : "") + id; - this._addCommandToBinding(chain, "chainKeys"); - }, this); - chain += " "; - } - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - this._addCommandToBinding(chain + id, command, position); - }, this); - }; - - function getPosition(command) { - return typeof command == "object" && command.bindKey - && command.bindKey.position - || (command.isDefault ? -100 : 0); - } - this._addCommandToBinding = function(keyId, command, position) { - var ckb = this.commandKeyBinding, i; - if (!command) { - delete ckb[keyId]; - } else if (!ckb[keyId] || this.$singleCommand) { - ckb[keyId] = command; - } else { - if (!Array.isArray(ckb[keyId])) { - ckb[keyId] = [ckb[keyId]]; - } else if ((i = ckb[keyId].indexOf(command)) != -1) { - ckb[keyId].splice(i, 1); - } - - if (typeof position != "number") { - position = getPosition(command); - } - - var commands = ckb[keyId]; - for (i = 0; i < commands.length; i++) { - var other = commands[i]; - var otherPos = getPosition(other); - if (otherPos > position) - break; - } - commands.splice(i, 0, command); - } - }; - - this.addCommands = function(commands) { - commands && Object.keys(commands).forEach(function(name) { - var command = commands[name]; - if (!command) - return; - - if (typeof command === "string") - return this.bindKey(command, name); - - if (typeof command === "function") - command = { exec: command }; - - if (typeof command !== "object") - return; - - if (!command.name) - command.name = name; - - this.addCommand(command); - }, this); - }; - - this.removeCommands = function(commands) { - Object.keys(commands).forEach(function(name) { - this.removeCommand(commands[name]); - }, this); - }; - - this.bindKeys = function(keyList) { - Object.keys(keyList).forEach(function(key) { - this.bindKey(key, keyList[key]); - }, this); - }; - - this._buildKeyHash = function(command) { - this.bindKey(command.bindKey, command); - }; - this.parseKeys = function(keys) { - var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x;}); - var key = parts.pop(); - - var keyCode = keyUtil[key]; - if (keyUtil.FUNCTION_KEYS[keyCode]) - key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); - else if (!parts.length) - return {key: key, hashId: -1}; - else if (parts.length == 1 && parts[0] == "shift") - return {key: key.toUpperCase(), hashId: -1}; - - var hashId = 0; - for (var i = parts.length; i--;) { - var modifier = keyUtil.KEY_MODS[parts[i]]; - if (modifier == null) { - if (typeof console != "undefined") - console.error("invalid modifier " + parts[i] + " in " + keys); - return false; - } - hashId |= modifier; - } - return {key: key, hashId: hashId}; - }; - - this.findKeyCommand = function findKeyCommand(hashId, keyString) { - var key = KEY_MODS[hashId] + keyString; - return this.commandKeyBinding[key]; - }; - - this.handleKeyboard = function(data, hashId, keyString, keyCode) { - if (keyCode < 0) return; - var key = KEY_MODS[hashId] + keyString; - var command = this.commandKeyBinding[key]; - if (data.$keyChain) { - data.$keyChain += " " + key; - command = this.commandKeyBinding[data.$keyChain] || command; - } - - if (command) { - if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { - data.$keyChain = data.$keyChain || key; - return {command: "null"}; - } - } - - if (data.$keyChain) { - if ((!hashId || hashId == 4) && keyString.length == 1) - data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input - else if (hashId == -1 || keyCode > 0) - data.$keyChain = ""; // reset keyChain - } - return {command: command}; - }; - - this.getStatusText = function(editor, data) { - return data.$keyChain || ""; - }; - -}).call(HashHandler.prototype); - -exports.HashHandler = HashHandler; -exports.MultiHashHandler = MultiHashHandler; -}); - -ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var CommandManager = function(platform, commands) { - MultiHashHandler.call(this, commands, platform); - this.byName = this.commands; - this.setDefaultHandler("exec", function(e) { - return e.command.exec(e.editor, e.args || {}); - }); -}; - -oop.inherits(CommandManager, MultiHashHandler); - -(function() { - - oop.implement(this, EventEmitter); - - this.exec = function(command, editor, args) { - if (Array.isArray(command)) { - for (var i = command.length; i--; ) { - if (this.exec(command[i], editor, args)) return true; - } - return false; - } - - if (typeof command === "string") - command = this.commands[command]; - - if (!command) - return false; - - if (editor && editor.$readOnly && !command.readOnly) - return false; - - if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) - return false; - - var e = {editor: editor, command: command, args: args}; - e.returnValue = this._emit("exec", e); - this._signal("afterExec", e); - - return e.returnValue === false ? false : true; - }; - - this.toggleRecording = function(editor) { - if (this.$inReplay) - return; - - editor && editor._emit("changeStatus"); - if (this.recording) { - this.macro.pop(); - this.off("exec", this.$addCommandToMacro); - - if (!this.macro.length) - this.macro = this.oldMacro; - - return this.recording = false; - } - if (!this.$addCommandToMacro) { - this.$addCommandToMacro = function(e) { - this.macro.push([e.command, e.args]); - }.bind(this); - } - - this.oldMacro = this.macro; - this.macro = []; - this.on("exec", this.$addCommandToMacro); - return this.recording = true; - }; - - this.replay = function(editor) { - if (this.$inReplay || !this.macro) - return; - - if (this.recording) - return this.toggleRecording(editor); - - try { - this.$inReplay = true; - this.macro.forEach(function(x) { - if (typeof x == "string") - this.exec(x, editor); - else - this.exec(x[0], editor, x[1]); - }, this); - } finally { - this.$inReplay = false; - } - }; - - this.trimMacro = function(m) { - return m.map(function(x){ - if (typeof x[0] != "string") - x[0] = x[0].name; - if (!x[1]) - x = x[0]; - return x; - }); - }; - -}).call(CommandManager.prototype); - -exports.CommandManager = CommandManager; - -}); - -ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module) { -"use strict"; - -var lang = require("../lib/lang"); -var config = require("../config"); -var Range = require("../range").Range; - -function bindKey(win, mac) { - return {win: win, mac: mac}; -} -exports.commands = [{ - name: "showSettingsMenu", - description: "Show settings menu", - bindKey: bindKey("Ctrl-,", "Command-,"), - exec: function(editor) { - config.loadModule("ace/ext/settings_menu", function(module) { - module.init(editor); - editor.showSettingsMenu(); - }); - }, - readOnly: true -}, { - name: "goToNextError", - description: "Go to next error", - bindKey: bindKey("Alt-E", "F4"), - exec: function(editor) { - config.loadModule("./ext/error_marker", function(module) { - module.showErrorMarker(editor, 1); - }); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "goToPreviousError", - description: "Go to previous error", - bindKey: bindKey("Alt-Shift-E", "Shift-F4"), - exec: function(editor) { - config.loadModule("./ext/error_marker", function(module) { - module.showErrorMarker(editor, -1); - }); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "selectall", - description: "Select all", - bindKey: bindKey("Ctrl-A", "Command-A"), - exec: function(editor) { editor.selectAll(); }, - readOnly: true -}, { - name: "centerselection", - description: "Center selection", - bindKey: bindKey(null, "Ctrl-L"), - exec: function(editor) { editor.centerSelection(); }, - readOnly: true -}, { - name: "gotoline", - description: "Go to line...", - bindKey: bindKey("Ctrl-L", "Command-L"), - exec: function(editor, line) { - if (typeof line === "number" && !isNaN(line)) - editor.gotoLine(line); - editor.prompt({ $type: "gotoLine" }); - }, - readOnly: true -}, { - name: "fold", - bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), - exec: function(editor) { editor.session.toggleFold(false); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "unfold", - bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), - exec: function(editor) { editor.session.toggleFold(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleFoldWidget", - description: "Toggle fold widget", - bindKey: bindKey("F2", "F2"), - exec: function(editor) { editor.session.toggleFoldWidget(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleParentFoldWidget", - description: "Toggle parent fold widget", - bindKey: bindKey("Alt-F2", "Alt-F2"), - exec: function(editor) { editor.session.toggleFoldWidget(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "foldall", - description: "Fold all", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function(editor) { editor.session.foldAll(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "foldAllComments", - description: "Fold all comments", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function(editor) { editor.session.foldAllComments(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "foldOther", - description: "Fold other", - bindKey: bindKey("Alt-0", "Command-Option-0"), - exec: function(editor) { - editor.session.foldAll(); - editor.session.unfold(editor.selection.getAllRanges()); - }, - scrollIntoView: "center", - readOnly: true -}, { - name: "unfoldall", - description: "Unfold all", - bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), - exec: function(editor) { editor.session.unfold(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "findnext", - description: "Find next", - bindKey: bindKey("Ctrl-K", "Command-G"), - exec: function(editor) { editor.findNext(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "findprevious", - description: "Find previous", - bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), - exec: function(editor) { editor.findPrevious(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "selectOrFindNext", - description: "Select or find next", - bindKey: bindKey("Alt-K", "Ctrl-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findNext(); - }, - readOnly: true -}, { - name: "selectOrFindPrevious", - description: "Select or find previous", - bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findPrevious(); - }, - readOnly: true -}, { - name: "find", - description: "Find", - bindKey: bindKey("Ctrl-F", "Command-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor);}); - }, - readOnly: true -}, { - name: "overwrite", - description: "Overwrite", - bindKey: "Insert", - exec: function(editor) { editor.toggleOverwrite(); }, - readOnly: true -}, { - name: "selecttostart", - description: "Select to start", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), - exec: function(editor) { editor.getSelection().selectFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotostart", - description: "Go to start", - bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), - exec: function(editor) { editor.navigateFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectup", - description: "Select up", - bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), - exec: function(editor) { editor.getSelection().selectUp(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "golineup", - description: "Go line up", - bindKey: bindKey("Up", "Up|Ctrl-P"), - exec: function(editor, args) { editor.navigateUp(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttoend", - description: "Select to end", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), - exec: function(editor) { editor.getSelection().selectFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotoend", - description: "Go to end", - bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), - exec: function(editor) { editor.navigateFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectdown", - description: "Select down", - bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), - exec: function(editor) { editor.getSelection().selectDown(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "golinedown", - description: "Go line down", - bindKey: bindKey("Down", "Down|Ctrl-N"), - exec: function(editor, args) { editor.navigateDown(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordleft", - description: "Select word left", - bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), - exec: function(editor) { editor.getSelection().selectWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordleft", - description: "Go to word left", - bindKey: bindKey("Ctrl-Left", "Option-Left"), - exec: function(editor) { editor.navigateWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolinestart", - description: "Select to line start", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolinestart", - description: "Go to line start", - bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), - exec: function(editor) { editor.navigateLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectleft", - description: "Select left", - bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), - exec: function(editor) { editor.getSelection().selectLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoleft", - description: "Go to left", - bindKey: bindKey("Left", "Left|Ctrl-B"), - exec: function(editor, args) { editor.navigateLeft(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordright", - description: "Select word right", - bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), - exec: function(editor) { editor.getSelection().selectWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordright", - description: "Go to word right", - bindKey: bindKey("Ctrl-Right", "Option-Right"), - exec: function(editor) { editor.navigateWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolineend", - description: "Select to line end", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolineend", - description: "Go to line end", - bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), - exec: function(editor) { editor.navigateLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectright", - description: "Select right", - bindKey: bindKey("Shift-Right", "Shift-Right"), - exec: function(editor) { editor.getSelection().selectRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoright", - description: "Go to right", - bindKey: bindKey("Right", "Right|Ctrl-F"), - exec: function(editor, args) { editor.navigateRight(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectpagedown", - description: "Select page down", - bindKey: "Shift-PageDown", - exec: function(editor) { editor.selectPageDown(); }, - readOnly: true -}, { - name: "pagedown", - description: "Page down", - bindKey: bindKey(null, "Option-PageDown"), - exec: function(editor) { editor.scrollPageDown(); }, - readOnly: true -}, { - name: "gotopagedown", - description: "Go to page down", - bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), - exec: function(editor) { editor.gotoPageDown(); }, - readOnly: true -}, { - name: "selectpageup", - description: "Select page up", - bindKey: "Shift-PageUp", - exec: function(editor) { editor.selectPageUp(); }, - readOnly: true -}, { - name: "pageup", - description: "Page up", - bindKey: bindKey(null, "Option-PageUp"), - exec: function(editor) { editor.scrollPageUp(); }, - readOnly: true -}, { - name: "gotopageup", - description: "Go to page up", - bindKey: "PageUp", - exec: function(editor) { editor.gotoPageUp(); }, - readOnly: true -}, { - name: "scrollup", - description: "Scroll up", - bindKey: bindKey("Ctrl-Up", null), - exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "scrolldown", - description: "Scroll down", - bindKey: bindKey("Ctrl-Down", null), - exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "selectlinestart", - description: "Select line start", - bindKey: "Shift-Home", - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectlineend", - description: "Select line end", - bindKey: "Shift-End", - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "togglerecording", - description: "Toggle recording", - bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), - exec: function(editor) { editor.commands.toggleRecording(editor); }, - readOnly: true -}, { - name: "replaymacro", - description: "Replay macro", - bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), - exec: function(editor) { editor.commands.replay(editor); }, - readOnly: true -}, { - name: "jumptomatching", - description: "Jump to matching", - bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), - exec: function(editor) { editor.jumpToMatching(); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "selecttomatching", - description: "Select to matching", - bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), - exec: function(editor) { editor.jumpToMatching(true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "expandToMatching", - description: "Expand to matching", - bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), - exec: function(editor) { editor.jumpToMatching(true, true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "passKeysToBrowser", - description: "Pass keys to browser", - bindKey: bindKey(null, null), - exec: function() {}, - passEvent: true, - readOnly: true -}, { - name: "copy", - description: "Copy", - exec: function(editor) { - }, - readOnly: true -}, -{ - name: "cut", - description: "Cut", - exec: function(editor) { - var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); - var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); - editor._emit("cut", range); - - if (!range.isEmpty()) - editor.session.remove(range); - editor.clearSelection(); - }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "paste", - description: "Paste", - exec: function(editor, args) { - editor.$handlePaste(args); - }, - scrollIntoView: "cursor" -}, { - name: "removeline", - description: "Remove line", - bindKey: bindKey("Ctrl-D", "Command-D"), - exec: function(editor) { editor.removeLines(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEachLine" -}, { - name: "duplicateSelection", - description: "Duplicate selection", - bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), - exec: function(editor) { editor.duplicateSelection(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "sortlines", - description: "Sort lines", - bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), - exec: function(editor) { editor.sortLines(); }, - scrollIntoView: "selection", - multiSelectAction: "forEachLine" -}, { - name: "togglecomment", - description: "Toggle comment", - bindKey: bindKey("Ctrl-/", "Command-/"), - exec: function(editor) { editor.toggleCommentLines(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "toggleBlockComment", - description: "Toggle block comment", - bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), - exec: function(editor) { editor.toggleBlockComment(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "modifyNumberUp", - description: "Modify number up", - bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), - exec: function(editor) { editor.modifyNumber(1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "modifyNumberDown", - description: "Modify number down", - bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), - exec: function(editor) { editor.modifyNumber(-1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "replace", - description: "Replace", - bindKey: bindKey("Ctrl-H", "Command-Option-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true);}); - } -}, { - name: "undo", - description: "Undo", - bindKey: bindKey("Ctrl-Z", "Command-Z"), - exec: function(editor) { editor.undo(); } -}, { - name: "redo", - description: "Redo", - bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), - exec: function(editor) { editor.redo(); } -}, { - name: "copylinesup", - description: "Copy lines up", - bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), - exec: function(editor) { editor.copyLinesUp(); }, - scrollIntoView: "cursor" -}, { - name: "movelinesup", - description: "Move lines up", - bindKey: bindKey("Alt-Up", "Option-Up"), - exec: function(editor) { editor.moveLinesUp(); }, - scrollIntoView: "cursor" -}, { - name: "copylinesdown", - description: "Copy lines down", - bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), - exec: function(editor) { editor.copyLinesDown(); }, - scrollIntoView: "cursor" -}, { - name: "movelinesdown", - description: "Move lines down", - bindKey: bindKey("Alt-Down", "Option-Down"), - exec: function(editor) { editor.moveLinesDown(); }, - scrollIntoView: "cursor" -}, { - name: "del", - description: "Delete", - bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), - exec: function(editor) { editor.remove("right"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "backspace", - description: "Backspace", - bindKey: bindKey( - "Shift-Backspace|Backspace", - "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H" - ), - exec: function(editor) { editor.remove("left"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "cut_or_delete", - description: "Cut or delete", - bindKey: bindKey("Shift-Delete", null), - exec: function(editor) { - if (editor.selection.isEmpty()) { - editor.remove("left"); - } else { - return false; - } - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolinestart", - description: "Remove to line start", - bindKey: bindKey("Alt-Backspace", "Command-Backspace"), - exec: function(editor) { editor.removeToLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolineend", - description: "Remove to line end", - bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), - exec: function(editor) { editor.removeToLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolinestarthard", - description: "Remove to line start hard", - bindKey: bindKey("Ctrl-Shift-Backspace", null), - exec: function(editor) { - var range = editor.selection.getRange(); - range.start.column = 0; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolineendhard", - description: "Remove to line end hard", - bindKey: bindKey("Ctrl-Shift-Delete", null), - exec: function(editor) { - var range = editor.selection.getRange(); - range.end.column = Number.MAX_VALUE; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removewordleft", - description: "Remove word left", - bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), - exec: function(editor) { editor.removeWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removewordright", - description: "Remove word right", - bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), - exec: function(editor) { editor.removeWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "outdent", - description: "Outdent", - bindKey: bindKey("Shift-Tab", "Shift-Tab"), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "indent", - description: "Indent", - bindKey: bindKey("Tab", "Tab"), - exec: function(editor) { editor.indent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "blockoutdent", - description: "Block outdent", - bindKey: bindKey("Ctrl-[", "Ctrl-["), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "blockindent", - description: "Block indent", - bindKey: bindKey("Ctrl-]", "Ctrl-]"), - exec: function(editor) { editor.blockIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "insertstring", - description: "Insert string", - exec: function(editor, str) { editor.insert(str); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "inserttext", - description: "Insert text", - exec: function(editor, args) { - editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "splitline", - description: "Split line", - bindKey: bindKey(null, "Ctrl-O"), - exec: function(editor) { editor.splitLine(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "transposeletters", - description: "Transpose letters", - bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), - exec: function(editor) { editor.transposeLetters(); }, - multiSelectAction: function(editor) {editor.transposeSelections(1); }, - scrollIntoView: "cursor" -}, { - name: "touppercase", - description: "To uppercase", - bindKey: bindKey("Ctrl-U", "Ctrl-U"), - exec: function(editor) { editor.toUpperCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "tolowercase", - description: "To lowercase", - bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), - exec: function(editor) { editor.toLowerCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "autoindent", - description: "Auto Indent", - bindKey: bindKey(null, null), - exec: function(editor) { editor.autoIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "animate" -}, { - name: "expandtoline", - description: "Expand to line", - bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), - exec: function(editor) { - var range = editor.selection.getRange(); - - range.start.column = range.end.column = 0; - range.end.row++; - editor.selection.setRange(range, false); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "joinlines", - description: "Join lines", - bindKey: bindKey(null, null), - exec: function(editor) { - var isBackwards = editor.selection.isBackwards(); - var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); - var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); - var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; - var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); - var selectedCount = selectedText.replace(/\n\s*/, " ").length; - var insertLine = editor.session.doc.getLine(selectionStart.row); - - for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { - var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); - if (curLine.length !== 0) { - curLine = " " + curLine; - } - insertLine += curLine; - } - - if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { - insertLine += editor.session.doc.getNewLineCharacter(); - } - - editor.clearSelection(); - editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); - - if (selectedCount > 0) { - editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); - editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); - } else { - firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; - editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); - } - }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "invertSelection", - description: "Invert selection", - bindKey: bindKey(null, null), - exec: function(editor) { - var endRow = editor.session.doc.getLength() - 1; - var endCol = editor.session.doc.getLine(endRow).length; - var ranges = editor.selection.rangeList.ranges; - var newRanges = []; - if (ranges.length < 1) { - ranges = [editor.selection.getRange()]; - } - - for (var i = 0; i < ranges.length; i++) { - if (i == (ranges.length - 1)) { - if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { - newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); - } - } - - if (i === 0) { - if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { - newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); - } - } else { - newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column)); - } - } - - editor.exitMultiSelectMode(); - editor.clearSelection(); - - for(var i = 0; i < newRanges.length; i++) { - editor.selection.addRange(newRanges[i], false); - } - }, - readOnly: true, - scrollIntoView: "none" -}, { - name: "addLineAfter", - description: "Add new line after the current line", - exec: function(editor) { - editor.selection.clearSelection(); - editor.navigateLineEnd(); - editor.insert("\n"); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "addLineBefore", - description: "Add new line before the current line", - exec: function(editor) { - editor.selection.clearSelection(); - var cursor = editor.getCursorPosition(); - editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); - editor.insert("\n"); - if (cursor.row === 0) editor.navigateUp(); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "openCommandPallete", - description: "Open command pallete", - bindKey: bindKey("F1", "F1"), - exec: function(editor) { - editor.prompt({ $type: "commands" }); - }, - readOnly: true -}, { - name: "modeSelect", - description: "Change language mode...", - bindKey: bindKey(null, null), - exec: function(editor) { - editor.prompt({ $type: "modes" }); - }, - readOnly: true -}]; - -for (var i = 1; i < 9; i++) { - exports.commands.push({ - name: "foldToLevel" + i, - description: "Fold To Level " + i, - level: i, - exec: function(editor) { editor.session.foldToLevel(this.level); }, - scrollIntoView: "center", - readOnly: true - }); -} - -}); - -ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/clipboard"], function(require, exports, module) { -"use strict"; - -require("./lib/fixoldbrowsers"); - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var useragent = require("./lib/useragent"); -var TextInput = require("./keyboard/textinput").TextInput; -var MouseHandler = require("./mouse/mouse_handler").MouseHandler; -var FoldHandler = require("./mouse/fold_handler").FoldHandler; -var KeyBinding = require("./keyboard/keybinding").KeyBinding; -var EditSession = require("./edit_session").EditSession; -var Search = require("./search").Search; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var CommandManager = require("./commands/command_manager").CommandManager; -var defaultCommands = require("./commands/default_commands").commands; -var config = require("./config"); -var TokenIterator = require("./token_iterator").TokenIterator; - -var clipboard = require("./clipboard"); -var Editor = function(renderer, session, options) { - this.$toDestroy = []; - var container = renderer.getContainerElement(); - this.container = container; - this.renderer = renderer; - this.id = "editor" + (++Editor.$uid); - - this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - if (typeof document == "object") { - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); - } - - this.keyBinding = new KeyBinding(this); - - this.$search = new Search().set({ - wrap: true - }); - - this.$historyTracker = this.$historyTracker.bind(this); - this.commands.on("exec", this.$historyTracker); - - this.$initOperationListeners(); - - this._$emitInputEvent = lang.delayedCall(function() { - this._signal("input", {}); - if (this.session && this.session.bgTokenizer) - this.session.bgTokenizer.scheduleStart(); - }.bind(this)); - - this.on("change", function(_, _self) { - _self._$emitInputEvent.schedule(31); - }); - - this.setSession(session || options && options.session || new EditSession("")); - config.resetOptions(this); - if (options) - this.setOptions(options); - config._signal("editor", this); -}; - -Editor.$uid = 0; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$initOperationListeners = function() { - this.commands.on("exec", this.startOperation.bind(this), true); - this.commands.on("afterExec", this.endOperation.bind(this), true); - - this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); - this.on("change", function() { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.docChanged = true; - }.bind(this), true); - - this.on("changeSelection", function() { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.selectionChanged = true; - }.bind(this), true); - }; - - this.curOp = null; - this.prevOp = {}; - this.startOperation = function(commandEvent) { - if (this.curOp) { - if (!commandEvent || this.curOp.command) - return; - this.prevOp = this.curOp; - } - if (!commandEvent) { - this.previousCommand = null; - commandEvent = {}; - } - - this.$opResetTimer.schedule(); - this.curOp = this.session.curOp = { - command: commandEvent.command || {}, - args: commandEvent.args, - scrollTop: this.renderer.scrollTop - }; - this.curOp.selectionBefore = this.selection.toJSON(); - }; - - this.endOperation = function(e) { - if (this.curOp && this.session) { - if (e && e.returnValue === false || !this.session) - return (this.curOp = null); - if (e == true && this.curOp.command && this.curOp.command.name == "mouse") - return; - this._signal("beforeEndOperation"); - if (!this.curOp) return; - var command = this.curOp.command; - var scrollIntoView = command && command.scrollIntoView; - if (scrollIntoView) { - switch (scrollIntoView) { - case "center-animate": - scrollIntoView = "animate"; - case "center": - this.renderer.scrollCursorIntoView(null, 0.5); - break; - case "animate": - case "cursor": - this.renderer.scrollCursorIntoView(); - break; - case "selectionPart": - var range = this.selection.getRange(); - var config = this.renderer.layerConfig; - if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { - this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); - } - break; - default: - break; - } - if (scrollIntoView == "animate") - this.renderer.animateScrolling(this.curOp.scrollTop); - } - var sel = this.selection.toJSON(); - this.curOp.selectionAfter = sel; - this.$lastSel = this.selection.toJSON(); - this.session.getUndoManager().addSelection(sel); - this.prevOp = this.curOp; - this.curOp = null; - } - }; - this.$mergeableCommands = ["backspace", "del", "insertstring"]; - this.$historyTracker = function(e) { - if (!this.$mergeUndoDeltas) - return; - - var prev = this.prevOp; - var mergeableCommands = this.$mergeableCommands; - var shouldMerge = prev.command && (e.command.name == prev.command.name); - if (e.command.name == "insertstring") { - var text = e.args; - if (this.mergeNextCommand === undefined) - this.mergeNextCommand = true; - - shouldMerge = shouldMerge - && this.mergeNextCommand // previous command allows to coalesce with - && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type - - this.mergeNextCommand = true; - } else { - shouldMerge = shouldMerge - && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable - } - - if ( - this.$mergeUndoDeltas != "always" - && Date.now() - this.sequenceStartTime > 2000 - ) { - shouldMerge = false; // the sequence is too long - } - - if (shouldMerge) - this.session.mergeUndoDeltas = true; - else if (mergeableCommands.indexOf(e.command.name) !== -1) - this.sequenceStartTime = Date.now(); - }; - this.setKeyboardHandler = function(keyboardHandler, cb) { - if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { - this.$keybindingId = keyboardHandler; - var _self = this; - config.loadModule(["keybinding", keyboardHandler], function(module) { - if (_self.$keybindingId == keyboardHandler) - _self.keyBinding.setKeyboardHandler(module && module.handler); - cb && cb(); - }); - } else { - this.$keybindingId = null; - this.keyBinding.setKeyboardHandler(keyboardHandler); - cb && cb(); - } - }; - this.getKeyboardHandler = function() { - return this.keyBinding.getKeyboardHandler(); - }; - this.setSession = function(session) { - if (this.session == session) - return; - if (this.curOp) this.endOperation(); - this.curOp = {}; - - var oldSession = this.session; - if (oldSession) { - this.session.off("change", this.$onDocumentChange); - this.session.off("changeMode", this.$onChangeMode); - this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); - this.session.off("changeTabSize", this.$onChangeTabSize); - this.session.off("changeWrapLimit", this.$onChangeWrapLimit); - this.session.off("changeWrapMode", this.$onChangeWrapMode); - this.session.off("changeFold", this.$onChangeFold); - this.session.off("changeFrontMarker", this.$onChangeFrontMarker); - this.session.off("changeBackMarker", this.$onChangeBackMarker); - this.session.off("changeBreakpoint", this.$onChangeBreakpoint); - this.session.off("changeAnnotation", this.$onChangeAnnotation); - this.session.off("changeOverwrite", this.$onCursorChange); - this.session.off("changeScrollTop", this.$onScrollTopChange); - this.session.off("changeScrollLeft", this.$onScrollLeftChange); - - var selection = this.session.getSelection(); - selection.off("changeCursor", this.$onCursorChange); - selection.off("changeSelection", this.$onSelectionChange); - } - - this.session = session; - if (session) { - this.$onDocumentChange = this.onDocumentChange.bind(this); - session.on("change", this.$onDocumentChange); - this.renderer.setSession(session); - - this.$onChangeMode = this.onChangeMode.bind(this); - session.on("changeMode", this.$onChangeMode); - - this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); - session.on("tokenizerUpdate", this.$onTokenizerUpdate); - - this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); - session.on("changeTabSize", this.$onChangeTabSize); - - this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); - session.on("changeWrapLimit", this.$onChangeWrapLimit); - - this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); - session.on("changeWrapMode", this.$onChangeWrapMode); - - this.$onChangeFold = this.onChangeFold.bind(this); - session.on("changeFold", this.$onChangeFold); - - this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); - this.session.on("changeFrontMarker", this.$onChangeFrontMarker); - - this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); - this.session.on("changeBackMarker", this.$onChangeBackMarker); - - this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); - this.session.on("changeBreakpoint", this.$onChangeBreakpoint); - - this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); - this.session.on("changeAnnotation", this.$onChangeAnnotation); - - this.$onCursorChange = this.onCursorChange.bind(this); - this.session.on("changeOverwrite", this.$onCursorChange); - - this.$onScrollTopChange = this.onScrollTopChange.bind(this); - this.session.on("changeScrollTop", this.$onScrollTopChange); - - this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); - this.session.on("changeScrollLeft", this.$onScrollLeftChange); - - this.selection = session.getSelection(); - this.selection.on("changeCursor", this.$onCursorChange); - - this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.on("changeSelection", this.$onSelectionChange); - - this.onChangeMode(); - - this.onCursorChange(); - - this.onScrollTopChange(); - this.onScrollLeftChange(); - this.onSelectionChange(); - this.onChangeFrontMarker(); - this.onChangeBackMarker(); - this.onChangeBreakpoint(); - this.onChangeAnnotation(); - this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); - this.renderer.updateFull(); - } else { - this.selection = null; - this.renderer.setSession(session); - } - - this._signal("changeSession", { - session: session, - oldSession: oldSession - }); - - this.curOp = null; - - oldSession && oldSession._signal("changeEditor", {oldEditor: this}); - session && session._signal("changeEditor", {editor: this}); - - if (session && session.bgTokenizer) - session.bgTokenizer.scheduleStart(); - }; - this.getSession = function() { - return this.session; - }; - this.setValue = function(val, cursorPos) { - this.session.doc.setValue(val); - - if (!cursorPos) - this.selectAll(); - else if (cursorPos == 1) - this.navigateFileEnd(); - else if (cursorPos == -1) - this.navigateFileStart(); - - return val; - }; - this.getValue = function() { - return this.session.getValue(); - }; - this.getSelection = function() { - return this.selection; - }; - this.resize = function(force) { - this.renderer.onResize(force); - }; - this.setTheme = function(theme, cb) { - this.renderer.setTheme(theme, cb); - }; - this.getTheme = function() { - return this.renderer.getTheme(); - }; - this.setStyle = function(style) { - this.renderer.setStyle(style); - }; - this.unsetStyle = function(style) { - this.renderer.unsetStyle(style); - }; - this.getFontSize = function () { - return this.getOption("fontSize") || - dom.computedStyle(this.container).fontSize; - }; - this.setFontSize = function(size) { - this.setOption("fontSize", size); - }; - - this.$highlightBrackets = function() { - if (this.$highlightPending) { - return; - } - var self = this; - this.$highlightPending = true; - setTimeout(function () { - self.$highlightPending = false; - var session = self.session; - if (!session || !session.bgTokenizer) return; - if (session.$bracketHighlight) { - session.$bracketHighlight.markerIds.forEach(function(id) { - session.removeMarker(id); - }); - session.$bracketHighlight = null; - } - var ranges = session.getMatchingBracketRanges(self.getCursorPosition()); - if (!ranges && session.$mode.getMatching) - ranges = session.$mode.getMatching(self.session); - if (!ranges) - return; - - var markerType = "ace_bracket"; - if (!Array.isArray(ranges)) { - ranges = [ranges]; - } else if (ranges.length == 1) { - markerType = "ace_error_bracket"; - } - if (ranges.length == 2) { - if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0) - ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)]; - else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0) - ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)]; - } - - session.$bracketHighlight = { - ranges: ranges, - markerIds: ranges.map(function(range) { - return session.addMarker(range, markerType, "text"); - }) - }; - }, 50); - }; - this.$highlightTags = function() { - if (this.$highlightTagPending) - return; - var self = this; - this.$highlightTagPending = true; - setTimeout(function() { - self.$highlightTagPending = false; - - var session = self.session; - if (!session || !session.bgTokenizer) return; - - var pos = self.getCursorPosition(); - var iterator = new TokenIterator(self.session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - - if (!token || !/\b(?:tag-open|tag-name)/.test(token.type)) { - session.removeMarker(session.$tagHighlight); - session.$tagHighlight = null; - return; - } - - if (token.type.indexOf("tag-open") !== -1) { - token = iterator.stepForward(); - if (!token) - return; - } - - var tag = token.value; - var currentTag = token.value; - var depth = 0; - var prevToken = iterator.stepBackward(); - - if (prevToken.value === '<'){ - do { - prevToken = token; - token = iterator.stepForward(); - - if (token) { - if (token.type.indexOf('tag-name') !== -1) { - currentTag = token.value; - if (tag === currentTag) { - if (prevToken.value === '<') { - depth++; - } else if (prevToken.value === '') { // self closing tag - depth--; - } - } - - } while (token && depth >= 0); - } else { - do { - token = prevToken; - prevToken = iterator.stepBackward(); - - if (token) { - if (token.type.indexOf('tag-name') !== -1) { - if (tag === token.value) { - if (prevToken.value === '<') { - depth++; - } else if (prevToken.value === '') { // self closing tag - var stepCount = 0; - var tmpToken = prevToken; - while (tmpToken) { - if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { - depth--; - break; - } else if (tmpToken.value === '<') { - break; - } - tmpToken = iterator.stepBackward(); - stepCount++; - } - for (var i = 0; i < stepCount; i++) { - iterator.stepForward(); - } - } - } - } while (prevToken && depth <= 0); - iterator.stepForward(); - } - - if (!token) { - session.removeMarker(session.$tagHighlight); - session.$tagHighlight = null; - return; - } - - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn(); - var range = new Range(row, column, row, column+token.value.length); - var sbm = session.$backMarkers[session.$tagHighlight]; - if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) { - session.removeMarker(session.$tagHighlight); - session.$tagHighlight = null; - } - - if (!session.$tagHighlight) - session.$tagHighlight = session.addMarker(range, "ace_bracket", "text"); - }, 50); - }; - this.focus = function() { - var _self = this; - setTimeout(function() { - if (!_self.isFocused()) - _self.textInput.focus(); - }); - this.textInput.focus(); - }; - this.isFocused = function() { - return this.textInput.isFocused(); - }; - this.blur = function() { - this.textInput.blur(); - }; - this.onFocus = function(e) { - if (this.$isFocused) - return; - this.$isFocused = true; - this.renderer.showCursor(); - this.renderer.visualizeFocus(); - this._emit("focus", e); - }; - this.onBlur = function(e) { - if (!this.$isFocused) - return; - this.$isFocused = false; - this.renderer.hideCursor(); - this.renderer.visualizeBlur(); - this._emit("blur", e); - }; - - this.$cursorChange = function() { - this.renderer.updateCursor(); - this.$highlightBrackets(); - this.$highlightTags(); - this.$updateHighlightActiveLine(); - }; - this.onDocumentChange = function(delta) { - var wrap = this.session.$useWrapMode; - var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); - this.renderer.updateLines(delta.start.row, lastRow, wrap); - - this._signal("change", delta); - this.$cursorChange(); - }; - - this.onTokenizerUpdate = function(e) { - var rows = e.data; - this.renderer.updateLines(rows.first, rows.last); - }; - - - this.onScrollTopChange = function() { - this.renderer.scrollToY(this.session.getScrollTop()); - }; - - this.onScrollLeftChange = function() { - this.renderer.scrollToX(this.session.getScrollLeft()); - }; - this.onCursorChange = function() { - this.$cursorChange(); - this._signal("changeSelection"); - }; - - this.$updateHighlightActiveLine = function() { - var session = this.getSession(); - - var highlight; - if (this.$highlightActiveLine) { - if (this.$selectionStyle != "line" || !this.selection.isMultiLine()) - highlight = this.getCursorPosition(); - if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty()) - highlight = false; - if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1)) - highlight = false; - } - - if (session.$highlightLineMarker && !highlight) { - session.removeMarker(session.$highlightLineMarker.id); - session.$highlightLineMarker = null; - } else if (!session.$highlightLineMarker && highlight) { - var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); - range.id = session.addMarker(range, "ace_active-line", "screenLine"); - session.$highlightLineMarker = range; - } else if (highlight) { - session.$highlightLineMarker.start.row = highlight.row; - session.$highlightLineMarker.end.row = highlight.row; - session.$highlightLineMarker.start.column = highlight.column; - session._signal("changeBackMarker"); - } - }; - - this.onSelectionChange = function(e) { - var session = this.session; - - if (session.$selectionMarker) { - session.removeMarker(session.$selectionMarker); - } - session.$selectionMarker = null; - - if (!this.selection.isEmpty()) { - var range = this.selection.getRange(); - var style = this.getSelectionStyle(); - session.$selectionMarker = session.addMarker(range, "ace_selection", style); - } else { - this.$updateHighlightActiveLine(); - } - - var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); - this.session.highlight(re); - - this._signal("changeSelection"); - }; - - this.$getSelectionHighLightRegexp = function() { - var session = this.session; - - var selection = this.getSelectionRange(); - if (selection.isEmpty() || selection.isMultiLine()) - return; - - var startColumn = selection.start.column; - var endColumn = selection.end.column; - var line = session.getLine(selection.start.row); - - var needle = line.substring(startColumn, endColumn); - if (needle.length > 5000 || !/[\w\d]/.test(needle)) - return; - - var re = this.$search.$assembleRegExp({ - wholeWord: true, - caseSensitive: true, - needle: needle - }); - - var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); - if (!re.test(wordWithBoundary)) - return; - - return re; - }; - - - this.onChangeFrontMarker = function() { - this.renderer.updateFrontMarkers(); - }; - - this.onChangeBackMarker = function() { - this.renderer.updateBackMarkers(); - }; - - - this.onChangeBreakpoint = function() { - this.renderer.updateBreakpoints(); - }; - - this.onChangeAnnotation = function() { - this.renderer.setAnnotations(this.session.getAnnotations()); - }; - - - this.onChangeMode = function(e) { - this.renderer.updateText(); - this._emit("changeMode", e); - }; - - - this.onChangeWrapLimit = function() { - this.renderer.updateFull(); - }; - - this.onChangeWrapMode = function() { - this.renderer.onResize(true); - }; - - - this.onChangeFold = function() { - this.$updateHighlightActiveLine(); - this.renderer.updateFull(); - }; - this.getSelectedText = function() { - return this.session.getTextRange(this.getSelectionRange()); - }; - this.getCopyText = function() { - var text = this.getSelectedText(); - var nl = this.session.doc.getNewLineCharacter(); - var copyLine= false; - if (!text && this.$copyWithEmptySelection) { - copyLine = true; - var ranges = this.selection.getAllRanges(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (i && ranges[i - 1].start.row == range.start.row) - continue; - text += this.session.getLine(range.start.row) + nl; - } - } - var e = {text: text}; - this._signal("copy", e); - clipboard.lineMode = copyLine ? e.text : false; - return e.text; - }; - this.onCopy = function() { - this.commands.exec("copy", this); - }; - this.onCut = function() { - this.commands.exec("cut", this); - }; - this.onPaste = function(text, event) { - var e = {text: text, event: event}; - this.commands.exec("paste", this, e); - }; - - this.$handlePaste = function(e) { - if (typeof e == "string") - e = {text: e}; - this._signal("paste", e); - var text = e.text; - - var lineMode = text === clipboard.lineMode; - var session = this.session; - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { - if (lineMode) - session.insert({ row: this.selection.lead.row, column: 0 }, text); - else - this.insert(text); - } else if (lineMode) { - this.selection.rangeList.ranges.forEach(function(range) { - session.insert({ row: range.start.row, column: 0 }, text); - }); - } else { - var lines = text.split(/\r\n|\r|\n/); - var ranges = this.selection.rangeList.ranges; - - var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); - if (lines.length != ranges.length || isFullLine) - return this.commands.exec("insertstring", this, text); - - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.isEmpty()) - session.remove(range); - - session.insert(range.start, lines[i]); - } - } - }; - - this.execCommand = function(command, args) { - return this.commands.exec(command, this, args); - }; - this.insert = function(text, pasted) { - var session = this.session; - var mode = session.getMode(); - var cursor = this.getCursorPosition(); - - if (this.getBehavioursEnabled() && !pasted) { - var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); - if (transform) { - if (text !== transform.text) { - if (!this.inVirtualSelectionMode) { - this.session.mergeUndoDeltas = false; - this.mergeNextCommand = false; - } - } - text = transform.text; - - } - } - - if (text == "\t") - text = this.session.getTabString(); - if (!this.selection.isEmpty()) { - var range = this.getSelectionRange(); - cursor = this.session.remove(range); - this.clearSelection(); - } - else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { - var range = new Range.fromPoints(cursor, cursor); - range.end.column += text.length; - this.session.remove(range); - } - - if (text == "\n" || text == "\r\n") { - var line = session.getLine(cursor.row); - if (cursor.column > line.search(/\S|$/)) { - var d = line.substr(cursor.column).search(/\S|$/); - session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); - } - } - this.clearSelection(); - - var start = cursor.column; - var lineState = session.getState(cursor.row); - var line = session.getLine(cursor.row); - var shouldOutdent = mode.checkOutdent(lineState, line, text); - session.insert(cursor, text); - - if (transform && transform.selection) { - if (transform.selection.length == 2) { // Transform relative to the current column - this.selection.setSelectionRange( - new Range(cursor.row, start + transform.selection[0], - cursor.row, start + transform.selection[1])); - } else { // Transform relative to the current row. - this.selection.setSelectionRange( - new Range(cursor.row + transform.selection[0], - transform.selection[1], - cursor.row + transform.selection[2], - transform.selection[3])); - } - } - if (this.$enableAutoIndent) { - if (session.getDocument().isNewLine(text)) { - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); - - session.insert({row: cursor.row+1, column: 0}, lineIndent); - } - if (shouldOutdent) - mode.autoOutdent(lineState, session, cursor.row); - } - }; - - this.autoIndent = function () { - var session = this.session; - var mode = session.getMode(); - - var startRow, endRow; - if (this.selection.isEmpty()) { - startRow = 0; - endRow = session.doc.getLength() - 1; - } else { - var selectedRange = this.getSelectionRange(); - - startRow = selectedRange.start.row; - endRow = selectedRange.end.row; - } - - var prevLineState = ""; - var prevLine = ""; - var lineIndent = ""; - var line, currIndent, range; - var tab = session.getTabString(); - - for (var row = startRow; row <= endRow; row++) { - if (row > 0) { - prevLineState = session.getState(row - 1); - prevLine = session.getLine(row - 1); - lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); - } - - line = session.getLine(row); - currIndent = mode.$getIndent(line); - if (lineIndent !== currIndent) { - if (currIndent.length > 0) { - range = new Range(row, 0, row, currIndent.length); - session.remove(range); - } - if (lineIndent.length > 0) { - session.insert({row: row, column: 0}, lineIndent); - } - } - - mode.autoOutdent(prevLineState, session, row); - } - }; - - - this.onTextInput = function(text, composition) { - if (!composition) - return this.keyBinding.onTextInput(text); - - this.startOperation({command: { name: "insertstring" }}); - var applyComposition = this.applyComposition.bind(this, text, composition); - if (this.selection.rangeCount) - this.forEachSelection(applyComposition); - else - applyComposition(); - this.endOperation(); - }; - - this.applyComposition = function(text, composition) { - if (composition.extendLeft || composition.extendRight) { - var r = this.selection.getRange(); - r.start.column -= composition.extendLeft; - r.end.column += composition.extendRight; - if (r.start.column < 0) { - r.start.row--; - r.start.column += this.session.getLine(r.start.row).length + 1; - } - this.selection.setRange(r); - if (!text && !r.isEmpty()) - this.remove(); - } - if (text || !this.selection.isEmpty()) - this.insert(text, true); - if (composition.restoreStart || composition.restoreEnd) { - var r = this.selection.getRange(); - r.start.column -= composition.restoreStart; - r.end.column -= composition.restoreEnd; - this.selection.setRange(r); - } - }; - - this.onCommandKey = function(e, hashId, keyCode) { - return this.keyBinding.onCommandKey(e, hashId, keyCode); - }; - this.setOverwrite = function(overwrite) { - this.session.setOverwrite(overwrite); - }; - this.getOverwrite = function() { - return this.session.getOverwrite(); - }; - this.toggleOverwrite = function() { - this.session.toggleOverwrite(); - }; - this.setScrollSpeed = function(speed) { - this.setOption("scrollSpeed", speed); - }; - this.getScrollSpeed = function() { - return this.getOption("scrollSpeed"); - }; - this.setDragDelay = function(dragDelay) { - this.setOption("dragDelay", dragDelay); - }; - this.getDragDelay = function() { - return this.getOption("dragDelay"); - }; - this.setSelectionStyle = function(val) { - this.setOption("selectionStyle", val); - }; - this.getSelectionStyle = function() { - return this.getOption("selectionStyle"); - }; - this.setHighlightActiveLine = function(shouldHighlight) { - this.setOption("highlightActiveLine", shouldHighlight); - }; - this.getHighlightActiveLine = function() { - return this.getOption("highlightActiveLine"); - }; - this.setHighlightGutterLine = function(shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - - this.getHighlightGutterLine = function() { - return this.getOption("highlightGutterLine"); - }; - this.setHighlightSelectedWord = function(shouldHighlight) { - this.setOption("highlightSelectedWord", shouldHighlight); - }; - this.getHighlightSelectedWord = function() { - return this.$highlightSelectedWord; - }; - - this.setAnimatedScroll = function(shouldAnimate){ - this.renderer.setAnimatedScroll(shouldAnimate); - }; - - this.getAnimatedScroll = function(){ - return this.renderer.getAnimatedScroll(); - }; - this.setShowInvisibles = function(showInvisibles) { - this.renderer.setShowInvisibles(showInvisibles); - }; - this.getShowInvisibles = function() { - return this.renderer.getShowInvisibles(); - }; - - this.setDisplayIndentGuides = function(display) { - this.renderer.setDisplayIndentGuides(display); - }; - - this.getDisplayIndentGuides = function() { - return this.renderer.getDisplayIndentGuides(); - }; - this.setShowPrintMargin = function(showPrintMargin) { - this.renderer.setShowPrintMargin(showPrintMargin); - }; - this.getShowPrintMargin = function() { - return this.renderer.getShowPrintMargin(); - }; - this.setPrintMarginColumn = function(showPrintMargin) { - this.renderer.setPrintMarginColumn(showPrintMargin); - }; - this.getPrintMarginColumn = function() { - return this.renderer.getPrintMarginColumn(); - }; - this.setReadOnly = function(readOnly) { - this.setOption("readOnly", readOnly); - }; - this.getReadOnly = function() { - return this.getOption("readOnly"); - }; - this.setBehavioursEnabled = function (enabled) { - this.setOption("behavioursEnabled", enabled); - }; - this.getBehavioursEnabled = function () { - return this.getOption("behavioursEnabled"); - }; - this.setWrapBehavioursEnabled = function (enabled) { - this.setOption("wrapBehavioursEnabled", enabled); - }; - this.getWrapBehavioursEnabled = function () { - return this.getOption("wrapBehavioursEnabled"); - }; - this.setShowFoldWidgets = function(show) { - this.setOption("showFoldWidgets", show); - - }; - this.getShowFoldWidgets = function() { - return this.getOption("showFoldWidgets"); - }; - - this.setFadeFoldWidgets = function(fade) { - this.setOption("fadeFoldWidgets", fade); - }; - - this.getFadeFoldWidgets = function() { - return this.getOption("fadeFoldWidgets"); - }; - this.remove = function(dir) { - if (this.selection.isEmpty()){ - if (dir == "left") - this.selection.selectLeft(); - else - this.selection.selectRight(); - } - - var range = this.getSelectionRange(); - if (this.getBehavioursEnabled()) { - var session = this.session; - var state = session.getState(range.start.row); - var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); - - if (range.end.column === 0) { - var text = session.getTextRange(range); - if (text[text.length - 1] == "\n") { - var line = session.getLine(range.end.row); - if (/^\s+$/.test(line)) { - range.end.column = line.length; - } - } - } - if (new_range) - range = new_range; - } - - this.session.remove(range); - this.clearSelection(); - }; - this.removeWordRight = function() { - if (this.selection.isEmpty()) - this.selection.selectWordRight(); - - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeWordLeft = function() { - if (this.selection.isEmpty()) - this.selection.selectWordLeft(); - - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeToLineStart = function() { - if (this.selection.isEmpty()) - this.selection.selectLineStart(); - if (this.selection.isEmpty()) - this.selection.selectLeft(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeToLineEnd = function() { - if (this.selection.isEmpty()) - this.selection.selectLineEnd(); - - var range = this.getSelectionRange(); - if (range.start.column == range.end.column && range.start.row == range.end.row) { - range.end.column = 0; - range.end.row++; - } - - this.session.remove(range); - this.clearSelection(); - }; - this.splitLine = function() { - if (!this.selection.isEmpty()) { - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - } - - var cursor = this.getCursorPosition(); - this.insert("\n"); - this.moveCursorToPosition(cursor); - }; - this.transposeLetters = function() { - if (!this.selection.isEmpty()) { - return; - } - - var cursor = this.getCursorPosition(); - var column = cursor.column; - if (column === 0) - return; - - var line = this.session.getLine(cursor.row); - var swap, range; - if (column < line.length) { - swap = line.charAt(column) + line.charAt(column-1); - range = new Range(cursor.row, column-1, cursor.row, column+1); - } - else { - swap = line.charAt(column-1) + line.charAt(column-2); - range = new Range(cursor.row, column-2, cursor.row, column); - } - this.session.replace(range, swap); - this.session.selection.moveToPosition(range.end); - }; - this.toLowerCase = function() { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toLowerCase()); - this.selection.setSelectionRange(originalRange); - }; - this.toUpperCase = function() { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toUpperCase()); - this.selection.setSelectionRange(originalRange); - }; - this.indent = function() { - var session = this.session; - var range = this.getSelectionRange(); - - if (range.start.row < range.end.row) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } else if (range.start.column < range.end.column) { - var text = session.getTextRange(range); - if (!/^\s+$/.test(text)) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - } - - var line = session.getLine(range.start.row); - var position = range.start; - var size = session.getTabSize(); - var column = session.documentToScreenColumn(position.row, position.column); - - if (this.session.getUseSoftTabs()) { - var count = (size - column % size); - var indentString = lang.stringRepeat(" ", count); - } else { - var count = column % size; - while (line[range.start.column - 1] == " " && count) { - range.start.column--; - count--; - } - this.selection.setSelectionRange(range); - indentString = "\t"; - } - return this.insert(indentString); - }; - this.blockIndent = function() { - var rows = this.$getSelectedRows(); - this.session.indentRows(rows.first, rows.last, "\t"); - }; - this.blockOutdent = function() { - var selection = this.session.getSelection(); - this.session.outdentRows(selection.getRange()); - }; - this.sortLines = function() { - var rows = this.$getSelectedRows(); - var session = this.session; - - var lines = []; - for (var i = rows.first; i <= rows.last; i++) - lines.push(session.getLine(i)); - - lines.sort(function(a, b) { - if (a.toLowerCase() < b.toLowerCase()) return -1; - if (a.toLowerCase() > b.toLowerCase()) return 1; - return 0; - }); - - var deleteRange = new Range(0, 0, 0, 0); - for (var i = rows.first; i <= rows.last; i++) { - var line = session.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - deleteRange.end.column = line.length; - session.replace(deleteRange, lines[i-rows.first]); - } - }; - this.toggleCommentLines = function() { - var state = this.session.getState(this.getCursorPosition().row); - var rows = this.$getSelectedRows(); - this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); - }; - - this.toggleBlockComment = function() { - var cursor = this.getCursorPosition(); - var state = this.session.getState(cursor.row); - var range = this.getSelectionRange(); - this.session.getMode().toggleBlockComment(state, this.session, range, cursor); - }; - this.getNumberAt = function(row, column) { - var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; - _numberRx.lastIndex = 0; - - var s = this.session.getLine(row); - while (_numberRx.lastIndex < column) { - var m = _numberRx.exec(s); - if(m.index <= column && m.index+m[0].length >= column){ - var number = { - value: m[0], - start: m.index, - end: m.index+m[0].length - }; - return number; - } - } - return null; - }; - this.modifyNumber = function(amount) { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - var charRange = new Range(row, column-1, row, column); - - var c = this.session.getTextRange(charRange); - if (!isNaN(parseFloat(c)) && isFinite(c)) { - var nr = this.getNumberAt(row, column); - if (nr) { - var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; - var decimals = nr.start + nr.value.length - fp; - - var t = parseFloat(nr.value); - t *= Math.pow(10, decimals); - - - if(fp !== nr.end && column < fp){ - amount *= Math.pow(10, nr.end - column - 1); - } else { - amount *= Math.pow(10, nr.end - column); - } - - t += amount; - t /= Math.pow(10, decimals); - var nnr = t.toFixed(decimals); - var replaceRange = new Range(row, nr.start, row, nr.end); - this.session.replace(replaceRange, nnr); - this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length)); - - } - } else { - this.toggleWord(); - } - }; - - this.$toggleWordPairs = [ - ["first", "last"], - ["true", "false"], - ["yes", "no"], - ["width", "height"], - ["top", "bottom"], - ["right", "left"], - ["on", "off"], - ["x", "y"], - ["get", "set"], - ["max", "min"], - ["horizontal", "vertical"], - ["show", "hide"], - ["add", "remove"], - ["up", "down"], - ["before", "after"], - ["even", "odd"], - ["in", "out"], - ["inside", "outside"], - ["next", "previous"], - ["increase", "decrease"], - ["attach", "detach"], - ["&&", "||"], - ["==", "!="] - ]; - - this.toggleWord = function () { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - this.selection.selectWord(); - var currentState = this.getSelectedText(); - var currWordStart = this.selection.getWordRange().start.column; - var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); - var delta = column - currWordStart - 1; - if (delta < 0) delta = 0; - var curLength = 0, itLength = 0; - var that = this; - if (currentState.match(/[A-Za-z0-9_]+/)) { - wordParts.forEach(function (item, i) { - itLength = curLength + item.length; - if (delta >= curLength && delta <= itLength) { - currentState = item; - that.selection.clearSelection(); - that.moveCursorTo(row, curLength + currWordStart); - that.selection.selectTo(row, itLength + currWordStart); - } - curLength = itLength; - }); - } - - var wordPairs = this.$toggleWordPairs; - var reg; - for (var i = 0; i < wordPairs.length; i++) { - var item = wordPairs[i]; - for (var j = 0; j <= 1; j++) { - var negate = +!j; - var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); - if (firstCondition) { - var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); - if (secondCondition) { - reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { - var res = item[negate]; - if (result.toUpperCase() == result) { - res = res.toUpperCase(); - } else if (result.charAt(0).toUpperCase() == result.charAt(0)) { - res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); - } - return res; - }); - this.insert(reg); - reg = ""; - } - } - } - } - }; - this.removeLines = function() { - var rows = this.$getSelectedRows(); - this.session.removeFullLines(rows.first, rows.last); - this.clearSelection(); - }; - - this.duplicateSelection = function() { - var sel = this.selection; - var doc = this.session; - var range = sel.getRange(); - var reverse = sel.isBackwards(); - if (range.isEmpty()) { - var row = range.start.row; - doc.duplicateLines(row, row); - } else { - var point = reverse ? range.start : range.end; - var endPoint = doc.insert(point, doc.getTextRange(range), false); - range.start = point; - range.end = endPoint; - - sel.setSelectionRange(range, reverse); - } - }; - this.moveLinesDown = function() { - this.$moveLines(1, false); - }; - this.moveLinesUp = function() { - this.$moveLines(-1, false); - }; - this.moveText = function(range, toPosition, copy) { - return this.session.moveText(range, toPosition, copy); - }; - this.copyLinesUp = function() { - this.$moveLines(-1, true); - }; - this.copyLinesDown = function() { - this.$moveLines(1, true); - }; - this.$moveLines = function(dir, copy) { - var rows, moved; - var selection = this.selection; - if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { - var range = selection.toOrientedRange(); - rows = this.$getSelectedRows(range); - moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); - if (copy && dir == -1) moved = 0; - range.moveBy(moved, 0); - selection.fromOrientedRange(range); - } else { - var ranges = selection.rangeList.ranges; - selection.rangeList.detach(this.session); - this.inVirtualSelectionMode = true; - - var diff = 0; - var totalDiff = 0; - var l = ranges.length; - for (var i = 0; i < l; i++) { - var rangeIndex = i; - ranges[i].moveBy(diff, 0); - rows = this.$getSelectedRows(ranges[i]); - var first = rows.first; - var last = rows.last; - while (++i < l) { - if (totalDiff) ranges[i].moveBy(totalDiff, 0); - var subRows = this.$getSelectedRows(ranges[i]); - if (copy && subRows.first != last) - break; - else if (!copy && subRows.first > last + 1) - break; - last = subRows.last; - } - i--; - diff = this.session.$moveLines(first, last, copy ? 0 : dir); - if (copy && dir == -1) rangeIndex = i + 1; - while (rangeIndex <= i) { - ranges[rangeIndex].moveBy(diff, 0); - rangeIndex++; - } - if (!copy) diff = 0; - totalDiff += diff; - } - - selection.fromOrientedRange(selection.ranges[0]); - selection.rangeList.attach(this.session); - this.inVirtualSelectionMode = false; - } - }; - this.$getSelectedRows = function(range) { - range = (range || this.getSelectionRange()).collapseRows(); - - return { - first: this.session.getRowFoldStart(range.start.row), - last: this.session.getRowFoldEnd(range.end.row) - }; - }; - - this.onCompositionStart = function(compositionState) { - this.renderer.showComposition(compositionState); - }; - - this.onCompositionUpdate = function(text) { - this.renderer.setCompositionText(text); - }; - - this.onCompositionEnd = function() { - this.renderer.hideComposition(); - }; - this.getFirstVisibleRow = function() { - return this.renderer.getFirstVisibleRow(); - }; - this.getLastVisibleRow = function() { - return this.renderer.getLastVisibleRow(); - }; - this.isRowVisible = function(row) { - return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); - }; - this.isRowFullyVisible = function(row) { - return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); - }; - this.$getVisibleRowCount = function() { - return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; - }; - - this.$moveByPage = function(dir, select) { - var renderer = this.renderer; - var config = this.renderer.layerConfig; - var rows = dir * Math.floor(config.height / config.lineHeight); - - if (select === true) { - this.selection.$moveSelection(function(){ - this.moveCursorBy(rows, 0); - }); - } else if (select === false) { - this.selection.moveCursorBy(rows, 0); - this.selection.clearSelection(); - } - - var scrollTop = renderer.scrollTop; - - renderer.scrollBy(0, rows * config.lineHeight); - if (select != null) - renderer.scrollCursorIntoView(null, 0.5); - - renderer.animateScrolling(scrollTop); - }; - this.selectPageDown = function() { - this.$moveByPage(1, true); - }; - this.selectPageUp = function() { - this.$moveByPage(-1, true); - }; - this.gotoPageDown = function() { - this.$moveByPage(1, false); - }; - this.gotoPageUp = function() { - this.$moveByPage(-1, false); - }; - this.scrollPageDown = function() { - this.$moveByPage(1); - }; - this.scrollPageUp = function() { - this.$moveByPage(-1); - }; - this.scrollToRow = function(row) { - this.renderer.scrollToRow(row); - }; - this.scrollToLine = function(line, center, animate, callback) { - this.renderer.scrollToLine(line, center, animate, callback); - }; - this.centerSelection = function() { - var range = this.getSelectionRange(); - var pos = { - row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), - column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) - }; - this.renderer.alignCursor(pos, 0.5); - }; - this.getCursorPosition = function() { - return this.selection.getCursor(); - }; - this.getCursorPositionScreen = function() { - return this.session.documentToScreenPosition(this.getCursorPosition()); - }; - this.getSelectionRange = function() { - return this.selection.getRange(); - }; - this.selectAll = function() { - this.selection.selectAll(); - }; - this.clearSelection = function() { - this.selection.clearSelection(); - }; - this.moveCursorTo = function(row, column) { - this.selection.moveCursorTo(row, column); - }; - this.moveCursorToPosition = function(pos) { - this.selection.moveCursorToPosition(pos); - }; - this.jumpToMatching = function(select, expand) { - var cursor = this.getCursorPosition(); - var iterator = new TokenIterator(this.session, cursor.row, cursor.column); - var prevToken = iterator.getCurrentToken(); - var token = prevToken || iterator.stepForward(); - - if (!token) return; - var matchType; - var found = false; - var depth = {}; - var i = cursor.column - token.start; - var bracketType; - var brackets = { - ")": "(", - "(": "(", - "]": "[", - "[": "[", - "{": "{", - "}": "{" - }; - - do { - if (token.value.match(/[{}()\[\]]/g)) { - for (; i < token.value.length && !found; i++) { - if (!brackets[token.value[i]]) { - continue; - } - - bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); - - if (isNaN(depth[bracketType])) { - depth[bracketType] = 0; - } - - switch (token.value[i]) { - case '(': - case '[': - case '{': - depth[bracketType]++; - break; - case ')': - case ']': - case '}': - depth[bracketType]--; - - if (depth[bracketType] === -1) { - matchType = 'bracket'; - found = true; - } - break; - } - } - } - else if (token.type.indexOf('tag-name') !== -1) { - if (isNaN(depth[token.value])) { - depth[token.value] = 0; - } - - if (prevToken.value === '<') { - depth[token.value]++; - } - else if (prevToken.value === '= 0; --i) { - if(this.$tryReplace(ranges[i], replacement)) { - replaced++; - } - } - - this.selection.setSelectionRange(selection); - - return replaced; - }; - - this.$tryReplace = function(range, replacement) { - var input = this.session.getTextRange(range); - replacement = this.$search.replace(input, replacement); - if (replacement !== null) { - range.end = this.session.replace(range, replacement); - return range; - } else { - return null; - } - }; - this.getLastSearchOptions = function() { - return this.$search.getOptions(); - }; - this.find = function(needle, options, animate) { - if (!options) - options = {}; - - if (typeof needle == "string" || needle instanceof RegExp) - options.needle = needle; - else if (typeof needle == "object") - oop.mixin(options, needle); - - var range = this.selection.getRange(); - if (options.needle == null) { - needle = this.session.getTextRange(range) - || this.$search.$options.needle; - if (!needle) { - range = this.session.getWordRange(range.start.row, range.start.column); - needle = this.session.getTextRange(range); - } - this.$search.set({needle: needle}); - } - - this.$search.set(options); - if (!options.start) - this.$search.set({start: range}); - - var newRange = this.$search.find(this.session); - if (options.preventScroll) - return newRange; - if (newRange) { - this.revealRange(newRange, animate); - return newRange; - } - if (options.backwards) - range.start = range.end; - else - range.end = range.start; - this.selection.setRange(range); - }; - this.findNext = function(options, animate) { - this.find({skipCurrent: true, backwards: false}, options, animate); - }; - this.findPrevious = function(options, animate) { - this.find(options, {skipCurrent: true, backwards: true}, animate); - }; - - this.revealRange = function(range, animate) { - this.session.unfold(range); - this.selection.setSelectionRange(range); - - var scrollTop = this.renderer.scrollTop; - this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); - if (animate !== false) - this.renderer.animateScrolling(scrollTop); - }; - this.undo = function() { - this.session.getUndoManager().undo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - this.redo = function() { - this.session.getUndoManager().redo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - this.destroy = function() { - if (this.$toDestroy) { - this.$toDestroy.forEach(function(el) { - el.destroy(); - }); - this.$toDestroy = null; - } - if (this.$mouseHandler) - this.$mouseHandler.destroy(); - this.renderer.destroy(); - this._signal("destroy", this); - if (this.session) - this.session.destroy(); - if (this._$emitInputEvent) - this._$emitInputEvent.cancel(); - this.removeAllListeners(); - }; - this.setAutoScrollEditorIntoView = function(enable) { - if (!enable) - return; - var rect; - var self = this; - var shouldScroll = false; - if (!this.$scrollAnchor) - this.$scrollAnchor = document.createElement("div"); - var scrollAnchor = this.$scrollAnchor; - scrollAnchor.style.cssText = "position:absolute"; - this.container.insertBefore(scrollAnchor, this.container.firstChild); - var onChangeSelection = this.on("changeSelection", function() { - shouldScroll = true; - }); - var onBeforeRender = this.renderer.on("beforeRender", function() { - if (shouldScroll) - rect = self.renderer.container.getBoundingClientRect(); - }); - var onAfterRender = this.renderer.on("afterRender", function() { - if (shouldScroll && rect && (self.isFocused() - || self.searchBox && self.searchBox.isFocused()) - ) { - var renderer = self.renderer; - var pos = renderer.$cursorLayer.$pixelPos; - var config = renderer.layerConfig; - var top = pos.top - config.offset; - if (pos.top >= 0 && top + rect.top < 0) { - shouldScroll = true; - } else if (pos.top < config.height && - pos.top + rect.top + config.lineHeight > window.innerHeight) { - shouldScroll = false; - } else { - shouldScroll = null; - } - if (shouldScroll != null) { - scrollAnchor.style.top = top + "px"; - scrollAnchor.style.left = pos.left + "px"; - scrollAnchor.style.height = config.lineHeight + "px"; - scrollAnchor.scrollIntoView(shouldScroll); - } - shouldScroll = rect = null; - } - }); - this.setAutoScrollEditorIntoView = function(enable) { - if (enable) - return; - delete this.setAutoScrollEditorIntoView; - this.off("changeSelection", onChangeSelection); - this.renderer.off("afterRender", onAfterRender); - this.renderer.off("beforeRender", onBeforeRender); - }; - }; - - - this.$resetCursorStyle = function() { - var style = this.$cursorStyle || "ace"; - var cursorLayer = this.renderer.$cursorLayer; - if (!cursorLayer) - return; - cursorLayer.setSmoothBlinking(/smooth/.test(style)); - cursorLayer.isBlinking = !this.$readOnly && style != "wide"; - dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); - }; - this.prompt = function(message, options, callback) { - var editor = this; - config.loadModule("./ext/prompt", function (module) { - module.prompt(editor, message, options, callback); - }); - }; - -}).call(Editor.prototype); - - - -config.defineOptions(Editor.prototype, "editor", { - selectionStyle: { - set: function(style) { - this.onSelectionChange(); - this._signal("changeSelectionStyle", {data: style}); - }, - initialValue: "line" - }, - highlightActiveLine: { - set: function() {this.$updateHighlightActiveLine();}, - initialValue: true - }, - highlightSelectedWord: { - set: function(shouldHighlight) {this.$onSelectionChange();}, - initialValue: true - }, - readOnly: { - set: function(readOnly) { - this.textInput.setReadOnly(readOnly); - this.$resetCursorStyle(); - }, - initialValue: false - }, - copyWithEmptySelection: { - set: function(value) { - this.textInput.setCopyWithEmptySelection(value); - }, - initialValue: false - }, - cursorStyle: { - set: function(val) { this.$resetCursorStyle(); }, - values: ["ace", "slim", "smooth", "wide"], - initialValue: "ace" - }, - mergeUndoDeltas: { - values: [false, true, "always"], - initialValue: true - }, - behavioursEnabled: {initialValue: true}, - wrapBehavioursEnabled: {initialValue: true}, - enableAutoIndent: {initialValue: true}, - autoScrollEditorIntoView: { - set: function(val) {this.setAutoScrollEditorIntoView(val);} - }, - keyboardHandler: { - set: function(val) { this.setKeyboardHandler(val); }, - get: function() { return this.$keybindingId; }, - handlesSet: true - }, - value: { - set: function(val) { this.session.setValue(val); }, - get: function() { return this.getValue(); }, - handlesSet: true, - hidden: true - }, - session: { - set: function(val) { this.setSession(val); }, - get: function() { return this.session; }, - handlesSet: true, - hidden: true - }, - - showLineNumbers: { - set: function(show) { - this.renderer.$gutterLayer.setShowLineNumbers(show); - this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); - if (show && this.$relativeLineNumbers) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - }, - initialValue: true - }, - relativeLineNumbers: { - set: function(value) { - if (this.$showLineNumbers && value) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - } - }, - placeholder: { - set: function(message) { - if (!this.$updatePlaceholder) { - this.$updatePlaceholder = function() { - var value = this.session && (this.renderer.$composition || this.getValue()); - if (value && this.renderer.placeholderNode) { - this.renderer.off("afterRender", this.$updatePlaceholder); - dom.removeCssClass(this.container, "ace_hasPlaceholder"); - this.renderer.placeholderNode.remove(); - this.renderer.placeholderNode = null; - } else if (!value && !this.renderer.placeholderNode) { - this.renderer.on("afterRender", this.$updatePlaceholder); - dom.addCssClass(this.container, "ace_hasPlaceholder"); - var el = dom.createElement("div"); - el.className = "ace_placeholder"; - el.textContent = this.$placeholder || ""; - this.renderer.placeholderNode = el; - this.renderer.content.appendChild(this.renderer.placeholderNode); - } else if (!value && this.renderer.placeholderNode) { - this.renderer.placeholderNode.textContent = this.$placeholder || ""; - } - }.bind(this); - this.on("input", this.$updatePlaceholder); - } - this.$updatePlaceholder(); - } - }, - - hScrollBarAlwaysVisible: "renderer", - vScrollBarAlwaysVisible: "renderer", - highlightGutterLine: "renderer", - animatedScroll: "renderer", - showInvisibles: "renderer", - showPrintMargin: "renderer", - printMarginColumn: "renderer", - printMargin: "renderer", - fadeFoldWidgets: "renderer", - showFoldWidgets: "renderer", - displayIndentGuides: "renderer", - showGutter: "renderer", - fontSize: "renderer", - fontFamily: "renderer", - maxLines: "renderer", - minLines: "renderer", - scrollPastEnd: "renderer", - fixedWidthGutter: "renderer", - theme: "renderer", - hasCssTransforms: "renderer", - maxPixelHeight: "renderer", - useTextareaForIME: "renderer", - - scrollSpeed: "$mouseHandler", - dragDelay: "$mouseHandler", - dragEnabled: "$mouseHandler", - focusTimeout: "$mouseHandler", - tooltipFollowsMouse: "$mouseHandler", - - firstLineNumber: "session", - overwrite: "session", - newLineMode: "session", - useWorker: "session", - useSoftTabs: "session", - navigateWithinSoftTabs: "session", - tabSize: "session", - wrap: "session", - indentedSoftWrap: "session", - foldStyle: "session", - mode: "session" -}); - - -var relativeNumberRenderer = { - getText: function(session, row) { - return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; - }, - getWidth: function(session, lastLineNumber, config) { - return Math.max( - lastLineNumber.toString().length, - (config.lastRow + 1).toString().length, - 2 - ) * config.characterWidth; - }, - update: function(e, editor) { - editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); - }, - attach: function(editor) { - editor.renderer.$gutterLayer.$renderer = this; - editor.on("changeSelection", this.update); - this.update(null, editor); - }, - detach: function(editor) { - if (editor.renderer.$gutterLayer.$renderer == this) - editor.renderer.$gutterLayer.$renderer = null; - editor.off("changeSelection", this.update); - this.update(null, editor); - } -}; - -exports.Editor = Editor; -}); - -ace.define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; -var UndoManager = function() { - this.$maxRev = 0; - this.$fromUndo = false; - this.reset(); -}; - -(function() { - - this.addSession = function(session) { - this.$session = session; - }; - this.add = function(delta, allowMerge, session) { - if (this.$fromUndo) return; - if (delta == this.$lastDelta) return; - if (!this.$keepRedoStack) this.$redoStack.length = 0; - if (allowMerge === false || !this.lastDeltas) { - this.lastDeltas = []; - this.$undoStack.push(this.lastDeltas); - delta.id = this.$rev = ++this.$maxRev; - } - if (delta.action == "remove" || delta.action == "insert") - this.$lastDelta = delta; - this.lastDeltas.push(delta); - }; - - this.addSelection = function(selection, rev) { - this.selections.push({ - value: selection, - rev: rev || this.$rev - }); - }; - - this.startNewGroup = function() { - this.lastDeltas = null; - return this.$rev; - }; - - this.markIgnored = function(from, to) { - if (to == null) to = this.$rev + 1; - var stack = this.$undoStack; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id <= from) - break; - if (delta.id < to) - delta.ignore = true; - } - this.lastDeltas = null; - }; - - this.getSelection = function(rev, after) { - var stack = this.selections; - for (var i = stack.length; i--;) { - var selection = stack[i]; - if (selection.rev < rev) { - if (after) - selection = stack[i + 1]; - return selection; - } - } - }; - - this.getRevision = function() { - return this.$rev; - }; - - this.getDeltas = function(from, to) { - if (to == null) to = this.$rev + 1; - var stack = this.$undoStack; - var end = null, start = 0; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id < to && !end) - end = i+1; - if (delta.id <= from) { - start = i + 1; - break; - } - } - return stack.slice(start, end); - }; - - this.getChangedRanges = function(from, to) { - if (to == null) to = this.$rev + 1; - - }; - - this.getChangedLines = function(from, to) { - if (to == null) to = this.$rev + 1; - - }; - this.undo = function(session, dontSelect) { - this.lastDeltas = null; - var stack = this.$undoStack; - - if (!rearrangeUndoStack(stack, stack.length)) - return; - - if (!session) - session = this.$session; - - if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) - this.$redoStack = []; - - this.$fromUndo = true; - - var deltaSet = stack.pop(); - var undoSelectionRange = null; - if (deltaSet) { - undoSelectionRange = session.undoChanges(deltaSet, dontSelect); - this.$redoStack.push(deltaSet); - this.$syncRev(); - } - - this.$fromUndo = false; - - return undoSelectionRange; - }; - this.redo = function(session, dontSelect) { - this.lastDeltas = null; - - if (!session) - session = this.$session; - - this.$fromUndo = true; - if (this.$redoStackBaseRev != this.$rev) { - var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); - rebaseRedoStack(this.$redoStack, diff); - this.$redoStackBaseRev = this.$rev; - this.$redoStack.forEach(function(x) { - x[0].id = ++this.$maxRev; - }, this); - } - var deltaSet = this.$redoStack.pop(); - var redoSelectionRange = null; - - if (deltaSet) { - redoSelectionRange = session.redoChanges(deltaSet, dontSelect); - this.$undoStack.push(deltaSet); - this.$syncRev(); - } - this.$fromUndo = false; - - return redoSelectionRange; - }; - - this.$syncRev = function() { - var stack = this.$undoStack; - var nextDelta = stack[stack.length - 1]; - var id = nextDelta && nextDelta[0].id || 0; - this.$redoStackBaseRev = id; - this.$rev = id; - }; - this.reset = function() { - this.lastDeltas = null; - this.$lastDelta = null; - this.$undoStack = []; - this.$redoStack = []; - this.$rev = 0; - this.mark = 0; - this.$redoStackBaseRev = this.$rev; - this.selections = []; - }; - this.canUndo = function() { - return this.$undoStack.length > 0; - }; - this.canRedo = function() { - return this.$redoStack.length > 0; - }; - this.bookmark = function(rev) { - if (rev == undefined) - rev = this.$rev; - this.mark = rev; - }; - this.isAtBookmark = function() { - return this.$rev === this.mark; - }; - - this.toJSON = function() { - - }; - - this.fromJSON = function() { - - }; - - this.hasUndo = this.canUndo; - this.hasRedo = this.canRedo; - this.isClean = this.isAtBookmark; - this.markClean = this.bookmark; - - this.$prettyPrint = function(delta) { - if (delta) return stringifyDelta(delta); - return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); - }; -}).call(UndoManager.prototype); - -function rearrangeUndoStack(stack, pos) { - for (var i = pos; i--; ) { - var deltaSet = stack[i]; - if (deltaSet && !deltaSet[0].ignore) { - while(i < pos - 1) { - var swapped = swapGroups(stack[i], stack[i + 1]); - stack[i] = swapped[0]; - stack[i + 1] = swapped[1]; - i++; - } - return true; - } - } -} - -var Range = require("./range").Range; -var cmp = Range.comparePoints; -var comparePoints = Range.comparePoints; - -function $updateMarkers(delta) { - var isInsert = delta.action == "insert"; - var start = delta.start; - var end = delta.end; - var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); - var colShift = (end.column - start.column) * (isInsert ? 1 : -1); - if (isInsert) end = start; - - for (var i in this.marks) { - var point = this.marks[i]; - var cmp = comparePoints(point, start); - if (cmp < 0) { - continue; // delta starts after the range - } - if (cmp === 0) { - if (isInsert) { - if (point.bias == 1) { - cmp = 1; - } - else { - point.bias == -1; - continue; - } - } - } - var cmp2 = isInsert ? cmp : comparePoints(point, end); - if (cmp2 > 0) { - point.row += rowShift; - point.column += point.row == end.row ? colShift : 0; - continue; - } - if (!isInsert && cmp2 <= 0) { - point.row = start.row; - point.column = start.column; - if (cmp2 === 0) - point.bias = 1; - } - } -} - - - -function clonePos(pos) { - return {row: pos.row,column: pos.column}; -} -function cloneDelta(d) { - return { - start: clonePos(d.start), - end: clonePos(d.end), - action: d.action, - lines: d.lines.slice() - }; -} -function stringifyDelta(d) { - d = d || this; - if (Array.isArray(d)) { - return d.map(stringifyDelta).join("\n"); - } - var type = ""; - if (d.action) { - type = d.action == "insert" ? "+" : "-"; - type += "[" + d.lines + "]"; - } else if (d.value) { - if (Array.isArray(d.value)) { - type = d.value.map(stringifyRange).join("\n"); - } else { - type = stringifyRange(d.value); - } - } - if (d.start) { - type += stringifyRange(d); - } - if (d.id || d.rev) { - type += "\t(" + (d.id || d.rev) + ")"; - } - return type; -} -function stringifyRange(r) { - return r.start.row + ":" + r.start.column - + "=>" + r.end.row + ":" + r.end.column; -} - -function swap(d1, d2) { - var i1 = d1.action == "insert"; - var i2 = d2.action == "insert"; - - if (i1 && i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } else { - return null; - } - } else if (i1 && !i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } else { - return null; - } - } else if (!i1 && i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } else { - return null; - } - } else if (!i1 && !i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } else { - return null; - } - } - return [d2, d1]; -} -function swapGroups(ds1, ds2) { - for (var i = ds1.length; i--; ) { - for (var j = 0; j < ds2.length; j++) { - if (!swap(ds1[i], ds2[j])) { - while (i < ds1.length) { - while (j--) { - swap(ds2[j], ds1[i]); - } - j = ds2.length; - i++; - } - return [ds1, ds2]; - } - } - } - ds1.selectionBefore = ds2.selectionBefore = - ds1.selectionAfter = ds2.selectionAfter = null; - return [ds2, ds1]; -} -function xform(d1, c1) { - var i1 = d1.action == "insert"; - var i2 = c1.action == "insert"; - - if (i1 && i2) { - if (cmp(d1.start, c1.start) < 0) { - shift(c1, d1, 1); - } else { - shift(d1, c1, 1); - } - } else if (i1 && !i2) { - if (cmp(d1.start, c1.end) >= 0) { - shift(d1, c1, -1); - } else if (cmp(d1.start, c1.start) <= 0) { - shift(c1, d1, +1); - } else { - shift(d1, Range.fromPoints(c1.start, d1.start), -1); - shift(c1, d1, +1); - } - } else if (!i1 && i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } else if (cmp(c1.start, d1.start) <= 0) { - shift(d1, c1, +1); - } else { - shift(c1, Range.fromPoints(d1.start, c1.start), -1); - shift(d1, c1, +1); - } - } else if (!i1 && !i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } else if (cmp(c1.end, d1.start) <= 0) { - shift(d1, c1, -1); - } else { - var before, after; - if (cmp(d1.start, c1.start) < 0) { - before = d1; - d1 = splitDelta(d1, c1.start); - } - if (cmp(d1.end, c1.end) > 0) { - after = splitDelta(d1, c1.end); - } - - shiftPos(c1.end, d1.start, d1.end, -1); - if (after && !before) { - d1.lines = after.lines; - d1.start = after.start; - d1.end = after.end; - after = d1; - } - - return [c1, before, after].filter(Boolean); - } - } - return [c1, d1]; -} - -function shift(d1, d2, dir) { - shiftPos(d1.start, d2.start, d2.end, dir); - shiftPos(d1.end, d2.start, d2.end, dir); -} -function shiftPos(pos, start, end, dir) { - if (pos.row == (dir == 1 ? start : end).row) { - pos.column += dir * (end.column - start.column); - } - pos.row += dir * (end.row - start.row); -} -function splitDelta(c, pos) { - var lines = c.lines; - var end = c.end; - c.end = clonePos(pos); - var rowsBefore = c.end.row - c.start.row; - var otherLines = lines.splice(rowsBefore, lines.length); - - var col = rowsBefore ? pos.column : pos.column - c.start.column; - lines.push(otherLines[0].substring(0, col)); - otherLines[0] = otherLines[0].substr(col) ; - var rest = { - start: clonePos(pos), - end: end, - lines: otherLines, - action: c.action - }; - return rest; -} - -function moveDeltasByOne(redoStack, d) { - d = cloneDelta(d); - for (var j = redoStack.length; j--;) { - var deltaSet = redoStack[j]; - for (var i = 0; i < deltaSet.length; i++) { - var x = deltaSet[i]; - var xformed = xform(x, d); - d = xformed[0]; - if (xformed.length != 2) { - if (xformed[2]) { - deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); - i++; - } else if (!xformed[1]) { - deltaSet.splice(i, 1); - i--; - } - } - } - if (!deltaSet.length) { - redoStack.splice(j, 1); - } - } - return redoStack; -} -function rebaseRedoStack(redoStack, deltaSets) { - for (var i = 0; i < deltaSets.length; i++) { - var deltas = deltaSets[i]; - for (var j = 0; j < deltas.length; j++) { - moveDeltasByOne(redoStack, deltas[j]); - } - } -} - -exports.UndoManager = UndoManager; - -}); - -ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); - -var Lines = function(element, canvasHeight) { - this.element = element; - this.canvasHeight = canvasHeight || 500000; - this.element.style.height = (this.canvasHeight * 2) + "px"; - - this.cells = []; - this.cellCache = []; - this.$offsetCoefficient = 0; -}; - -(function() { - - this.moveContainer = function(config) { - dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); - }; - - this.pageChanged = function(oldConfig, newConfig) { - return ( - Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== - Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight) - ); - }; - - this.computeLineTop = function(row, config, session) { - var screenTop = config.firstRowScreen * config.lineHeight; - var screenPage = Math.floor(screenTop / this.canvasHeight); - var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; - return lineTop - (screenPage * this.canvasHeight); - }; - - this.computeLineHeight = function(row, config, session) { - return config.lineHeight * session.getRowLineCount(row); - }; - - this.getLength = function() { - return this.cells.length; - }; - - this.get = function(index) { - return this.cells[index]; - }; - - this.shift = function() { - this.$cacheCell(this.cells.shift()); - }; - - this.pop = function() { - this.$cacheCell(this.cells.pop()); - }; - - this.push = function(cell) { - if (Array.isArray(cell)) { - this.cells.push.apply(this.cells, cell); - var fragment = dom.createFragment(this.element); - for (var i=0; i foldStart) { - row = fold.end.row + 1; - fold = session.getNextFoldLine(row, fold); - foldStart = fold ? fold.start.row : Infinity; - } - if (row > lastRow) { - while (this.$lines.getLength() > index + 1) - this.$lines.pop(); - - break; - } - - cell = this.$lines.get(++index); - if (cell) { - cell.row = row; - } else { - cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$lines.push(cell); - } - - this.$renderCell(cell, config, fold, row); - row++; - } - - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - - this.$updateGutterWidth = function(config) { - var session = this.session; - - var gutterRenderer = session.gutterRenderer || this.$renderer; - - var firstLineNumber = session.$firstLineNumber; - var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; - - if (this.$fixedWidth || session.$useWrapMode) - lastLineText = session.getLength() + firstLineNumber - 1; - - var gutterWidth = gutterRenderer - ? gutterRenderer.getWidth(session, lastLineText, config) - : lastLineText.toString().length * config.characterWidth; - - var padding = this.$padding || this.$computePadding(); - gutterWidth += padding.left + padding.right; - if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { - this.gutterWidth = gutterWidth; - this.element.parentNode.style.width = - this.element.style.width = Math.ceil(this.gutterWidth) + "px"; - this._signal("changeGutterWidth", gutterWidth); - } - }; - - this.$updateCursorRow = function() { - if (!this.$highlightGutterLine) - return; - - var position = this.session.selection.getCursor(); - if (this.$cursorRow === position.row) - return; - - this.$cursorRow = position.row; - }; - - this.updateLineHighlight = function() { - if (!this.$highlightGutterLine) - return; - var row = this.session.selection.cursor.row; - this.$cursorRow = row; - - if (this.$cursorCell && this.$cursorCell.row == row) - return; - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - var cells = this.$lines.cells; - this.$cursorCell = null; - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - if (cell.row >= this.$cursorRow) { - if (cell.row > this.$cursorRow) { - var fold = this.session.getFoldLine(this.$cursorRow); - if (i > 0 && fold && fold.start.row == cells[i - 1].row) - cell = cells[i - 1]; - else - break; - } - cell.element.className = "ace_gutter-active-line " + cell.element.className; - this.$cursorCell = cell; - break; - } - } - }; - - this.scrollLines = function(config) { - var oldConfig = this.config; - this.config = config; - - this.$updateCursorRow(); - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - - this.$lines.moveContainer(config); - - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - this.session.getLength() - 1); - var oldLastRow = this.oldLastRow; - this.oldLastRow = lastRow; - - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - - if (lastRow < oldConfig.firstRow) - return this.update(config); - - if (oldConfig.firstRow < config.firstRow) - for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--) - this.$lines.shift(); - - if (oldLastRow > lastRow) - for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--) - this.$lines.pop(); - - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); - } - - if (lastRow > oldLastRow) { - this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); - } - - this.updateLineHighlight(); - - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - - this.$renderLines = function(config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - - var cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$renderCell(cell, config, foldLine, row); - fragment.push(cell); - - row++; - } - return fragment; - }; - - this.$renderCell = function(cell, config, fold, row) { - var element = cell.element; - - var session = this.session; - - var textNode = element.childNodes[0]; - var foldWidget = element.childNodes[1]; - - var firstLineNumber = session.$firstLineNumber; - - var breakpoints = session.$breakpoints; - var decorations = session.$decorations; - var gutterRenderer = session.gutterRenderer || this.$renderer; - var foldWidgets = this.$showFoldWidgets && session.foldWidgets; - var foldStart = fold ? fold.start.row : Number.MAX_VALUE; - - var className = "ace_gutter-cell "; - if (this.$highlightGutterLine) { - if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { - className += "ace_gutter-active-line "; - if (this.$cursorCell != cell) { - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - this.$cursorCell = cell; - } - } - } - - if (breakpoints[row]) - className += breakpoints[row]; - if (decorations[row]) - className += decorations[row]; - if (this.$annotations[row]) - className += this.$annotations[row].className; - if (element.className != className) - element.className = className; - - if (foldWidgets) { - var c = foldWidgets[row]; - if (c == null) - c = foldWidgets[row] = session.getFoldWidget(row); - } - - if (c) { - var className = "ace_fold-widget ace_" + c; - if (c == "start" && row == foldStart && row < fold.end.row) - className += " ace_closed"; - else - className += " ace_open"; - if (foldWidget.className != className) - foldWidget.className = className; - - var foldHeight = config.lineHeight + "px"; - dom.setStyle(foldWidget.style, "height", foldHeight); - dom.setStyle(foldWidget.style, "display", "inline-block"); - } else { - if (foldWidget) { - dom.setStyle(foldWidget.style, "display", "none"); - } - } - - var text = (gutterRenderer - ? gutterRenderer.getText(session, row) - : row + firstLineNumber).toString(); - - if (text !== textNode.data) { - textNode.data = text; - } - - dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); - dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); - - cell.text = text; - return cell; - }; - - this.$fixedWidth = false; - - this.$highlightGutterLine = true; - this.$renderer = ""; - this.setHighlightGutterLine = function(highlightGutterLine) { - this.$highlightGutterLine = highlightGutterLine; - }; - - this.$showLineNumbers = true; - this.$renderer = ""; - this.setShowLineNumbers = function(show) { - this.$renderer = !show && { - getWidth: function() {return 0;}, - getText: function() {return "";} - }; - }; - - this.getShowLineNumbers = function() { - return this.$showLineNumbers; - }; - - this.$showFoldWidgets = true; - this.setShowFoldWidgets = function(show) { - if (show) - dom.addCssClass(this.element, "ace_folding-enabled"); - else - dom.removeCssClass(this.element, "ace_folding-enabled"); - - this.$showFoldWidgets = show; - this.$padding = null; - }; - - this.getShowFoldWidgets = function() { - return this.$showFoldWidgets; - }; - - this.$computePadding = function() { - if (!this.element.firstChild) - return {left: 0, right: 0}; - var style = dom.computedStyle(this.element.firstChild); - this.$padding = {}; - this.$padding.left = (parseInt(style.borderLeftWidth) || 0) - + (parseInt(style.paddingLeft) || 0) + 1; - this.$padding.right = (parseInt(style.borderRightWidth) || 0) - + (parseInt(style.paddingRight) || 0); - return this.$padding; - }; - - this.getRegion = function(point) { - var padding = this.$padding || this.$computePadding(); - var rect = this.element.getBoundingClientRect(); - if (point.x < padding.left + rect.left) - return "markers"; - if (this.$showFoldWidgets && point.x > rect.right - padding.right) - return "foldWidgets"; - }; - -}).call(Gutter.prototype); - -function onCreateCell(element) { - var textNode = document.createTextNode(''); - element.appendChild(textNode); - - var foldWidget = dom.createElement("span"); - element.appendChild(foldWidget); - - return element; -} - -exports.Gutter = Gutter; - -}); - -ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -var dom = require("../lib/dom"); - -var Marker = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - parentEl.appendChild(this.element); -}; - -(function() { - - this.$padding = 0; - - this.setPadding = function(padding) { - this.$padding = padding; - }; - this.setSession = function(session) { - this.session = session; - }; - - this.setMarkers = function(markers) { - this.markers = markers; - }; - - this.elt = function(className, css) { - var x = this.i != -1 && this.element.childNodes[this.i]; - if (!x) { - x = document.createElement("div"); - this.element.appendChild(x); - this.i = -1; - } else { - this.i++; - } - x.style.cssText = css; - x.className = className; - }; - - this.update = function(config) { - if (!config) return; - - this.config = config; - - this.i = 0; - var html; - for (var key in this.markers) { - var marker = this.markers[key]; - - if (!marker.range) { - marker.update(html, this, this.session, config); - continue; - } - - var range = marker.range.clipRows(config.firstRow, config.lastRow); - if (range.isEmpty()) continue; - - range = range.toScreenRange(this.session); - if (marker.renderer) { - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - marker.renderer(html, range, left, top, config); - } else if (marker.type == "fullLine") { - this.drawFullLineMarker(html, range, marker.clazz, config); - } else if (marker.type == "screenLine") { - this.drawScreenLineMarker(html, range, marker.clazz, config); - } else if (range.isMultiLine()) { - if (marker.type == "text") - this.drawTextMarker(html, range, marker.clazz, config); - else - this.drawMultiLineMarker(html, range, marker.clazz, config); - } else { - this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); - } - } - if (this.i !=-1) { - while (this.i < this.element.childElementCount) - this.element.removeChild(this.element.lastChild); - } - }; - - this.$getTop = function(row, layerConfig) { - return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; - }; - - function getBorderClass(tl, tr, br, bl) { - return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); - } - this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) { - var session = this.session; - var start = range.start.row; - var end = range.end.row; - var row = start; - var prev = 0; - var curr = 0; - var next = session.getScreenLastRowColumn(row); - var lineRange = new Range(row, range.start.column, row, curr); - for (; row <= end; row++) { - lineRange.start.row = lineRange.end.row = row; - lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); - lineRange.end.column = next; - prev = curr; - curr = next; - next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; - this.drawSingleLineMarker(stringBuilder, lineRange, - clazz + (row == start ? " ace_start" : "") + " ace_br" - + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), - layerConfig, row == end ? 0 : 1, extraStyle); - } - }; - this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var padding = this.$padding; - var height = config.lineHeight; - var top = this.$getTop(range.start.row, config); - var left = padding + range.start.column * config.characterWidth; - extraStyle = extraStyle || ""; - - if (this.session.$bidiHandler.isBidiRow(range.start.row)) { - var range1 = range.clone(); - range1.end.row = range1.start.row; - range1.end.column = this.session.getLine(range1.start.row).length; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); - } else { - this.elt( - clazz + " ace_br1 ace_start", - "height:"+ height+ "px;"+ "right:0;"+ "top:"+top+ "px;left:"+ left+ "px;" + (extraStyle || "") - ); - } - if (this.session.$bidiHandler.isBidiRow(range.end.row)) { - var range1 = range.clone(); - range1.start.row = range1.end.row; - range1.start.column = 0; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); - } else { - top = this.$getTop(range.end.row, config); - var width = range.end.column * config.characterWidth; - - this.elt( - clazz + " ace_br12", - "height:"+ height+ "px;"+ - "width:"+ width+ "px;"+ - "top:"+ top+ "px;"+ - "left:"+ padding+ "px;"+ (extraStyle || "") - ); - } - height = (range.end.row - range.start.row - 1) * config.lineHeight; - if (height <= 0) - return; - top = this.$getTop(range.start.row + 1, config); - - var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); - - this.elt( - clazz + (radiusClass ? " ace_br" + radiusClass : ""), - "height:"+ height+ "px;"+ - "right:0;"+ - "top:"+ top+ "px;"+ - "left:"+ padding+ "px;"+ (extraStyle || "") - ); - }; - this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { - if (this.session.$bidiHandler.isBidiRow(range.start.row)) - return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); - var height = config.lineHeight; - var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; - - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - - this.elt( - clazz, - "height:"+ height+ "px;"+ - "width:"+ width+ "px;"+ - "top:"+ top+ "px;"+ - "left:"+ left+ "px;"+ (extraStyle || "") - ); - }; - this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { - var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; - var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); - - selections.forEach(function(selection) { - this.elt( - clazz, - "height:" + height + "px;" + - "width:" + selection.width + (extraLength || 0) + "px;" + - "top:" + top + "px;" + - "left:" + (padding + selection.left) + "px;" + (extraStyle || "") - ); - }, this); - }; - - this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - if (range.start.row != range.end.row) - height += this.$getTop(range.end.row, config) - top; - - this.elt( - clazz, - "height:"+ height+ "px;"+ - "top:"+ top+ "px;"+ - "left:0;right:0;"+ (extraStyle || "") - ); - }; - - this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - - this.elt( - clazz, - "height:"+ height+ "px;"+ - "top:"+ top+ "px;"+ - "left:0;right:0;"+ (extraStyle || "") - ); - }; - -}).call(Marker.prototype); - -exports.Marker = Marker; - -}); - -ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var Lines = require("./lines").Lines; -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var Text = function(parentEl) { - this.dom = dom; - this.element = this.dom.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - parentEl.appendChild(this.element); - this.$updateEolChar = this.$updateEolChar.bind(this); - this.$lines = new Lines(this.element); -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.EOF_CHAR = "\xB6"; - this.EOL_CHAR_LF = "\xAC"; - this.EOL_CHAR_CRLF = "\xa4"; - this.EOL_CHAR = this.EOL_CHAR_LF; - this.TAB_CHAR = "\u2014"; //"\u21E5"; - this.SPACE_CHAR = "\xB7"; - this.$padding = 0; - this.MAX_LINE_LENGTH = 10000; - - this.$updateEolChar = function() { - var doc = this.session.doc; - var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; - var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; - if (this.EOL_CHAR != EOL_CHAR) { - this.EOL_CHAR = EOL_CHAR; - return true; - } - }; - - this.setPadding = function(padding) { - this.$padding = padding; - this.element.style.margin = "0 " + padding + "px"; - }; - - this.getLineHeight = function() { - return this.$fontMetrics.$characterSize.height || 0; - }; - - this.getCharacterWidth = function() { - return this.$fontMetrics.$characterSize.width || 0; - }; - - this.$setFontMetrics = function(measure) { - this.$fontMetrics = measure; - this.$fontMetrics.on("changeCharacterSize", function(e) { - this._signal("changeCharacterSize", e); - }.bind(this)); - this.$pollSizeChanges(); - }; - - this.checkForSizeChanges = function() { - this.$fontMetrics.checkForSizeChanges(); - }; - this.$pollSizeChanges = function() { - return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); - }; - this.setSession = function(session) { - this.session = session; - if (session) - this.$computeTabString(); - }; - - this.showInvisibles = false; - this.showSpaces = false; - this.showTabs = false; - this.showEOL = false; - this.setShowInvisibles = function(showInvisibles) { - if (this.showInvisibles == showInvisibles) - return false; - - this.showInvisibles = showInvisibles; - if (typeof showInvisibles == "string") { - this.showSpaces = /tab/i.test(showInvisibles); - this.showTabs = /space/i.test(showInvisibles); - this.showEOL = /eol/i.test(showInvisibles); - } else { - this.showSpaces = this.showTabs = this.showEOL = showInvisibles; - } - this.$computeTabString(); - return true; - }; - - this.displayIndentGuides = true; - this.setDisplayIndentGuides = function(display) { - if (this.displayIndentGuides == display) - return false; - - this.displayIndentGuides = display; - this.$computeTabString(); - return true; - }; - - this.$tabStrings = []; - this.onChangeTabSize = - this.$computeTabString = function() { - var tabSize = this.session.getTabSize(); - this.tabSize = tabSize; - var tabStr = this.$tabStrings = [0]; - for (var i = 1; i < tabSize + 1; i++) { - if (this.showTabs) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_tab"; - span.textContent = lang.stringRepeat(this.TAB_CHAR, i); - tabStr.push(span); - } else { - tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); - } - } - if (this.displayIndentGuides) { - this.$indentGuideRe = /\s\S| \t|\t |\s$/; - var className = "ace_indent-guide"; - var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; - var spaceContent = this.showSpaces - ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) - : lang.stringRepeat(" ", this.tabSize); - - var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; - var tabContent = this.showTabs - ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) - : spaceContent; - - var span = this.dom.createElement("span"); - span.className = className + spaceClass; - span.textContent = spaceContent; - this.$tabStrings[" "] = span; - - var span = this.dom.createElement("span"); - span.className = className + tabClass; - span.textContent = tabContent; - this.$tabStrings["\t"] = span; - } - }; - - this.updateLines = function(config, firstRow, lastRow) { - if (this.config.lastRow != config.lastRow || - this.config.firstRow != config.firstRow) { - return this.update(config); - } - - this.config = config; - - var first = Math.max(firstRow, config.firstRow); - var last = Math.min(lastRow, config.lastRow); - - var lineElements = this.element.childNodes; - var lineElementsIdx = 0; - - for (var row = config.firstRow; row < first; row++) { - var foldLine = this.session.getFoldLine(row); - if (foldLine) { - if (foldLine.containsRow(first)) { - first = foldLine.start.row; - break; - } else { - row = foldLine.end.row; - } - } - lineElementsIdx ++; - } - - var heightChanged = false; - var row = first; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row :Infinity; - } - if (row > last) - break; - - var lineElement = lineElements[lineElementsIdx++]; - if (lineElement) { - this.dom.removeChildren(lineElement); - this.$renderLine( - lineElement, row, row == foldStart ? foldLine : false - ); - - if (heightChanged) - lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; - - var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; - if (lineElement.style.height != height) { - heightChanged = true; - lineElement.style.height = height; - } - } - row++; - } - if (heightChanged) { - while (lineElementsIdx < this.$lines.cells.length) { - var cell = this.$lines.cells[lineElementsIdx++]; - cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; - } - } - }; - - this.scrollLines = function(config) { - var oldConfig = this.config; - this.config = config; - - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - - this.$lines.moveContainer(config); - - var lastRow = config.lastRow; - var oldLastRow = oldConfig ? oldConfig.lastRow : -1; - - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - - if (lastRow < oldConfig.firstRow) - return this.update(config); - - if (!oldConfig || oldConfig.lastRow < config.firstRow) - return this.update(config); - - if (config.lastRow < oldConfig.firstRow) - return this.update(config); - - if (oldConfig.firstRow < config.firstRow) - for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--) - this.$lines.shift(); - - if (oldConfig.lastRow > config.lastRow) - for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--) - this.$lines.pop(); - - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); - } - - if (config.lastRow > oldConfig.lastRow) { - this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); - } - }; - - this.$renderLinesFragment = function(config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - - var line = this.$lines.createCell(row, config, this.session); - - var lineEl = line.element; - this.dom.removeChildren(lineEl); - dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); - dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); - this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); - - if (this.$useLineGroups()) { - lineEl.className = "ace_line_group"; - } else { - lineEl.className = "ace_line"; - } - fragment.push(line); - - row++; - } - return fragment; - }; - - this.update = function(config) { - this.$lines.moveContainer(config); - - this.config = config; - - var firstRow = config.firstRow; - var lastRow = config.lastRow; - - var lines = this.$lines; - while (lines.getLength()) - lines.pop(); - - lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); - }; - - this.$textToken = { - "text": true, - "rparen": true, - "lparen": true - }; - - this.$renderToken = function(parent, screenColumn, token, value) { - var self = this; - var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; - - var valueFragment = this.dom.createFragment(this.element); - - var m; - var i = 0; - while (m = re.exec(value)) { - var tab = m[1]; - var simpleSpace = m[2]; - var controlCharacter = m[3]; - var cjkSpace = m[4]; - var cjk = m[5]; - - if (!self.showSpaces && simpleSpace) - continue; - - var before = i != m.index ? value.slice(i, m.index) : ""; - - i = m.index + m[0].length; - - if (before) { - valueFragment.appendChild(this.dom.createTextNode(before, this.element)); - } - - if (tab) { - var tabSize = self.session.getScreenTabSize(screenColumn + m.index); - valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); - screenColumn += tabSize - 1; - } else if (simpleSpace) { - if (self.showSpaces) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); - valueFragment.appendChild(span); - } else { - valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element)); - } - } else if (controlCharacter) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space ace_invalid"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); - valueFragment.appendChild(span); - } else if (cjkSpace) { - screenColumn += 1; - - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; - span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; - valueFragment.appendChild(span); - } else if (cjk) { - screenColumn += 1; - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = "ace_cjk"; - span.textContent = cjk; - valueFragment.appendChild(span); - } - } - - valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); - - if (!this.$textToken[token.type]) { - var classes = "ace_" + token.type.replace(/\./g, " ace_"); - var span = this.dom.createElement("span"); - if (token.type == "fold") - span.style.width = (token.value.length * this.config.characterWidth) + "px"; - - span.className = classes; - span.appendChild(valueFragment); - - parent.appendChild(span); - } - else { - parent.appendChild(valueFragment); - } - - return screenColumn + value.length; - }; - - this.renderIndentGuide = function(parent, value, max) { - var cols = value.search(this.$indentGuideRe); - if (cols <= 0 || cols >= max) - return value; - if (value[0] == " ") { - cols -= cols % this.tabSize; - var count = cols/this.tabSize; - for (var i=0; i= splitChars) { - screenColumn = this.$renderToken( - lineEl, screenColumn, - token, value.substring(0, splitChars - chars) - ); - value = value.substring(splitChars - chars); - chars = splitChars; - - lineEl = this.$createLineElement(); - parent.appendChild(lineEl); - - lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); - - split ++; - screenColumn = 0; - splitChars = splits[split] || Number.MAX_VALUE; - } - if (value.length != 0) { - chars += value.length; - screenColumn = this.$renderToken( - lineEl, screenColumn, token, value - ); - } - } - } - - if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) - this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); - }; - - this.$renderSimpleLine = function(parent, tokens) { - var screenColumn = 0; - var token = tokens[0]; - var value = token.value; - if (this.displayIndentGuides) - value = this.renderIndentGuide(parent, value); - if (value) - screenColumn = this.$renderToken(parent, screenColumn, token, value); - for (var i = 1; i < tokens.length; i++) { - token = tokens[i]; - value = token.value; - if (screenColumn + value.length > this.MAX_LINE_LENGTH) - return this.$renderOverflowMessage(parent, screenColumn, token, value); - screenColumn = this.$renderToken(parent, screenColumn, token, value); - } - }; - - this.$renderOverflowMessage = function(parent, screenColumn, token, value, hide) { - token && this.$renderToken(parent, screenColumn, token, - value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); - - var overflowEl = this.dom.createElement("span"); - overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; - overflowEl.textContent = hide ? "" : ""; - - parent.appendChild(overflowEl); - }; - this.$renderLine = function(parent, row, foldLine) { - if (!foldLine && foldLine != false) - foldLine = this.session.getFoldLine(row); - - if (foldLine) - var tokens = this.$getFoldLineTokens(row, foldLine); - else - var tokens = this.session.getTokens(row); - - var lastLineEl = parent; - if (tokens.length) { - var splits = this.session.getRowSplitData(row); - if (splits && splits.length) { - this.$renderWrappedLine(parent, tokens, splits); - var lastLineEl = parent.lastChild; - } else { - var lastLineEl = parent; - if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - this.$renderSimpleLine(lastLineEl, tokens); - } - } else if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - - if (this.showEOL && lastLineEl) { - if (foldLine) - row = foldLine.end.row; - - var invisibleEl = this.dom.createElement("span"); - invisibleEl.className = "ace_invisible ace_invisible_eol"; - invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; - - lastLineEl.appendChild(invisibleEl); - } - }; - - this.$getFoldLineTokens = function(row, foldLine) { - var session = this.session; - var renderTokens = []; - - function addTokens(tokens, from, to) { - var idx = 0, col = 0; - while ((col + tokens[idx].value.length) < from) { - col += tokens[idx].value.length; - idx++; - - if (idx == tokens.length) - return; - } - if (col != from) { - var value = tokens[idx].value.substring(from - col); - if (value.length > (to - from)) - value = value.substring(0, to - from); - - renderTokens.push({ - type: tokens[idx].type, - value: value - }); - - col = from + value.length; - idx += 1; - } - - while (col < to && idx < tokens.length) { - var value = tokens[idx].value; - if (value.length + col > to) { - renderTokens.push({ - type: tokens[idx].type, - value: value.substring(0, to - col) - }); - } else - renderTokens.push(tokens[idx]); - col += value.length; - idx += 1; - } - } - - var tokens = session.getTokens(row); - foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) { - if (placeholder != null) { - renderTokens.push({ - type: "fold", - value: placeholder - }); - } else { - if (isNewRow) - tokens = session.getTokens(row); - - if (tokens.length) - addTokens(tokens, lastColumn, column); - } - }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); - - return renderTokens; - }; - - this.$useLineGroups = function() { - return this.session.getUseWrapMode(); - }; - - this.destroy = function() {}; -}).call(Text.prototype); - -exports.Text = Text; - -}); - -ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); - -var Cursor = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - parentEl.appendChild(this.element); - - this.isVisible = false; - this.isBlinking = true; - this.blinkInterval = 1000; - this.smoothBlinking = false; - - this.cursors = []; - this.cursor = this.addCursor(); - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.$updateCursors = this.$updateOpacity.bind(this); -}; - -(function() { - - this.$updateOpacity = function(val) { - var cursors = this.cursors; - for (var i = cursors.length; i--; ) - dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); - }; - - this.$startCssAnimation = function() { - var cursors = this.cursors; - for (var i = cursors.length; i--; ) - cursors[i].style.animationDuration = this.blinkInterval + "ms"; - - this.$isAnimating = true; - setTimeout(function() { - if (this.$isAnimating) { - dom.addCssClass(this.element, "ace_animate-blinking"); - } - }.bind(this)); - }; - - this.$stopCssAnimation = function() { - this.$isAnimating = false; - dom.removeCssClass(this.element, "ace_animate-blinking"); - }; - - this.$padding = 0; - this.setPadding = function(padding) { - this.$padding = padding; - }; - - this.setSession = function(session) { - this.session = session; - }; - - this.setBlinking = function(blinking) { - if (blinking != this.isBlinking) { - this.isBlinking = blinking; - this.restartTimer(); - } - }; - - this.setBlinkInterval = function(blinkInterval) { - if (blinkInterval != this.blinkInterval) { - this.blinkInterval = blinkInterval; - this.restartTimer(); - } - }; - - this.setSmoothBlinking = function(smoothBlinking) { - if (smoothBlinking != this.smoothBlinking) { - this.smoothBlinking = smoothBlinking; - dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); - this.$updateCursors(true); - this.restartTimer(); - } - }; - - this.addCursor = function() { - var el = dom.createElement("div"); - el.className = "ace_cursor"; - this.element.appendChild(el); - this.cursors.push(el); - return el; - }; - - this.removeCursor = function() { - if (this.cursors.length > 1) { - var el = this.cursors.pop(); - el.parentNode.removeChild(el); - return el; - } - }; - - this.hideCursor = function() { - this.isVisible = false; - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - - this.showCursor = function() { - this.isVisible = true; - dom.removeCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - - this.restartTimer = function() { - var update = this.$updateCursors; - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - this.$stopCssAnimation(); - - if (this.smoothBlinking) { - this.$isSmoothBlinking = false; - dom.removeCssClass(this.element, "ace_smooth-blinking"); - } - - update(true); - - if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { - this.$stopCssAnimation(); - return; - } - - if (this.smoothBlinking) { - this.$isSmoothBlinking = true; - setTimeout(function() { - if (this.$isSmoothBlinking) { - dom.addCssClass(this.element, "ace_smooth-blinking"); - } - }.bind(this)); - } - - if (dom.HAS_CSS_ANIMATION) { - this.$startCssAnimation(); - } else { - var blink = function(){ - this.timeoutId = setTimeout(function() { - update(false); - }, 0.6 * this.blinkInterval); - }.bind(this); - - this.intervalId = setInterval(function() { - update(true); - blink(); - }, this.blinkInterval); - blink(); - } - }; - - this.getPixelPosition = function(position, onScreen) { - if (!this.config || !this.session) - return {left : 0, top : 0}; - - if (!position) - position = this.session.selection.getCursor(); - var pos = this.session.documentToScreenPosition(position); - var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : pos.column * this.config.characterWidth); - - var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * - this.config.lineHeight; - - return {left : cursorLeft, top : cursorTop}; - }; - - this.isCursorInView = function(pixelPos, config) { - return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; - }; - - this.update = function(config) { - this.config = config; - - var selections = this.session.$selectionMarkers; - var i = 0, cursorIndex = 0; - - if (selections === undefined || selections.length === 0){ - selections = [{cursor: null}]; - } - - for (var i = 0, n = selections.length; i < n; i++) { - var pixelPos = this.getPixelPosition(selections[i].cursor, true); - if ((pixelPos.top > config.height + config.offset || - pixelPos.top < 0) && i > 1) { - continue; - } - - var element = this.cursors[cursorIndex++] || this.addCursor(); - var style = element.style; - - if (!this.drawCursor) { - if (!this.isCursorInView(pixelPos, config)) { - dom.setStyle(style, "display", "none"); - } else { - dom.setStyle(style, "display", "block"); - dom.translate(element, pixelPos.left, pixelPos.top); - dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); - dom.setStyle(style, "height", config.lineHeight + "px"); - } - } else { - this.drawCursor(element, pixelPos, config, selections[i], this.session); - } - } - while (this.cursors.length > cursorIndex) - this.removeCursor(); - - var overwrite = this.session.getOverwrite(); - this.$setOverwrite(overwrite); - this.$pixelPos = pixelPos; - this.restartTimer(); - }; - - this.drawCursor = null; - - this.$setOverwrite = function(overwrite) { - if (overwrite != this.overwrite) { - this.overwrite = overwrite; - if (overwrite) - dom.addCssClass(this.element, "ace_overwrite-cursors"); - else - dom.removeCssClass(this.element, "ace_overwrite-cursors"); - } - }; - - this.destroy = function() { - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - }; - -}).call(Cursor.prototype); - -exports.Cursor = Cursor; - -}); - -ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var MAX_SCROLL_H = 0x8000; -var ScrollBar = function(parent) { - this.element = dom.createElement("div"); - this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; - - this.inner = dom.createElement("div"); - this.inner.className = "ace_scrollbar-inner"; - this.inner.textContent = "\xa0"; - this.element.appendChild(this.inner); - - parent.appendChild(this.element); - - this.setVisible(false); - this.skipEvent = false; - - event.addListener(this.element, "scroll", this.onScroll.bind(this)); - event.addListener(this.element, "mousedown", event.preventDefault); -}; - -(function() { - oop.implement(this, EventEmitter); - - this.setVisible = function(isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - this.coeff = 1; - }; -}).call(ScrollBar.prototype); -var VScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollTop = 0; - this.scrollHeight = 0; - renderer.$scrollbarWidth = - this.width = dom.scrollbarWidth(parent.ownerDocument); - this.inner.style.width = - this.element.style.width = (this.width || 15) + 5 + "px"; - this.$minWidth = 0; -}; - -oop.inherits(VScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-v'; - this.onScroll = function() { - if (!this.skipEvent) { - this.scrollTop = this.element.scrollTop; - if (this.coeff != 1) { - var h = this.element.clientHeight / this.scrollHeight; - this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); - } - this._emit("scroll", {data: this.scrollTop}); - } - this.skipEvent = false; - }; - this.getWidth = function() { - return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); - }; - this.setHeight = function(height) { - this.element.style.height = height + "px"; - }; - this.setInnerHeight = - this.setScrollHeight = function(height) { - this.scrollHeight = height; - if (height > MAX_SCROLL_H) { - this.coeff = MAX_SCROLL_H / height; - height = MAX_SCROLL_H; - } else if (this.coeff != 1) { - this.coeff = 1; - } - this.inner.style.height = height + "px"; - }; - this.setScrollTop = function(scrollTop) { - if (this.scrollTop != scrollTop) { - this.skipEvent = true; - this.scrollTop = scrollTop; - this.element.scrollTop = scrollTop * this.coeff; - } - }; - -}).call(VScrollBar.prototype); -var HScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollLeft = 0; - this.height = renderer.$scrollbarWidth; - this.inner.style.height = - this.element.style.height = (this.height || 15) + 5 + "px"; -}; - -oop.inherits(HScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-h'; - this.onScroll = function() { - if (!this.skipEvent) { - this.scrollLeft = this.element.scrollLeft; - this._emit("scroll", {data: this.scrollLeft}); - } - this.skipEvent = false; - }; - this.getHeight = function() { - return this.isVisible ? this.height : 0; - }; - this.setWidth = function(width) { - this.element.style.width = width + "px"; - }; - this.setInnerWidth = function(width) { - this.inner.style.width = width + "px"; - }; - this.setScrollWidth = function(width) { - this.inner.style.width = width + "px"; - }; - this.setScrollLeft = function(scrollLeft) { - if (this.scrollLeft != scrollLeft) { - this.skipEvent = true; - this.scrollLeft = this.element.scrollLeft = scrollLeft; - } - }; - -}).call(HScrollBar.prototype); - - -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility - -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; -}); - -ace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module) { -"use strict"; - -var event = require("./lib/event"); - - -var RenderLoop = function(onRender, win) { - this.onRender = onRender; - this.pending = false; - this.changes = 0; - this.$recursionLimit = 2; - this.window = win || window; - var _self = this; - this._flush = function(ts) { - _self.pending = false; - var changes = _self.changes; - - if (changes) { - event.blockIdle(100); - _self.changes = 0; - _self.onRender(changes); - } - - if (_self.changes) { - if (_self.$recursionLimit-- < 0) return; - _self.schedule(); - } else { - _self.$recursionLimit = 2; - } - }; -}; - -(function() { - - this.schedule = function(change) { - this.changes = this.changes | change; - if (this.changes && !this.pending) { - event.nextFrame(this._flush); - this.pending = true; - } - }; - - this.clear = function(change) { - var changes = this.changes; - this.changes = 0; - return changes; - }; - -}).call(RenderLoop.prototype); - -exports.RenderLoop = RenderLoop; -}); - -ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var CHAR_COUNT = 256; -var USE_OBSERVER = typeof ResizeObserver == "function"; -var L = 200; - -var FontMetrics = exports.FontMetrics = function(parentEl) { - this.el = dom.createElement("div"); - this.$setMeasureNodeStyles(this.el.style, true); - - this.$main = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$main.style); - - this.$measureNode = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$measureNode.style); - - - this.el.appendChild(this.$main); - this.el.appendChild(this.$measureNode); - parentEl.appendChild(this.el); - - this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); - - this.$characterSize = {width: 0, height: 0}; - - - if (USE_OBSERVER) - this.$addObserver(); - else - this.checkForSizeChanges(); -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.$characterSize = {width: 0, height: 0}; - - this.$setMeasureNodeStyles = function(style, isRoot) { - style.width = style.height = "auto"; - style.left = style.top = "0px"; - style.visibility = "hidden"; - style.position = "absolute"; - style.whiteSpace = "pre"; - - if (useragent.isIE < 8) { - style["font-family"] = "inherit"; - } else { - style.font = "inherit"; - } - style.overflow = isRoot ? "hidden" : "visible"; - }; - - this.checkForSizeChanges = function(size) { - if (size === undefined) - size = this.$measureSizes(); - if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { - this.$measureNode.style.fontWeight = "bold"; - var boldSize = this.$measureSizes(); - this.$measureNode.style.fontWeight = ""; - this.$characterSize = size; - this.charSizes = Object.create(null); - this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; - this._emit("changeCharacterSize", {data: size}); - } - }; - - this.$addObserver = function() { - var self = this; - this.$observer = new window.ResizeObserver(function(e) { - self.checkForSizeChanges(); - }); - this.$observer.observe(this.$measureNode); - }; - - this.$pollSizeChanges = function() { - if (this.$pollSizeChangesTimer || this.$observer) - return this.$pollSizeChangesTimer; - var self = this; - - return this.$pollSizeChangesTimer = event.onIdle(function cb() { - self.checkForSizeChanges(); - event.onIdle(cb, 500); - }, 500); - }; - - this.setPolling = function(val) { - if (val) { - this.$pollSizeChanges(); - } else if (this.$pollSizeChangesTimer) { - clearInterval(this.$pollSizeChangesTimer); - this.$pollSizeChangesTimer = 0; - } - }; - - this.$measureSizes = function(node) { - var size = { - height: (node || this.$measureNode).clientHeight, - width: (node || this.$measureNode).clientWidth / CHAR_COUNT - }; - if (size.width === 0 || size.height === 0) - return null; - return size; - }; - - this.$measureCharWidth = function(ch) { - this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); - var rect = this.$main.getBoundingClientRect(); - return rect.width / CHAR_COUNT; - }; - - this.getCharacterWidth = function(ch) { - var w = this.charSizes[ch]; - if (w === undefined) { - w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; - } - return w; - }; - - this.destroy = function() { - clearInterval(this.$pollSizeChangesTimer); - if (this.$observer) - this.$observer.disconnect(); - if (this.el && this.el.parentNode) - this.el.parentNode.removeChild(this.el); - }; - - - this.$getZoom = function getZoom(element) { - if (!element || !element.parentElement) return 1; - return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement); - }; - this.$initTransformMeasureNodes = function() { - var t = function(t, l) { - return ["div", { - style: "position: absolute;top:" + t + "px;left:" + l + "px;" - }]; - }; - this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); - }; - this.transformCoordinates = function(clientPos, elPos) { - if (clientPos) { - var zoom = this.$getZoom(this.el); - clientPos = mul(1 / zoom, clientPos); - } - function solve(l1, l2, r) { - var det = l1[1] * l2[0] - l1[0] * l2[1]; - return [ - (-l2[1] * r[0] + l2[0] * r[1]) / det, - (+l1[1] * r[0] - l1[0] * r[1]) / det - ]; - } - function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } - function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } - function mul(a, b) { return [a * b[0], a * b[1]]; } - - if (!this.els) - this.$initTransformMeasureNodes(); - - function p(el) { - var r = el.getBoundingClientRect(); - return [r.left, r.top]; - } - - var a = p(this.els[0]); - var b = p(this.els[1]); - var c = p(this.els[2]); - var d = p(this.els[3]); - - var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); - - var m1 = mul(1 + h[0], sub(b, a)); - var m2 = mul(1 + h[1], sub(c, a)); - - if (elPos) { - var x = elPos; - var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; - var ut = add(mul(x[0], m1), mul(x[1], m2)); - return add(mul(1 / k / L, ut), a); - } - var u = sub(clientPos, a); - var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); - return mul(L, f); - }; - -}).call(FontMetrics.prototype); - -}); - -ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var config = require("./config"); -var GutterLayer = require("./layer/gutter").Gutter; -var MarkerLayer = require("./layer/marker").Marker; -var TextLayer = require("./layer/text").Text; -var CursorLayer = require("./layer/cursor").Cursor; -var HScrollBar = require("./scrollbar").HScrollBar; -var VScrollBar = require("./scrollbar").VScrollBar; -var RenderLoop = require("./renderloop").RenderLoop; -var FontMetrics = require("./layer/font_metrics").FontMetrics; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var editorCss = "\ -.ace_br1 {border-top-left-radius : 3px;}\ -.ace_br2 {border-top-right-radius : 3px;}\ -.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\ -.ace_br4 {border-bottom-right-radius: 3px;}\ -.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\ -.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\ -.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\ -.ace_br8 {border-bottom-left-radius : 3px;}\ -.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\ -.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\ -.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_editor {\ -position: relative;\ -overflow: hidden;\ -padding: 0;\ -font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ -direction: ltr;\ -text-align: left;\ --webkit-tap-highlight-color: rgba(0, 0, 0, 0);\ -}\ -.ace_scroller {\ -position: absolute;\ -overflow: hidden;\ -top: 0;\ -bottom: 0;\ -background-color: inherit;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -cursor: text;\ -}\ -.ace_content {\ -position: absolute;\ -box-sizing: border-box;\ -min-width: 100%;\ -contain: style size layout;\ -font-variant-ligatures: no-common-ligatures;\ -}\ -.ace_dragging .ace_scroller:before{\ -position: absolute;\ -top: 0;\ -left: 0;\ -right: 0;\ -bottom: 0;\ -content: '';\ -background: rgba(250, 250, 250, 0.01);\ -z-index: 1000;\ -}\ -.ace_dragging.ace_dark .ace_scroller:before{\ -background: rgba(0, 0, 0, 0.01);\ -}\ -.ace_selecting, .ace_selecting * {\ -cursor: text !important;\ -}\ -.ace_gutter {\ -position: absolute;\ -overflow : hidden;\ -width: auto;\ -top: 0;\ -bottom: 0;\ -left: 0;\ -cursor: default;\ -z-index: 4;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -contain: style size layout;\ -}\ -.ace_gutter-active-line {\ -position: absolute;\ -left: 0;\ -right: 0;\ -}\ -.ace_scroller.ace_scroll-left {\ -box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\ -}\ -.ace_gutter-cell {\ -position: absolute;\ -top: 0;\ -left: 0;\ -right: 0;\ -padding-left: 19px;\ -padding-right: 6px;\ -background-repeat: no-repeat;\ -}\ -.ace_gutter-cell.ace_error {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\");\ -background-repeat: no-repeat;\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_warning {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\");\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\");\ -background-position: 2px center;\ -}\ -.ace_dark .ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\");\ -}\ -.ace_scrollbar {\ -contain: strict;\ -position: absolute;\ -right: 0;\ -bottom: 0;\ -z-index: 6;\ -}\ -.ace_scrollbar-inner {\ -position: absolute;\ -cursor: text;\ -left: 0;\ -top: 0;\ -}\ -.ace_scrollbar-v{\ -overflow-x: hidden;\ -overflow-y: scroll;\ -top: 0;\ -}\ -.ace_scrollbar-h {\ -overflow-x: scroll;\ -overflow-y: hidden;\ -left: 0;\ -}\ -.ace_print-margin {\ -position: absolute;\ -height: 100%;\ -}\ -.ace_text-input {\ -position: absolute;\ -z-index: 0;\ -width: 0.5em;\ -height: 1em;\ -opacity: 0;\ -background: transparent;\ --moz-appearance: none;\ -appearance: none;\ -border: none;\ -resize: none;\ -outline: none;\ -overflow: hidden;\ -font: inherit;\ -padding: 0 1px;\ -margin: 0 -1px;\ -contain: strict;\ --ms-user-select: text;\ --moz-user-select: text;\ --webkit-user-select: text;\ -user-select: text;\ -white-space: pre!important;\ -}\ -.ace_text-input.ace_composition {\ -background: transparent;\ -color: inherit;\ -z-index: 1000;\ -opacity: 1;\ -}\ -.ace_composition_placeholder { color: transparent }\ -.ace_composition_marker { \ -border-bottom: 1px solid;\ -position: absolute;\ -border-radius: 0;\ -margin-top: 1px;\ -}\ -[ace_nocontext=true] {\ -transform: none!important;\ -filter: none!important;\ -clip-path: none!important;\ -mask : none!important;\ -contain: none!important;\ -perspective: none!important;\ -mix-blend-mode: initial!important;\ -z-index: auto;\ -}\ -.ace_layer {\ -z-index: 1;\ -position: absolute;\ -overflow: hidden;\ -word-wrap: normal;\ -white-space: pre;\ -height: 100%;\ -width: 100%;\ -box-sizing: border-box;\ -pointer-events: none;\ -}\ -.ace_gutter-layer {\ -position: relative;\ -width: auto;\ -text-align: right;\ -pointer-events: auto;\ -height: 1000000px;\ -contain: style size layout;\ -}\ -.ace_text-layer {\ -font: inherit !important;\ -position: absolute;\ -height: 1000000px;\ -width: 1000000px;\ -contain: style size layout;\ -}\ -.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\ -contain: style size layout;\ -position: absolute;\ -top: 0;\ -left: 0;\ -right: 0;\ -}\ -.ace_hidpi .ace_text-layer,\ -.ace_hidpi .ace_gutter-layer,\ -.ace_hidpi .ace_content,\ -.ace_hidpi .ace_gutter {\ -contain: strict;\ -will-change: transform;\ -}\ -.ace_hidpi .ace_text-layer > .ace_line, \ -.ace_hidpi .ace_text-layer > .ace_line_group {\ -contain: strict;\ -}\ -.ace_cjk {\ -display: inline-block;\ -text-align: center;\ -}\ -.ace_cursor-layer {\ -z-index: 4;\ -}\ -.ace_cursor {\ -z-index: 4;\ -position: absolute;\ -box-sizing: border-box;\ -border-left: 2px solid;\ -transform: translatez(0);\ -}\ -.ace_multiselect .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_slim-cursors .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_overwrite-cursors .ace_cursor {\ -border-left-width: 0;\ -border-bottom: 1px solid;\ -}\ -.ace_hidden-cursors .ace_cursor {\ -opacity: 0.2;\ -}\ -.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\ -opacity: 0;\ -}\ -.ace_smooth-blinking .ace_cursor {\ -transition: opacity 0.18s;\ -}\ -.ace_animate-blinking .ace_cursor {\ -animation-duration: 1000ms;\ -animation-timing-function: step-end;\ -animation-name: blink-ace-animate;\ -animation-iteration-count: infinite;\ -}\ -.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\ -animation-duration: 1000ms;\ -animation-timing-function: ease-in-out;\ -animation-name: blink-ace-animate-smooth;\ -}\ -@keyframes blink-ace-animate {\ -from, to { opacity: 1; }\ -60% { opacity: 0; }\ -}\ -@keyframes blink-ace-animate-smooth {\ -from, to { opacity: 1; }\ -45% { opacity: 1; }\ -60% { opacity: 0; }\ -85% { opacity: 0; }\ -}\ -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\ -position: absolute;\ -z-index: 3;\ -}\ -.ace_marker-layer .ace_selection {\ -position: absolute;\ -z-index: 5;\ -}\ -.ace_marker-layer .ace_bracket {\ -position: absolute;\ -z-index: 6;\ -}\ -.ace_marker-layer .ace_error_bracket {\ -position: absolute;\ -border-bottom: 1px solid #DE5555;\ -border-radius: 0;\ -}\ -.ace_marker-layer .ace_active-line {\ -position: absolute;\ -z-index: 2;\ -}\ -.ace_marker-layer .ace_selected-word {\ -position: absolute;\ -z-index: 4;\ -box-sizing: border-box;\ -}\ -.ace_line .ace_fold {\ -box-sizing: border-box;\ -display: inline-block;\ -height: 11px;\ -margin-top: -2px;\ -vertical-align: middle;\ -background-image:\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\ -background-repeat: no-repeat, repeat-x;\ -background-position: center center, top left;\ -color: transparent;\ -border: 1px solid black;\ -border-radius: 2px;\ -cursor: pointer;\ -pointer-events: auto;\ -}\ -.ace_dark .ace_fold {\ -}\ -.ace_fold:hover{\ -background-image:\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\ -}\ -.ace_tooltip {\ -background-color: #FFF;\ -background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\ -border: 1px solid gray;\ -border-radius: 1px;\ -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\ -color: black;\ -max-width: 100%;\ -padding: 3px 4px;\ -position: fixed;\ -z-index: 999999;\ -box-sizing: border-box;\ -cursor: default;\ -white-space: pre;\ -word-wrap: break-word;\ -line-height: normal;\ -font-style: normal;\ -font-weight: normal;\ -letter-spacing: normal;\ -pointer-events: none;\ -}\ -.ace_folding-enabled > .ace_gutter-cell {\ -padding-right: 13px;\ -}\ -.ace_fold-widget {\ -box-sizing: border-box;\ -margin: 0 -12px 0 1px;\ -display: none;\ -width: 11px;\ -vertical-align: top;\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\ -background-repeat: no-repeat;\ -background-position: center;\ -border-radius: 3px;\ -border: 1px solid transparent;\ -cursor: pointer;\ -}\ -.ace_folding-enabled .ace_fold-widget {\ -display: inline-block; \ -}\ -.ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\ -}\ -.ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\ -}\ -.ace_fold-widget:hover {\ -border: 1px solid rgba(0, 0, 0, 0.3);\ -background-color: rgba(255, 255, 255, 0.2);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\ -}\ -.ace_fold-widget:active {\ -border: 1px solid rgba(0, 0, 0, 0.4);\ -background-color: rgba(0, 0, 0, 0.05);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\ -}\ -.ace_dark .ace_fold-widget {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\ -}\ -.ace_dark .ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget:hover {\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -background-color: rgba(255, 255, 255, 0.1);\ -}\ -.ace_dark .ace_fold-widget:active {\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -}\ -.ace_inline_button {\ -border: 1px solid lightgray;\ -display: inline-block;\ -margin: -1px 8px;\ -padding: 0 5px;\ -pointer-events: auto;\ -cursor: pointer;\ -}\ -.ace_inline_button:hover {\ -border-color: gray;\ -background: rgba(200,200,200,0.2);\ -display: inline-block;\ -pointer-events: auto;\ -}\ -.ace_fold-widget.ace_invalid {\ -background-color: #FFB4B4;\ -border-color: #DE5555;\ -}\ -.ace_fade-fold-widgets .ace_fold-widget {\ -transition: opacity 0.4s ease 0.05s;\ -opacity: 0;\ -}\ -.ace_fade-fold-widgets:hover .ace_fold-widget {\ -transition: opacity 0.05s ease 0.05s;\ -opacity:1;\ -}\ -.ace_underline {\ -text-decoration: underline;\ -}\ -.ace_bold {\ -font-weight: bold;\ -}\ -.ace_nobold .ace_bold {\ -font-weight: normal;\ -}\ -.ace_italic {\ -font-style: italic;\ -}\ -.ace_error-marker {\ -background-color: rgba(255, 0, 0,0.2);\ -position: absolute;\ -z-index: 9;\ -}\ -.ace_highlight-marker {\ -background-color: rgba(255, 255, 0,0.2);\ -position: absolute;\ -z-index: 8;\ -}\ -.ace_mobile-menu {\ -position: absolute;\ -line-height: 1.5;\ -border-radius: 4px;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -background: white;\ -box-shadow: 1px 3px 2px grey;\ -border: 1px solid #dcdcdc;\ -color: black;\ -}\ -.ace_dark > .ace_mobile-menu {\ -background: #333;\ -color: #ccc;\ -box-shadow: 1px 3px 2px grey;\ -border: 1px solid #444;\ -}\ -.ace_mobile-button {\ -padding: 2px;\ -cursor: pointer;\ -overflow: hidden;\ -}\ -.ace_mobile-button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_mobile-button:active {\ -background-color: #ddd;\ -}\ -.ace_placeholder {\ -font-family: arial;\ -transform: scale(0.9);\ -transform-origin: left;\ -white-space: pre;\ -opacity: 0.7;\ -margin: 0 10px;\ -}"; - -var useragent = require("./lib/useragent"); -var HIDE_TEXTAREA = useragent.isIE; - -dom.importCssString(editorCss, "ace_editor.css", false); - -var VirtualRenderer = function(container, theme) { - var _self = this; - - this.container = container || dom.createElement("div"); - - dom.addCssClass(this.container, "ace_editor"); - if (dom.HI_DPI) dom.addCssClass(this.container, "ace_hidpi"); - - this.setTheme(theme); - if (config.get("useStrictCSP") == null) - config.set("useStrictCSP", false); - - this.$gutter = dom.createElement("div"); - this.$gutter.className = "ace_gutter"; - this.container.appendChild(this.$gutter); - this.$gutter.setAttribute("aria-hidden", true); - - this.scroller = dom.createElement("div"); - this.scroller.className = "ace_scroller"; - - this.container.appendChild(this.scroller); - - this.content = dom.createElement("div"); - this.content.className = "ace_content"; - this.scroller.appendChild(this.content); - - this.$gutterLayer = new GutterLayer(this.$gutter); - this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); - - this.$markerBack = new MarkerLayer(this.content); - - var textLayer = this.$textLayer = new TextLayer(this.content); - this.canvas = textLayer.element; - - this.$markerFront = new MarkerLayer(this.content); - - this.$cursorLayer = new CursorLayer(this.content); - this.$horizScroll = false; - this.$vScroll = false; - - this.scrollBar = - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.on("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.on("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.cursorPos = { - row : 0, - column : 0 - }; - - this.$fontMetrics = new FontMetrics(this.container); - this.$textLayer.$setFontMetrics(this.$fontMetrics); - this.$textLayer.on("changeCharacterSize", function(e) { - _self.updateCharacterSize(); - _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); - _self._signal("changeCharacterSize", e); - }); - - this.$size = { - width: 0, - height: 0, - scrollerHeight: 0, - scrollerWidth: 0, - $dirty: true - }; - - this.layerConfig = { - width : 1, - padding : 0, - firstRow : 0, - firstRowScreen: 0, - lastRow : 0, - lineHeight : 0, - characterWidth : 0, - minHeight : 1, - maxHeight : 1, - offset : 0, - height : 1, - gutterOffset: 1 - }; - - this.scrollMargin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - - this.margin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - - this.$keepTextAreaAtCursor = !useragent.isIOS; - - this.$loop = new RenderLoop( - this.$renderChanges.bind(this), - this.container.ownerDocument.defaultView - ); - this.$loop.schedule(this.CHANGE_FULL); - - this.updateCharacterSize(); - this.setPadding(4); - config.resetOptions(this); - config._signal("renderer", this); -}; - -(function() { - - this.CHANGE_CURSOR = 1; - this.CHANGE_MARKER = 2; - this.CHANGE_GUTTER = 4; - this.CHANGE_SCROLL = 8; - this.CHANGE_LINES = 16; - this.CHANGE_TEXT = 32; - this.CHANGE_SIZE = 64; - this.CHANGE_MARKER_BACK = 128; - this.CHANGE_MARKER_FRONT = 256; - this.CHANGE_FULL = 512; - this.CHANGE_H_SCROLL = 1024; - - oop.implement(this, EventEmitter); - - this.updateCharacterSize = function() { - if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { - this.$allowBoldFonts = this.$textLayer.allowBoldFonts; - this.setStyle("ace_nobold", !this.$allowBoldFonts); - } - - this.layerConfig.characterWidth = - this.characterWidth = this.$textLayer.getCharacterWidth(); - this.layerConfig.lineHeight = - this.lineHeight = this.$textLayer.getLineHeight(); - this.$updatePrintMargin(); - dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); - }; - this.setSession = function(session) { - if (this.session) - this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); - - this.session = session; - if (session && this.scrollMargin.top && session.getScrollTop() <= 0) - session.setScrollTop(-this.scrollMargin.top); - - this.$cursorLayer.setSession(session); - this.$markerBack.setSession(session); - this.$markerFront.setSession(session); - this.$gutterLayer.setSession(session); - this.$textLayer.setSession(session); - if (!session) - return; - - this.$loop.schedule(this.CHANGE_FULL); - this.session.$setFontMetrics(this.$fontMetrics); - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - - this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); - this.onChangeNewLineMode(); - this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); - }; - this.updateLines = function(firstRow, lastRow, force) { - if (lastRow === undefined) - lastRow = Infinity; - - if (!this.$changedLines) { - this.$changedLines = { - firstRow: firstRow, - lastRow: lastRow - }; - } - else { - if (this.$changedLines.firstRow > firstRow) - this.$changedLines.firstRow = firstRow; - - if (this.$changedLines.lastRow < lastRow) - this.$changedLines.lastRow = lastRow; - } - if (this.$changedLines.lastRow < this.layerConfig.firstRow) { - if (force) - this.$changedLines.lastRow = this.layerConfig.lastRow; - else - return; - } - if (this.$changedLines.firstRow > this.layerConfig.lastRow) - return; - this.$loop.schedule(this.CHANGE_LINES); - }; - - this.onChangeNewLineMode = function() { - this.$loop.schedule(this.CHANGE_TEXT); - this.$textLayer.$updateEolChar(); - this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); - }; - - this.onChangeTabSize = function() { - this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); - this.$textLayer.onChangeTabSize(); - }; - this.updateText = function() { - this.$loop.schedule(this.CHANGE_TEXT); - }; - this.updateFull = function(force) { - if (force) - this.$renderChanges(this.CHANGE_FULL, true); - else - this.$loop.schedule(this.CHANGE_FULL); - }; - this.updateFontSize = function() { - this.$textLayer.checkForSizeChanges(); - }; - - this.$changes = 0; - this.$updateSizeAsync = function() { - if (this.$loop.pending) - this.$size.$dirty = true; - else - this.onResize(); - }; - this.onResize = function(force, gutterWidth, width, height) { - if (this.resizing > 2) - return; - else if (this.resizing > 0) - this.resizing++; - else - this.resizing = force ? 1 : 0; - var el = this.container; - if (!height) - height = el.clientHeight || el.scrollHeight; - if (!width) - width = el.clientWidth || el.scrollWidth; - var changes = this.$updateCachedSize(force, gutterWidth, width, height); - - - if (!this.$size.scrollerHeight || (!width && !height)) - return this.resizing = 0; - - if (force) - this.$gutterLayer.$padding = null; - - if (force) - this.$renderChanges(changes | this.$changes, true); - else - this.$loop.schedule(changes | this.$changes); - - if (this.resizing) - this.resizing = 0; - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - }; - - this.$updateCachedSize = function(force, gutterWidth, width, height) { - height -= (this.$extraHeight || 0); - var changes = 0; - var size = this.$size; - var oldSize = { - width: size.width, - height: size.height, - scrollerHeight: size.scrollerHeight, - scrollerWidth: size.scrollerWidth - }; - if (height && (force || size.height != height)) { - size.height = height; - changes |= this.CHANGE_SIZE; - - size.scrollerHeight = size.height; - if (this.$horizScroll) - size.scrollerHeight -= this.scrollBarH.getHeight(); - this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; - - changes = changes | this.CHANGE_SCROLL; - } - - if (width && (force || size.width != width)) { - changes |= this.CHANGE_SIZE; - size.width = width; - - if (gutterWidth == null) - gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - - this.gutterWidth = gutterWidth; - - dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); - dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); - size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); - dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); - - var right = this.scrollBarV.getWidth() + "px"; - dom.setStyle(this.scrollBarH.element.style, "right", right); - dom.setStyle(this.scroller.style, "right", right); - dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); - - if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { - changes |= this.CHANGE_FULL; - } - } - - size.$dirty = !width || !height; - - if (changes) - this._signal("resize", oldSize); - - return changes; - }; - - this.onGutterResize = function(width) { - var gutterWidth = this.$showGutter ? width : 0; - if (gutterWidth != this.gutterWidth) - this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); - - if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { - this.$loop.schedule(this.CHANGE_FULL); - } else if (this.$size.$dirty) { - this.$loop.schedule(this.CHANGE_FULL); - } else { - this.$computeLayerConfig(); - } - }; - this.adjustWrapLimit = function() { - var availableWidth = this.$size.scrollerWidth - this.$padding * 2; - var limit = Math.floor(availableWidth / this.characterWidth); - return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); - }; - this.setAnimatedScroll = function(shouldAnimate){ - this.setOption("animatedScroll", shouldAnimate); - }; - this.getAnimatedScroll = function() { - return this.$animatedScroll; - }; - this.setShowInvisibles = function(showInvisibles) { - this.setOption("showInvisibles", showInvisibles); - this.session.$bidiHandler.setShowInvisibles(showInvisibles); - }; - this.getShowInvisibles = function() { - return this.getOption("showInvisibles"); - }; - this.getDisplayIndentGuides = function() { - return this.getOption("displayIndentGuides"); - }; - - this.setDisplayIndentGuides = function(display) { - this.setOption("displayIndentGuides", display); - }; - this.setShowPrintMargin = function(showPrintMargin) { - this.setOption("showPrintMargin", showPrintMargin); - }; - this.getShowPrintMargin = function() { - return this.getOption("showPrintMargin"); - }; - this.setPrintMarginColumn = function(showPrintMargin) { - this.setOption("printMarginColumn", showPrintMargin); - }; - this.getPrintMarginColumn = function() { - return this.getOption("printMarginColumn"); - }; - this.getShowGutter = function(){ - return this.getOption("showGutter"); - }; - this.setShowGutter = function(show){ - return this.setOption("showGutter", show); - }; - - this.getFadeFoldWidgets = function(){ - return this.getOption("fadeFoldWidgets"); - }; - - this.setFadeFoldWidgets = function(show) { - this.setOption("fadeFoldWidgets", show); - }; - - this.setHighlightGutterLine = function(shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - - this.getHighlightGutterLine = function() { - return this.getOption("highlightGutterLine"); - }; - - this.$updatePrintMargin = function() { - if (!this.$showPrintMargin && !this.$printMarginEl) - return; - - if (!this.$printMarginEl) { - var containerEl = dom.createElement("div"); - containerEl.className = "ace_layer ace_print-margin-layer"; - this.$printMarginEl = dom.createElement("div"); - this.$printMarginEl.className = "ace_print-margin"; - containerEl.appendChild(this.$printMarginEl); - this.content.insertBefore(containerEl, this.content.firstChild); - } - - var style = this.$printMarginEl.style; - style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; - style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - - if (this.session && this.session.$wrap == -1) - this.adjustWrapLimit(); - }; - this.getContainerElement = function() { - return this.container; - }; - this.getMouseEventTarget = function() { - return this.scroller; - }; - this.getTextAreaContainer = function() { - return this.container; - }; - this.$moveTextAreaToCursor = function() { - if (this.$isMousePressed) return; - var style = this.textarea.style; - var composition = this.$composition; - if (!this.$keepTextAreaAtCursor && !composition) { - dom.translate(this.textarea, -100, 0); - return; - } - var pixelPos = this.$cursorLayer.$pixelPos; - if (!pixelPos) - return; - if (composition && composition.markerRange) - pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); - - var config = this.layerConfig; - var posTop = pixelPos.top; - var posLeft = pixelPos.left; - posTop -= config.offset; - - var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1; - if (posTop < 0 || posTop > config.height - h) { - dom.translate(this.textarea, 0, 0); - return; - } - - var w = 1; - var maxTop = this.$size.height - h; - if (!composition) { - posTop += this.lineHeight; - } - else { - if (composition.useTextareaForIME) { - var val = this.textarea.value; - w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); - } - else { - posTop += this.lineHeight + 2; - } - } - - posLeft -= this.scrollLeft; - if (posLeft > this.$size.scrollerWidth - w) - posLeft = this.$size.scrollerWidth - w; - - posLeft += this.gutterWidth + this.margin.left; - - dom.setStyle(style, "height", h + "px"); - dom.setStyle(style, "width", w + "px"); - dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); - }; - this.getFirstVisibleRow = function() { - return this.layerConfig.firstRow; - }; - this.getFirstFullyVisibleRow = function() { - return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); - }; - this.getLastFullyVisibleRow = function() { - var config = this.layerConfig; - var lastRow = config.lastRow; - var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; - if (top - this.session.getScrollTop() > config.height - config.lineHeight) - return lastRow - 1; - return lastRow; - }; - this.getLastVisibleRow = function() { - return this.layerConfig.lastRow; - }; - - this.$padding = null; - this.setPadding = function(padding) { - this.$padding = padding; - this.$textLayer.setPadding(padding); - this.$cursorLayer.setPadding(padding); - this.$markerFront.setPadding(padding); - this.$markerBack.setPadding(padding); - this.$loop.schedule(this.CHANGE_FULL); - this.$updatePrintMargin(); - }; - - this.setScrollMargin = function(top, bottom, left, right) { - var sm = this.scrollMargin; - sm.top = top|0; - sm.bottom = bottom|0; - sm.right = right|0; - sm.left = left|0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - if (sm.top && this.scrollTop <= 0 && this.session) - this.session.setScrollTop(-sm.top); - this.updateFull(); - }; - - this.setMargin = function(top, bottom, left, right) { - var sm = this.margin; - sm.top = top|0; - sm.bottom = bottom|0; - sm.right = right|0; - sm.left = left|0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); - this.updateFull(); - }; - this.getHScrollBarAlwaysVisible = function() { - return this.$hScrollBarAlwaysVisible; - }; - this.setHScrollBarAlwaysVisible = function(alwaysVisible) { - this.setOption("hScrollBarAlwaysVisible", alwaysVisible); - }; - this.getVScrollBarAlwaysVisible = function() { - return this.$vScrollBarAlwaysVisible; - }; - this.setVScrollBarAlwaysVisible = function(alwaysVisible) { - this.setOption("vScrollBarAlwaysVisible", alwaysVisible); - }; - - this.$updateScrollBarV = function() { - var scrollHeight = this.layerConfig.maxHeight; - var scrollerHeight = this.$size.scrollerHeight; - if (!this.$maxLines && this.$scrollPastEnd) { - scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; - if (this.scrollTop > scrollHeight - scrollerHeight) { - scrollHeight = this.scrollTop + scrollerHeight; - this.scrollBarV.scrollTop = null; - } - } - this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); - this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); - }; - this.$updateScrollBarH = function() { - this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); - this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); - }; - - this.$frozen = false; - this.freeze = function() { - this.$frozen = true; - }; - - this.unfreeze = function() { - this.$frozen = false; - }; - - this.$renderChanges = function(changes, force) { - if (this.$changes) { - changes |= this.$changes; - this.$changes = 0; - } - if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { - this.$changes |= changes; - return; - } - if (this.$size.$dirty) { - this.$changes |= changes; - return this.onResize(true); - } - if (!this.lineHeight) { - this.$textLayer.checkForSizeChanges(); - } - - this._signal("beforeRender", changes); - - if (this.session && this.session.$bidiHandler) - this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); - - var config = this.layerConfig; - if (changes & this.CHANGE_FULL || - changes & this.CHANGE_SIZE || - changes & this.CHANGE_TEXT || - changes & this.CHANGE_LINES || - changes & this.CHANGE_SCROLL || - changes & this.CHANGE_H_SCROLL - ) { - changes |= this.$computeLayerConfig() | this.$loop.clear(); - if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { - var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight; - if (st > 0) { - this.scrollTop = st; - changes = changes | this.CHANGE_SCROLL; - changes |= this.$computeLayerConfig() | this.$loop.clear(); - } - } - config = this.layerConfig; - this.$updateScrollBarV(); - if (changes & this.CHANGE_H_SCROLL) - this.$updateScrollBarH(); - - dom.translate(this.content, -this.scrollLeft, -config.offset); - - var width = config.width + 2 * this.$padding + "px"; - var height = config.minHeight + "px"; - - dom.setStyle(this.content.style, "width", width); - dom.setStyle(this.content.style, "height", height); - } - if (changes & this.CHANGE_H_SCROLL) { - dom.translate(this.content, -this.scrollLeft, -config.offset); - this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"; - } - if (changes & this.CHANGE_FULL) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - if (changes & this.CHANGE_SCROLL) { - this.$changedLines = null; - if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) - this.$textLayer.update(config); - else - this.$textLayer.scrollLines(config); - - if (this.$showGutter) { - if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) - this.$gutterLayer.update(config); - else - this.$gutterLayer.scrollLines(config); - } - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - - if (changes & this.CHANGE_TEXT) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - } - else if (changes & this.CHANGE_LINES) { - if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) - this.$gutterLayer.update(config); - } - else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { - if (this.$showGutter) - this.$gutterLayer.update(config); - } - else if (changes & this.CHANGE_CURSOR) { - if (this.$highlightGutterLine) - this.$gutterLayer.updateLineHighlight(config); - } - - if (changes & this.CHANGE_CURSOR) { - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - } - - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { - this.$markerFront.update(config); - } - - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { - this.$markerBack.update(config); - } - - this._signal("afterRender", changes); - }; - - - this.$autosize = function() { - var height = this.session.getScreenLength() * this.lineHeight; - var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.min(maxHeight, - Math.max((this.$minLines || 1) * this.lineHeight, height) - ) + this.scrollMargin.v + (this.$extraHeight || 0); - if (this.$horizScroll) - desiredHeight += this.scrollBarH.getHeight(); - if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) - desiredHeight = this.$maxPixelHeight; - - var hideScrollbars = desiredHeight <= 2 * this.lineHeight; - var vScroll = !hideScrollbars && height > maxHeight; - - if (desiredHeight != this.desiredHeight || - this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { - if (vScroll != this.$vScroll) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - - var w = this.container.clientWidth; - this.container.style.height = desiredHeight + "px"; - this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); - this.desiredHeight = desiredHeight; - - this._signal("autosize"); - } - }; - - this.$computeLayerConfig = function() { - var session = this.session; - var size = this.$size; - - var hideScrollbars = size.height <= 2 * this.lineHeight; - var screenLines = this.session.getScreenLength(); - var maxHeight = screenLines * this.lineHeight; - - var longestLine = this.$getLongestLine(); - - var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || - size.scrollerWidth - longestLine - 2 * this.$padding < 0); - - var hScrollChanged = this.$horizScroll !== horizScroll; - if (hScrollChanged) { - this.$horizScroll = horizScroll; - this.scrollBarH.setVisible(horizScroll); - } - var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine - if (this.$maxLines && this.lineHeight > 1) - this.$autosize(); - - var minHeight = size.scrollerHeight + this.lineHeight; - - var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd - ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd - : 0; - maxHeight += scrollPastEnd; - - var sm = this.scrollMargin; - this.session.setScrollTop(Math.max(-sm.top, - Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); - - this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, - longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); - - var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || - size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); - var vScrollChanged = vScrollBefore !== vScroll; - if (vScrollChanged) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - - var offset = this.scrollTop % this.lineHeight; - var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; - var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); - var lastRow = firstRow + lineCount; - var firstRowScreen, firstRowHeight; - var lineHeight = this.lineHeight; - firstRow = session.screenToDocumentRow(firstRow, 0); - var foldLine = session.getFoldLine(firstRow); - if (foldLine) { - firstRow = foldLine.start.row; - } - - firstRowScreen = session.documentToScreenRow(firstRow, 0); - firstRowHeight = session.getRowLength(firstRow) * lineHeight; - - lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); - minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + - firstRowHeight; - - offset = this.scrollTop - firstRowScreen * lineHeight; - - var changes = 0; - if (this.layerConfig.width != longestLine || hScrollChanged) - changes = this.CHANGE_H_SCROLL; - if (hScrollChanged || vScrollChanged) { - changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); - this._signal("scrollbarVisibilityChanged"); - if (vScrollChanged) - longestLine = this.$getLongestLine(); - } - - this.layerConfig = { - width : longestLine, - padding : this.$padding, - firstRow : firstRow, - firstRowScreen: firstRowScreen, - lastRow : lastRow, - lineHeight : lineHeight, - characterWidth : this.characterWidth, - minHeight : minHeight, - maxHeight : maxHeight, - offset : offset, - gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, - height : this.$size.scrollerHeight - }; - - if (this.session.$bidiHandler) - this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); - - return changes; - }; - - this.$updateLines = function() { - if (!this.$changedLines) return; - var firstRow = this.$changedLines.firstRow; - var lastRow = this.$changedLines.lastRow; - this.$changedLines = null; - - var layerConfig = this.layerConfig; - - if (firstRow > layerConfig.lastRow + 1) { return; } - if (lastRow < layerConfig.firstRow) { return; } - if (lastRow === Infinity) { - if (this.$showGutter) - this.$gutterLayer.update(layerConfig); - this.$textLayer.update(layerConfig); - return; - } - this.$textLayer.updateLines(layerConfig, firstRow, lastRow); - return true; - }; - - this.$getLongestLine = function() { - var charCount = this.session.getScreenWidth(); - if (this.showInvisibles && !this.session.$useWrapMode) - charCount += 1; - - if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) - charCount = this.$textLayer.MAX_LINE_LENGTH + 30; - - return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); - }; - this.updateFrontMarkers = function() { - this.$markerFront.setMarkers(this.session.getMarkers(true)); - this.$loop.schedule(this.CHANGE_MARKER_FRONT); - }; - this.updateBackMarkers = function() { - this.$markerBack.setMarkers(this.session.getMarkers()); - this.$loop.schedule(this.CHANGE_MARKER_BACK); - }; - this.addGutterDecoration = function(row, className){ - this.$gutterLayer.addGutterDecoration(row, className); - }; - this.removeGutterDecoration = function(row, className){ - this.$gutterLayer.removeGutterDecoration(row, className); - }; - this.updateBreakpoints = function(rows) { - this.$loop.schedule(this.CHANGE_GUTTER); - }; - this.setAnnotations = function(annotations) { - this.$gutterLayer.setAnnotations(annotations); - this.$loop.schedule(this.CHANGE_GUTTER); - }; - this.updateCursor = function() { - this.$loop.schedule(this.CHANGE_CURSOR); - }; - this.hideCursor = function() { - this.$cursorLayer.hideCursor(); - }; - this.showCursor = function() { - this.$cursorLayer.showCursor(); - }; - - this.scrollSelectionIntoView = function(anchor, lead, offset) { - this.scrollCursorIntoView(anchor, offset); - this.scrollCursorIntoView(lead, offset); - }; - this.scrollCursorIntoView = function(cursor, offset, $viewMargin) { - if (this.$size.scrollerHeight === 0) - return; - - var pos = this.$cursorLayer.getPixelPosition(cursor); - - var left = pos.left; - var top = pos.top; - - var topMargin = $viewMargin && $viewMargin.top || 0; - var bottomMargin = $viewMargin && $viewMargin.bottom || 0; - - var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; - - if (scrollTop + topMargin > top) { - if (offset && scrollTop + topMargin > top + this.lineHeight) - top -= offset * this.$size.scrollerHeight; - if (top === 0) - top = -this.scrollMargin.top; - this.session.setScrollTop(top); - } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) { - if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight) - top += offset * this.$size.scrollerHeight; - this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight); - } - - var scrollLeft = this.scrollLeft; - - if (scrollLeft > left) { - if (left < this.$padding + 2 * this.layerConfig.characterWidth) - left = -this.scrollMargin.left; - this.session.setScrollLeft(left); - } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) { - this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth)); - } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) { - this.session.setScrollLeft(0); - } - }; - this.getScrollTop = function() { - return this.session.getScrollTop(); - }; - this.getScrollLeft = function() { - return this.session.getScrollLeft(); - }; - this.getScrollTopRow = function() { - return this.scrollTop / this.lineHeight; - }; - this.getScrollBottomRow = function() { - return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); - }; - this.scrollToRow = function(row) { - this.session.setScrollTop(row * this.lineHeight); - }; - - this.alignCursor = function(cursor, alignment) { - if (typeof cursor == "number") - cursor = {row: cursor, column: 0}; - - var pos = this.$cursorLayer.getPixelPosition(cursor); - var h = this.$size.scrollerHeight - this.lineHeight; - var offset = pos.top - h * (alignment || 0); - - this.session.setScrollTop(offset); - return offset; - }; - - this.STEPS = 8; - this.$calcSteps = function(fromValue, toValue){ - var i = 0; - var l = this.STEPS; - var steps = []; - - var func = function(t, x_min, dx) { - return dx * (Math.pow(t - 1, 3) + 1) + x_min; - }; - - for (i = 0; i < l; ++i) - steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); - - return steps; - }; - this.scrollToLine = function(line, center, animate, callback) { - var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0}); - var offset = pos.top; - if (center) - offset -= this.$size.scrollerHeight / 2; - - var initialScroll = this.scrollTop; - this.session.setScrollTop(offset); - if (animate !== false) - this.animateScrolling(initialScroll, callback); - }; - - this.animateScrolling = function(fromValue, callback) { - var toValue = this.scrollTop; - if (!this.$animatedScroll) - return; - var _self = this; - - if (fromValue == toValue) - return; - - if (this.$scrollAnimation) { - var oldSteps = this.$scrollAnimation.steps; - if (oldSteps.length) { - fromValue = oldSteps[0]; - if (fromValue == toValue) - return; - } - } - - var steps = _self.$calcSteps(fromValue, toValue); - this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps}; - - clearInterval(this.$timer); - - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - this.$timer = setInterval(function() { - if (!_self.session) - return clearInterval(_self.$timer); - if (steps.length) { - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - } else if (toValue != null) { - _self.session.$scrollTop = -1; - _self.session.setScrollTop(toValue); - toValue = null; - } else { - _self.$timer = clearInterval(_self.$timer); - _self.$scrollAnimation = null; - callback && callback(); - } - }, 10); - }; - this.scrollToY = function(scrollTop) { - if (this.scrollTop !== scrollTop) { - this.$loop.schedule(this.CHANGE_SCROLL); - this.scrollTop = scrollTop; - } - }; - this.scrollToX = function(scrollLeft) { - if (this.scrollLeft !== scrollLeft) - this.scrollLeft = scrollLeft; - this.$loop.schedule(this.CHANGE_H_SCROLL); - }; - this.scrollTo = function(x, y) { - this.session.setScrollTop(y); - this.session.setScrollLeft(x); - }; - this.scrollBy = function(deltaX, deltaY) { - deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); - deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); - }; - this.isScrollableBy = function(deltaX, deltaY) { - if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) - return true; - if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) - return true; - if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) - return true; - if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - - this.layerConfig.width < -1 + this.scrollMargin.right) - return true; - }; - - this.pixelToScreenCoordinates = function(x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = {top:0, left: 0}; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } else { - canvasPos = this.scroller.getBoundingClientRect(); - } - - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - - return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX}; - }; - - this.screenToTextCoordinates = function(x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = {top:0, left: 0}; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } else { - canvasPos = this.scroller.getBoundingClientRect(); - } - - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - - return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); - }; - this.textToScreenCoordinates = function(row, column) { - var canvasPos = this.scroller.getBoundingClientRect(); - var pos = this.session.documentToScreenPosition(row, column); - - var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : Math.round(pos.column * this.characterWidth)); - - var y = pos.row * this.lineHeight; - - return { - pageX: canvasPos.left + x - this.scrollLeft, - pageY: canvasPos.top + y - this.scrollTop - }; - }; - this.visualizeFocus = function() { - dom.addCssClass(this.container, "ace_focus"); - }; - this.visualizeBlur = function() { - dom.removeCssClass(this.container, "ace_focus"); - }; - this.showComposition = function(composition) { - this.$composition = composition; - if (!composition.cssText) { - composition.cssText = this.textarea.style.cssText; - } - if (composition.useTextareaForIME == undefined) - composition.useTextareaForIME = this.$useTextareaForIME; - - if (this.$useTextareaForIME) { - dom.addCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = ""; - this.$moveTextAreaToCursor(); - this.$cursorLayer.element.style.display = "none"; - } - else { - composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); - } - }; - this.setCompositionText = function(text) { - var cursor = this.session.selection.cursor; - this.addToken(text, "composition_placeholder", cursor.row, cursor.column); - this.$moveTextAreaToCursor(); - }; - this.hideComposition = function() { - if (!this.$composition) - return; - - if (this.$composition.markerId) - this.session.removeMarker(this.$composition.markerId); - - dom.removeCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = this.$composition.cssText; - var cursor = this.session.selection.cursor; - this.removeExtraToken(cursor.row, cursor.column); - this.$composition = null; - this.$cursorLayer.element.style.display = ""; - }; - - this.addToken = function(text, type, row, column) { - var session = this.session; - session.bgTokenizer.lines[row] = null; - var newToken = {type: type, value: text}; - var tokens = session.getTokens(row); - if (column == null) { - tokens.push(newToken); - } else { - var l = 0; - for (var i =0; i < tokens.length; i++) { - var token = tokens[i]; - l += token.value.length; - if (column <= l) { - var diff = token.value.length - (l - column); - var before = token.value.slice(0, diff); - var after = token.value.slice(diff); - - tokens.splice(i, 1, {type: token.type, value: before}, newToken, {type: token.type, value: after}); - break; - } - } - } - this.updateLines(row, row); - }; - - this.removeExtraToken = function(row, column) { - this.updateLines(row, row); - }; - this.setTheme = function(theme, cb) { - var _self = this; - this.$themeId = theme; - _self._dispatchEvent('themeChange',{theme:theme}); - - if (!theme || typeof theme == "string") { - var moduleName = theme || this.$options.theme.initialValue; - config.loadModule(["theme", moduleName], afterLoad); - } else { - afterLoad(theme); - } - - function afterLoad(module) { - if (_self.$themeId != theme) - return cb && cb(); - if (!module || !module.cssClass) - throw new Error("couldn't load module " + theme + " or it didn't call define"); - if (module.$id) - _self.$themeId = module.$id; - dom.importCssString( - module.cssText, - module.cssClass, - _self.container - ); - - if (_self.theme) - dom.removeCssClass(_self.container, _self.theme.cssClass); - - var padding = "padding" in module ? module.padding - : "padding" in (_self.theme || {}) ? 4 : _self.$padding; - if (_self.$padding && padding != _self.$padding) - _self.setPadding(padding); - _self.$theme = module.cssClass; - - _self.theme = module; - dom.addCssClass(_self.container, module.cssClass); - dom.setCssClass(_self.container, "ace_dark", module.isDark); - if (_self.$size) { - _self.$size.width = 0; - _self.$updateSizeAsync(); - } - - _self._dispatchEvent('themeLoaded', {theme:module}); - cb && cb(); - } - }; - this.getTheme = function() { - return this.$themeId; - }; - this.setStyle = function(style, include) { - dom.setCssClass(this.container, style, include !== false); - }; - this.unsetStyle = function(style) { - dom.removeCssClass(this.container, style); - }; - - this.setCursorStyle = function(style) { - dom.setStyle(this.scroller.style, "cursor", style); - }; - this.setMouseCursor = function(cursorStyle) { - dom.setStyle(this.scroller.style, "cursor", cursorStyle); - }; - - this.attachToShadowRoot = function() { - dom.importCssString(editorCss, "ace_editor.css", this.container); - }; - this.destroy = function() { - this.freeze(); - this.$fontMetrics.destroy(); - this.$cursorLayer.destroy(); - this.removeAllListeners(); - this.container.textContent = ""; - }; - -}).call(VirtualRenderer.prototype); - - -config.defineOptions(VirtualRenderer.prototype, "renderer", { - animatedScroll: {initialValue: false}, - showInvisibles: { - set: function(value) { - if (this.$textLayer.setShowInvisibles(value)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: false - }, - showPrintMargin: { - set: function() { this.$updatePrintMargin(); }, - initialValue: true - }, - printMarginColumn: { - set: function() { this.$updatePrintMargin(); }, - initialValue: 80 - }, - printMargin: { - set: function(val) { - if (typeof val == "number") - this.$printMarginColumn = val; - this.$showPrintMargin = !!val; - this.$updatePrintMargin(); - }, - get: function() { - return this.$showPrintMargin && this.$printMarginColumn; - } - }, - showGutter: { - set: function(show){ - this.$gutter.style.display = show ? "block" : "none"; - this.$loop.schedule(this.CHANGE_FULL); - this.onGutterResize(); - }, - initialValue: true - }, - fadeFoldWidgets: { - set: function(show) { - dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); - }, - initialValue: false - }, - showFoldWidgets: { - set: function(show) { - this.$gutterLayer.setShowFoldWidgets(show); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - displayIndentGuides: { - set: function(show) { - if (this.$textLayer.setDisplayIndentGuides(show)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: true - }, - highlightGutterLine: { - set: function(shouldHighlight) { - this.$gutterLayer.setHighlightGutterLine(shouldHighlight); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - hScrollBarAlwaysVisible: { - set: function(val) { - if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - vScrollBarAlwaysVisible: { - set: function(val) { - if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - fontSize: { - set: function(size) { - if (typeof size == "number") - size = size + "px"; - this.container.style.fontSize = size; - this.updateFontSize(); - }, - initialValue: 12 - }, - fontFamily: { - set: function(name) { - this.container.style.fontFamily = name; - this.updateFontSize(); - } - }, - maxLines: { - set: function(val) { - this.updateFull(); - } - }, - minLines: { - set: function(val) { - if (!(this.$minLines < 0x1ffffffffffff)) - this.$minLines = 0; - this.updateFull(); - } - }, - maxPixelHeight: { - set: function(val) { - this.updateFull(); - }, - initialValue: 0 - }, - scrollPastEnd: { - set: function(val) { - val = +val || 0; - if (this.$scrollPastEnd == val) - return; - this.$scrollPastEnd = val; - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: 0, - handlesSet: true - }, - fixedWidthGutter: { - set: function(val) { - this.$gutterLayer.$fixedWidth = !!val; - this.$loop.schedule(this.CHANGE_GUTTER); - } - }, - theme: { - set: function(val) { this.setTheme(val); }, - get: function() { return this.$themeId || this.theme; }, - initialValue: "./theme/textmate", - handlesSet: true - }, - hasCssTransforms: { - }, - useTextareaForIME: { - initialValue: !useragent.isMobile && !useragent.isIE - } -}); - -exports.VirtualRenderer = VirtualRenderer; -}); - -ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var net = require("../lib/net"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var config = require("../config"); - -function $workerBlob(workerUrl) { - var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; - try { - return new Blob([script], {"type": "application/javascript"}); - } catch (e) { // Backwards-compatibility - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; - var blobBuilder = new BlobBuilder(); - blobBuilder.append(script); - return blobBuilder.getBlob("application/javascript"); - } -} - -function createWorker(workerUrl) { - if (typeof Worker == "undefined") - return { postMessage: function() {}, terminate: function() {} }; - if (config.get("loadWorkerFromBlob")) { - var blob = $workerBlob(workerUrl); - var URL = window.URL || window.webkitURL; - var blobURL = URL.createObjectURL(blob); - return new Worker(blobURL); - } - return new Worker(workerUrl); -} - -var WorkerClient = function(worker) { - if (!worker.postMessage) - worker = this.$createWorkerFromOldConfig.apply(this, arguments); - - this.$worker = worker; - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.onMessage = this.onMessage.bind(this); - - this.callbackId = 1; - this.callbacks = {}; - - this.$worker.onmessage = this.onMessage; -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { - if (require.nameToUrl && !require.toUrl) - require.toUrl = require.nameToUrl; - - if (config.get("packaged") || !require.toUrl) { - workerUrl = workerUrl || config.moduleUrl(mod, "worker"); - } else { - var normalizePath = this.$normalizePath; - workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); - - var tlns = {}; - topLevelNamespaces.forEach(function(ns) { - tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); - }); - } - - this.$worker = createWorker(workerUrl); - if (importScripts) { - this.send("importScripts", importScripts); - } - this.$worker.postMessage({ - init : true, - tlns : tlns, - module : mod, - classname : classname - }); - return this.$worker; - }; - - this.onMessage = function(e) { - var msg = e.data; - switch (msg.type) { - case "event": - this._signal(msg.name, {data: msg.data}); - break; - case "call": - var callback = this.callbacks[msg.id]; - if (callback) { - callback(msg.data); - delete this.callbacks[msg.id]; - } - break; - case "error": - this.reportError(msg.data); - break; - case "log": - window.console && console.log && console.log.apply(console, msg.data); - break; - } - }; - - this.reportError = function(err) { - window.console && console.error && console.error(err); - }; - - this.$normalizePath = function(path) { - return net.qualifyURL(path); - }; - - this.terminate = function() { - this._signal("terminate", {}); - this.deltaQueue = null; - this.$worker.terminate(); - this.$worker = null; - if (this.$doc) - this.$doc.off("change", this.changeListener); - this.$doc = null; - }; - - this.send = function(cmd, args) { - this.$worker.postMessage({command: cmd, args: args}); - }; - - this.call = function(cmd, args, callback) { - if (callback) { - var id = this.callbackId++; - this.callbacks[id] = callback; - args.push(id); - } - this.send(cmd, args); - }; - - this.emit = function(event, data) { - try { - if (data.data && data.data.err) - data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; - this.$worker.postMessage({event: event, data: {data: data.data}}); - } - catch(ex) { - console.error(ex.stack); - } - }; - - this.attachToDocument = function(doc) { - if (this.$doc) - this.terminate(); - - this.$doc = doc; - this.call("setValue", [doc.getValue()]); - doc.on("change", this.changeListener); - }; - - this.changeListener = function(delta) { - if (!this.deltaQueue) { - this.deltaQueue = []; - setTimeout(this.$sendDeltaQueue, 0); - } - if (delta.action == "insert") - this.deltaQueue.push(delta.start, delta.lines); - else - this.deltaQueue.push(delta.start, delta.end); - }; - - this.$sendDeltaQueue = function() { - var q = this.deltaQueue; - if (!q) return; - this.deltaQueue = null; - if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { - this.call("setValue", [this.$doc.getValue()]); - } else - this.emit("change", {data: q}); - }; - -}).call(WorkerClient.prototype); - - -var UIWorkerClient = function(topLevelNamespaces, mod, classname) { - var main = null; - var emitSync = false; - var sender = Object.create(EventEmitter); - - var messageBuffer = []; - var workerClient = new WorkerClient({ - messageBuffer: messageBuffer, - terminate: function() {}, - postMessage: function(e) { - messageBuffer.push(e); - if (!main) return; - if (emitSync) - setTimeout(processNext); - else - processNext(); - } - }); - - workerClient.setEmitSync = function(val) { emitSync = val; }; - - var processNext = function() { - var msg = messageBuffer.shift(); - if (msg.command) - main[msg.command].apply(main, msg.args); - else if (msg.event) - sender._signal(msg.event, msg.data); - }; - - sender.postMessage = function(msg) { - workerClient.onMessage({data: msg}); - }; - sender.callback = function(data, callbackId) { - this.postMessage({type: "call", id: callbackId, data: data}); - }; - sender.emit = function(name, data) { - this.postMessage({type: "event", name: name, data: data}); - }; - - config.loadModule(["worker", mod], function(Main) { - main = new Main[classname](sender); - while (messageBuffer.length) - processNext(); - }); - - return workerClient; -}; - -exports.UIWorkerClient = UIWorkerClient; -exports.WorkerClient = WorkerClient; -exports.createWorker = createWorker; - - -}); - -ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var oop = require("./lib/oop"); - -var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) { - var _self = this; - this.length = length; - this.session = session; - this.doc = session.getDocument(); - this.mainClass = mainClass; - this.othersClass = othersClass; - this.$onUpdate = this.onUpdate.bind(this); - this.doc.on("change", this.$onUpdate); - this.$others = others; - - this.$onCursorChange = function() { - setTimeout(function() { - _self.onCursorChange(); - }); - }; - - this.$pos = pos; - var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1}; - this.$undoStackDepth = undoStack.length; - this.setup(); - - session.selection.on("changeCursor", this.$onCursorChange); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setup = function() { - var _self = this; - var doc = this.doc; - var session = this.session; - - this.selectionBefore = session.selection.toJSON(); - if (session.selection.inMultiSelectMode) - session.selection.toSingleRange(); - - this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); - var pos = this.pos; - pos.$insertRight = true; - pos.detach(); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); - this.others = []; - this.$others.forEach(function(other) { - var anchor = doc.createAnchor(other.row, other.column); - anchor.$insertRight = true; - anchor.detach(); - _self.others.push(anchor); - }); - session.setUndoSelect(false); - }; - this.showOtherMarkers = function() { - if (this.othersActive) return; - var session = this.session; - var _self = this; - this.othersActive = true; - this.others.forEach(function(anchor) { - anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false); - }); - }; - this.hideOtherMarkers = function() { - if (!this.othersActive) return; - this.othersActive = false; - for (var i = 0; i < this.others.length; i++) { - this.session.removeMarker(this.others[i].markerId); - } - }; - this.onUpdate = function(delta) { - if (this.$updating) - return this.updateAnchors(delta); - - var range = delta; - if (range.start.row !== range.end.row) return; - if (range.start.row !== this.pos.row) return; - this.$updating = true; - var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; - var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; - var distanceFromStart = range.start.column - this.pos.column; - - this.updateAnchors(delta); - - if (inMainRange) - this.length += lengthDiff; - - if (inMainRange && !this.session.$fromUndo) { - if (delta.action === 'insert') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; - this.doc.insertMergedLines(newPos, delta.lines); - } - } else if (delta.action === 'remove') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; - this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); - } - } - } - - this.$updating = false; - this.updateMarkers(); - }; - - this.updateAnchors = function(delta) { - this.pos.onChange(delta); - for (var i = this.others.length; i--;) - this.others[i].onChange(delta); - this.updateMarkers(); - }; - - this.updateMarkers = function() { - if (this.$updating) - return; - var _self = this; - var session = this.session; - var updateMarker = function(pos, className) { - session.removeMarker(pos.markerId); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false); - }; - updateMarker(this.pos, this.mainClass); - for (var i = this.others.length; i--;) - updateMarker(this.others[i], this.othersClass); - }; - - this.onCursorChange = function(event) { - if (this.$updating || !this.session) return; - var pos = this.session.selection.getCursor(); - if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { - this.showOtherMarkers(); - this._emit("cursorEnter", event); - } else { - this.hideOtherMarkers(); - this._emit("cursorLeave", event); - } - }; - this.detach = function() { - this.session.removeMarker(this.pos && this.pos.markerId); - this.hideOtherMarkers(); - this.doc.off("change", this.$onUpdate); - this.session.selection.off("changeCursor", this.$onCursorChange); - this.session.setUndoSelect(true); - this.session = null; - }; - this.cancel = function() { - if (this.$undoStackDepth === -1) - return; - var undoManager = this.session.getUndoManager(); - var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; - for (var i = 0; i < undosRequired; i++) { - undoManager.undo(this.session, true); - } - if (this.selectionBefore) - this.session.selection.fromJSON(this.selectionBefore); - }; -}).call(PlaceHolder.prototype); - - -exports.PlaceHolder = PlaceHolder; -}); - -ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { - -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} - -function onMouseDown(e) { - var ev = e.domEvent; - var alt = ev.altKey; - var shift = ev.shiftKey; - var ctrl = ev.ctrlKey; - var accel = e.getAccelKey(); - var button = e.getButton(); - - if (ctrl && useragent.isMac) - button = ev.button; - - if (e.editor.inMultiSelectMode && button == 2) { - e.editor.textInput.onContextMenu(e.domEvent); - return; - } - - if (!ctrl && !alt && !accel) { - if (button === 0 && e.editor.inMultiSelectMode) - e.editor.exitMultiSelectMode(); - return; - } - - if (button !== 0) - return; - - var editor = e.editor; - var selection = editor.selection; - var isMultiSelect = editor.inMultiSelectMode; - var pos = e.getDocumentPosition(); - var cursor = selection.getCursor(); - var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); - - var mouseX = e.x, mouseY = e.y; - var onMouseSelection = function(e) { - mouseX = e.clientX; - mouseY = e.clientY; - }; - - var session = editor.session; - var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var screenCursor = screenAnchor; - - var selectionMode; - if (editor.$mouseHandler.$enableJumpToDef) { - if (ctrl && alt || accel && alt) - selectionMode = shift ? "block" : "add"; - else if (alt && editor.$blockSelectEnabled) - selectionMode = "block"; - } else { - if (accel && !alt) { - selectionMode = "add"; - if (!isMultiSelect && shift) - return; - } else if (alt && editor.$blockSelectEnabled) { - selectionMode = "block"; - } - } - - if (selectionMode && useragent.isMac && ev.ctrlKey) { - editor.$mouseHandler.cancelContextMenu(); - } - - if (selectionMode == "add") { - if (!isMultiSelect && inSelection) - return; // dragging - - if (!isMultiSelect) { - var range = selection.toOrientedRange(); - editor.addSelectionMarker(range); - } - - var oldRange = selection.rangeList.rangeAtPoint(pos); - - editor.inVirtualSelectionMode = true; - - if (shift) { - oldRange = null; - range = selection.ranges[0] || range; - editor.removeSelectionMarker(range); - } - editor.once("mouseup", function() { - var tmpSel = selection.toOrientedRange(); - - if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) - selection.substractPoint(tmpSel.cursor); - else { - if (shift) { - selection.substractPoint(range.cursor); - } else if (range) { - editor.removeSelectionMarker(range); - selection.addRange(range); - } - selection.addRange(tmpSel); - } - editor.inVirtualSelectionMode = false; - }); - - } else if (selectionMode == "block") { - e.stop(); - editor.inVirtualSelectionMode = true; - var initialRange; - var rectSel = []; - var blockSelect = function() { - var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); - - if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) - return; - screenCursor = newCursor; - - editor.selection.moveToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - - editor.removeSelectionMarkers(rectSel); - rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); - if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) - rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); - rectSel.forEach(editor.addSelectionMarker, editor); - editor.updateSelectionMarkers(); - }; - if (isMultiSelect && !accel) { - selection.toSingleRange(); - } else if (!isMultiSelect && accel) { - initialRange = selection.toOrientedRange(); - editor.addSelectionMarker(initialRange); - } - - if (shift) - screenAnchor = session.documentToScreenPosition(selection.lead); - else - selection.moveToPosition(pos); - - screenCursor = {row: -1, column: -1}; - - var onMouseSelectionEnd = function(e) { - blockSelect(); - clearInterval(timerId); - editor.removeSelectionMarkers(rectSel); - if (!rectSel.length) - rectSel = [selection.toOrientedRange()]; - if (initialRange) { - editor.removeSelectionMarker(initialRange); - selection.toSingleRange(initialRange); - } - for (var i = 0; i < rectSel.length; i++) - selection.addRange(rectSel[i]); - editor.inVirtualSelectionMode = false; - editor.$mouseHandler.$clickSelection = null; - }; - - var onSelectionInterval = blockSelect; - - event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); - var timerId = setInterval(function() {onSelectionInterval();}, 20); - - return e.preventDefault(); - } -} - - -exports.onMouseDown = onMouseDown; - -}); - -ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module) { -exports.defaultCommands = [{ - name: "addCursorAbove", - description: "Add cursor above", - exec: function(editor) { editor.selectMoreLines(-1); }, - bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorBelow", - description: "Add cursor below", - exec: function(editor) { editor.selectMoreLines(1); }, - bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorAboveSkipCurrent", - description: "Add cursor above (skip current)", - exec: function(editor) { editor.selectMoreLines(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorBelowSkipCurrent", - description: "Add cursor below (skip current)", - exec: function(editor) { editor.selectMoreLines(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectMoreBefore", - description: "Select more before", - exec: function(editor) { editor.selectMore(-1); }, - bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectMoreAfter", - description: "Select more after", - exec: function(editor) { editor.selectMore(1); }, - bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectNextBefore", - description: "Select next before", - exec: function(editor) { editor.selectMore(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectNextAfter", - description: "Select next after", - exec: function(editor) { editor.selectMore(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "toggleSplitSelectionIntoLines", - description: "Split into lines", - exec: function(editor) { - if (editor.multiSelect.rangeCount > 1) - editor.multiSelect.joinSelections(); - else - editor.multiSelect.splitIntoLines(); - }, - bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"}, - readOnly: true -}, { - name: "splitSelectionIntoLines", - description: "Split into lines", - exec: function(editor) { editor.multiSelect.splitIntoLines(); }, - readOnly: true -}, { - name: "alignCursors", - description: "Align cursors", - exec: function(editor) { editor.alignCursors(); }, - bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"}, - scrollIntoView: "cursor" -}, { - name: "findAll", - description: "Find all", - exec: function(editor) { editor.findAll(); }, - bindKey: {win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G"}, - scrollIntoView: "cursor", - readOnly: true -}]; -exports.multiSelectCommands = [{ - name: "singleSelection", - description: "Single selection", - bindKey: "esc", - exec: function(editor) { editor.exitMultiSelectMode(); }, - scrollIntoView: "cursor", - readOnly: true, - isAvailable: function(editor) {return editor && editor.inMultiSelectMode;} -}]; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; -exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); - -}); - -ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module) { - -var RangeList = require("./range_list").RangeList; -var Range = require("./range").Range; -var Selection = require("./selection").Selection; -var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; -var event = require("./lib/event"); -var lang = require("./lib/lang"); -var commands = require("./commands/multi_select_commands"); -exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); -var Search = require("./search").Search; -var search = new Search(); - -function find(session, needle, dir) { - search.$options.wrap = true; - search.$options.needle = needle; - search.$options.backwards = dir == -1; - return search.find(session); -} -var EditSession = require("./edit_session").EditSession; -(function() { - this.getSelectionMarkers = function() { - return this.$selectionMarkers; - }; -}).call(EditSession.prototype); -(function() { - this.ranges = null; - this.rangeList = null; - this.addRange = function(range, $blockChangeEvents) { - if (!range) - return; - - if (!this.inMultiSelectMode && this.rangeCount === 0) { - var oldRange = this.toOrientedRange(); - this.rangeList.add(oldRange); - this.rangeList.add(range); - if (this.rangeList.ranges.length != 2) { - this.rangeList.removeAll(); - return $blockChangeEvents || this.fromOrientedRange(range); - } - this.rangeList.removeAll(); - this.rangeList.add(oldRange); - this.$onAddRange(oldRange); - } - - if (!range.cursor) - range.cursor = range.end; - - var removed = this.rangeList.add(range); - - this.$onAddRange(range); - - if (removed.length) - this.$onRemoveRange(removed); - - if (this.rangeCount > 1 && !this.inMultiSelectMode) { - this._signal("multiSelect"); - this.inMultiSelectMode = true; - this.session.$undoSelect = false; - this.rangeList.attach(this.session); - } - - return $blockChangeEvents || this.fromOrientedRange(range); - }; - this.toSingleRange = function(range) { - range = range || this.ranges[0]; - var removed = this.rangeList.removeAll(); - if (removed.length) - this.$onRemoveRange(removed); - - range && this.fromOrientedRange(range); - }; - this.substractPoint = function(pos) { - var removed = this.rangeList.substractPoint(pos); - if (removed) { - this.$onRemoveRange(removed); - return removed[0]; - } - }; - this.mergeOverlappingRanges = function() { - var removed = this.rangeList.merge(); - if (removed.length) - this.$onRemoveRange(removed); - }; - - this.$onAddRange = function(range) { - this.rangeCount = this.rangeList.ranges.length; - this.ranges.unshift(range); - this._signal("addRange", {range: range}); - }; - - this.$onRemoveRange = function(removed) { - this.rangeCount = this.rangeList.ranges.length; - if (this.rangeCount == 1 && this.inMultiSelectMode) { - var lastRange = this.rangeList.ranges.pop(); - removed.push(lastRange); - this.rangeCount = 0; - } - - for (var i = removed.length; i--; ) { - var index = this.ranges.indexOf(removed[i]); - this.ranges.splice(index, 1); - } - - this._signal("removeRange", {ranges: removed}); - - if (this.rangeCount === 0 && this.inMultiSelectMode) { - this.inMultiSelectMode = false; - this._signal("singleSelect"); - this.session.$undoSelect = true; - this.rangeList.detach(this.session); - } - - lastRange = lastRange || this.ranges[0]; - if (lastRange && !lastRange.isEqual(this.getRange())) - this.fromOrientedRange(lastRange); - }; - this.$initRangeList = function() { - if (this.rangeList) - return; - - this.rangeList = new RangeList(); - this.ranges = []; - this.rangeCount = 0; - }; - this.getAllRanges = function() { - return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; - }; - this.splitIntoLines = function () { - var ranges = this.ranges.length ? this.ranges : [this.getRange()]; - var newRanges = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var row = range.start.row; - var endRow = range.end.row; - if (row === endRow) { - newRanges.push(range.clone()); - } else { - newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); - while (++row < endRow) - newRanges.push(this.getLineRange(row, true)); - newRanges.push(new Range(endRow, 0, endRow, range.end.column)); - } - if (i == 0 && !this.isBackwards()) - newRanges = newRanges.reverse(); - } - this.toSingleRange(); - for (var i = newRanges.length; i--;) - this.addRange(newRanges[i]); - }; - - this.joinSelections = function () { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - }; - this.toggleBlockSelection = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } else { - var cursor = this.session.documentToScreenPosition(this.cursor); - var anchor = this.session.documentToScreenPosition(this.anchor); - - var rectSel = this.rectangularRangeBlock(cursor, anchor); - rectSel.forEach(this.addRange, this); - } - }; - this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) { - var rectSel = []; - - var xBackwards = screenCursor.column < screenAnchor.column; - if (xBackwards) { - var startColumn = screenCursor.column; - var endColumn = screenAnchor.column; - var startOffsetX = screenCursor.offsetX; - var endOffsetX = screenAnchor.offsetX; - } else { - var startColumn = screenAnchor.column; - var endColumn = screenCursor.column; - var startOffsetX = screenAnchor.offsetX; - var endOffsetX = screenCursor.offsetX; - } - - var yBackwards = screenCursor.row < screenAnchor.row; - if (yBackwards) { - var startRow = screenCursor.row; - var endRow = screenAnchor.row; - } else { - var startRow = screenAnchor.row; - var endRow = screenCursor.row; - } - - if (startColumn < 0) - startColumn = 0; - if (startRow < 0) - startRow = 0; - - if (startRow == endRow) - includeEmptyLines = true; - - var docEnd; - for (var row = startRow; row <= endRow; row++) { - var range = Range.fromPoints( - this.session.screenToDocumentPosition(row, startColumn, startOffsetX), - this.session.screenToDocumentPosition(row, endColumn, endOffsetX) - ); - if (range.isEmpty()) { - if (docEnd && isSamePoint(range.end, docEnd)) - break; - docEnd = range.end; - } - range.cursor = xBackwards ? range.start : range.end; - rectSel.push(range); - } - - if (yBackwards) - rectSel.reverse(); - - if (!includeEmptyLines) { - var end = rectSel.length - 1; - while (rectSel[end].isEmpty() && end > 0) - end--; - if (end > 0) { - var start = 0; - while (rectSel[start].isEmpty()) - start++; - } - for (var i = end; i >= start; i--) { - if (rectSel[i].isEmpty()) - rectSel.splice(i, 1); - } - } - - return rectSel; - }; -}).call(Selection.prototype); -var Editor = require("./editor").Editor; -(function() { - this.updateSelectionMarkers = function() { - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.addSelectionMarker = function(orientedRange) { - if (!orientedRange.cursor) - orientedRange.cursor = orientedRange.end; - - var style = this.getSelectionStyle(); - orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); - - this.session.$selectionMarkers.push(orientedRange); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - return orientedRange; - }; - this.removeSelectionMarker = function(range) { - if (!range.marker) - return; - this.session.removeMarker(range.marker); - var index = this.session.$selectionMarkers.indexOf(range); - if (index != -1) - this.session.$selectionMarkers.splice(index, 1); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - }; - - this.removeSelectionMarkers = function(ranges) { - var markerList = this.session.$selectionMarkers; - for (var i = ranges.length; i--; ) { - var range = ranges[i]; - if (!range.marker) - continue; - this.session.removeMarker(range.marker); - var index = markerList.indexOf(range); - if (index != -1) - markerList.splice(index, 1); - } - this.session.selectionMarkerCount = markerList.length; - }; - - this.$onAddRange = function(e) { - this.addSelectionMarker(e.range); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onRemoveRange = function(e) { - this.removeSelectionMarkers(e.ranges); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onMultiSelect = function(e) { - if (this.inMultiSelectMode) - return; - this.inMultiSelectMode = true; - - this.setStyle("ace_multiselect"); - this.keyBinding.addKeyboardHandler(commands.keyboardHandler); - this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); - - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onSingleSelect = function(e) { - if (this.session.multiSelect.inVirtualMode) - return; - this.inMultiSelectMode = false; - - this.unsetStyle("ace_multiselect"); - this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); - - this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - this._emit("changeSelection"); - }; - - this.$onMultiSelectExec = function(e) { - var command = e.command; - var editor = e.editor; - if (!editor.multiSelect) - return; - if (!command.multiSelectAction) { - var result = command.exec(editor, e.args || {}); - editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); - editor.multiSelect.mergeOverlappingRanges(); - } else if (command.multiSelectAction == "forEach") { - result = editor.forEachSelection(command, e.args); - } else if (command.multiSelectAction == "forEachLine") { - result = editor.forEachSelection(command, e.args, true); - } else if (command.multiSelectAction == "single") { - editor.exitMultiSelectMode(); - result = command.exec(editor, e.args || {}); - } else { - result = command.multiSelectAction(editor, e.args || {}); - } - return result; - }; - this.forEachSelection = function(cmd, args, options) { - if (this.inVirtualSelectionMode) - return; - var keepOrder = options && options.keepOrder; - var $byLines = options == true || options && options.$byLines; - var session = this.session; - var selection = this.selection; - var rangeList = selection.rangeList; - var ranges = (keepOrder ? selection : rangeList).ranges; - var result; - - if (!ranges.length) - return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - - var reg = selection._eventRegistry; - selection._eventRegistry = {}; - - var tmpSel = new Selection(session); - this.inVirtualSelectionMode = true; - for (var i = ranges.length; i--;) { - if ($byLines) { - while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) - i--; - } - tmpSel.fromOrientedRange(ranges[i]); - tmpSel.index = i; - this.selection = session.selection = tmpSel; - var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - if (!result && cmdResult !== undefined) - result = cmdResult; - tmpSel.toOrientedRange(ranges[i]); - } - tmpSel.detach(); - - this.selection = session.selection = selection; - this.inVirtualSelectionMode = false; - selection._eventRegistry = reg; - selection.mergeOverlappingRanges(); - if (selection.ranges[0]) - selection.fromOrientedRange(selection.ranges[0]); - - var anim = this.renderer.$scrollAnimation; - this.onCursorChange(); - this.onSelectionChange(); - if (anim && anim.from == anim.to) - this.renderer.animateScrolling(anim.from); - - return result; - }; - this.exitMultiSelectMode = function() { - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) - return; - this.multiSelect.toSingleRange(); - }; - - this.getSelectedText = function() { - var text = ""; - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var ranges = this.multiSelect.rangeList.ranges; - var buf = []; - for (var i = 0; i < ranges.length; i++) { - buf.push(this.session.getTextRange(ranges[i])); - } - var nl = this.session.getDocument().getNewLineCharacter(); - text = buf.join(nl); - if (text.length == (buf.length - 1) * nl.length) - text = ""; - } else if (!this.selection.isEmpty()) { - text = this.session.getTextRange(this.getSelectionRange()); - } - return text; - }; - - this.$checkMultiselectChange = function(e, anchor) { - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var range = this.multiSelect.ranges[0]; - if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) - return; - var pos = anchor == this.multiSelect.anchor - ? range.cursor == range.start ? range.end : range.start - : range.cursor; - if (pos.row != anchor.row - || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) - this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); - else - this.multiSelect.mergeOverlappingRanges(); - } - }; - this.findAll = function(needle, options, additive) { - options = options || {}; - options.needle = needle || options.needle; - if (options.needle == undefined) { - var range = this.selection.isEmpty() - ? this.selection.getWordRange() - : this.selection.getRange(); - options.needle = this.session.getTextRange(range); - } - this.$search.set(options); - - var ranges = this.$search.findAll(this.session); - if (!ranges.length) - return 0; - - var selection = this.multiSelect; - - if (!additive) - selection.toSingleRange(ranges[0]); - - for (var i = ranges.length; i--; ) - selection.addRange(ranges[i], true); - if (range && selection.rangeList.rangeAtPoint(range.start)) - selection.addRange(range, true); - - return ranges.length; - }; - this.selectMoreLines = function(dir, skip) { - var range = this.selection.toOrientedRange(); - var isBackwards = range.cursor == range.end; - - var screenLead = this.session.documentToScreenPosition(range.cursor); - if (this.selection.$desiredColumn) - screenLead.column = this.selection.$desiredColumn; - - var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); - - if (!range.isEmpty()) { - var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); - var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); - } else { - var anchor = lead; - } - - if (isBackwards) { - var newRange = Range.fromPoints(lead, anchor); - newRange.cursor = newRange.start; - } else { - var newRange = Range.fromPoints(anchor, lead); - newRange.cursor = newRange.end; - } - - newRange.desiredColumn = screenLead.column; - if (!this.selection.inMultiSelectMode) { - this.selection.addRange(range); - } else { - if (skip) - var toRemove = range.cursor; - } - - this.selection.addRange(newRange); - if (toRemove) - this.selection.substractPoint(toRemove); - }; - this.transposeSelections = function(dir) { - var session = this.session; - var sel = session.multiSelect; - var all = sel.ranges; - - for (var i = all.length; i--; ) { - var range = all[i]; - if (range.isEmpty()) { - var tmp = session.getWordRange(range.start.row, range.start.column); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - range.end.row = tmp.end.row; - range.end.column = tmp.end.column; - } - } - sel.mergeOverlappingRanges(); - - var words = []; - for (var i = all.length; i--; ) { - var range = all[i]; - words.unshift(session.getTextRange(range)); - } - - if (dir < 0) - words.unshift(words.pop()); - else - words.push(words.shift()); - - for (var i = all.length; i--; ) { - var range = all[i]; - var tmp = range.clone(); - session.replace(range, words[i]); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - } - sel.fromOrientedRange(sel.ranges[0]); - }; - this.selectMore = function(dir, skip, stopAtFirst) { - var session = this.session; - var sel = session.multiSelect; - - var range = sel.toOrientedRange(); - if (range.isEmpty()) { - range = session.getWordRange(range.start.row, range.start.column); - range.cursor = dir == -1 ? range.start : range.end; - this.multiSelect.addRange(range); - if (stopAtFirst) - return; - } - var needle = session.getTextRange(range); - - var newRange = find(session, needle, dir); - if (newRange) { - newRange.cursor = dir == -1 ? newRange.start : newRange.end; - this.session.unfold(newRange); - this.multiSelect.addRange(newRange); - this.renderer.scrollCursorIntoView(null, 0.5); - } - if (skip) - this.multiSelect.substractPoint(range.cursor); - }; - this.alignCursors = function() { - var session = this.session; - var sel = session.multiSelect; - var ranges = sel.ranges; - var row = -1; - var sameRowRanges = ranges.filter(function(r) { - if (r.cursor.row == row) - return true; - row = r.cursor.row; - }); - - if (!ranges.length || sameRowRanges.length == ranges.length - 1) { - var range = this.selection.getRange(); - var fr = range.start.row, lr = range.end.row; - var guessRange = fr == lr; - if (guessRange) { - var max = this.session.getLength(); - var line; - do { - line = this.session.getLine(lr); - } while (/[=:]/.test(line) && ++lr < max); - do { - line = this.session.getLine(fr); - } while (/[=:]/.test(line) && --fr > 0); - - if (fr < 0) fr = 0; - if (lr >= max) lr = max - 1; - } - var lines = this.session.removeFullLines(fr, lr); - lines = this.$reAlignText(lines, guessRange); - this.session.insert({row: fr, column: 0}, lines.join("\n") + "\n"); - if (!guessRange) { - range.start.column = 0; - range.end.column = lines[lines.length - 1].length; - } - this.selection.setRange(range); - } else { - sameRowRanges.forEach(function(r) { - sel.substractPoint(r.cursor); - }); - - var maxCol = 0; - var minSpace = Infinity; - var spaceOffsets = ranges.map(function(r) { - var p = r.cursor; - var line = session.getLine(p.row); - var spaceOffset = line.substr(p.column).search(/\S/g); - if (spaceOffset == -1) - spaceOffset = 0; - - if (p.column > maxCol) - maxCol = p.column; - if (spaceOffset < minSpace) - minSpace = spaceOffset; - return spaceOffset; - }); - ranges.forEach(function(r, i) { - var p = r.cursor; - var l = maxCol - p.column; - var d = spaceOffsets[i] - minSpace; - if (l > d) - session.insert(p, lang.stringRepeat(" ", l - d)); - else - session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); - - r.start.column = r.end.column = maxCol; - r.start.row = r.end.row = p.row; - r.cursor = r.end; - }); - sel.fromOrientedRange(ranges[0]); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - } - }; - - this.$reAlignText = function(lines, forceLeft) { - var isLeftAligned = true, isRightAligned = true; - var startW, textW, endW; - - return lines.map(function(line) { - var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); - if (!m) - return [line]; - - if (startW == null) { - startW = m[1].length; - textW = m[2].length; - endW = m[3].length; - return m; - } - - if (startW + textW + endW != m[1].length + m[2].length + m[3].length) - isRightAligned = false; - if (startW != m[1].length) - isLeftAligned = false; - - if (startW > m[1].length) - startW = m[1].length; - if (textW < m[2].length) - textW = m[2].length; - if (endW > m[3].length) - endW = m[3].length; - - return m; - }).map(forceLeft ? alignLeft : - isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); - - function spaces(n) { - return lang.stringRepeat(" ", n); - } - - function alignLeft(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(textW - m[2].length + endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function alignRight(m) { - return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function unAlign(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - }; -}).call(Editor.prototype); - - -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -exports.onSessionChange = function(e) { - var session = e.session; - if (session && !session.multiSelect) { - session.$selectionMarkers = []; - session.selection.$initRangeList(); - session.multiSelect = session.selection; - } - this.multiSelect = session && session.multiSelect; - - var oldSession = e.oldSession; - if (oldSession) { - oldSession.multiSelect.off("addRange", this.$onAddRange); - oldSession.multiSelect.off("removeRange", this.$onRemoveRange); - oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); - oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); - oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); - oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); - } - - if (session) { - session.multiSelect.on("addRange", this.$onAddRange); - session.multiSelect.on("removeRange", this.$onRemoveRange); - session.multiSelect.on("multiSelect", this.$onMultiSelect); - session.multiSelect.on("singleSelect", this.$onSingleSelect); - session.multiSelect.lead.on("change", this.$checkMultiselectChange); - session.multiSelect.anchor.on("change", this.$checkMultiselectChange); - } - - if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { - if (session.selection.inMultiSelectMode) - this.$onMultiSelect(); - else - this.$onSingleSelect(); - } -}; -function MultiSelect(editor) { - if (editor.$multiselectOnSessionChange) - return; - editor.$onAddRange = editor.$onAddRange.bind(editor); - editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); - editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); - editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); - editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); - editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); - - editor.$multiselectOnSessionChange(editor); - editor.on("changeSession", editor.$multiselectOnSessionChange); - - editor.on("mousedown", onMouseDown); - editor.commands.addCommands(commands.defaultCommands); - - addAltCursorListeners(editor); -} - -function addAltCursorListeners(editor){ - if (!editor.textInput) return; - var el = editor.textInput.getElement(); - var altCursor = false; - event.addListener(el, "keydown", function(e) { - var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); - if (editor.$blockSelectEnabled && altDown) { - if (!altCursor) { - editor.renderer.setMouseCursor("crosshair"); - altCursor = true; - } - } else if (altCursor) { - reset(); - } - }, editor); - - event.addListener(el, "keyup", reset, editor); - event.addListener(el, "blur", reset, editor); - function reset(e) { - if (altCursor) { - editor.renderer.setMouseCursor(""); - altCursor = false; - } - } -} - -exports.MultiSelect = MultiSelect; - - -require("./config").defineOptions(Editor.prototype, "editor", { - enableMultiselect: { - set: function(val) { - MultiSelect(this); - if (val) { - this.on("changeSession", this.$multiselectOnSessionChange); - this.on("mousedown", onMouseDown); - } else { - this.off("changeSession", this.$multiselectOnSessionChange); - this.off("mousedown", onMouseDown); - } - }, - value: true - }, - enableBlockSelect: { - set: function(val) { - this.$blockSelectEnabled = val; - }, - value: true - } -}); - - - -}); - -ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; - -(function() { - - this.foldingStartMarker = null; - this.foldingStopMarker = null; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (this.foldingStartMarker.test(line)) - return "start"; - if (foldStyle == "markbeginend" - && this.foldingStopMarker - && this.foldingStopMarker.test(line)) - return "end"; - return ""; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - return null; - }; - - this.indentationBlock = function(session, row, column) { - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1) - return; - - var startColumn = column || line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - var level = session.getLine(row).search(re); - - if (level == -1) - continue; - - if (level <= startLevel) { - var token = session.getTokenAt(row, 0); - if (!token || token.type !== "string") - break; - } - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - - this.openingBracketBlock = function(session, bracket, row, column, typeRe) { - var start = {row: row, column: column + 1}; - var end = session.$findClosingBracket(bracket, start, typeRe); - if (!end) - return; - - var fw = session.foldWidgets[end.row]; - if (fw == null) - fw = session.getFoldWidget(end.row); - - if (fw == "start" && end.row > start.row) { - end.row --; - end.column = session.getLine(end.row).length; - } - return Range.fromPoints(start, end); - }; - - this.closingBracketBlock = function(session, bracket, row, column, typeRe) { - var end = {row: row, column: column}; - var start = session.$findOpeningBracket(bracket, end); - - if (!start) - return; - - start.column++; - end.column--; - - return Range.fromPoints(start, end); - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; -exports.$id = "ace/theme/textmate"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); - -ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var dom = require("./lib/dom"); - -function LineWidgets(session) { - this.session = session; - this.session.widgetManager = this; - this.session.getRowLength = this.getRowLength; - this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; - this.updateOnChange = this.updateOnChange.bind(this); - this.renderWidgets = this.renderWidgets.bind(this); - this.measureWidgets = this.measureWidgets.bind(this); - this.session._changedWidgets = []; - this.$onChangeEditor = this.$onChangeEditor.bind(this); - - this.session.on("change", this.updateOnChange); - this.session.on("changeFold", this.updateOnFold); - this.session.on("changeEditor", this.$onChangeEditor); -} - -(function() { - this.getRowLength = function(row) { - var h; - if (this.lineWidgets) - h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } else { - return this.$wrapData[row].length + 1 + h; - } - }; - - this.$getWidgetScreenLength = function() { - var screenRows = 0; - this.lineWidgets.forEach(function(w){ - if (w && w.rowCount && !w.hidden) - screenRows += w.rowCount; - }); - return screenRows; - }; - - this.$onChangeEditor = function(e) { - this.attach(e.editor); - }; - - this.attach = function(editor) { - if (editor && editor.widgetManager && editor.widgetManager != this) - editor.widgetManager.detach(); - - if (this.editor == editor) - return; - - this.detach(); - this.editor = editor; - - if (editor) { - editor.widgetManager = this; - editor.renderer.on("beforeRender", this.measureWidgets); - editor.renderer.on("afterRender", this.renderWidgets); - } - }; - this.detach = function(e) { - var editor = this.editor; - if (!editor) - return; - - this.editor = null; - editor.widgetManager = null; - - editor.renderer.off("beforeRender", this.measureWidgets); - editor.renderer.off("afterRender", this.renderWidgets); - var lineWidgets = this.session.lineWidgets; - lineWidgets && lineWidgets.forEach(function(w) { - if (w && w.el && w.el.parentNode) { - w._inDocument = false; - w.el.parentNode.removeChild(w.el); - } - }); - }; - - this.updateOnFold = function(e, session) { - var lineWidgets = session.lineWidgets; - if (!lineWidgets || !e.action) - return; - var fold = e.data; - var start = fold.start.row; - var end = fold.end.row; - var hide = e.action == "add"; - for (var i = start + 1; i < end; i++) { - if (lineWidgets[i]) - lineWidgets[i].hidden = hide; - } - if (lineWidgets[end]) { - if (hide) { - if (!lineWidgets[start]) - lineWidgets[start] = lineWidgets[end]; - else - lineWidgets[end].hidden = hide; - } else { - if (lineWidgets[start] == lineWidgets[end]) - lineWidgets[start] = undefined; - lineWidgets[end].hidden = hide; - } - } - }; - - this.updateOnChange = function(delta) { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - - var startRow = delta.start.row; - var len = delta.end.row - startRow; - - if (len === 0) { - } else if (delta.action == "remove") { - var removed = lineWidgets.splice(startRow + 1, len); - if (!lineWidgets[startRow] && removed[removed.length - 1]) { - lineWidgets[startRow] = removed.pop(); - } - removed.forEach(function(w) { - w && this.removeLineWidget(w); - }, this); - this.$updateRows(); - } else { - var args = new Array(len); - if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { - if (delta.start.column > lineWidgets[startRow].column) - startRow++; - } - args.unshift(startRow, 0); - lineWidgets.splice.apply(lineWidgets, args); - this.$updateRows(); - } - }; - - this.$updateRows = function() { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - var noWidgets = true; - lineWidgets.forEach(function(w, i) { - if (w) { - noWidgets = false; - w.row = i; - while (w.$oldWidget) { - w.$oldWidget.row = i; - w = w.$oldWidget; - } - } - }); - if (noWidgets) - this.session.lineWidgets = null; - }; - - this.$registerLineWidget = function(w) { - if (!this.session.lineWidgets) - this.session.lineWidgets = new Array(this.session.getLength()); - - var old = this.session.lineWidgets[w.row]; - if (old) { - w.$oldWidget = old; - if (old.el && old.el.parentNode) { - old.el.parentNode.removeChild(old.el); - old._inDocument = false; - } - } - - this.session.lineWidgets[w.row] = w; - return w; - }; - - this.addLineWidget = function(w) { - this.$registerLineWidget(w); - w.session = this.session; - - if (!this.editor) return w; - - var renderer = this.editor.renderer; - if (w.html && !w.el) { - w.el = dom.createElement("div"); - w.el.innerHTML = w.html; - } - if (w.el) { - dom.addCssClass(w.el, "ace_lineWidgetContainer"); - w.el.style.position = "absolute"; - w.el.style.zIndex = 5; - renderer.container.appendChild(w.el); - w._inDocument = true; - - if (!w.coverGutter) { - w.el.style.zIndex = 3; - } - if (w.pixelHeight == null) { - w.pixelHeight = w.el.offsetHeight; - } - } - if (w.rowCount == null) { - w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; - } - - var fold = this.session.getFoldAt(w.row, 0); - w.$fold = fold; - if (fold) { - var lineWidgets = this.session.lineWidgets; - if (w.row == fold.end.row && !lineWidgets[fold.start.row]) - lineWidgets[fold.start.row] = w; - else - w.hidden = true; - } - - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - - this.$updateRows(); - this.renderWidgets(null, renderer); - this.onWidgetChanged(w); - return w; - }; - - this.removeLineWidget = function(w) { - w._inDocument = false; - w.session = null; - if (w.el && w.el.parentNode) - w.el.parentNode.removeChild(w.el); - if (w.editor && w.editor.destroy) try { - w.editor.destroy(); - } catch(e){} - if (this.session.lineWidgets) { - var w1 = this.session.lineWidgets[w.row]; - if (w1 == w) { - this.session.lineWidgets[w.row] = w.$oldWidget; - if (w.$oldWidget) - this.onWidgetChanged(w.$oldWidget); - } else { - while (w1) { - if (w1.$oldWidget == w) { - w1.$oldWidget = w.$oldWidget; - break; - } - w1 = w1.$oldWidget; - } - } - } - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - this.$updateRows(); - }; - - this.getWidgetsAtRow = function(row) { - var lineWidgets = this.session.lineWidgets; - var w = lineWidgets && lineWidgets[row]; - var list = []; - while (w) { - list.push(w); - w = w.$oldWidget; - } - return list; - }; - - this.onWidgetChanged = function(w) { - this.session._changedWidgets.push(w); - this.editor && this.editor.renderer.updateFull(); - }; - - this.measureWidgets = function(e, renderer) { - var changedWidgets = this.session._changedWidgets; - var config = renderer.layerConfig; - - if (!changedWidgets || !changedWidgets.length) return; - var min = Infinity; - for (var i = 0; i < changedWidgets.length; i++) { - var w = changedWidgets[i]; - if (!w || !w.el) continue; - if (w.session != this.session) continue; - if (!w._inDocument) { - if (this.session.lineWidgets[w.row] != w) - continue; - w._inDocument = true; - renderer.container.appendChild(w.el); - } - - w.h = w.el.offsetHeight; - - if (!w.fixedWidth) { - w.w = w.el.offsetWidth; - w.screenWidth = Math.ceil(w.w / config.characterWidth); - } - - var rowCount = w.h / config.lineHeight; - if (w.coverLine) { - rowCount -= this.session.getRowLineCount(w.row); - if (rowCount < 0) - rowCount = 0; - } - if (w.rowCount != rowCount) { - w.rowCount = rowCount; - if (w.row < min) - min = w.row; - } - } - if (min != Infinity) { - this.session._emit("changeFold", {data:{start:{row: min}}}); - this.session.lineWidgetWidth = null; - } - this.session._changedWidgets = []; - }; - - this.renderWidgets = function(e, renderer) { - var config = renderer.layerConfig; - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var first = Math.min(this.firstRow, config.firstRow); - var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); - - while (first > 0 && !lineWidgets[first]) - first--; - - this.firstRow = config.firstRow; - this.lastRow = config.lastRow; - - renderer.$cursorLayer.config = config; - for (var i = first; i <= last; i++) { - var w = lineWidgets[i]; - if (!w || !w.el) continue; - if (w.hidden) { - w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; - continue; - } - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top; - if (!w.coverLine) - top += config.lineHeight * this.session.getRowLineCount(w.row); - w.el.style.top = top - config.offset + "px"; - - var left = w.coverGutter ? 0 : renderer.gutterWidth; - if (!w.fixedWidth) - left -= renderer.scrollLeft; - w.el.style.left = left + "px"; - - if (w.fullWidth && w.screenWidth) { - w.el.style.minWidth = config.width + 2 * config.padding + "px"; - } - - if (w.fixedWidth) { - w.el.style.right = renderer.scrollBar.getWidth() + "px"; - } else { - w.el.style.right = ""; - } - } - }; - -}).call(LineWidgets.prototype); - - -exports.LineWidgets = LineWidgets; - -}); - -ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"], function(require, exports, module) { -"use strict"; -var LineWidgets = require("../line_widgets").LineWidgets; -var dom = require("../lib/dom"); -var Range = require("../range").Range; - -function binarySearch(array, needle, comparator) { - var first = 0; - var last = array.length - 1; - - while (first <= last) { - var mid = (first + last) >> 1; - var c = comparator(needle, array[mid]); - if (c > 0) - first = mid + 1; - else if (c < 0) - last = mid - 1; - else - return mid; - } - return -(first + 1); -} - -function findAnnotations(session, row, dir) { - var annotations = session.getAnnotations().sort(Range.comparePoints); - if (!annotations.length) - return; - - var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints); - if (i < 0) - i = -i - 1; - - if (i >= annotations.length) - i = dir > 0 ? 0 : annotations.length - 1; - else if (i === 0 && dir < 0) - i = annotations.length - 1; - - var annotation = annotations[i]; - if (!annotation || !dir) - return; - - if (annotation.row === row) { - do { - annotation = annotations[i += dir]; - } while (annotation && annotation.row === row); - if (!annotation) - return annotations.slice(); - } - - - var matched = []; - row = annotation.row; - do { - matched[dir < 0 ? "unshift" : "push"](annotation); - annotation = annotations[i += dir]; - } while (annotation && annotation.row == row); - return matched.length && matched; -} - -exports.showErrorMarker = function(editor, dir) { - var session = editor.session; - if (!session.widgetManager) { - session.widgetManager = new LineWidgets(session); - session.widgetManager.attach(editor); - } - - var pos = editor.getCursorPosition(); - var row = pos.row; - var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) { - return w.type == "errorMarker"; - })[0]; - if (oldWidget) { - oldWidget.destroy(); - } else { - row -= dir; - } - var annotations = findAnnotations(session, row, dir); - var gutterAnno; - if (annotations) { - var annotation = annotations[0]; - pos.column = (annotation.pos && typeof annotation.column != "number" - ? annotation.pos.sc - : annotation.column) || 0; - pos.row = annotation.row; - gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; - } else if (oldWidget) { - return; - } else { - gutterAnno = { - text: ["Looks good!"], - className: "ace_ok" - }; - } - editor.session.unfold(pos.row); - editor.selection.moveToPosition(pos); - - var w = { - row: pos.row, - fixedWidth: true, - coverGutter: true, - el: dom.createElement("div"), - type: "errorMarker" - }; - var el = w.el.appendChild(dom.createElement("div")); - var arrow = w.el.appendChild(dom.createElement("div")); - arrow.className = "error_widget_arrow " + gutterAnno.className; - - var left = editor.renderer.$cursorLayer - .getPixelPosition(pos).left; - arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; - - w.el.className = "error_widget_wrapper"; - el.className = "error_widget " + gutterAnno.className; - el.innerHTML = gutterAnno.text.join("
    "); - - el.appendChild(dom.createElement("div")); - - var kb = function(_, hashId, keyString) { - if (hashId === 0 && (keyString === "esc" || keyString === "return")) { - w.destroy(); - return {command: "null"}; - } - }; - - w.destroy = function() { - if (editor.$mouseHandler.isMousePressed) - return; - editor.keyBinding.removeKeyboardHandler(kb); - session.widgetManager.removeLineWidget(w); - editor.off("changeSelection", w.destroy); - editor.off("changeSession", w.destroy); - editor.off("mouseup", w.destroy); - editor.off("change", w.destroy); - }; - - editor.keyBinding.addKeyboardHandler(kb); - editor.on("changeSelection", w.destroy); - editor.on("changeSession", w.destroy); - editor.on("mouseup", w.destroy); - editor.on("change", w.destroy); - - editor.session.widgetManager.addLineWidget(w); - - w.el.onmousedown = editor.focus.bind(editor); - - editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight}); -}; - - -dom.importCssString("\ - .error_widget_wrapper {\ - background: inherit;\ - color: inherit;\ - border:none\ - }\ - .error_widget {\ - border-top: solid 2px;\ - border-bottom: solid 2px;\ - margin: 5px 0;\ - padding: 10px 40px;\ - white-space: pre-wrap;\ - }\ - .error_widget.ace_error, .error_widget_arrow.ace_error{\ - border-color: #ff5a5a\ - }\ - .error_widget.ace_warning, .error_widget_arrow.ace_warning{\ - border-color: #F1D817\ - }\ - .error_widget.ace_info, .error_widget_arrow.ace_info{\ - border-color: #5a5a5a\ - }\ - .error_widget.ace_ok, .error_widget_arrow.ace_ok{\ - border-color: #5aaa5a\ - }\ - .error_widget_arrow {\ - position: absolute;\ - border: solid 5px;\ - border-top-color: transparent!important;\ - border-right-color: transparent!important;\ - border-left-color: transparent!important;\ - top: -5px;\ - }\ -", "error_marker.css", false); - -}); - -ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"], function(require, exports, module) { -"use strict"; - -require("./lib/fixoldbrowsers"); - -var dom = require("./lib/dom"); -var event = require("./lib/event"); - -var Range = require("./range").Range; -var Editor = require("./editor").Editor; -var EditSession = require("./edit_session").EditSession; -var UndoManager = require("./undomanager").UndoManager; -var Renderer = require("./virtual_renderer").VirtualRenderer; -require("./worker/worker_client"); -require("./keyboard/hash_handler"); -require("./placeholder"); -require("./multi_select"); -require("./mode/folding/fold_mode"); -require("./theme/textmate"); -require("./ext/error_marker"); - -exports.config = require("./config"); -exports.require = require; - -if (typeof define === "function") - exports.define = define; -exports.edit = function(el, options) { - if (typeof el == "string") { - var _id = el; - el = document.getElementById(_id); - if (!el) - throw new Error("ace.edit can't find div #" + _id); - } - - if (el && el.env && el.env.editor instanceof Editor) - return el.env.editor; - - var value = ""; - if (el && /input|textarea/i.test(el.tagName)) { - var oldNode = el; - value = oldNode.value; - el = dom.createElement("pre"); - oldNode.parentNode.replaceChild(el, oldNode); - } else if (el) { - value = el.textContent; - el.innerHTML = ""; - } - - var doc = exports.createEditSession(value); - - var editor = new Editor(new Renderer(el), doc, options); - - var env = { - document: doc, - editor: editor, - onResize: editor.resize.bind(editor, null) - }; - if (oldNode) env.textarea = oldNode; - event.addListener(window, "resize", env.onResize); - editor.on("destroy", function() { - event.removeListener(window, "resize", env.onResize); - env.editor.container.env = null; // prevent memory leak on old ie - }); - editor.container.env = editor.env = env; - return editor; -}; -exports.createEditSession = function(text, mode) { - var doc = new EditSession(text, mode); - doc.setUndoManager(new UndoManager()); - return doc; -}; -exports.Range = Range; -exports.Editor = Editor; -exports.EditSession = EditSession; -exports.UndoManager = UndoManager; -exports.VirtualRenderer = Renderer; -exports.version = exports.config.version; -}); (function() { - ace.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = ace.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - window.ace["default"] = window.ace; - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = window.ace; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-beautify.js b/src-noconflict/ext-beautify.js deleted file mode 100644 index fef10dd..0000000 --- a/src-noconflict/ext-beautify.js +++ /dev/null @@ -1,331 +0,0 @@ -ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; -var TokenIterator = require("../token_iterator").TokenIterator; - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} -exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; -exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; - -exports.beautify = function(session) { - var iterator = new TokenIterator(session, 0, 0); - var token = iterator.getCurrentToken(); - var tabString = session.getTabString(); - var singletonTags = exports.singletonTags; - var blockTags = exports.blockTags; - var nextToken; - var breakBefore = false; - var spaceBefore = false; - var spaceAfter = false; - var code = ""; - var value = ""; - var tagName = ""; - var depth = 0; - var lastDepth = 0; - var lastIndent = 0; - var indent = 0; - var unindent = 0; - var roundDepth = 0; - var curlyDepth = 0; - var row; - var curRow = 0; - var rowsToAdd = 0; - var rowTokens = []; - var abort = false; - var i; - var indentNextLine = false; - var inTag = false; - var inCSS = false; - var inBlock = false; - var levels = {0: 0}; - var parents = []; - var caseBody = false; - - var trimNext = function() { - if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') - nextToken.value = nextToken.value.replace(/^\s*/, ""); - }; - - var trimLine = function() { - code = code.replace(/ +$/, ""); - }; - - var trimCode = function() { - code = code.trimRight(); - breakBefore = false; - }; - - while (token !== null) { - curRow = iterator.getCurrentTokenRow(); - rowTokens = iterator.$rowTokens; - nextToken = iterator.stepForward(); - - if (typeof token !== "undefined") { - value = token.value; - unindent = 0; - inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); - if (is(token, "tag-open")) { - inTag = true; - if (nextToken) - inBlock = (blockTags.indexOf(nextToken.value) !== -1); - if (value === " 0; rowsToAdd--) - code += "\n"; - - breakBefore = true; - if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) - value = value.trimLeft(); - } - - if (value) { - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { - parents[depth] = value; - - trimNext(); - spaceAfter = true; - if (value.match(/^(else|elseif)$/)) { - if (code.match(/\}[\s]*$/)) { - trimCode(); - spaceBefore = true; - } - } - } else if (token.type === "paren.lparen") { - trimNext(); - if (value.substr(-1) === "{") { - spaceAfter = true; - indentNextLine = false; - - if(!inTag) - rowsToAdd = 1; - } - if (value.substr(0, 1) === "{") { - spaceBefore = true; - if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { - trimCode(); - spaceBefore = false; - } else if (code.trimRight().substr(-1) === ')') { - trimCode(); - } else { - trimLine(); - } - } - } else if (token.type === "paren.rparen") { - unindent = 1; - if (value.substr(0, 1) === "}") { - if (parents[depth-1] === 'case') - unindent++; - - if (code.trimRight().substr(-1) === '{') { - trimCode(); - } else { - spaceBefore = true; - - if (inCSS) - rowsToAdd+=2; - } - } - if (value.substr(0, 1) === "]") { - if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { - spaceBefore = false; - indent++; - trimCode(); - } - } - if (value.substr(0, 1) === ")") { - if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { - spaceBefore = false; - indent++; - trimCode(); - } - } - - trimLine(); - } else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { - trimCode(); - trimNext(); - spaceBefore = true; - spaceAfter = true; - } else if (token.type === "punctuation.operator" && value === ';') { - trimCode(); - trimNext(); - spaceAfter = true; - - if (inCSS) - rowsToAdd++; - } else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { - trimCode(); - trimNext(); - if (value.match(/^(,)$/) && curlyDepth>0 && roundDepth===0) { - rowsToAdd++; - } else { - spaceAfter = true; - breakBefore = false; - } - } else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { - trimCode(); - spaceBefore = true; - } else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { - spaceBefore = true; - } else if (is(token, "attribute-equals")) { - trimLine(); - trimNext(); - } else if (is(token, "tag-close")) { - trimLine(); - if(value === "/>") - spaceBefore = true; - } else if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody) - unindent = 1; - } - if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"]$/))) { - - indent = lastIndent; - - if(depth > lastDepth) { - indent++; - - for (i=depth; i > lastDepth; i--) - levels[i] = indent; - } else if(depth < lastDepth) - indent = levels[depth]; - - lastDepth = depth; - lastIndent = indent; - - if(unindent) - indent -= unindent; - - if (indentNextLine && !roundDepth) { - indent++; - indentNextLine = false; - } - - for (i = 0; i < indent; i++) - code += tabString; - } - - if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody === false) { - parents[depth] = value; - depth++; - caseBody = true; - } - } else if (token.type === "keyword" && value.match(/^(break)$/)) { - if(parents[depth-1] && parents[depth-1].match(/^(case|default)$/)) { - depth--; - caseBody = false; - } - } - if (token.type === "paren.lparen") { - roundDepth += (value.match(/\(/g) || []).length; - curlyDepth += (value.match(/\{/g) || []).length; - depth += value.length; - } - - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { - indentNextLine = true; - roundDepth = 0; - } else if (!roundDepth && value.trim() && token.type !== "comment") - indentNextLine = false; - - if (token.type === "paren.rparen") { - roundDepth -= (value.match(/\)/g) || []).length; - curlyDepth -= (value.match(/\}/g) || []).length; - - for (i = 0; i < value.length; i++) { - depth--; - if(value.substr(i, 1)==='}' && parents[depth]==='case') { - depth--; - } - } - } - - if (token.type == "text") - value = value.replace(/\s+$/, " "); - if (spaceBefore && !breakBefore) { - trimLine(); - if (code.substr(-1) !== "\n") - code += " "; - } - - code += value; - - if (spaceAfter) - code += " "; - - breakBefore = false; - spaceBefore = false; - spaceAfter = false; - if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { - if (inBlock && nextToken && nextToken.value === "" && singletonTags.indexOf(tagName) === -1){ - depth--; - } - - row = curRow; - } - } - - token = nextToken; - } - - code = code.trim(); - session.doc.setValue(code); -}; - -exports.commands = [{ - name: "beautify", - description: "Format selection (Beautify)", - exec: function(editor) { - exports.beautify(editor.session); - }, - bindKey: "Ctrl-Shift-B" -}]; - -}); (function() { - ace.require(["ace/ext/beautify"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-code_lens.js b/src-noconflict/ext-code_lens.js deleted file mode 100644 index 8f2b3f5..0000000 --- a/src-noconflict/ext-code_lens.js +++ /dev/null @@ -1,238 +0,0 @@ -ace.define("ace/ext/code_lens",["require","exports","module","ace/line_widgets","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; -var LineWidgets = require("../line_widgets").LineWidgets; -var event = require("../lib/event"); -var lang = require("../lib/lang"); -var dom = require("../lib/dom"); - -function clearLensElements(renderer) { - var textLayer = renderer.$textLayer; - var lensElements = textLayer.$lenses; - if (lensElements) - lensElements.forEach(function(el) {el.remove(); }); - textLayer.$lenses = null; -} - -function renderWidgets(changes, renderer) { - var changed = changes & renderer.CHANGE_LINES - || changes & renderer.CHANGE_FULL - || changes & renderer.CHANGE_SCROLL - || changes & renderer.CHANGE_TEXT; - if (!changed) - return; - - var session = renderer.session; - var lineWidgets = renderer.session.lineWidgets; - var textLayer = renderer.$textLayer; - var lensElements = textLayer.$lenses; - if (!lineWidgets) { - if (lensElements) - clearLensElements(renderer); - return; - } - - var textCells = renderer.$textLayer.$lines.cells; - var config = renderer.layerConfig; - var padding = renderer.$padding; - - if (!lensElements) - lensElements = textLayer.$lenses = []; - - - var index = 0; - for (var i = 0; i < textCells.length; i++) { - var row = textCells[i].row; - var widget = lineWidgets[row]; - var lenses = widget && widget.lenses; - - if (!lenses || !lenses.length) continue; - - var lensContainer = lensElements[index]; - if (!lensContainer) { - lensContainer = lensElements[index] - = dom.buildDom(["div", {class: "ace_codeLens"}], renderer.container); - } - lensContainer.style.height = config.lineHeight + "px"; - index++; - - for (var j = 0; j < lenses.length; j++) { - var el = lensContainer.childNodes[2 * j]; - if (!el) { - if (j != 0) lensContainer.appendChild(dom.createTextNode("\xa0|\xa0")); - el = dom.buildDom(["a"], lensContainer); - } - el.textContent = lenses[j].title; - el.lensCommand = lenses[j]; - } - while (lensContainer.childNodes.length > 2 * j - 1) - lensContainer.lastChild.remove(); - - var top = renderer.$cursorLayer.getPixelPosition({ - row: row, - column: 0 - }, true).top - config.lineHeight * widget.rowsAbove - config.offset; - lensContainer.style.top = top + "px"; - - var left = renderer.gutterWidth; - var indent = session.getLine(row).search(/\S|$/); - if (indent == -1) - indent = 0; - left += indent * config.characterWidth; - left -= renderer.scrollLeft; - lensContainer.style.paddingLeft = padding + left + "px"; - } - while (index < lensElements.length) - lensElements.pop().remove(); -} - -function clearCodeLensWidgets(session) { - if (!session.lineWidgets) return; - var widgetManager = session.widgetManager; - session.lineWidgets.forEach(function(widget) { - if (widget && widget.lenses) - widgetManager.removeLineWidget(widget); - }); -} - -exports.setLenses = function(session, lenses) { - var firstRow = Number.MAX_VALUE; - - clearCodeLensWidgets(session); - lenses && lenses.forEach(function(lens) { - var row = lens.start.row; - var column = lens.start.column; - var widget = session.lineWidgets && session.lineWidgets[row]; - if (!widget || !widget.lenses) { - widget = session.widgetManager.$registerLineWidget({ - rowCount: 1, - rowsAbove: 1, - row: row, - column: column, - lenses: [] - }); - } - widget.lenses.push(lens.command); - if (row < firstRow) - firstRow = row; - }); - session._emit("changeFold", {data: {start: {row: firstRow}}}); -}; - -function attachToEditor(editor) { - editor.codeLensProviders = []; - editor.renderer.on("afterRender", renderWidgets); - if (!editor.$codeLensClickHandler) { - editor.$codeLensClickHandler = function(e) { - var command = e.target.lensCommand; - if (command) - editor.execCommand(command.id, command.arguments); - }; - event.addListener(editor.container, "click", editor.$codeLensClickHandler, editor); - } - editor.$updateLenses = function() { - var session = editor.session; - if (!session) return; - - if (!session.widgetManager) { - session.widgetManager = new LineWidgets(session); - session.widgetManager.attach(editor); - } - - var providersToWaitNum = editor.codeLensProviders.length; - var lenses = []; - editor.codeLensProviders.forEach(function(provider) { - provider.provideCodeLenses(session, function(err, payload) { - if (err) return; - payload.forEach(function(lens) { - lenses.push(lens); - }); - providersToWaitNum--; - if (providersToWaitNum == 0) { - applyLenses(); - } - }); - }); - - function applyLenses() { - var cursor = session.selection.cursor; - var oldRow = session.documentToScreenRow(cursor); - exports.setLenses(session, lenses); - - var lastDelta = session.$undoManager && session.$undoManager.$lastDelta; - if (lastDelta && lastDelta.action == "remove" && lastDelta.lines.length > 1) - return; - var row = session.documentToScreenRow(cursor); - var lineHeight = editor.renderer.layerConfig.lineHeight; - var top = session.getScrollTop() + (row - oldRow) * lineHeight; - session.setScrollTop(top); - } - }; - var updateLenses = lang.delayedCall(editor.$updateLenses); - editor.$updateLensesOnInput = function() { - updateLenses.delay(250); - }; - editor.on("input", editor.$updateLensesOnInput); -} - -function detachFromEditor(editor) { - editor.off("input", editor.$updateLensesOnInput); - editor.renderer.off("afterRender", renderWidgets); - if (editor.$codeLensClickHandler) - editor.container.removeEventListener("click", editor.$codeLensClickHandler); -} - -exports.registerCodeLensProvider = function(editor, codeLensProvider) { - editor.setOption("enableCodeLens", true); - editor.codeLensProviders.push(codeLensProvider); - editor.$updateLensesOnInput(); -}; - -exports.clear = function(session) { - exports.setLenses(session, null); -}; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - enableCodeLens: { - set: function(val) { - if (val) { - attachToEditor(this); - } else { - detachFromEditor(this); - } - } - } -}); - -dom.importCssString("\ -.ace_codeLens {\ - position: absolute;\ - color: #aaa;\ - font-size: 88%;\ - background: inherit;\ - width: 100%;\ - display: flex;\ - align-items: flex-end;\ - pointer-events: none;\ -}\ -.ace_codeLens > a {\ - cursor: pointer;\ - pointer-events: auto;\ -}\ -.ace_codeLens > a:hover {\ - color: #0000ff;\ - text-decoration: underline;\ -}\ -.ace_dark > .ace_codeLens > a:hover {\ - color: #4e94ce;\ -}\ -", "codelense.css", false); - -}); (function() { - ace.require(["ace/ext/code_lens"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-elastic_tabstops_lite.js b/src-noconflict/ext-elastic_tabstops_lite.js deleted file mode 100644 index bd246cd..0000000 --- a/src-noconflict/ext-elastic_tabstops_lite.js +++ /dev/null @@ -1,277 +0,0 @@ -ace.define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var ElasticTabstopsLite = function(editor) { - this.$editor = editor; - var self = this; - var changedRows = []; - var recordChanges = false; - this.onAfterExec = function() { - recordChanges = false; - self.processRows(changedRows); - changedRows = []; - }; - this.onExec = function() { - recordChanges = true; - }; - this.onChange = function(delta) { - if (recordChanges) { - if (changedRows.indexOf(delta.start.row) == -1) - changedRows.push(delta.start.row); - if (delta.end.row != delta.start.row) - changedRows.push(delta.end.row); - } - }; -}; - -(function() { - this.processRows = function(rows) { - this.$inChange = true; - var checkedRows = []; - - for (var r = 0, rowCount = rows.length; r < rowCount; r++) { - var row = rows[r]; - - if (checkedRows.indexOf(row) > -1) - continue; - - var cellWidthObj = this.$findCellWidthsForBlock(row); - var cellWidths = this.$setBlockCellWidthsToMax(cellWidthObj.cellWidths); - var rowIndex = cellWidthObj.firstRow; - - for (var w = 0, l = cellWidths.length; w < l; w++) { - var widths = cellWidths[w]; - checkedRows.push(rowIndex); - this.$adjustRow(rowIndex, widths); - rowIndex++; - } - } - this.$inChange = false; - }; - - this.$findCellWidthsForBlock = function(row) { - var cellWidths = [], widths; - var rowIter = row; - while (rowIter >= 0) { - widths = this.$cellWidthsForRow(rowIter); - if (widths.length == 0) - break; - - cellWidths.unshift(widths); - rowIter--; - } - var firstRow = rowIter + 1; - rowIter = row; - var numRows = this.$editor.session.getLength(); - - while (rowIter < numRows - 1) { - rowIter++; - - widths = this.$cellWidthsForRow(rowIter); - if (widths.length == 0) - break; - - cellWidths.push(widths); - } - - return { cellWidths: cellWidths, firstRow: firstRow }; - }; - - this.$cellWidthsForRow = function(row) { - var selectionColumns = this.$selectionColumnsForRow(row); - - var tabs = [-1].concat(this.$tabsForRow(row)); - var widths = tabs.map(function(el) { return 0; } ).slice(1); - var line = this.$editor.session.getLine(row); - - for (var i = 0, len = tabs.length - 1; i < len; i++) { - var leftEdge = tabs[i]+1; - var rightEdge = tabs[i+1]; - - var rightmostSelection = this.$rightmostSelectionInCell(selectionColumns, rightEdge); - var cell = line.substring(leftEdge, rightEdge); - widths[i] = Math.max(cell.replace(/\s+$/g,'').length, rightmostSelection - leftEdge); - } - - return widths; - }; - - this.$selectionColumnsForRow = function(row) { - var selections = [], cursor = this.$editor.getCursorPosition(); - if (this.$editor.session.getSelection().isEmpty()) { - if (row == cursor.row) - selections.push(cursor.column); - } - - return selections; - }; - - this.$setBlockCellWidthsToMax = function(cellWidths) { - var startingNewBlock = true, blockStartRow, blockEndRow, maxWidth; - var columnInfo = this.$izip_longest(cellWidths); - - for (var c = 0, l = columnInfo.length; c < l; c++) { - var column = columnInfo[c]; - if (!column.push) { - console.error(column); - continue; - } - column.push(NaN); - - for (var r = 0, s = column.length; r < s; r++) { - var width = column[r]; - if (startingNewBlock) { - blockStartRow = r; - maxWidth = 0; - startingNewBlock = false; - } - if (isNaN(width)) { - blockEndRow = r; - - for (var j = blockStartRow; j < blockEndRow; j++) { - cellWidths[j][c] = maxWidth; - } - startingNewBlock = true; - } - - maxWidth = Math.max(maxWidth, width); - } - } - - return cellWidths; - }; - - this.$rightmostSelectionInCell = function(selectionColumns, cellRightEdge) { - var rightmost = 0; - - if (selectionColumns.length) { - var lengths = []; - for (var s = 0, length = selectionColumns.length; s < length; s++) { - if (selectionColumns[s] <= cellRightEdge) - lengths.push(s); - else - lengths.push(0); - } - rightmost = Math.max.apply(Math, lengths); - } - - return rightmost; - }; - - this.$tabsForRow = function(row) { - var rowTabs = [], line = this.$editor.session.getLine(row), - re = /\t/g, match; - - while ((match = re.exec(line)) != null) { - rowTabs.push(match.index); - } - - return rowTabs; - }; - - this.$adjustRow = function(row, widths) { - var rowTabs = this.$tabsForRow(row); - - if (rowTabs.length == 0) - return; - - var bias = 0, location = -1; - var expandedSet = this.$izip(widths, rowTabs); - - for (var i = 0, l = expandedSet.length; i < l; i++) { - var w = expandedSet[i][0], it = expandedSet[i][1]; - location += 1 + w; - it += bias; - var difference = location - it; - - if (difference == 0) - continue; - - var partialLine = this.$editor.session.getLine(row).substr(0, it ); - var strippedPartialLine = partialLine.replace(/\s*$/g, ""); - var ispaces = partialLine.length - strippedPartialLine.length; - - if (difference > 0) { - this.$editor.session.getDocument().insertInLine({row: row, column: it + 1}, Array(difference + 1).join(" ") + "\t"); - this.$editor.session.getDocument().removeInLine(row, it, it + 1); - - bias += difference; - } - - if (difference < 0 && ispaces >= -difference) { - this.$editor.session.getDocument().removeInLine(row, it + difference, it); - bias += difference; - } - } - }; - this.$izip_longest = function(iterables) { - if (!iterables[0]) - return []; - var longest = iterables[0].length; - var iterablesLength = iterables.length; - - for (var i = 1; i < iterablesLength; i++) { - var iLength = iterables[i].length; - if (iLength > longest) - longest = iLength; - } - - var expandedSet = []; - - for (var l = 0; l < longest; l++) { - var set = []; - for (var i = 0; i < iterablesLength; i++) { - if (iterables[i][l] === "") - set.push(NaN); - else - set.push(iterables[i][l]); - } - - expandedSet.push(set); - } - - - return expandedSet; - }; - this.$izip = function(widths, tabs) { - var size = widths.length >= tabs.length ? tabs.length : widths.length; - - var expandedSet = []; - for (var i = 0; i < size; i++) { - var set = [ widths[i], tabs[i] ]; - expandedSet.push(set); - } - return expandedSet; - }; - -}).call(ElasticTabstopsLite.prototype); - -exports.ElasticTabstopsLite = ElasticTabstopsLite; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - useElasticTabstops: { - set: function(val) { - if (val) { - if (!this.elasticTabstops) - this.elasticTabstops = new ElasticTabstopsLite(this); - this.commands.on("afterExec", this.elasticTabstops.onAfterExec); - this.commands.on("exec", this.elasticTabstops.onExec); - this.on("change", this.elasticTabstops.onChange); - } else if (this.elasticTabstops) { - this.commands.removeListener("afterExec", this.elasticTabstops.onAfterExec); - this.commands.removeListener("exec", this.elasticTabstops.onExec); - this.removeListener("change", this.elasticTabstops.onChange); - } - } - } -}); - -}); (function() { - ace.require(["ace/ext/elastic_tabstops_lite"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-emmet.js b/src-noconflict/ext-emmet.js deleted file mode 100644 index 7cfa48c..0000000 --- a/src-noconflict/ext-emmet.js +++ /dev/null @@ -1,1331 +0,0 @@ -ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module) { -"use strict"; -var dom = require("./lib/dom"); -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var RangeList = require("./range_list").RangeList; -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var clipboard = require("./clipboard"); - -var VARIABLES = { - CURRENT_WORD: function(editor) { - return editor.session.getTextRange(editor.session.getWordRange()); - }, - SELECTION: function(editor, name, indentation) { - var text = editor.session.getTextRange(); - if (indentation) - return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); - return text; - }, - CURRENT_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row); - }, - PREV_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row - 1); - }, - LINE_INDEX: function(editor) { - return editor.getCursorPosition().row; - }, - LINE_NUMBER: function(editor) { - return editor.getCursorPosition().row + 1; - }, - SOFT_TABS: function(editor) { - return editor.session.getUseSoftTabs() ? "YES" : "NO"; - }, - TAB_SIZE: function(editor) { - return editor.session.getTabSize(); - }, - CLIPBOARD: function(editor) { - return clipboard.getText && clipboard.getText(); - }, - FILENAME: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; - }, - FILENAME_BASE: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); - }, - DIRECTORY: function(editor) { - return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); - }, - FILEPATH: function(editor) { return "/not implemented.txt"; }, - WORKSPACE_NAME: function() { return "Unknown"; }, - FULLNAME: function() { return "Unknown"; }, - BLOCK_COMMENT_START: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.start || ""; - }, - BLOCK_COMMENT_END: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.end || ""; - }, - LINE_COMMENT: function(editor) { - var mode = editor.session.$mode || {}; - return mode.lineCommentStart || ""; - }, - CURRENT_YEAR: date.bind(null, {year: "numeric"}), - CURRENT_YEAR_SHORT: date.bind(null, {year: "2-digit"}), - CURRENT_MONTH: date.bind(null, {month: "numeric"}), - CURRENT_MONTH_NAME: date.bind(null, {month: "long"}), - CURRENT_MONTH_NAME_SHORT: date.bind(null, {month: "short"}), - CURRENT_DATE: date.bind(null, {day: "2-digit"}), - CURRENT_DAY_NAME: date.bind(null, {weekday: "long"}), - CURRENT_DAY_NAME_SHORT: date.bind(null, {weekday: "short"}), - CURRENT_HOUR: date.bind(null, {hour: "2-digit", hour12: false}), - CURRENT_MINUTE: date.bind(null, {minute: "2-digit"}), - CURRENT_SECOND: date.bind(null, {second: "2-digit"}) -}; - -VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; - -function date(dateFormat) { - var str = new Date().toLocaleString("en-us", dateFormat); - return str.length == 1 ? "0" + str : str; -} - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; -}; - -(function() { - oop.implement(this, EventEmitter); - - this.getTokenizer = function() { - return SnippetManager.$tokenizer || this.createTokenizer(); - }; - - this.createTokenizer = function() { - function TabstopToken(str) { - str = str.substr(1); - if (/^\d+$/.test(str)) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}]; - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - var formatMatcher = { - regex: "/(" + escape("/") + "+)/", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = true; - ts.guard = val.slice(1, -1); - ts.flag = ""; - return ""; - }, - next: "formatString" - }; - - SnippetManager.$tokenizer = new Tokenizer({ - start: [ - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - } else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1)); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} - ], - snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function(operator) { - return operator.length == 2 ? operator[1] : "\x00"; - }).split("\x00").map(function(value){ - return {value: value}; - }); - stack[0].choices = choices; - return [choices[0]]; - }, next: "start"}, - formatMatcher, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} - ], - formatString: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectElse) { - stack[0].expectElse = false; - stack[0].ifEnd = {elseEnd: stack[0]}; - return [stack[0].ifEnd]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) - val = ch; - else if ("`$\\".indexOf(ch) != -1) - val = ch; - else if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\t"; - else if ("ulULE".indexOf(ch) != -1) - val = {changeCase: ch, local: ch > "a"}; - return [val]; - }}, - {regex: "/\\w*}", onMatch: function(val, state, stack) { - var next = stack.shift(); - if (next) - next.flag = val.slice(1, -1); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"}, - {regex: /\$(?:\d+|\w+)/, onMatch: function(val, state, stack) { - return [{text: val.slice(1)}]; - }}, - {regex: /\${\w+/, onMatch: function(val, state, stack) { - var token = {text: val.slice(2)}; - stack.unshift(token); - return [token]; - }, next: "formatStringVar"}, - {regex: /\n/, token: "newline", merge: false}, - {regex: /}/, onMatch: function(val, state, stack) { - var next = stack.shift(); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"} - ], - formatStringVar: [ - {regex: /:\/\w+}/, onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.formatFunction = val.slice(2, -1); - return [stack.shift()]; - }, next: "formatString"}, - formatMatcher, - {regex: /:[\?\-+]?/, onMatch: function(val, state, stack) { - if (val[1] == "+") - stack[0].ifEnd = stack[0]; - if (val[1] == "?") - stack[0].expectElse = true; - }, next: "formatString"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString"} - ] - }); - return SnippetManager.$tokenizer; - }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { - return x.value || x; - }); - }; - - this.getVariableValue = function(editor, name, indentation) { - if (/^\d+$/.test(name)) - return (this.variables.__ || {})[name] || ""; - if (/^[A-Z]\d+$/.test(name)) - return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; - - name = name.replace(/^TM_/, ""); - if (!this.variables.hasOwnProperty(name)) - return ""; - var value = this.variables[name]; - if (typeof value == "function") - value = this.variables[name](editor, name, indentation); - return value == null ? "" : value; - }; - - this.variables = VARIABLES; - this.tmStrFormat = function(str, ch, editor) { - if (!ch.fmt) return str; - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gim]/g, "")); - var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; - var _self = this; - var formatted = str.replace(re, function() { - var oldArgs = _self.variables.__; - _self.variables.__ = [].slice.call(arguments); - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - _self.variables.__ = oldArgs; - return fmtParts.join(""); - }); - return formatted; - }; - - this.tmFormatFunction = function(str, ch, editor) { - if (ch.formatFunction == "upcase") - return str.toUpperCase(); - if (ch.formatFunction == "downcase") - return str.toLowerCase(); - return str; - }; - - this.resolveVariables = function(snippet, editor) { - var result = []; - var indentation = ""; - var afterNewLine = true; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - if (ch == "\n") { - afterNewLine = true; - indentation = ""; - } - else if (afterNewLine) { - indentation = /^\t*/.exec(ch)[0]; - afterNewLine = /\S/.test(ch); - } - continue; - } - if (!ch) continue; - afterNewLine = false; - - if (ch.fmtString) { - var j = snippet.indexOf(ch, i + 1); - if (j == -1) j = snippet.length; - ch.fmt = snippet.slice(i + 1, j); - i = j; - } - - if (ch.text) { - var value = this.getVariableValue(editor, ch.text, indentation) + ""; - if (ch.fmtString) - value = this.tmStrFormat(value, ch, editor); - if (ch.formatFunction) - value = this.tmFormatFunction(value, ch, editor); - - if (value && !ch.ifEnd) { - result.push(value); - gotoNext(ch); - } else if (!value && ch.ifEnd) { - gotoNext(ch.ifEnd); - } - } else if (ch.elseEnd) { - gotoNext(ch.elseEnd); - } else if (ch.tabstopId != null) { - result.push(ch); - } else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - - this.insertSnippetForSelection = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - ts.parents = {}; - } - if (ts.indexOf(p) !== -1) - return; - if (p.choices && !ts.choices) - ts.choices = p.choices; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object";}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0;}); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var ts = tabstops[id]; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) { - delete expanding[id]; - Object.keys(expanding).forEach(function(parentId) { - ts.parents[parentId] = true; - }); - } - continue; - } - expanding[id] = p; - var value = ts.value; - if (typeof value !== "string") - value = copyValue(value); - else if (p.fmt) - value = this.tmStrFormat(value, p, editor); - tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); - - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1){ - column = lines[lines.length - 1].length; - row += lines.length - 1; - } else - column += t.length; - text += t; - } else if (t) { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - - var tabstopManager = new TabstopManager(editor); - var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(tabstops, range.start, end, selectionId); - }; - - this.insertSnippet = function(editor, snippetText) { - var self = this; - if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText); - - editor.forEachSelection(function() { - self.insertSnippetForSelection(editor, snippetText); - }, null, {keepOrder: true}); - - if (editor.tabstopManager) - editor.tabstopManager.tabNext(); - }; - - this.$getScope = function(editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) - scope = "html"; - var c = editor.getCursorPosition(); - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - - return scope; - }; - - this.getActiveScopes = function(editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - - this.expandWithTab = function(editor, options) { - var self = this; - var result = editor.forEachSelection(function() { - return self.expandSnippetForSelection(editor, options); - }, null, {keepOrder: true}); - if (result && editor.tabstopManager) - editor.tabstopManager.tabNext(); - return result; - }; - - this.expandSnippetForSelection = function(editor, options) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - if (options && options.dryRun) - return true; - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippetForSelection(editor, snippet.content); - - this.variables.M__ = this.variables.T__ = null; - return true; - }; - - this.findMatchingSnippet = function(snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - - if (!snippets) - snippets = []; - - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")"; - - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope; - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - - if (s.prefix) - s.tabTrigger = s.prefix; - - if (!s.content && s.body) - s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; - - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) - return; - - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger); - - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger); - } - - if (Array.isArray(snippets)) { - snippets.forEach(addSnippet); - } else { - Object.keys(snippets).forEach(function(key) { - addSnippet(snippets[key]); - }); - } - - this._signal("registerSnippets", {scope: scope}); - }; - this.unregister = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - this.parseSnippetFile = function(str) { - str = str.replace(/\r/g, ""); - var list = [], snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]); - list.push(snippet); - } catch (e) {} - } if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } else if (key) { - snippet[key] = val; - } - } - } - return list; - }; - this.getSnippetByName = function(name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); -}; -(function() { - this.attach = function(editor) { - this.index = 0; - this.ranges = []; - this.tabstops = []; - this.$openTabstops = null; - this.selectedTabstop = null; - - this.editor = editor; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.detach = function() { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; - this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.editor = null; - }; - - this.onChange = function(delta) { - var isRemove = delta.action[0] == "r"; - var selectedTabstop = this.selectedTabstop || {}; - var parents = selectedTabstop.parents || {}; - var tabstops = (this.tabstops || []).slice(); - for (var i = 0; i < tabstops.length; i++) { - var ts = tabstops[i]; - var active = ts == selectedTabstop || parents[ts.index]; - ts.rangeList.$bias = active ? 0 : 1; - - if (delta.action == "remove" && ts !== selectedTabstop) { - var parentActive = ts.parents && ts.parents[selectedTabstop.index]; - var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); - startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; - var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); - endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; - var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); - for (var j = 0; j < toRemove.length; j++) - this.removeRange(toRemove[j]); - } - ts.rangeList.$onChange(delta); - } - var session = this.editor.session; - if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) - this.detach(); - }; - this.updateLinkedFields = function() { - var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) - return; - this.$inChange = true; - var session = this.editor.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = 0; i < ts.length; i++) { - var range = ts[i]; - if (!range.linked) - continue; - var original = range.original; - var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); - session.replace(range, fmt); - } - this.$inChange = false; - }; - this.onAfterExec = function(e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - this.onChangeSelection = function() { - if (!this.editor) - return; - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = 0; i < this.ranges.length; i++) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - this.onChangeSession = function() { - this.detach(); - }; - this.tabNext = function(dir) { - var max = this.tabstops.length; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 1), max); - if (index == max) - index = 0; - this.selectTabstop(index); - if (index === 0) - this.detach(); - }; - this.selectTabstop = function(index) { - this.$openTabstops = null; - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - - this.selectedTabstop = ts; - var range = ts.firstNonLinked || ts; - if (ts.choices) range.cursor = range.start; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(range); - for (var i = 0; i < ts.length; i++) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } else { - this.editor.selection.fromOrientedRange(range); - } - - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - if (this.selectedTabstop && this.selectedTabstop.choices) - this.editor.execCommand("startAutocomplete", {matches: this.selectedTabstop.choices}); - }; - this.addTabstops = function(tabstops, start, end) { - var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); - - if (!this.$openTabstops) - this.$openTabstops = []; - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - - var i = this.index; - var arg = [i + 1, 0]; - var ranges = this.ranges; - tabstops.forEach(function(ts, index) { - var dest = this.$openTabstops[index] || ts; - - for (var i = 0; i < ts.length; i++) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = dest; - ranges.push(range); - if (dest != ts) - dest.unshift(range); - else - dest[i] = range; - if (p.fmtString || (dest.firstNonLinked && useLink)) { - range.linked = true; - dest.hasLinkedRanges = true; - } else if (!dest.firstNonLinked) - dest.firstNonLinked = range; - } - if (!dest.firstNonLinked) - dest.hasLinkedRanges = false; - if (dest === ts) { - arg.push(dest); - this.$openTabstops[index] = dest; - } - this.addTabstopMarkers(dest); - dest.rangeList = dest.rangeList || new RangeList(); - dest.rangeList.$bias = 0; - dest.rangeList.addList(dest); - }, this); - - if (arg.length > 2) { - if (this.tabstops.length) - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - } - }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - this.removeRange = function(range) { - var i = range.tabstop.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - if (i != -1) this.ranges.splice(i, 1); - i = range.tabstop.rangeList.ranges.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - this.editor.session.removeMarker(range.markerId); - if (!range.tabstop.length) { - i = this.tabstops.indexOf(range.tabstop); - if (i != -1) - this.tabstops.splice(i, 1); - if (!this.tabstops.length) - this.detach(); - } - }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(editor) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) - return; - editor.tabstopManager.tabNext(1); - editor.renderer.scrollCursorIntoView(); - }, - "Shift-Tab": function(editor) { - editor.tabstopManager.tabNext(-1); - editor.renderer.scrollCursorIntoView(); - }, - "Esc": function(editor) { - editor.tabstopManager.detach(); - } - }); -}).call(TabstopManager.prototype); - - - -var movePoint = function(point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; - -var moveRelative = function(point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; - - -dom.importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}", "snippets.css", false); - -exports.snippetManager = new SnippetManager(); - - -var Editor = require("./editor").Editor; -(function() { - this.insertSnippet = function(content, options) { - return exports.snippetManager.insertSnippet(this, content, options); - }; - this.expandSnippet = function(options) { - return exports.snippetManager.expandWithTab(this, options); - }; -}).call(Editor.prototype); - -}); - -ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","ace/config","resources","resources","tabStops","resources","utils","actions"], function(require, exports, module) { -"use strict"; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var Editor = require("../editor").Editor; -var snippetManager = require("../snippets").snippetManager; -var Range = require("../range").Range; -var config = require("../config"); -var emmet, emmetPath; -function AceEmmetEditor() {} - -AceEmmetEditor.prototype = { - setupContext: function(editor) { - this.ace = editor; - this.indentation = editor.session.getTabString(); - if (!emmet) - emmet = window.emmet; - var resources = emmet.resources || emmet.require("resources"); - resources.setVariable("indentation", this.indentation); - this.$syntax = null; - this.$syntax = this.getSyntax(); - }, - getSelectionRange: function() { - var range = this.ace.getSelectionRange(); - var doc = this.ace.session.doc; - return { - start: doc.positionToIndex(range.start), - end: doc.positionToIndex(range.end) - }; - }, - createSelection: function(start, end) { - var doc = this.ace.session.doc; - this.ace.selection.setRange({ - start: doc.indexToPosition(start), - end: doc.indexToPosition(end) - }); - }, - getCurrentLineRange: function() { - var ace = this.ace; - var row = ace.getCursorPosition().row; - var lineLength = ace.session.getLine(row).length; - var index = ace.session.doc.positionToIndex({row: row, column: 0}); - return { - start: index, - end: index + lineLength - }; - }, - getCaretPos: function(){ - var pos = this.ace.getCursorPosition(); - return this.ace.session.doc.positionToIndex(pos); - }, - setCaretPos: function(index){ - var pos = this.ace.session.doc.indexToPosition(index); - this.ace.selection.moveToPosition(pos); - }, - getCurrentLine: function() { - var row = this.ace.getCursorPosition().row; - return this.ace.session.getLine(row); - }, - replaceContent: function(value, start, end, noIndent) { - if (end == null) - end = start == null ? this.getContent().length : start; - if (start == null) - start = 0; - - var editor = this.ace; - var doc = editor.session.doc; - var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end)); - editor.session.remove(range); - - range.end = range.start; - - value = this.$updateTabstops(value); - snippetManager.insertSnippet(editor, value); - }, - getContent: function(){ - return this.ace.getValue(); - }, - getSyntax: function() { - if (this.$syntax) - return this.$syntax; - var syntax = this.ace.session.$modeId.split("/").pop(); - if (syntax == "html" || syntax == "php") { - var cursor = this.ace.getCursorPosition(); - var state = this.ace.session.getState(cursor.row); - if (typeof state != "string") - state = state[0]; - if (state) { - state = state.split("-"); - if (state.length > 1) - syntax = state[0]; - else if (syntax == "php") - syntax = "html"; - } - } - return syntax; - }, - getProfileName: function() { - var resources = emmet.resources || emmet.require("resources"); - switch (this.getSyntax()) { - case "css": return "css"; - case "xml": - case "xsl": - return "xml"; - case "html": - var profile = resources.getVariable("profile"); - if (!profile) - profile = this.ace.session.getLines(0,2).join("").search(/]+XHTML/i) != -1 ? "xhtml": "html"; - return profile; - default: - var mode = this.ace.session.$mode; - return mode.emmetConfig && mode.emmetConfig.profile || "xhtml"; - } - }, - prompt: function(title) { - return prompt(title); // eslint-disable-line no-alert - }, - getSelection: function() { - return this.ace.session.getTextRange(); - }, - getFilePath: function() { - return ""; - }, - $updateTabstops: function(value) { - var base = 1000; - var zeroBase = 0; - var lastZero = null; - var ts = emmet.tabStops || emmet.require('tabStops'); - var resources = emmet.resources || emmet.require("resources"); - var settings = resources.getVocabulary("user"); - var tabstopOptions = { - tabstop: function(data) { - var group = parseInt(data.group, 10); - var isZero = group === 0; - if (isZero) - group = ++zeroBase; - else - group += base; - - var placeholder = data.placeholder; - if (placeholder) { - placeholder = ts.processText(placeholder, tabstopOptions); - } - - var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}'; - - if (isZero) { - lastZero = [data.start, result]; - } - - return result; - }, - escape: function(ch) { - if (ch == '$') return '\\$'; - if (ch == '\\') return '\\\\'; - return ch; - } - }; - - value = ts.processText(value, tabstopOptions); - - if (settings.variables['insert_final_tabstop'] && !/\$\{0\}$/.test(value)) { - value += '${0}'; - } else if (lastZero) { - var common = emmet.utils ? emmet.utils.common : emmet.require('utils'); - value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]); - } - - return value; - } -}; - - -var keymap = { - expand_abbreviation: {"mac": "ctrl+alt+e", "win": "alt+e"}, - match_pair_outward: {"mac": "ctrl+d", "win": "ctrl+,"}, - match_pair_inward: {"mac": "ctrl+j", "win": "ctrl+shift+0"}, - matching_pair: {"mac": "ctrl+alt+j", "win": "alt+j"}, - next_edit_point: "alt+right", - prev_edit_point: "alt+left", - toggle_comment: {"mac": "command+/", "win": "ctrl+/"}, - split_join_tag: {"mac": "shift+command+'", "win": "shift+ctrl+`"}, - remove_tag: {"mac": "command+'", "win": "shift+ctrl+;"}, - evaluate_math_expression: {"mac": "shift+command+y", "win": "shift+ctrl+y"}, - increment_number_by_1: "ctrl+up", - decrement_number_by_1: "ctrl+down", - increment_number_by_01: "alt+up", - decrement_number_by_01: "alt+down", - increment_number_by_10: {"mac": "alt+command+up", "win": "shift+alt+up"}, - decrement_number_by_10: {"mac": "alt+command+down", "win": "shift+alt+down"}, - select_next_item: {"mac": "shift+command+.", "win": "shift+ctrl+."}, - select_previous_item: {"mac": "shift+command+,", "win": "shift+ctrl+,"}, - reflect_css_value: {"mac": "shift+command+r", "win": "shift+ctrl+r"}, - - encode_decode_data_url: {"mac": "shift+ctrl+d", "win": "ctrl+'"}, - expand_abbreviation_with_tab: "Tab", - wrap_with_abbreviation: {"mac": "shift+ctrl+a", "win": "shift+ctrl+a"} -}; - -var editorProxy = new AceEmmetEditor(); -exports.commands = new HashHandler(); -exports.runEmmetCommand = function runEmmetCommand(editor) { - if (this.action == "expand_abbreviation_with_tab") { - if (!editor.selection.isEmpty()) - return false; - var pos = editor.selection.lead; - var token = editor.session.getTokenAt(pos.row, pos.column); - if (token && /\btag\b/.test(token.type)) - return false; - } - try { - editorProxy.setupContext(editor); - var actions = emmet.actions || emmet.require("actions"); - - if (this.action == "wrap_with_abbreviation") { - return setTimeout(function() { - actions.run("wrap_with_abbreviation", editorProxy); - }, 0); - } - - var result = actions.run(this.action, editorProxy); - } catch(e) { - if (!emmet) { - var loading = exports.load(runEmmetCommand.bind(this, editor)); - if (this.action == "expand_abbreviation_with_tab") - return false; - return loading; - } - editor._signal("changeStatus", typeof e == "string" ? e : e.message); - config.warn(e); - result = false; - } - return result; -}; - -for (var command in keymap) { - exports.commands.addCommand({ - name: "emmet:" + command, - action: command, - bindKey: keymap[command], - exec: exports.runEmmetCommand, - multiSelectAction: "forEach" - }); -} - -exports.updateCommands = function(editor, enabled) { - if (enabled) { - editor.keyBinding.addKeyboardHandler(exports.commands); - } else { - editor.keyBinding.removeKeyboardHandler(exports.commands); - } -}; - -exports.isSupportedMode = function(mode) { - if (!mode) return false; - if (mode.emmetConfig) return true; - var id = mode.$id || mode; - return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id); -}; - -exports.isAvailable = function(editor, command) { - if (/(evaluate_math_expression|expand_abbreviation)$/.test(command)) - return true; - var mode = editor.session.$mode; - var isSupported = exports.isSupportedMode(mode); - if (isSupported && mode.$modes) { - try { - editorProxy.setupContext(editor); - if (/js|php/.test(editorProxy.getSyntax())) - isSupported = false; - } catch(e) {} - } - return isSupported; -}; - -var onChangeMode = function(e, target) { - var editor = target; - if (!editor) - return; - var enabled = exports.isSupportedMode(editor.session.$mode); - if (e.enableEmmet === false) - enabled = false; - if (enabled) - exports.load(); - exports.updateCommands(editor, enabled); -}; - -exports.load = function(cb) { - if (typeof emmetPath !== "string") { - config.warn("script for emmet-core is not loaded"); - return false; - } - config.loadModule(emmetPath, function() { - emmetPath = null; - cb && cb(); - }); - return true; -}; - -exports.AceEmmetEditor = AceEmmetEditor; -config.defineOptions(Editor.prototype, "editor", { - enableEmmet: { - set: function(val) { - this[val ? "on" : "removeListener"]("changeMode", onChangeMode); - onChangeMode({enableEmmet: !!val}, this); - }, - value: true - } -}); - -exports.setCore = function(e) { - if (typeof e == "string") - emmetPath = e; - else - emmet = e; -}; -}); (function() { - ace.require(["ace/ext/emmet"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-error_marker.js b/src-noconflict/ext-error_marker.js deleted file mode 100644 index aa44a52..0000000 --- a/src-noconflict/ext-error_marker.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/ext/error_marker"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-hardwrap.js b/src-noconflict/ext-hardwrap.js deleted file mode 100644 index 43b8970..0000000 --- a/src-noconflict/ext-hardwrap.js +++ /dev/null @@ -1,85 +0,0 @@ -ace.define("ace/ext/hardwrap",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -function hardWrap(editor, options) { - var max = options.column || editor.getOption("printMarginColumn"); - - var row = Math.min(options.startRow, options.endRow); - var endRow = Math.max(options.startRow, options.endRow); - - var session = editor.session; - - while (row <= endRow) { - var line = session.getLine(row); - if (line.length > max) { - var space = findSpace(line, max, 5); - if (space) { - session.replace(new Range(row,space.start,row,space.end), "\n"); - } - endRow++; - } else if (/\S/.test(line) && row != endRow) { - var nextLine = session.getLine(row + 1); - if (nextLine && /\S/.test(nextLine)) { - var trimmedLine = line.replace(/\s+$/, ""); - var trimmedNextLine = nextLine.replace(/^\s+/, ""); - var mergedLine = trimmedLine + " " + trimmedNextLine; - - var space = findSpace(mergedLine, max, 5); - if (space && space.start > trimmedLine.length || mergedLine.length < max) { - var replaceRange = new Range(row,trimmedLine.length,row + 1,nextLine.length - trimmedNextLine.length); - session.replace(replaceRange, " "); - row--; - endRow--; - } - } - } - row++; - } - - function findSpace(line, max, min) { - if (line.length < max) - return; - var before = line.slice(0, max); - var after = line.slice(max); - var spaceAfter = /^(?:(\s+)|(\S+)(\s+))/.exec(after); - var spaceBefore = /(?:(\s+)|(\s+)(\S+))$/.exec(before); - var start = 0; - var end = 0; - if (spaceBefore && !spaceBefore[2]) { - start = max - spaceBefore[1].length; - end = max; - } - if (spaceAfter && !spaceAfter[2]) { - if (!start) - start = max; - end = max + spaceAfter[1].length; - } - if (start) { - return { - start: start, - end: end - }; - } - if (spaceBefore && spaceBefore[2] && spaceBefore.index > min) { - return { - start: spaceBefore.index, - end: spaceBefore.index + spaceBefore[3].length - }; - } - - } - -} - -exports.hardWrap = hardWrap; - -}); (function() { - ace.require(["ace/ext/hardwrap"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-keybinding_menu.js b/src-noconflict/ext-keybinding_menu.js deleted file mode 100644 index 70e2e56..0000000 --- a/src-noconflict/ext-keybinding_menu.js +++ /dev/null @@ -1,193 +0,0 @@ -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -'use strict'; -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 100000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}\ -.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\ -vertical-align: middle;\ -}\ -.ace_optionsMenuEntry button[ace_selected_button=true] {\ -background: #e7e7e7;\ -box-shadow: 1px 0px 2px 0px #adadad inset;\ -border-color: #adadad;\ -}\ -.ace_optionsMenuEntry button {\ -background: white;\ -border: 1px solid lightgray;\ -margin: 0px;\ -}\ -.ace_optionsMenuEntry button:hover{\ -background: #f0f0f0;\ -}"; -dom.importCssString(cssText, "settings_menu.css", false); - -module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { - var closer = document.createElement('div'); - var ignoreFocusOut = false; - - function documentEscListener(e) { - if (e.keyCode === 27) { - close(); - } - } - - function close() { - if (!closer) return; - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - if (editor) { - editor.focus(); - } - closer = null; - callback && callback(); - } - function setIgnoreFocusOut(ignore) { - ignoreFocusOut = ignore; - if (ignore) { - closer.style.pointerEvents = "none"; - contentElement.style.pointerEvents = "auto"; - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); - closer.addEventListener('click', function(e) { - if (!ignoreFocusOut) { - close(); - } - }); - document.addEventListener('keydown', documentEscListener); - - contentElement.addEventListener('click', function (e) { - e.stopPropagation(); - }); - - closer.appendChild(contentElement); - document.body.appendChild(closer); - if (editor) { - editor.blur(); - } - return { - close: close, - setIgnoreFocusOut: setIgnoreFocusOut - }; -}; - -}); - -ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"], function(require, exports, module) { -"use strict"; -var keys = require("../../lib/keys"); -module.exports.getEditorKeybordShortcuts = function(editor) { - var KEY_MODS = keys.KEY_MODS; - var keybindings = []; - var commandMap = {}; - editor.keyBinding.$handlers.forEach(function(handler) { - var ckb = handler.commandKeyBinding; - for (var i in ckb) { - var key = i.replace(/(^|-)\w/g, function(x) { return x.toUpperCase(); }); - var commands = ckb[i]; - if (!Array.isArray(commands)) - commands = [commands]; - commands.forEach(function(command) { - if (typeof command != "string") - command = command.name; - if (commandMap[command]) { - commandMap[command].key += "|" + key; - } else { - commandMap[command] = {key: key, command: command}; - keybindings.push(commandMap[command]); - } - }); - } - }); - return keybindings; -}; - -}); - -ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"], function(require, exports, module) { - "use strict"; - var Editor = require("../editor").Editor; - function showKeyboardShortcuts (editor) { - if(!document.getElementById('kbshortcutmenu')) { - var overlayPage = require('./menu_tools/overlay_page').overlayPage; - var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts; - var kb = getEditorKeybordShortcuts(editor); - var el = document.createElement('div'); - var commands = kb.reduce(function(previous, current) { - return previous + '
    ' - + current.command + ' : ' - + '' + current.key + '
    '; - }, ''); - - el.id = 'kbshortcutmenu'; - el.innerHTML = '

    Keyboard Shortcuts

    ' + commands + ''; - overlayPage(editor, el); - } - } - module.exports.init = function(editor) { - Editor.prototype.showKeyboardShortcuts = function() { - showKeyboardShortcuts(this); - }; - editor.commands.addCommands([{ - name: "showKeyboardShortcuts", - bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"}, - exec: function(editor, line) { - editor.showKeyboardShortcuts(); - } - }]); - }; - -}); (function() { - ace.require(["ace/ext/keybinding_menu"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-language_tools.js b/src-noconflict/ext-language_tools.js deleted file mode 100644 index 2ef29e3..0000000 --- a/src-noconflict/ext-language_tools.js +++ /dev/null @@ -1,2166 +0,0 @@ -ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module) { -"use strict"; -var dom = require("./lib/dom"); -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var RangeList = require("./range_list").RangeList; -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var clipboard = require("./clipboard"); - -var VARIABLES = { - CURRENT_WORD: function(editor) { - return editor.session.getTextRange(editor.session.getWordRange()); - }, - SELECTION: function(editor, name, indentation) { - var text = editor.session.getTextRange(); - if (indentation) - return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); - return text; - }, - CURRENT_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row); - }, - PREV_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row - 1); - }, - LINE_INDEX: function(editor) { - return editor.getCursorPosition().row; - }, - LINE_NUMBER: function(editor) { - return editor.getCursorPosition().row + 1; - }, - SOFT_TABS: function(editor) { - return editor.session.getUseSoftTabs() ? "YES" : "NO"; - }, - TAB_SIZE: function(editor) { - return editor.session.getTabSize(); - }, - CLIPBOARD: function(editor) { - return clipboard.getText && clipboard.getText(); - }, - FILENAME: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; - }, - FILENAME_BASE: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); - }, - DIRECTORY: function(editor) { - return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); - }, - FILEPATH: function(editor) { return "/not implemented.txt"; }, - WORKSPACE_NAME: function() { return "Unknown"; }, - FULLNAME: function() { return "Unknown"; }, - BLOCK_COMMENT_START: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.start || ""; - }, - BLOCK_COMMENT_END: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.end || ""; - }, - LINE_COMMENT: function(editor) { - var mode = editor.session.$mode || {}; - return mode.lineCommentStart || ""; - }, - CURRENT_YEAR: date.bind(null, {year: "numeric"}), - CURRENT_YEAR_SHORT: date.bind(null, {year: "2-digit"}), - CURRENT_MONTH: date.bind(null, {month: "numeric"}), - CURRENT_MONTH_NAME: date.bind(null, {month: "long"}), - CURRENT_MONTH_NAME_SHORT: date.bind(null, {month: "short"}), - CURRENT_DATE: date.bind(null, {day: "2-digit"}), - CURRENT_DAY_NAME: date.bind(null, {weekday: "long"}), - CURRENT_DAY_NAME_SHORT: date.bind(null, {weekday: "short"}), - CURRENT_HOUR: date.bind(null, {hour: "2-digit", hour12: false}), - CURRENT_MINUTE: date.bind(null, {minute: "2-digit"}), - CURRENT_SECOND: date.bind(null, {second: "2-digit"}) -}; - -VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; - -function date(dateFormat) { - var str = new Date().toLocaleString("en-us", dateFormat); - return str.length == 1 ? "0" + str : str; -} - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; -}; - -(function() { - oop.implement(this, EventEmitter); - - this.getTokenizer = function() { - return SnippetManager.$tokenizer || this.createTokenizer(); - }; - - this.createTokenizer = function() { - function TabstopToken(str) { - str = str.substr(1); - if (/^\d+$/.test(str)) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}]; - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - var formatMatcher = { - regex: "/(" + escape("/") + "+)/", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = true; - ts.guard = val.slice(1, -1); - ts.flag = ""; - return ""; - }, - next: "formatString" - }; - - SnippetManager.$tokenizer = new Tokenizer({ - start: [ - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - } else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1)); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} - ], - snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function(operator) { - return operator.length == 2 ? operator[1] : "\x00"; - }).split("\x00").map(function(value){ - return {value: value}; - }); - stack[0].choices = choices; - return [choices[0]]; - }, next: "start"}, - formatMatcher, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} - ], - formatString: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectElse) { - stack[0].expectElse = false; - stack[0].ifEnd = {elseEnd: stack[0]}; - return [stack[0].ifEnd]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) - val = ch; - else if ("`$\\".indexOf(ch) != -1) - val = ch; - else if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\t"; - else if ("ulULE".indexOf(ch) != -1) - val = {changeCase: ch, local: ch > "a"}; - return [val]; - }}, - {regex: "/\\w*}", onMatch: function(val, state, stack) { - var next = stack.shift(); - if (next) - next.flag = val.slice(1, -1); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"}, - {regex: /\$(?:\d+|\w+)/, onMatch: function(val, state, stack) { - return [{text: val.slice(1)}]; - }}, - {regex: /\${\w+/, onMatch: function(val, state, stack) { - var token = {text: val.slice(2)}; - stack.unshift(token); - return [token]; - }, next: "formatStringVar"}, - {regex: /\n/, token: "newline", merge: false}, - {regex: /}/, onMatch: function(val, state, stack) { - var next = stack.shift(); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"} - ], - formatStringVar: [ - {regex: /:\/\w+}/, onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.formatFunction = val.slice(2, -1); - return [stack.shift()]; - }, next: "formatString"}, - formatMatcher, - {regex: /:[\?\-+]?/, onMatch: function(val, state, stack) { - if (val[1] == "+") - stack[0].ifEnd = stack[0]; - if (val[1] == "?") - stack[0].expectElse = true; - }, next: "formatString"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString"} - ] - }); - return SnippetManager.$tokenizer; - }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { - return x.value || x; - }); - }; - - this.getVariableValue = function(editor, name, indentation) { - if (/^\d+$/.test(name)) - return (this.variables.__ || {})[name] || ""; - if (/^[A-Z]\d+$/.test(name)) - return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; - - name = name.replace(/^TM_/, ""); - if (!this.variables.hasOwnProperty(name)) - return ""; - var value = this.variables[name]; - if (typeof value == "function") - value = this.variables[name](editor, name, indentation); - return value == null ? "" : value; - }; - - this.variables = VARIABLES; - this.tmStrFormat = function(str, ch, editor) { - if (!ch.fmt) return str; - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gim]/g, "")); - var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; - var _self = this; - var formatted = str.replace(re, function() { - var oldArgs = _self.variables.__; - _self.variables.__ = [].slice.call(arguments); - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - _self.variables.__ = oldArgs; - return fmtParts.join(""); - }); - return formatted; - }; - - this.tmFormatFunction = function(str, ch, editor) { - if (ch.formatFunction == "upcase") - return str.toUpperCase(); - if (ch.formatFunction == "downcase") - return str.toLowerCase(); - return str; - }; - - this.resolveVariables = function(snippet, editor) { - var result = []; - var indentation = ""; - var afterNewLine = true; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - if (ch == "\n") { - afterNewLine = true; - indentation = ""; - } - else if (afterNewLine) { - indentation = /^\t*/.exec(ch)[0]; - afterNewLine = /\S/.test(ch); - } - continue; - } - if (!ch) continue; - afterNewLine = false; - - if (ch.fmtString) { - var j = snippet.indexOf(ch, i + 1); - if (j == -1) j = snippet.length; - ch.fmt = snippet.slice(i + 1, j); - i = j; - } - - if (ch.text) { - var value = this.getVariableValue(editor, ch.text, indentation) + ""; - if (ch.fmtString) - value = this.tmStrFormat(value, ch, editor); - if (ch.formatFunction) - value = this.tmFormatFunction(value, ch, editor); - - if (value && !ch.ifEnd) { - result.push(value); - gotoNext(ch); - } else if (!value && ch.ifEnd) { - gotoNext(ch.ifEnd); - } - } else if (ch.elseEnd) { - gotoNext(ch.elseEnd); - } else if (ch.tabstopId != null) { - result.push(ch); - } else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - - this.insertSnippetForSelection = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - ts.parents = {}; - } - if (ts.indexOf(p) !== -1) - return; - if (p.choices && !ts.choices) - ts.choices = p.choices; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object";}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0;}); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var ts = tabstops[id]; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) { - delete expanding[id]; - Object.keys(expanding).forEach(function(parentId) { - ts.parents[parentId] = true; - }); - } - continue; - } - expanding[id] = p; - var value = ts.value; - if (typeof value !== "string") - value = copyValue(value); - else if (p.fmt) - value = this.tmStrFormat(value, p, editor); - tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); - - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1){ - column = lines[lines.length - 1].length; - row += lines.length - 1; - } else - column += t.length; - text += t; - } else if (t) { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - - var tabstopManager = new TabstopManager(editor); - var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(tabstops, range.start, end, selectionId); - }; - - this.insertSnippet = function(editor, snippetText) { - var self = this; - if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText); - - editor.forEachSelection(function() { - self.insertSnippetForSelection(editor, snippetText); - }, null, {keepOrder: true}); - - if (editor.tabstopManager) - editor.tabstopManager.tabNext(); - }; - - this.$getScope = function(editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) - scope = "html"; - var c = editor.getCursorPosition(); - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - - return scope; - }; - - this.getActiveScopes = function(editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - - this.expandWithTab = function(editor, options) { - var self = this; - var result = editor.forEachSelection(function() { - return self.expandSnippetForSelection(editor, options); - }, null, {keepOrder: true}); - if (result && editor.tabstopManager) - editor.tabstopManager.tabNext(); - return result; - }; - - this.expandSnippetForSelection = function(editor, options) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - if (options && options.dryRun) - return true; - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippetForSelection(editor, snippet.content); - - this.variables.M__ = this.variables.T__ = null; - return true; - }; - - this.findMatchingSnippet = function(snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - - if (!snippets) - snippets = []; - - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")"; - - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope; - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - - if (s.prefix) - s.tabTrigger = s.prefix; - - if (!s.content && s.body) - s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; - - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) - return; - - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger); - - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger); - } - - if (Array.isArray(snippets)) { - snippets.forEach(addSnippet); - } else { - Object.keys(snippets).forEach(function(key) { - addSnippet(snippets[key]); - }); - } - - this._signal("registerSnippets", {scope: scope}); - }; - this.unregister = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - this.parseSnippetFile = function(str) { - str = str.replace(/\r/g, ""); - var list = [], snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]); - list.push(snippet); - } catch (e) {} - } if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } else if (key) { - snippet[key] = val; - } - } - } - return list; - }; - this.getSnippetByName = function(name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); -}; -(function() { - this.attach = function(editor) { - this.index = 0; - this.ranges = []; - this.tabstops = []; - this.$openTabstops = null; - this.selectedTabstop = null; - - this.editor = editor; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.detach = function() { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; - this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.editor = null; - }; - - this.onChange = function(delta) { - var isRemove = delta.action[0] == "r"; - var selectedTabstop = this.selectedTabstop || {}; - var parents = selectedTabstop.parents || {}; - var tabstops = (this.tabstops || []).slice(); - for (var i = 0; i < tabstops.length; i++) { - var ts = tabstops[i]; - var active = ts == selectedTabstop || parents[ts.index]; - ts.rangeList.$bias = active ? 0 : 1; - - if (delta.action == "remove" && ts !== selectedTabstop) { - var parentActive = ts.parents && ts.parents[selectedTabstop.index]; - var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); - startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; - var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); - endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; - var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); - for (var j = 0; j < toRemove.length; j++) - this.removeRange(toRemove[j]); - } - ts.rangeList.$onChange(delta); - } - var session = this.editor.session; - if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) - this.detach(); - }; - this.updateLinkedFields = function() { - var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) - return; - this.$inChange = true; - var session = this.editor.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = 0; i < ts.length; i++) { - var range = ts[i]; - if (!range.linked) - continue; - var original = range.original; - var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); - session.replace(range, fmt); - } - this.$inChange = false; - }; - this.onAfterExec = function(e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - this.onChangeSelection = function() { - if (!this.editor) - return; - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = 0; i < this.ranges.length; i++) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - this.onChangeSession = function() { - this.detach(); - }; - this.tabNext = function(dir) { - var max = this.tabstops.length; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 1), max); - if (index == max) - index = 0; - this.selectTabstop(index); - if (index === 0) - this.detach(); - }; - this.selectTabstop = function(index) { - this.$openTabstops = null; - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - - this.selectedTabstop = ts; - var range = ts.firstNonLinked || ts; - if (ts.choices) range.cursor = range.start; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(range); - for (var i = 0; i < ts.length; i++) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } else { - this.editor.selection.fromOrientedRange(range); - } - - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - if (this.selectedTabstop && this.selectedTabstop.choices) - this.editor.execCommand("startAutocomplete", {matches: this.selectedTabstop.choices}); - }; - this.addTabstops = function(tabstops, start, end) { - var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); - - if (!this.$openTabstops) - this.$openTabstops = []; - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - - var i = this.index; - var arg = [i + 1, 0]; - var ranges = this.ranges; - tabstops.forEach(function(ts, index) { - var dest = this.$openTabstops[index] || ts; - - for (var i = 0; i < ts.length; i++) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = dest; - ranges.push(range); - if (dest != ts) - dest.unshift(range); - else - dest[i] = range; - if (p.fmtString || (dest.firstNonLinked && useLink)) { - range.linked = true; - dest.hasLinkedRanges = true; - } else if (!dest.firstNonLinked) - dest.firstNonLinked = range; - } - if (!dest.firstNonLinked) - dest.hasLinkedRanges = false; - if (dest === ts) { - arg.push(dest); - this.$openTabstops[index] = dest; - } - this.addTabstopMarkers(dest); - dest.rangeList = dest.rangeList || new RangeList(); - dest.rangeList.$bias = 0; - dest.rangeList.addList(dest); - }, this); - - if (arg.length > 2) { - if (this.tabstops.length) - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - } - }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - this.removeRange = function(range) { - var i = range.tabstop.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - if (i != -1) this.ranges.splice(i, 1); - i = range.tabstop.rangeList.ranges.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - this.editor.session.removeMarker(range.markerId); - if (!range.tabstop.length) { - i = this.tabstops.indexOf(range.tabstop); - if (i != -1) - this.tabstops.splice(i, 1); - if (!this.tabstops.length) - this.detach(); - } - }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(editor) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) - return; - editor.tabstopManager.tabNext(1); - editor.renderer.scrollCursorIntoView(); - }, - "Shift-Tab": function(editor) { - editor.tabstopManager.tabNext(-1); - editor.renderer.scrollCursorIntoView(); - }, - "Esc": function(editor) { - editor.tabstopManager.detach(); - } - }); -}).call(TabstopManager.prototype); - - - -var movePoint = function(point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; - -var moveRelative = function(point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; - - -dom.importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}", "snippets.css", false); - -exports.snippetManager = new SnippetManager(); - - -var Editor = require("./editor").Editor; -(function() { - this.insertSnippet = function(content, options) { - return exports.snippetManager.insertSnippet(this, content, options); - }; - this.expandSnippet = function(options) { - return exports.snippetManager.expandWithTab(this, options); - }; -}).call(Editor.prototype); - -}); - -ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var Renderer = require("../virtual_renderer").VirtualRenderer; -var Editor = require("../editor").Editor; -var Range = require("../range").Range; -var event = require("../lib/event"); -var lang = require("../lib/lang"); -var dom = require("../lib/dom"); - -var $singleLineEditor = function(el) { - var renderer = new Renderer(el); - - renderer.$maxLines = 4; - - var editor = new Editor(renderer); - - editor.setHighlightActiveLine(false); - editor.setShowPrintMargin(false); - editor.renderer.setShowGutter(false); - editor.renderer.setHighlightGutterLine(false); - - editor.$mouseHandler.$focusTimeout = 0; - editor.$highlightTagPending = true; - - return editor; -}; - -var AcePopup = function(parentNode) { - var el = dom.createElement("div"); - var popup = new $singleLineEditor(el); - - if (parentNode) - parentNode.appendChild(el); - el.style.display = "none"; - popup.renderer.content.style.cursor = "default"; - popup.renderer.setStyle("ace_autocomplete"); - - popup.setOption("displayIndentGuides", false); - popup.setOption("dragDelay", 150); - - var noop = function(){}; - - popup.focus = noop; - popup.$isFocused = true; - - popup.renderer.$cursorLayer.restartTimer = noop; - popup.renderer.$cursorLayer.element.style.opacity = 0; - - popup.renderer.$maxLines = 8; - popup.renderer.$keepTextAreaAtCursor = false; - - popup.setHighlightActiveLine(false); - popup.session.highlight(""); - popup.session.$searchHighlight.clazz = "ace_highlight-marker"; - - popup.on("mousedown", function(e) { - var pos = e.getDocumentPosition(); - popup.selection.moveToPosition(pos); - selectionMarker.start.row = selectionMarker.end.row = pos.row; - e.stop(); - }); - - var lastMouseEvent; - var hoverMarker = new Range(-1,0,-1,Infinity); - var selectionMarker = new Range(-1,0,-1,Infinity); - selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); - popup.setSelectOnHover = function(val) { - if (!val) { - hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); - } else if (hoverMarker.id) { - popup.session.removeMarker(hoverMarker.id); - hoverMarker.id = null; - } - }; - popup.setSelectOnHover(false); - popup.on("mousemove", function(e) { - if (!lastMouseEvent) { - lastMouseEvent = e; - return; - } - if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { - return; - } - lastMouseEvent = e; - lastMouseEvent.scrollTop = popup.renderer.scrollTop; - var row = lastMouseEvent.getDocumentPosition().row; - if (hoverMarker.start.row != row) { - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row); - } - }); - popup.renderer.on("beforeRender", function() { - if (lastMouseEvent && hoverMarker.start.row != -1) { - lastMouseEvent.$pos = null; - var row = lastMouseEvent.getDocumentPosition().row; - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row, true); - } - }); - popup.renderer.on("afterRender", function() { - var row = popup.getRow(); - var t = popup.renderer.$textLayer; - var selected = t.element.childNodes[row - t.config.firstRow]; - if (selected !== t.selectedNode && t.selectedNode) - dom.removeCssClass(t.selectedNode, "ace_selected"); - t.selectedNode = selected; - if (selected) - dom.addCssClass(selected, "ace_selected"); - }); - var hideHoverMarker = function() { setHoverMarker(-1); }; - var setHoverMarker = function(row, suppressRedraw) { - if (row !== hoverMarker.start.row) { - hoverMarker.start.row = hoverMarker.end.row = row; - if (!suppressRedraw) - popup.session._emit("changeBackMarker"); - popup._emit("changeHoverMarker"); - } - }; - popup.getHoveredRow = function() { - return hoverMarker.start.row; - }; - - event.addListener(popup.container, "mouseout", hideHoverMarker); - popup.on("hide", hideHoverMarker); - popup.on("changeSelection", hideHoverMarker); - - popup.session.doc.getLength = function() { - return popup.data.length; - }; - popup.session.doc.getLine = function(i) { - var data = popup.data[i]; - if (typeof data == "string") - return data; - return (data && data.value) || ""; - }; - - var bgTokenizer = popup.session.bgTokenizer; - bgTokenizer.$tokenizeRow = function(row) { - var data = popup.data[row]; - var tokens = []; - if (!data) - return tokens; - if (typeof data == "string") - data = {value: data}; - var caption = data.caption || data.value || data.name; - - function addToken(value, className) { - value && tokens.push({ - type: (data.className || "") + (className || ""), - value: value - }); - } - - var lower = caption.toLowerCase(); - var filterText = (popup.filterText || "").toLowerCase(); - var lastIndex = 0; - var lastI = 0; - for (var i = 0; i <= filterText.length; i++) { - if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { - var sub = filterText.slice(lastI, i); - lastI = i; - var index = lower.indexOf(sub, lastIndex); - if (index == -1) continue; - addToken(caption.slice(lastIndex, index), ""); - lastIndex = index + sub.length; - addToken(caption.slice(index, lastIndex), "completion-highlight"); - } - } - addToken(caption.slice(lastIndex, caption.length), ""); - - if (data.meta) - tokens.push({type: "completion-meta", value: data.meta}); - if (data.message) - tokens.push({type: "completion-message", value: data.message}); - - return tokens; - }; - bgTokenizer.$updateOnChange = noop; - bgTokenizer.start = noop; - - popup.session.$computeWidth = function() { - return this.screenWidth = 0; - }; - popup.isOpen = false; - popup.isTopdown = false; - popup.autoSelect = true; - popup.filterText = ""; - - popup.data = []; - popup.setData = function(list, filterText) { - popup.filterText = filterText || ""; - popup.setValue(lang.stringRepeat("\n", list.length), -1); - popup.data = list || []; - popup.setRow(0); - }; - popup.getData = function(row) { - return popup.data[row]; - }; - - popup.getRow = function() { - return selectionMarker.start.row; - }; - popup.setRow = function(line) { - line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line)); - if (selectionMarker.start.row != line) { - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = line || 0; - popup.session._emit("changeBackMarker"); - popup.moveCursorTo(line || 0, 0); - if (popup.isOpen) - popup._signal("select"); - } - }; - - popup.on("changeSelection", function() { - if (popup.isOpen) - popup.setRow(popup.selection.lead.row); - popup.renderer.scrollCursorIntoView(); - }); - - popup.hide = function() { - this.container.style.display = "none"; - this._signal("hide"); - popup.isOpen = false; - }; - popup.show = function(pos, lineHeight, topdownOnly) { - var el = this.container; - var screenHeight = window.innerHeight; - var screenWidth = window.innerWidth; - var renderer = this.renderer; - var maxH = renderer.$maxLines * lineHeight * 1.4; - var top = pos.top + this.$borderSize; - var allowTopdown = top > screenHeight / 2 && !topdownOnly; - if (allowTopdown && top + lineHeight + maxH > screenHeight) { - renderer.$maxPixelHeight = top - 2 * this.$borderSize; - el.style.top = ""; - el.style.bottom = screenHeight - top + "px"; - popup.isTopdown = false; - } else { - top += lineHeight; - renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight; - el.style.top = top + "px"; - el.style.bottom = ""; - popup.isTopdown = true; - } - - el.style.display = ""; - - var left = pos.left; - if (left + el.offsetWidth > screenWidth) - left = screenWidth - el.offsetWidth; - - el.style.left = left + "px"; - - this._signal("show"); - lastMouseEvent = null; - popup.isOpen = true; - }; - - popup.goTo = function(where) { - var row = this.getRow(); - var max = this.session.getLength() - 1; - - switch(where) { - case "up": row = row <= 0 ? max : row - 1; break; - case "down": row = row >= max ? -1 : row + 1; break; - case "start": row = 0; break; - case "end": row = max; break; - } - - this.setRow(row); - }; - - - popup.getTextLeftOffset = function() { - return this.$borderSize + this.renderer.$padding + this.$imageSize; - }; - - popup.$imageSize = 0; - popup.$borderSize = 1; - - return popup; -}; - -dom.importCssString("\ -.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ - background-color: #CAD6FA;\ - z-index: 1;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ - background-color: #3a674e;\ -}\ -.ace_editor.ace_autocomplete .ace_line-hover {\ - border: 1px solid #abbffe;\ - margin-top: -1px;\ - background: rgba(233,233,253,0.4);\ - position: absolute;\ - z-index: 2;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\ - border: 1px solid rgba(109, 150, 13, 0.8);\ - background: rgba(58, 103, 78, 0.62);\ -}\ -.ace_completion-meta {\ - opacity: 0.5;\ - margin: 0.9em;\ -}\ -.ace_completion-message {\ - color: blue;\ -}\ -.ace_editor.ace_autocomplete .ace_completion-highlight{\ - color: #2d69c7;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\ - color: #93ca12;\ -}\ -.ace_editor.ace_autocomplete {\ - width: 300px;\ - z-index: 200000;\ - border: 1px lightgray solid;\ - position: fixed;\ - box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ - line-height: 1.4;\ - background: #fefefe;\ - color: #111;\ -}\ -.ace_dark.ace_editor.ace_autocomplete {\ - border: 1px #484747 solid;\ - box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\ - line-height: 1.4;\ - background: #25282c;\ - color: #c1c1c1;\ -}", "autocompletion.css", false); - -exports.AcePopup = AcePopup; -exports.$singleLineEditor = $singleLineEditor; -}); - -ace.define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.parForEach = function(array, fn, callback) { - var completed = 0; - var arLength = array.length; - if (arLength === 0) - callback(); - for (var i = 0; i < arLength; i++) { - fn(array[i], function(result, err) { - completed++; - if (completed === arLength) - callback(result, err); - }); - } -}; - -var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; - -exports.retrievePrecedingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos-1; i >= 0; i--) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf.reverse().join(""); -}; - -exports.retrieveFollowingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos; i < text.length; i++) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf; -}; - -exports.getCompletionPrefix = function (editor) { - var pos = editor.getCursorPosition(); - var line = editor.session.getLine(pos.row); - var prefix; - editor.completers.forEach(function(completer) { - if (completer.identifierRegexps) { - completer.identifierRegexps.forEach(function(identifierRegex) { - if (!prefix && identifierRegex) - prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); - }.bind(this)); - } - }.bind(this)); - return prefix || this.retrievePrecedingIdentifier(line, pos.column); -}; - -}); - -ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config"], function(require, exports, module) { -"use strict"; - -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var AcePopup = require("./autocomplete/popup").AcePopup; -var util = require("./autocomplete/util"); -var lang = require("./lib/lang"); -var dom = require("./lib/dom"); -var snippetManager = require("./snippets").snippetManager; -var config = require("./config"); - -var Autocomplete = function() { - this.autoInsert = false; - this.autoSelect = true; - this.exactMatch = false; - this.gatherCompletionsId = 0; - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys(this.commands); - - this.blurListener = this.blurListener.bind(this); - this.changeListener = this.changeListener.bind(this); - this.mousedownListener = this.mousedownListener.bind(this); - this.mousewheelListener = this.mousewheelListener.bind(this); - - this.changeTimer = lang.delayedCall(function() { - this.updateCompletions(true); - }.bind(this)); - - this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); -}; - -(function() { - - this.$init = function() { - this.popup = new AcePopup(document.body || document.documentElement); - this.popup.on("click", function(e) { - this.insertMatch(); - e.stop(); - }.bind(this)); - this.popup.focus = this.editor.focus.bind(this.editor); - this.popup.on("show", this.tooltipTimer.bind(null, null)); - this.popup.on("select", this.tooltipTimer.bind(null, null)); - this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); - return this.popup; - }; - - this.getPopup = function() { - return this.popup || this.$init(); - }; - - this.openPopup = function(editor, prefix, keepPopupPosition) { - if (!this.popup) - this.$init(); - - this.popup.autoSelect = this.autoSelect; - - this.popup.setData(this.completions.filtered, this.completions.filterText); - - editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - - var renderer = editor.renderer; - this.popup.setRow(this.autoSelect ? 0 : -1); - if (!keepPopupPosition) { - this.popup.setTheme(editor.getTheme()); - this.popup.setFontSize(editor.getFontSize()); - - var lineHeight = renderer.layerConfig.lineHeight; - - var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); - pos.left -= this.popup.getTextLeftOffset(); - - var rect = editor.container.getBoundingClientRect(); - pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left - editor.renderer.scrollLeft; - pos.left += renderer.gutterWidth; - - this.popup.show(pos, lineHeight); - } else if (keepPopupPosition && !prefix) { - this.detach(); - } - this.changeTimer.cancel(); - }; - - this.detach = function() { - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.off("changeSelection", this.changeListener); - this.editor.off("blur", this.blurListener); - this.editor.off("mousedown", this.mousedownListener); - this.editor.off("mousewheel", this.mousewheelListener); - this.changeTimer.cancel(); - this.hideDocTooltip(); - - this.gatherCompletionsId += 1; - if (this.popup && this.popup.isOpen) - this.popup.hide(); - - if (this.base) - this.base.detach(); - this.activated = false; - this.completions = this.base = null; - }; - - this.changeListener = function(e) { - var cursor = this.editor.selection.lead; - if (cursor.row != this.base.row || cursor.column < this.base.column) { - this.detach(); - } - if (this.activated) - this.changeTimer.schedule(); - else - this.detach(); - }; - - this.blurListener = function(e) { - var el = document.activeElement; - var text = this.editor.textInput.getElement(); - var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); - var container = this.popup && this.popup.container; - if (el != text && el.parentNode != container && !fromTooltip - && el != this.tooltipNode && e.relatedTarget != text - ) { - this.detach(); - } - }; - - this.mousedownListener = function(e) { - this.detach(); - }; - - this.mousewheelListener = function(e) { - this.detach(); - }; - - this.goTo = function(where) { - this.popup.goTo(where); - }; - - this.insertMatch = function(data, options) { - if (!data) - data = this.popup.getData(this.popup.getRow()); - if (!data) - return false; - - var completions = this.completions; - this.editor.startOperation({command: {name: "insertMatch"}}); - if (data.completer && data.completer.insertMatch) { - data.completer.insertMatch(this.editor, data); - } else { - if (completions.filterText) { - var ranges = this.editor.selection.getAllRanges(); - for (var i = 0, range; range = ranges[i]; i++) { - range.start.column -= completions.filterText.length; - this.editor.session.remove(range); - } - } - if (data.snippet) - snippetManager.insertSnippet(this.editor, data.snippet); - else - this.editor.execCommand("insertstring", data.value || data); - } - if (this.completions == completions) - this.detach(); - this.editor.endOperation(); - }; - - - this.commands = { - "Up": function(editor) { editor.completer.goTo("up"); }, - "Down": function(editor) { editor.completer.goTo("down"); }, - "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, - "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, - - "Esc": function(editor) { editor.completer.detach(); }, - "Return": function(editor) { return editor.completer.insertMatch(); }, - "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); }, - "Tab": function(editor) { - var result = editor.completer.insertMatch(); - if (!result && !editor.tabstopManager) - editor.completer.goTo("down"); - else - return result; - }, - - "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, - "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } - }; - - this.gatherCompletions = function(editor, callback) { - var session = editor.getSession(); - var pos = editor.getCursorPosition(); - - var prefix = util.getCompletionPrefix(editor); - - this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); - this.base.$insertRight = true; - - var matches = []; - var total = editor.completers.length; - editor.completers.forEach(function(completer, i) { - completer.getCompletions(editor, session, pos, prefix, function(err, results) { - if (!err && results) - matches = matches.concat(results); - callback(null, { - prefix: util.getCompletionPrefix(editor), - matches: matches, - finished: (--total === 0) - }); - }); - }); - return true; - }; - - this.showPopup = function(editor, options) { - if (this.editor) - this.detach(); - - this.activated = true; - - this.editor = editor; - if (editor.completer != this) { - if (editor.completer) - editor.completer.detach(); - editor.completer = this; - } - - editor.on("changeSelection", this.changeListener); - editor.on("blur", this.blurListener); - editor.on("mousedown", this.mousedownListener); - editor.on("mousewheel", this.mousewheelListener); - - this.updateCompletions(false, options); - }; - - this.updateCompletions = function(keepPopupPosition, options) { - if (keepPopupPosition && this.base && this.completions) { - var pos = this.editor.getCursorPosition(); - var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); - if (prefix == this.completions.filterText) - return; - this.completions.setFilter(prefix); - if (!this.completions.filtered.length) - return this.detach(); - if (this.completions.filtered.length == 1 - && this.completions.filtered[0].value == prefix - && !this.completions.filtered[0].snippet) - return this.detach(); - this.openPopup(this.editor, prefix, keepPopupPosition); - return; - } - - if (options && options.matches) { - var pos = this.editor.getSelectionRange().start; - this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); - this.base.$insertRight = true; - this.completions = new FilteredList(options.matches); - return this.openPopup(this.editor, "", keepPopupPosition); - } - var _id = this.gatherCompletionsId; - var detachIfFinished = function(results) { - if (!results.finished) return; - return this.detach(); - }.bind(this); - - var processResults = function(results) { - var prefix = results.prefix; - var matches = results.matches; - - this.completions = new FilteredList(matches); - - if (this.exactMatch) - this.completions.exactMatch = true; - - this.completions.setFilter(prefix); - var filtered = this.completions.filtered; - if (!filtered.length) - return detachIfFinished(results); - if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) - return detachIfFinished(results); - if (this.autoInsert && filtered.length == 1 && results.finished) - return this.insertMatch(filtered[0]); - - this.openPopup(this.editor, prefix, keepPopupPosition); - }.bind(this); - - var isImmediate = true; - var immediateResults = null; - this.gatherCompletions(this.editor, function(err, results) { - var prefix = results.prefix; - var matches = results && results.matches; - - if (!matches || !matches.length) - return detachIfFinished(results); - if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId) - return; - if (isImmediate) { - immediateResults = results; - return; - } - - processResults(results); - }.bind(this)); - - isImmediate = false; - if (immediateResults) { - var results = immediateResults; - immediateResults = null; - processResults(results); - } - }; - - this.cancelContextMenu = function() { - this.editor.$mouseHandler.cancelContextMenu(); - }; - - this.updateDocTooltip = function() { - var popup = this.popup; - var all = popup.data; - var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); - var doc = null; - if (!selected || !this.editor || !this.popup.isOpen) - return this.hideDocTooltip(); - this.editor.completers.some(function(completer) { - if (completer.getDocTooltip) - doc = completer.getDocTooltip(selected); - return doc; - }); - if (!doc && typeof selected != "string") - doc = selected; - - if (typeof doc == "string") - doc = {docText: doc}; - if (!doc || !(doc.docHTML || doc.docText)) - return this.hideDocTooltip(); - this.showDocTooltip(doc); - }; - - this.showDocTooltip = function(item) { - if (!this.tooltipNode) { - this.tooltipNode = dom.createElement("div"); - this.tooltipNode.className = "ace_tooltip ace_doc-tooltip"; - this.tooltipNode.style.margin = 0; - this.tooltipNode.style.pointerEvents = "auto"; - this.tooltipNode.tabIndex = -1; - this.tooltipNode.onblur = this.blurListener.bind(this); - this.tooltipNode.onclick = this.onTooltipClick.bind(this); - } - - var tooltipNode = this.tooltipNode; - if (item.docHTML) { - tooltipNode.innerHTML = item.docHTML; - } else if (item.docText) { - tooltipNode.textContent = item.docText; - } - - if (!tooltipNode.parentNode) - document.body.appendChild(tooltipNode); - var popup = this.popup; - var rect = popup.container.getBoundingClientRect(); - tooltipNode.style.top = popup.container.style.top; - tooltipNode.style.bottom = popup.container.style.bottom; - - tooltipNode.style.display = "block"; - if (window.innerWidth - rect.right < 320) { - if (rect.left < 320) { - if(popup.isTopdown) { - tooltipNode.style.top = rect.bottom + "px"; - tooltipNode.style.left = rect.left + "px"; - tooltipNode.style.right = ""; - tooltipNode.style.bottom = ""; - } else { - tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; - tooltipNode.style.left = rect.left + "px"; - tooltipNode.style.right = ""; - tooltipNode.style.bottom = ""; - } - } else { - tooltipNode.style.right = window.innerWidth - rect.left + "px"; - tooltipNode.style.left = ""; - } - } else { - tooltipNode.style.left = (rect.right + 1) + "px"; - tooltipNode.style.right = ""; - } - }; - - this.hideDocTooltip = function() { - this.tooltipTimer.cancel(); - if (!this.tooltipNode) return; - var el = this.tooltipNode; - if (!this.editor.isFocused() && document.activeElement == el) - this.editor.focus(); - this.tooltipNode = null; - if (el.parentNode) - el.parentNode.removeChild(el); - }; - - this.onTooltipClick = function(e) { - var a = e.target; - while (a && a != this.tooltipNode) { - if (a.nodeName == "A" && a.href) { - a.rel = "noreferrer"; - a.target = "_blank"; - break; - } - a = a.parentNode; - } - }; - - this.destroy = function() { - this.detach(); - if (this.popup) { - this.popup.destroy(); - var el = this.popup.container; - if (el && el.parentNode) - el.parentNode.removeChild(el); - } - if (this.editor && this.editor.completer == this) - this.editor.completer == null; - this.popup = null; - }; - -}).call(Autocomplete.prototype); - - -Autocomplete.for = function(editor) { - if (editor.completer) { - return editor.completer; - } - if (config.get("sharedPopups")) { - if (!Autocomplete.$shared) - Autocomplete.$sharedInstance = new Autocomplete(); - editor.completer = Autocomplete.$sharedInstance; - } else { - editor.completer = new Autocomplete(); - editor.once("destroy", function(e, editor) { - editor.completer.destroy(); - }); - } - return editor.completer; -}; - -Autocomplete.startCommand = { - name: "startAutocomplete", - exec: function(editor, options) { - var completer = Autocomplete.for(editor); - completer.autoInsert = false; - completer.autoSelect = true; - completer.showPopup(editor, options); - completer.cancelContextMenu(); - }, - bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" -}; - -var FilteredList = function(array, filterText) { - this.all = array; - this.filtered = array; - this.filterText = filterText || ""; - this.exactMatch = false; -}; -(function(){ - this.setFilter = function(str) { - if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) - var matches = this.filtered; - else - var matches = this.all; - - this.filterText = str; - matches = this.filterCompletions(matches, this.filterText); - matches = matches.sort(function(a, b) { - return b.exactMatch - a.exactMatch || b.$score - a.$score - || (a.caption || a.value).localeCompare(b.caption || b.value); - }); - var prev = null; - matches = matches.filter(function(item){ - var caption = item.snippet || item.caption || item.value; - if (caption === prev) return false; - prev = caption; - return true; - }); - - this.filtered = matches; - }; - this.filterCompletions = function(items, needle) { - var results = []; - var upper = needle.toUpperCase(); - var lower = needle.toLowerCase(); - loop: for (var i = 0, item; item = items[i]; i++) { - var caption = item.caption || item.value || item.snippet; - if (!caption) continue; - var lastIndex = -1; - var matchMask = 0; - var penalty = 0; - var index, distance; - - if (this.exactMatch) { - if (needle !== caption.substr(0, needle.length)) - continue loop; - } else { - var fullMatchIndex = caption.toLowerCase().indexOf(lower); - if (fullMatchIndex > -1) { - penalty = fullMatchIndex; - } else { - for (var j = 0; j < needle.length; j++) { - var i1 = caption.indexOf(lower[j], lastIndex + 1); - var i2 = caption.indexOf(upper[j], lastIndex + 1); - index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; - if (index < 0) - continue loop; - distance = index - lastIndex - 1; - if (distance > 0) { - if (lastIndex === -1) - penalty += 10; - penalty += distance; - matchMask = matchMask | (1 << j); - } - lastIndex = index; - } - } - } - item.matchMask = matchMask; - item.exactMatch = penalty ? 0 : 1; - item.$score = (item.score || 0) - penalty; - results.push(item); - } - return results; - }; -}).call(FilteredList.prototype); - -exports.Autocomplete = Autocomplete; -exports.FilteredList = FilteredList; - -}); - -ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module) { - var Range = require("../range").Range; - - var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; - - function getWordIndex(doc, pos) { - var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos)); - return textBefore.split(splitRegex).length - 1; - } - function wordDistance(doc, pos) { - var prefixPos = getWordIndex(doc, pos); - var words = doc.getValue().split(splitRegex); - var wordScores = Object.create(null); - - var currentWord = words[prefixPos]; - - words.forEach(function(word, idx) { - if (!word || word === currentWord) return; - - var distance = Math.abs(prefixPos - idx); - var score = words.length - distance; - if (wordScores[word]) { - wordScores[word] = Math.max(score, wordScores[word]); - } else { - wordScores[word] = score; - } - }); - return wordScores; - } - - exports.getCompletions = function(editor, session, pos, prefix, callback) { - var wordScore = wordDistance(session, pos); - var wordList = Object.keys(wordScore); - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word, - score: wordScore[word], - meta: "local" - }; - })); - }; -}); - -ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var snippetManager = require("../snippets").snippetManager; -var Autocomplete = require("../autocomplete").Autocomplete; -var config = require("../config"); -var lang = require("../lib/lang"); -var util = require("../autocomplete/util"); - -var textCompleter = require("../autocomplete/text_completer"); -var keyWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - if (session.$mode.completer) { - return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback); - } - var state = editor.session.getState(pos.row); - var completions = session.$mode.getCompletions(state, session, pos, prefix); - callback(null, completions); - } -}; - -var snippetCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var scopes = []; - var token = session.getTokenAt(pos.row, pos.column); - if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)) - scopes.push('html-tag'); - else - scopes = snippetManager.getActiveScopes(editor); - - var snippetMap = snippetManager.snippetMap; - var completions = []; - scopes.forEach(function(scope) { - var snippets = snippetMap[scope] || []; - for (var i = snippets.length; i--;) { - var s = snippets[i]; - var caption = s.name || s.tabTrigger; - if (!caption) - continue; - completions.push({ - caption: caption, - snippet: s.content, - meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet", - type: "snippet" - }); - } - }, this); - callback(null, completions); - }, - getDocTooltip: function(item) { - if (item.type == "snippet" && !item.docHTML) { - item.docHTML = [ - "", lang.escapeHTML(item.caption), "", "
    ", - lang.escapeHTML(item.snippet) - ].join(""); - } - } -}; - -var completers = [snippetCompleter, textCompleter, keyWordCompleter]; -exports.setCompleters = function(val) { - completers.length = 0; - if (val) completers.push.apply(completers, val); -}; -exports.addCompleter = function(completer) { - completers.push(completer); -}; -exports.textCompleter = textCompleter; -exports.keyWordCompleter = keyWordCompleter; -exports.snippetCompleter = snippetCompleter; - -var expandSnippet = { - name: "expandSnippet", - exec: function(editor) { - return snippetManager.expandWithTab(editor); - }, - bindKey: "Tab" -}; - -var onChangeMode = function(e, editor) { - loadSnippetsForMode(editor.session.$mode); -}; - -var loadSnippetsForMode = function(mode) { - if (typeof mode == "string") - mode = config.$modes[mode]; - if (!mode) - return; - if (!snippetManager.files) - snippetManager.files = {}; - - loadSnippetFile(mode.$id, mode.snippetFileId); - if (mode.modes) - mode.modes.forEach(loadSnippetsForMode); -}; - -var loadSnippetFile = function(id, snippetFilePath) { - if (!snippetFilePath || !id || snippetManager.files[id]) - return; - snippetManager.files[id] = {}; - config.loadModule(snippetFilePath, function(m) { - if (!m) return; - snippetManager.files[id] = m; - if (!m.snippets && m.snippetText) - m.snippets = snippetManager.parseSnippetFile(m.snippetText); - snippetManager.register(m.snippets || [], m.scope); - if (m.includeScopes) { - snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; - m.includeScopes.forEach(function(x) { - loadSnippetsForMode("ace/mode/" + x); - }); - } - }); -}; - -var doLiveAutocomplete = function(e) { - var editor = e.editor; - var hasCompleter = editor.completer && editor.completer.activated; - if (e.command.name === "backspace") { - if (hasCompleter && !util.getCompletionPrefix(editor)) - editor.completer.detach(); - } - else if (e.command.name === "insertstring") { - var prefix = util.getCompletionPrefix(editor); - if (prefix && !hasCompleter) { - var completer = Autocomplete.for(editor); - completer.autoInsert = false; - completer.showPopup(editor); - } - } -}; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - enableBasicAutocompletion: { - set: function(val) { - if (val) { - if (!this.completers) - this.completers = Array.isArray(val)? val: completers; - this.commands.addCommand(Autocomplete.startCommand); - } else { - this.commands.removeCommand(Autocomplete.startCommand); - } - }, - value: false - }, - enableLiveAutocompletion: { - set: function(val) { - if (val) { - if (!this.completers) - this.completers = Array.isArray(val)? val: completers; - this.commands.on('afterExec', doLiveAutocomplete); - } else { - this.commands.removeListener('afterExec', doLiveAutocomplete); - } - }, - value: false - }, - enableSnippets: { - set: function(val) { - if (val) { - this.commands.addCommand(expandSnippet); - this.on("changeMode", onChangeMode); - onChangeMode(null, this); - } else { - this.commands.removeCommand(expandSnippet); - this.off("changeMode", onChangeMode); - } - }, - value: false - } -}); -}); (function() { - ace.require(["ace/ext/language_tools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-linking.js b/src-noconflict/ext-linking.js deleted file mode 100644 index f5b2405..0000000 --- a/src-noconflict/ext-linking.js +++ /dev/null @@ -1,64 +0,0 @@ -ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { - -var Editor = require("../editor").Editor; - -require("../config").defineOptions(Editor.prototype, "editor", { - enableLinking: { - set: function(val) { - if (val) { - this.on("click", onClick); - this.on("mousemove", onMouseMove); - } else { - this.off("click", onClick); - this.off("mousemove", onMouseMove); - } - }, - value: false - } -}); - -exports.previousLinkingHover = false; - -function onMouseMove(e) { - var editor = e.editor; - var ctrl = e.getAccelKey(); - - if (ctrl) { - var editor = e.editor; - var docPos = e.getDocumentPosition(); - var session = editor.session; - var token = session.getTokenAt(docPos.row, docPos.column); - - if (exports.previousLinkingHover && exports.previousLinkingHover != token) { - editor._emit("linkHoverOut"); - } - editor._emit("linkHover", {position: docPos, token: token}); - exports.previousLinkingHover = token; - } else if (exports.previousLinkingHover) { - editor._emit("linkHoverOut"); - exports.previousLinkingHover = false; - } -} - -function onClick(e) { - var ctrl = e.getAccelKey(); - var button = e.getButton(); - - if (button == 0 && ctrl) { - var editor = e.editor; - var docPos = e.getDocumentPosition(); - var session = editor.session; - var token = session.getTokenAt(docPos.row, docPos.column); - - editor._emit("linkClick", {position: docPos, token: token}); - } -} - -}); (function() { - ace.require(["ace/ext/linking"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-modelist.js b/src-noconflict/ext-modelist.js deleted file mode 100644 index ef2c708..0000000 --- a/src-noconflict/ext-modelist.js +++ /dev/null @@ -1,248 +0,0 @@ -ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], - Alda: ["alda"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - Apex: ["apex|cls|trigger|tgr"], - AQL: ["aql"], - AsciiDoc: ["asciidoc|adoc"], - ASL: ["dsl|asl|asl.json"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - Crystal: ["cr"], - CSharp: ["cs"], - Csound_Document: ["csd"], - Csound_Orchestra: ["orc"], - Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Edifact: ["edi"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], - FSL: ["fsl"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], - GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], - HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSON5: ["json5"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - Latte: ["latte"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MediaWiki: ["wiki|mediawiki"], - MEL: ["mel"], - MIPS: ["s|asm"], - MIXAL: ["mixal"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nginx: ["nginx|conf"], - Nim: ["nim"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - Nunjucks: ["nunjucks|nunjs|nj|njk"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - PHP_Laravel_blade: ["blade.php"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prisma: ["prisma"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Puppet: ["epp|pp"], - Python: ["py"], - QML: ["qml"], - R: ["r"], - Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala|sbt"], - Scheme: ["scm|sm|rkt|oak|scheme"], - Scrypt: ["scrypt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Slim: ["slim|skim"], - Smarty: ["smarty|tpl"], - Smithy: ["smithy"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Terraform: ["tf", "tfvars", "terragrunt"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Visualforce: ["vfp|component|page"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Zeek: ["zeek|bro"], - Django: ["html"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C and C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey / AutoIt" -}; - -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); (function() { - ace.require(["ace/ext/modelist"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-options.js b/src-noconflict/ext-options.js deleted file mode 100644 index 86ee4a2..0000000 --- a/src-noconflict/ext-options.js +++ /dev/null @@ -1,799 +0,0 @@ -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -'use strict'; -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 100000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}\ -.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\ -vertical-align: middle;\ -}\ -.ace_optionsMenuEntry button[ace_selected_button=true] {\ -background: #e7e7e7;\ -box-shadow: 1px 0px 2px 0px #adadad inset;\ -border-color: #adadad;\ -}\ -.ace_optionsMenuEntry button {\ -background: white;\ -border: 1px solid lightgray;\ -margin: 0px;\ -}\ -.ace_optionsMenuEntry button:hover{\ -background: #f0f0f0;\ -}"; -dom.importCssString(cssText, "settings_menu.css", false); - -module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { - var closer = document.createElement('div'); - var ignoreFocusOut = false; - - function documentEscListener(e) { - if (e.keyCode === 27) { - close(); - } - } - - function close() { - if (!closer) return; - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - if (editor) { - editor.focus(); - } - closer = null; - callback && callback(); - } - function setIgnoreFocusOut(ignore) { - ignoreFocusOut = ignore; - if (ignore) { - closer.style.pointerEvents = "none"; - contentElement.style.pointerEvents = "auto"; - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); - closer.addEventListener('click', function(e) { - if (!ignoreFocusOut) { - close(); - } - }); - document.addEventListener('keydown', documentEscListener); - - contentElement.addEventListener('click', function (e) { - e.stopPropagation(); - }); - - closer.appendChild(contentElement); - document.body.appendChild(closer); - if (editor) { - editor.blur(); - } - return { - close: close, - setIgnoreFocusOut: setIgnoreFocusOut - }; -}; - -}); - -ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], - Alda: ["alda"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - Apex: ["apex|cls|trigger|tgr"], - AQL: ["aql"], - AsciiDoc: ["asciidoc|adoc"], - ASL: ["dsl|asl|asl.json"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - Crystal: ["cr"], - CSharp: ["cs"], - Csound_Document: ["csd"], - Csound_Orchestra: ["orc"], - Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Edifact: ["edi"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], - FSL: ["fsl"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], - GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], - HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSON5: ["json5"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - Latte: ["latte"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MediaWiki: ["wiki|mediawiki"], - MEL: ["mel"], - MIPS: ["s|asm"], - MIXAL: ["mixal"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nginx: ["nginx|conf"], - Nim: ["nim"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - Nunjucks: ["nunjucks|nunjs|nj|njk"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - PHP_Laravel_blade: ["blade.php"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prisma: ["prisma"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Puppet: ["epp|pp"], - Python: ["py"], - QML: ["qml"], - R: ["r"], - Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala|sbt"], - Scheme: ["scm|sm|rkt|oak|scheme"], - Scrypt: ["scrypt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Slim: ["slim|skim"], - Smarty: ["smarty|tpl"], - Smithy: ["smithy"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Terraform: ["tf", "tfvars", "terragrunt"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Visualforce: ["vfp|component|page"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Zeek: ["zeek|bro"], - Django: ["html"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C and C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey / AutoIt" -}; - -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); - -ace.define("ace/ext/themelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["IPlastic" ], - ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["Xcode" ], - ["Kuroir"], - ["KatzenMilch"], - ["SQL Server" ,"sqlserver" , "light"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Dracula" ,"" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["Gruvbox" ,"gruvbox" , "dark"], - ["Green on Black" ,"gob" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Nord Dark" ,"nord_dark" , "dark"], - ["One Dark" ,"one_dark" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] -]; - - -exports.themesByName = {}; -exports.themes = themeData.map(function(data) { - var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); - var theme = { - caption: data[0], - theme: "ace/theme/" + name, - isDark: data[2] == "dark", - name: name - }; - exports.themesByName[name] = theme; - return theme; -}); - -}); - -ace.define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/config","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) { -"use strict"; - -require("./menu_tools/overlay_page"); - -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var config = require("../config"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var buildDom = dom.buildDom; - -var modelist = require("./modelist"); -var themelist = require("./themelist"); - -var themes = { Bright: [], Dark: [] }; -themelist.themes.forEach(function(x) { - themes[x.isDark ? "Dark" : "Bright"].push({ caption: x.caption, value: x.theme }); -}); - -var modes = modelist.modes.map(function(x){ - return { caption: x.caption, value: x.mode }; -}); - - -var optionGroups = { - Main: { - Mode: { - path: "mode", - type: "select", - items: modes - }, - Theme: { - path: "theme", - type: "select", - items: themes - }, - "Keybinding": { - type: "buttonBar", - path: "keyboardHandler", - items: [ - { caption : "Ace", value : null }, - { caption : "Vim", value : "ace/keyboard/vim" }, - { caption : "Emacs", value : "ace/keyboard/emacs" }, - { caption : "Sublime", value : "ace/keyboard/sublime" }, - { caption : "VSCode", value : "ace/keyboard/vscode" } - ] - }, - "Font Size": { - path: "fontSize", - type: "number", - defaultValue: 12, - defaults: [ - {caption: "12px", value: 12}, - {caption: "24px", value: 24} - ] - }, - "Soft Wrap": { - type: "buttonBar", - path: "wrap", - items: [ - { caption : "Off", value : "off" }, - { caption : "View", value : "free" }, - { caption : "margin", value : "printMargin" }, - { caption : "40", value : "40" } - ] - }, - "Cursor Style": { - path: "cursorStyle", - items: [ - { caption : "Ace", value : "ace" }, - { caption : "Slim", value : "slim" }, - { caption : "Smooth", value : "smooth" }, - { caption : "Smooth And Slim", value : "smooth slim" }, - { caption : "Wide", value : "wide" } - ] - }, - "Folding": { - path: "foldStyle", - items: [ - { caption : "Manual", value : "manual" }, - { caption : "Mark begin", value : "markbegin" }, - { caption : "Mark begin and end", value : "markbeginend" } - ] - }, - "Soft Tabs": [{ - path: "useSoftTabs" - }, { - ariaLabel: "Tab Size", - path: "tabSize", - type: "number", - values: [2, 3, 4, 8, 16] - }], - "Overscroll": { - type: "buttonBar", - path: "scrollPastEnd", - items: [ - { caption : "None", value : 0 }, - { caption : "Half", value : 0.5 }, - { caption : "Full", value : 1 } - ] - } - }, - More: { - "Atomic soft tabs": { - path: "navigateWithinSoftTabs" - }, - "Enable Behaviours": { - path: "behavioursEnabled" - }, - "Wrap with quotes": { - path: "wrapBehavioursEnabled" - }, - "Enable Auto Indent": { - path: "enableAutoIndent" - }, - "Full Line Selection": { - type: "checkbox", - values: "text|line", - path: "selectionStyle" - }, - "Highlight Active Line": { - path: "highlightActiveLine" - }, - "Show Invisibles": { - path: "showInvisibles" - }, - "Show Indent Guides": { - path: "displayIndentGuides" - }, - "Persistent HScrollbar": { - path: "hScrollBarAlwaysVisible" - }, - "Persistent VScrollbar": { - path: "vScrollBarAlwaysVisible" - }, - "Animate scrolling": { - path: "animatedScroll" - }, - "Show Gutter": { - path: "showGutter" - }, - "Show Line Numbers": { - path: "showLineNumbers" - }, - "Relative Line Numbers": { - path: "relativeLineNumbers" - }, - "Fixed Gutter Width": { - path: "fixedWidthGutter" - }, - "Show Print Margin": [{ - path: "showPrintMargin" - }, { - ariaLabel: "Print Margin", - type: "number", - path: "printMarginColumn" - }], - "Indented Soft Wrap": { - path: "indentedSoftWrap" - }, - "Highlight selected word": { - path: "highlightSelectedWord" - }, - "Fade Fold Widgets": { - path: "fadeFoldWidgets" - }, - "Use textarea for IME": { - path: "useTextareaForIME" - }, - "Merge Undo Deltas": { - path: "mergeUndoDeltas", - items: [ - { caption : "Always", value : "always" }, - { caption : "Never", value : "false" }, - { caption : "Timed", value : "true" } - ] - }, - "Elastic Tabstops": { - path: "useElasticTabstops" - }, - "Incremental Search": { - path: "useIncrementalSearch" - }, - "Read-only": { - path: "readOnly" - }, - "Copy without selection": { - path: "copyWithEmptySelection" - }, - "Live Autocompletion": { - path: "enableLiveAutocompletion" - } - } -}; - - -var OptionPanel = function(editor, element) { - this.editor = editor; - this.container = element || document.createElement("div"); - this.groups = []; - this.options = {}; -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.add = function(config) { - if (config.Main) - oop.mixin(optionGroups.Main, config.Main); - if (config.More) - oop.mixin(optionGroups.More, config.More); - }; - - this.render = function() { - this.container.innerHTML = ""; - buildDom(["table", {role: "presentation", id: "controls"}, - this.renderOptionGroup(optionGroups.Main), - ["tr", null, ["td", {colspan: 2}, - ["table", {role: "presentation", id: "more-controls"}, - this.renderOptionGroup(optionGroups.More) - ] - ]], - ["tr", null, ["td", {colspan: 2}, "version " + config.version]] - ], this.container); - }; - - this.renderOptionGroup = function(group) { - return Object.keys(group).map(function(key, i) { - var item = group[key]; - if (!item.position) - item.position = i / 10000; - if (!item.label) - item.label = key; - return item; - }).sort(function(a, b) { - return a.position - b.position; - }).map(function(item) { - return this.renderOption(item.label, item); - }, this); - }; - - this.renderOptionControl = function(key, option) { - var self = this; - if (Array.isArray(option)) { - return option.map(function(x) { - return self.renderOptionControl(key, x); - }); - } - var control; - - var value = self.getOption(option); - - if (option.values && option.type != "checkbox") { - if (typeof option.values == "string") - option.values = option.values.split("|"); - option.items = option.values.map(function(v) { - return { value: v, name: v }; - }); - } - - if (option.type == "buttonBar") { - control = ["div", {role: "group", "aria-labelledby": option.path + "-label"}, option.items.map(function(item) { - return ["button", { - value: item.value, - ace_selected_button: value == item.value, - 'aria-pressed': value == item.value, - onclick: function() { - self.setOption(option, item.value); - var nodes = this.parentNode.querySelectorAll("[ace_selected_button]"); - for (var i = 0; i < nodes.length; i++) { - nodes[i].removeAttribute("ace_selected_button"); - nodes[i].setAttribute("aria-pressed", false); - } - this.setAttribute("ace_selected_button", true); - this.setAttribute("aria-pressed", true); - } - }, item.desc || item.caption || item.name]; - })]; - } else if (option.type == "number") { - control = ["input", {type: "number", value: value || option.defaultValue, style:"width:3em", oninput: function() { - self.setOption(option, parseInt(this.value)); - }}]; - if (option.ariaLabel) { - control[1]["aria-label"] = option.ariaLabel; - } else { - control[1].id = key; - } - if (option.defaults) { - control = [control, option.defaults.map(function(item) { - return ["button", {onclick: function() { - var input = this.parentNode.firstChild; - input.value = item.value; - input.oninput(); - }}, item.caption]; - })]; - } - } else if (option.items) { - var buildItems = function(items) { - return items.map(function(item) { - return ["option", { value: item.value || item.name }, item.desc || item.caption || item.name]; - }); - }; - - var items = Array.isArray(option.items) - ? buildItems(option.items) - : Object.keys(option.items).map(function(key) { - return ["optgroup", {"label": key}, buildItems(option.items[key])]; - }); - control = ["select", { id: key, value: value, onchange: function() { - self.setOption(option, this.value); - } }, items]; - } else { - if (typeof option.values == "string") - option.values = option.values.split("|"); - if (option.values) value = value == option.values[1]; - control = ["input", { type: "checkbox", id: key, checked: value || null, onchange: function() { - var value = this.checked; - if (option.values) value = option.values[value ? 1 : 0]; - self.setOption(option, value); - }}]; - if (option.type == "checkedNumber") { - control = [control, []]; - } - } - return control; - }; - - this.renderOption = function(key, option) { - if (option.path && !option.onchange && !this.editor.$options[option.path]) - return; - var path = Array.isArray(option) ? option[0].path : option.path; - this.options[path] = option; - var safeKey = "-" + path; - var safeId = path + "-label"; - var control = this.renderOptionControl(safeKey, option); - return ["tr", {class: "ace_optionsMenuEntry"}, ["td", - ["label", {for: safeKey, id: safeId}, key] - ], ["td", control]]; - }; - - this.setOption = function(option, value) { - if (typeof option == "string") - option = this.options[option]; - if (value == "false") value = false; - if (value == "true") value = true; - if (value == "null") value = null; - if (value == "undefined") value = undefined; - if (typeof value == "string" && parseFloat(value).toString() == value) - value = parseFloat(value); - if (option.onchange) - option.onchange(value); - else if (option.path) - this.editor.setOption(option.path, value); - this._signal("setOption", {name: option.path, value: value}); - }; - - this.getOption = function(option) { - if (option.getValue) - return option.getValue(); - return this.editor.getOption(option.path); - }; - -}).call(OptionPanel.prototype); - -exports.OptionPanel = OptionPanel; - -}); (function() { - ace.require(["ace/ext/options"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-prompt.js b/src-noconflict/ext-prompt.js deleted file mode 100644 index 1880288..0000000 --- a/src-noconflict/ext-prompt.js +++ /dev/null @@ -1,2806 +0,0 @@ -ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"], function(require, exports, module) { -"use strict"; -var keys = require("../../lib/keys"); -module.exports.getEditorKeybordShortcuts = function(editor) { - var KEY_MODS = keys.KEY_MODS; - var keybindings = []; - var commandMap = {}; - editor.keyBinding.$handlers.forEach(function(handler) { - var ckb = handler.commandKeyBinding; - for (var i in ckb) { - var key = i.replace(/(^|-)\w/g, function(x) { return x.toUpperCase(); }); - var commands = ckb[i]; - if (!Array.isArray(commands)) - commands = [commands]; - commands.forEach(function(command) { - if (typeof command != "string") - command = command.name; - if (commandMap[command]) { - commandMap[command].key += "|" + key; - } else { - commandMap[command] = {key: key, command: command}; - keybindings.push(commandMap[command]); - } - }); - } - }); - return keybindings; -}; - -}); - -ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var Renderer = require("../virtual_renderer").VirtualRenderer; -var Editor = require("../editor").Editor; -var Range = require("../range").Range; -var event = require("../lib/event"); -var lang = require("../lib/lang"); -var dom = require("../lib/dom"); - -var $singleLineEditor = function(el) { - var renderer = new Renderer(el); - - renderer.$maxLines = 4; - - var editor = new Editor(renderer); - - editor.setHighlightActiveLine(false); - editor.setShowPrintMargin(false); - editor.renderer.setShowGutter(false); - editor.renderer.setHighlightGutterLine(false); - - editor.$mouseHandler.$focusTimeout = 0; - editor.$highlightTagPending = true; - - return editor; -}; - -var AcePopup = function(parentNode) { - var el = dom.createElement("div"); - var popup = new $singleLineEditor(el); - - if (parentNode) - parentNode.appendChild(el); - el.style.display = "none"; - popup.renderer.content.style.cursor = "default"; - popup.renderer.setStyle("ace_autocomplete"); - - popup.setOption("displayIndentGuides", false); - popup.setOption("dragDelay", 150); - - var noop = function(){}; - - popup.focus = noop; - popup.$isFocused = true; - - popup.renderer.$cursorLayer.restartTimer = noop; - popup.renderer.$cursorLayer.element.style.opacity = 0; - - popup.renderer.$maxLines = 8; - popup.renderer.$keepTextAreaAtCursor = false; - - popup.setHighlightActiveLine(false); - popup.session.highlight(""); - popup.session.$searchHighlight.clazz = "ace_highlight-marker"; - - popup.on("mousedown", function(e) { - var pos = e.getDocumentPosition(); - popup.selection.moveToPosition(pos); - selectionMarker.start.row = selectionMarker.end.row = pos.row; - e.stop(); - }); - - var lastMouseEvent; - var hoverMarker = new Range(-1,0,-1,Infinity); - var selectionMarker = new Range(-1,0,-1,Infinity); - selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); - popup.setSelectOnHover = function(val) { - if (!val) { - hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); - } else if (hoverMarker.id) { - popup.session.removeMarker(hoverMarker.id); - hoverMarker.id = null; - } - }; - popup.setSelectOnHover(false); - popup.on("mousemove", function(e) { - if (!lastMouseEvent) { - lastMouseEvent = e; - return; - } - if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { - return; - } - lastMouseEvent = e; - lastMouseEvent.scrollTop = popup.renderer.scrollTop; - var row = lastMouseEvent.getDocumentPosition().row; - if (hoverMarker.start.row != row) { - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row); - } - }); - popup.renderer.on("beforeRender", function() { - if (lastMouseEvent && hoverMarker.start.row != -1) { - lastMouseEvent.$pos = null; - var row = lastMouseEvent.getDocumentPosition().row; - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row, true); - } - }); - popup.renderer.on("afterRender", function() { - var row = popup.getRow(); - var t = popup.renderer.$textLayer; - var selected = t.element.childNodes[row - t.config.firstRow]; - if (selected !== t.selectedNode && t.selectedNode) - dom.removeCssClass(t.selectedNode, "ace_selected"); - t.selectedNode = selected; - if (selected) - dom.addCssClass(selected, "ace_selected"); - }); - var hideHoverMarker = function() { setHoverMarker(-1); }; - var setHoverMarker = function(row, suppressRedraw) { - if (row !== hoverMarker.start.row) { - hoverMarker.start.row = hoverMarker.end.row = row; - if (!suppressRedraw) - popup.session._emit("changeBackMarker"); - popup._emit("changeHoverMarker"); - } - }; - popup.getHoveredRow = function() { - return hoverMarker.start.row; - }; - - event.addListener(popup.container, "mouseout", hideHoverMarker); - popup.on("hide", hideHoverMarker); - popup.on("changeSelection", hideHoverMarker); - - popup.session.doc.getLength = function() { - return popup.data.length; - }; - popup.session.doc.getLine = function(i) { - var data = popup.data[i]; - if (typeof data == "string") - return data; - return (data && data.value) || ""; - }; - - var bgTokenizer = popup.session.bgTokenizer; - bgTokenizer.$tokenizeRow = function(row) { - var data = popup.data[row]; - var tokens = []; - if (!data) - return tokens; - if (typeof data == "string") - data = {value: data}; - var caption = data.caption || data.value || data.name; - - function addToken(value, className) { - value && tokens.push({ - type: (data.className || "") + (className || ""), - value: value - }); - } - - var lower = caption.toLowerCase(); - var filterText = (popup.filterText || "").toLowerCase(); - var lastIndex = 0; - var lastI = 0; - for (var i = 0; i <= filterText.length; i++) { - if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { - var sub = filterText.slice(lastI, i); - lastI = i; - var index = lower.indexOf(sub, lastIndex); - if (index == -1) continue; - addToken(caption.slice(lastIndex, index), ""); - lastIndex = index + sub.length; - addToken(caption.slice(index, lastIndex), "completion-highlight"); - } - } - addToken(caption.slice(lastIndex, caption.length), ""); - - if (data.meta) - tokens.push({type: "completion-meta", value: data.meta}); - if (data.message) - tokens.push({type: "completion-message", value: data.message}); - - return tokens; - }; - bgTokenizer.$updateOnChange = noop; - bgTokenizer.start = noop; - - popup.session.$computeWidth = function() { - return this.screenWidth = 0; - }; - popup.isOpen = false; - popup.isTopdown = false; - popup.autoSelect = true; - popup.filterText = ""; - - popup.data = []; - popup.setData = function(list, filterText) { - popup.filterText = filterText || ""; - popup.setValue(lang.stringRepeat("\n", list.length), -1); - popup.data = list || []; - popup.setRow(0); - }; - popup.getData = function(row) { - return popup.data[row]; - }; - - popup.getRow = function() { - return selectionMarker.start.row; - }; - popup.setRow = function(line) { - line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line)); - if (selectionMarker.start.row != line) { - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = line || 0; - popup.session._emit("changeBackMarker"); - popup.moveCursorTo(line || 0, 0); - if (popup.isOpen) - popup._signal("select"); - } - }; - - popup.on("changeSelection", function() { - if (popup.isOpen) - popup.setRow(popup.selection.lead.row); - popup.renderer.scrollCursorIntoView(); - }); - - popup.hide = function() { - this.container.style.display = "none"; - this._signal("hide"); - popup.isOpen = false; - }; - popup.show = function(pos, lineHeight, topdownOnly) { - var el = this.container; - var screenHeight = window.innerHeight; - var screenWidth = window.innerWidth; - var renderer = this.renderer; - var maxH = renderer.$maxLines * lineHeight * 1.4; - var top = pos.top + this.$borderSize; - var allowTopdown = top > screenHeight / 2 && !topdownOnly; - if (allowTopdown && top + lineHeight + maxH > screenHeight) { - renderer.$maxPixelHeight = top - 2 * this.$borderSize; - el.style.top = ""; - el.style.bottom = screenHeight - top + "px"; - popup.isTopdown = false; - } else { - top += lineHeight; - renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight; - el.style.top = top + "px"; - el.style.bottom = ""; - popup.isTopdown = true; - } - - el.style.display = ""; - - var left = pos.left; - if (left + el.offsetWidth > screenWidth) - left = screenWidth - el.offsetWidth; - - el.style.left = left + "px"; - - this._signal("show"); - lastMouseEvent = null; - popup.isOpen = true; - }; - - popup.goTo = function(where) { - var row = this.getRow(); - var max = this.session.getLength() - 1; - - switch(where) { - case "up": row = row <= 0 ? max : row - 1; break; - case "down": row = row >= max ? -1 : row + 1; break; - case "start": row = 0; break; - case "end": row = max; break; - } - - this.setRow(row); - }; - - - popup.getTextLeftOffset = function() { - return this.$borderSize + this.renderer.$padding + this.$imageSize; - }; - - popup.$imageSize = 0; - popup.$borderSize = 1; - - return popup; -}; - -dom.importCssString("\ -.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ - background-color: #CAD6FA;\ - z-index: 1;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ - background-color: #3a674e;\ -}\ -.ace_editor.ace_autocomplete .ace_line-hover {\ - border: 1px solid #abbffe;\ - margin-top: -1px;\ - background: rgba(233,233,253,0.4);\ - position: absolute;\ - z-index: 2;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\ - border: 1px solid rgba(109, 150, 13, 0.8);\ - background: rgba(58, 103, 78, 0.62);\ -}\ -.ace_completion-meta {\ - opacity: 0.5;\ - margin: 0.9em;\ -}\ -.ace_completion-message {\ - color: blue;\ -}\ -.ace_editor.ace_autocomplete .ace_completion-highlight{\ - color: #2d69c7;\ -}\ -.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\ - color: #93ca12;\ -}\ -.ace_editor.ace_autocomplete {\ - width: 300px;\ - z-index: 200000;\ - border: 1px lightgray solid;\ - position: fixed;\ - box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ - line-height: 1.4;\ - background: #fefefe;\ - color: #111;\ -}\ -.ace_dark.ace_editor.ace_autocomplete {\ - border: 1px #484747 solid;\ - box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\ - line-height: 1.4;\ - background: #25282c;\ - color: #c1c1c1;\ -}", "autocompletion.css", false); - -exports.AcePopup = AcePopup; -exports.$singleLineEditor = $singleLineEditor; -}); - -ace.define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.parForEach = function(array, fn, callback) { - var completed = 0; - var arLength = array.length; - if (arLength === 0) - callback(); - for (var i = 0; i < arLength; i++) { - fn(array[i], function(result, err) { - completed++; - if (completed === arLength) - callback(result, err); - }); - } -}; - -var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; - -exports.retrievePrecedingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos-1; i >= 0; i--) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf.reverse().join(""); -}; - -exports.retrieveFollowingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos; i < text.length; i++) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf; -}; - -exports.getCompletionPrefix = function (editor) { - var pos = editor.getCursorPosition(); - var line = editor.session.getLine(pos.row); - var prefix; - editor.completers.forEach(function(completer) { - if (completer.identifierRegexps) { - completer.identifierRegexps.forEach(function(identifierRegex) { - if (!prefix && identifierRegex) - prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); - }.bind(this)); - } - }.bind(this)); - return prefix || this.retrievePrecedingIdentifier(line, pos.column); -}; - -}); - -ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module) { -"use strict"; -var dom = require("./lib/dom"); -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var RangeList = require("./range_list").RangeList; -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var clipboard = require("./clipboard"); - -var VARIABLES = { - CURRENT_WORD: function(editor) { - return editor.session.getTextRange(editor.session.getWordRange()); - }, - SELECTION: function(editor, name, indentation) { - var text = editor.session.getTextRange(); - if (indentation) - return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); - return text; - }, - CURRENT_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row); - }, - PREV_LINE: function(editor) { - return editor.session.getLine(editor.getCursorPosition().row - 1); - }, - LINE_INDEX: function(editor) { - return editor.getCursorPosition().row; - }, - LINE_NUMBER: function(editor) { - return editor.getCursorPosition().row + 1; - }, - SOFT_TABS: function(editor) { - return editor.session.getUseSoftTabs() ? "YES" : "NO"; - }, - TAB_SIZE: function(editor) { - return editor.session.getTabSize(); - }, - CLIPBOARD: function(editor) { - return clipboard.getText && clipboard.getText(); - }, - FILENAME: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; - }, - FILENAME_BASE: function(editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); - }, - DIRECTORY: function(editor) { - return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); - }, - FILEPATH: function(editor) { return "/not implemented.txt"; }, - WORKSPACE_NAME: function() { return "Unknown"; }, - FULLNAME: function() { return "Unknown"; }, - BLOCK_COMMENT_START: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.start || ""; - }, - BLOCK_COMMENT_END: function(editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.end || ""; - }, - LINE_COMMENT: function(editor) { - var mode = editor.session.$mode || {}; - return mode.lineCommentStart || ""; - }, - CURRENT_YEAR: date.bind(null, {year: "numeric"}), - CURRENT_YEAR_SHORT: date.bind(null, {year: "2-digit"}), - CURRENT_MONTH: date.bind(null, {month: "numeric"}), - CURRENT_MONTH_NAME: date.bind(null, {month: "long"}), - CURRENT_MONTH_NAME_SHORT: date.bind(null, {month: "short"}), - CURRENT_DATE: date.bind(null, {day: "2-digit"}), - CURRENT_DAY_NAME: date.bind(null, {weekday: "long"}), - CURRENT_DAY_NAME_SHORT: date.bind(null, {weekday: "short"}), - CURRENT_HOUR: date.bind(null, {hour: "2-digit", hour12: false}), - CURRENT_MINUTE: date.bind(null, {minute: "2-digit"}), - CURRENT_SECOND: date.bind(null, {second: "2-digit"}) -}; - -VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; - -function date(dateFormat) { - var str = new Date().toLocaleString("en-us", dateFormat); - return str.length == 1 ? "0" + str : str; -} - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; -}; - -(function() { - oop.implement(this, EventEmitter); - - this.getTokenizer = function() { - return SnippetManager.$tokenizer || this.createTokenizer(); - }; - - this.createTokenizer = function() { - function TabstopToken(str) { - str = str.substr(1); - if (/^\d+$/.test(str)) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}]; - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - var formatMatcher = { - regex: "/(" + escape("/") + "+)/", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = true; - ts.guard = val.slice(1, -1); - ts.flag = ""; - return ""; - }, - next: "formatString" - }; - - SnippetManager.$tokenizer = new Tokenizer({ - start: [ - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - } else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1)); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} - ], - snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function(operator) { - return operator.length == 2 ? operator[1] : "\x00"; - }).split("\x00").map(function(value){ - return {value: value}; - }); - stack[0].choices = choices; - return [choices[0]]; - }, next: "start"}, - formatMatcher, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} - ], - formatString: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectElse) { - stack[0].expectElse = false; - stack[0].ifEnd = {elseEnd: stack[0]}; - return [stack[0].ifEnd]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) - val = ch; - else if ("`$\\".indexOf(ch) != -1) - val = ch; - else if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\t"; - else if ("ulULE".indexOf(ch) != -1) - val = {changeCase: ch, local: ch > "a"}; - return [val]; - }}, - {regex: "/\\w*}", onMatch: function(val, state, stack) { - var next = stack.shift(); - if (next) - next.flag = val.slice(1, -1); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"}, - {regex: /\$(?:\d+|\w+)/, onMatch: function(val, state, stack) { - return [{text: val.slice(1)}]; - }}, - {regex: /\${\w+/, onMatch: function(val, state, stack) { - var token = {text: val.slice(2)}; - stack.unshift(token); - return [token]; - }, next: "formatStringVar"}, - {regex: /\n/, token: "newline", merge: false}, - {regex: /}/, onMatch: function(val, state, stack) { - var next = stack.shift(); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start"} - ], - formatStringVar: [ - {regex: /:\/\w+}/, onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.formatFunction = val.slice(2, -1); - return [stack.shift()]; - }, next: "formatString"}, - formatMatcher, - {regex: /:[\?\-+]?/, onMatch: function(val, state, stack) { - if (val[1] == "+") - stack[0].ifEnd = stack[0]; - if (val[1] == "?") - stack[0].expectElse = true; - }, next: "formatString"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString"} - ] - }); - return SnippetManager.$tokenizer; - }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { - return x.value || x; - }); - }; - - this.getVariableValue = function(editor, name, indentation) { - if (/^\d+$/.test(name)) - return (this.variables.__ || {})[name] || ""; - if (/^[A-Z]\d+$/.test(name)) - return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; - - name = name.replace(/^TM_/, ""); - if (!this.variables.hasOwnProperty(name)) - return ""; - var value = this.variables[name]; - if (typeof value == "function") - value = this.variables[name](editor, name, indentation); - return value == null ? "" : value; - }; - - this.variables = VARIABLES; - this.tmStrFormat = function(str, ch, editor) { - if (!ch.fmt) return str; - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gim]/g, "")); - var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; - var _self = this; - var formatted = str.replace(re, function() { - var oldArgs = _self.variables.__; - _self.variables.__ = [].slice.call(arguments); - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - _self.variables.__ = oldArgs; - return fmtParts.join(""); - }); - return formatted; - }; - - this.tmFormatFunction = function(str, ch, editor) { - if (ch.formatFunction == "upcase") - return str.toUpperCase(); - if (ch.formatFunction == "downcase") - return str.toLowerCase(); - return str; - }; - - this.resolveVariables = function(snippet, editor) { - var result = []; - var indentation = ""; - var afterNewLine = true; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - if (ch == "\n") { - afterNewLine = true; - indentation = ""; - } - else if (afterNewLine) { - indentation = /^\t*/.exec(ch)[0]; - afterNewLine = /\S/.test(ch); - } - continue; - } - if (!ch) continue; - afterNewLine = false; - - if (ch.fmtString) { - var j = snippet.indexOf(ch, i + 1); - if (j == -1) j = snippet.length; - ch.fmt = snippet.slice(i + 1, j); - i = j; - } - - if (ch.text) { - var value = this.getVariableValue(editor, ch.text, indentation) + ""; - if (ch.fmtString) - value = this.tmStrFormat(value, ch, editor); - if (ch.formatFunction) - value = this.tmFormatFunction(value, ch, editor); - - if (value && !ch.ifEnd) { - result.push(value); - gotoNext(ch); - } else if (!value && ch.ifEnd) { - gotoNext(ch.ifEnd); - } - } else if (ch.elseEnd) { - gotoNext(ch.elseEnd); - } else if (ch.tabstopId != null) { - result.push(ch); - } else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - - this.insertSnippetForSelection = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - ts.parents = {}; - } - if (ts.indexOf(p) !== -1) - return; - if (p.choices && !ts.choices) - ts.choices = p.choices; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object";}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0;}); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var ts = tabstops[id]; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) { - delete expanding[id]; - Object.keys(expanding).forEach(function(parentId) { - ts.parents[parentId] = true; - }); - } - continue; - } - expanding[id] = p; - var value = ts.value; - if (typeof value !== "string") - value = copyValue(value); - else if (p.fmt) - value = this.tmStrFormat(value, p, editor); - tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); - - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1){ - column = lines[lines.length - 1].length; - row += lines.length - 1; - } else - column += t.length; - text += t; - } else if (t) { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - - var tabstopManager = new TabstopManager(editor); - var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(tabstops, range.start, end, selectionId); - }; - - this.insertSnippet = function(editor, snippetText) { - var self = this; - if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText); - - editor.forEachSelection(function() { - self.insertSnippetForSelection(editor, snippetText); - }, null, {keepOrder: true}); - - if (editor.tabstopManager) - editor.tabstopManager.tabNext(); - }; - - this.$getScope = function(editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) - scope = "html"; - var c = editor.getCursorPosition(); - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - - return scope; - }; - - this.getActiveScopes = function(editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - - this.expandWithTab = function(editor, options) { - var self = this; - var result = editor.forEachSelection(function() { - return self.expandSnippetForSelection(editor, options); - }, null, {keepOrder: true}); - if (result && editor.tabstopManager) - editor.tabstopManager.tabNext(); - return result; - }; - - this.expandSnippetForSelection = function(editor, options) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - if (options && options.dryRun) - return true; - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippetForSelection(editor, snippet.content); - - this.variables.M__ = this.variables.T__ = null; - return true; - }; - - this.findMatchingSnippet = function(snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - - if (!snippets) - snippets = []; - - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")"; - - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope; - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - - if (s.prefix) - s.tabTrigger = s.prefix; - - if (!s.content && s.body) - s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; - - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) - return; - - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger); - - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger); - } - - if (Array.isArray(snippets)) { - snippets.forEach(addSnippet); - } else { - Object.keys(snippets).forEach(function(key) { - addSnippet(snippets[key]); - }); - } - - this._signal("registerSnippets", {scope: scope}); - }; - this.unregister = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - this.parseSnippetFile = function(str) { - str = str.replace(/\r/g, ""); - var list = [], snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]); - list.push(snippet); - } catch (e) {} - } if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } else if (key) { - snippet[key] = val; - } - } - } - return list; - }; - this.getSnippetByName = function(name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); -}; -(function() { - this.attach = function(editor) { - this.index = 0; - this.ranges = []; - this.tabstops = []; - this.$openTabstops = null; - this.selectedTabstop = null; - - this.editor = editor; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.detach = function() { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; - this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.editor = null; - }; - - this.onChange = function(delta) { - var isRemove = delta.action[0] == "r"; - var selectedTabstop = this.selectedTabstop || {}; - var parents = selectedTabstop.parents || {}; - var tabstops = (this.tabstops || []).slice(); - for (var i = 0; i < tabstops.length; i++) { - var ts = tabstops[i]; - var active = ts == selectedTabstop || parents[ts.index]; - ts.rangeList.$bias = active ? 0 : 1; - - if (delta.action == "remove" && ts !== selectedTabstop) { - var parentActive = ts.parents && ts.parents[selectedTabstop.index]; - var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); - startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; - var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); - endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; - var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); - for (var j = 0; j < toRemove.length; j++) - this.removeRange(toRemove[j]); - } - ts.rangeList.$onChange(delta); - } - var session = this.editor.session; - if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) - this.detach(); - }; - this.updateLinkedFields = function() { - var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) - return; - this.$inChange = true; - var session = this.editor.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = 0; i < ts.length; i++) { - var range = ts[i]; - if (!range.linked) - continue; - var original = range.original; - var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); - session.replace(range, fmt); - } - this.$inChange = false; - }; - this.onAfterExec = function(e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - this.onChangeSelection = function() { - if (!this.editor) - return; - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = 0; i < this.ranges.length; i++) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - this.onChangeSession = function() { - this.detach(); - }; - this.tabNext = function(dir) { - var max = this.tabstops.length; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 1), max); - if (index == max) - index = 0; - this.selectTabstop(index); - if (index === 0) - this.detach(); - }; - this.selectTabstop = function(index) { - this.$openTabstops = null; - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - - this.selectedTabstop = ts; - var range = ts.firstNonLinked || ts; - if (ts.choices) range.cursor = range.start; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(range); - for (var i = 0; i < ts.length; i++) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } else { - this.editor.selection.fromOrientedRange(range); - } - - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - if (this.selectedTabstop && this.selectedTabstop.choices) - this.editor.execCommand("startAutocomplete", {matches: this.selectedTabstop.choices}); - }; - this.addTabstops = function(tabstops, start, end) { - var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); - - if (!this.$openTabstops) - this.$openTabstops = []; - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - - var i = this.index; - var arg = [i + 1, 0]; - var ranges = this.ranges; - tabstops.forEach(function(ts, index) { - var dest = this.$openTabstops[index] || ts; - - for (var i = 0; i < ts.length; i++) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = dest; - ranges.push(range); - if (dest != ts) - dest.unshift(range); - else - dest[i] = range; - if (p.fmtString || (dest.firstNonLinked && useLink)) { - range.linked = true; - dest.hasLinkedRanges = true; - } else if (!dest.firstNonLinked) - dest.firstNonLinked = range; - } - if (!dest.firstNonLinked) - dest.hasLinkedRanges = false; - if (dest === ts) { - arg.push(dest); - this.$openTabstops[index] = dest; - } - this.addTabstopMarkers(dest); - dest.rangeList = dest.rangeList || new RangeList(); - dest.rangeList.$bias = 0; - dest.rangeList.addList(dest); - }, this); - - if (arg.length > 2) { - if (this.tabstops.length) - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - } - }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - this.removeRange = function(range) { - var i = range.tabstop.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - if (i != -1) this.ranges.splice(i, 1); - i = range.tabstop.rangeList.ranges.indexOf(range); - if (i != -1) range.tabstop.splice(i, 1); - this.editor.session.removeMarker(range.markerId); - if (!range.tabstop.length) { - i = this.tabstops.indexOf(range.tabstop); - if (i != -1) - this.tabstops.splice(i, 1); - if (!this.tabstops.length) - this.detach(); - } - }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(editor) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) - return; - editor.tabstopManager.tabNext(1); - editor.renderer.scrollCursorIntoView(); - }, - "Shift-Tab": function(editor) { - editor.tabstopManager.tabNext(-1); - editor.renderer.scrollCursorIntoView(); - }, - "Esc": function(editor) { - editor.tabstopManager.detach(); - } - }); -}).call(TabstopManager.prototype); - - - -var movePoint = function(point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; - -var moveRelative = function(point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; - - -dom.importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}", "snippets.css", false); - -exports.snippetManager = new SnippetManager(); - - -var Editor = require("./editor").Editor; -(function() { - this.insertSnippet = function(content, options) { - return exports.snippetManager.insertSnippet(this, content, options); - }; - this.expandSnippet = function(options) { - return exports.snippetManager.expandWithTab(this, options); - }; -}).call(Editor.prototype); - -}); - -ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config"], function(require, exports, module) { -"use strict"; - -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var AcePopup = require("./autocomplete/popup").AcePopup; -var util = require("./autocomplete/util"); -var lang = require("./lib/lang"); -var dom = require("./lib/dom"); -var snippetManager = require("./snippets").snippetManager; -var config = require("./config"); - -var Autocomplete = function() { - this.autoInsert = false; - this.autoSelect = true; - this.exactMatch = false; - this.gatherCompletionsId = 0; - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys(this.commands); - - this.blurListener = this.blurListener.bind(this); - this.changeListener = this.changeListener.bind(this); - this.mousedownListener = this.mousedownListener.bind(this); - this.mousewheelListener = this.mousewheelListener.bind(this); - - this.changeTimer = lang.delayedCall(function() { - this.updateCompletions(true); - }.bind(this)); - - this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); -}; - -(function() { - - this.$init = function() { - this.popup = new AcePopup(document.body || document.documentElement); - this.popup.on("click", function(e) { - this.insertMatch(); - e.stop(); - }.bind(this)); - this.popup.focus = this.editor.focus.bind(this.editor); - this.popup.on("show", this.tooltipTimer.bind(null, null)); - this.popup.on("select", this.tooltipTimer.bind(null, null)); - this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); - return this.popup; - }; - - this.getPopup = function() { - return this.popup || this.$init(); - }; - - this.openPopup = function(editor, prefix, keepPopupPosition) { - if (!this.popup) - this.$init(); - - this.popup.autoSelect = this.autoSelect; - - this.popup.setData(this.completions.filtered, this.completions.filterText); - - editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - - var renderer = editor.renderer; - this.popup.setRow(this.autoSelect ? 0 : -1); - if (!keepPopupPosition) { - this.popup.setTheme(editor.getTheme()); - this.popup.setFontSize(editor.getFontSize()); - - var lineHeight = renderer.layerConfig.lineHeight; - - var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); - pos.left -= this.popup.getTextLeftOffset(); - - var rect = editor.container.getBoundingClientRect(); - pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left - editor.renderer.scrollLeft; - pos.left += renderer.gutterWidth; - - this.popup.show(pos, lineHeight); - } else if (keepPopupPosition && !prefix) { - this.detach(); - } - this.changeTimer.cancel(); - }; - - this.detach = function() { - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.off("changeSelection", this.changeListener); - this.editor.off("blur", this.blurListener); - this.editor.off("mousedown", this.mousedownListener); - this.editor.off("mousewheel", this.mousewheelListener); - this.changeTimer.cancel(); - this.hideDocTooltip(); - - this.gatherCompletionsId += 1; - if (this.popup && this.popup.isOpen) - this.popup.hide(); - - if (this.base) - this.base.detach(); - this.activated = false; - this.completions = this.base = null; - }; - - this.changeListener = function(e) { - var cursor = this.editor.selection.lead; - if (cursor.row != this.base.row || cursor.column < this.base.column) { - this.detach(); - } - if (this.activated) - this.changeTimer.schedule(); - else - this.detach(); - }; - - this.blurListener = function(e) { - var el = document.activeElement; - var text = this.editor.textInput.getElement(); - var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); - var container = this.popup && this.popup.container; - if (el != text && el.parentNode != container && !fromTooltip - && el != this.tooltipNode && e.relatedTarget != text - ) { - this.detach(); - } - }; - - this.mousedownListener = function(e) { - this.detach(); - }; - - this.mousewheelListener = function(e) { - this.detach(); - }; - - this.goTo = function(where) { - this.popup.goTo(where); - }; - - this.insertMatch = function(data, options) { - if (!data) - data = this.popup.getData(this.popup.getRow()); - if (!data) - return false; - - var completions = this.completions; - this.editor.startOperation({command: {name: "insertMatch"}}); - if (data.completer && data.completer.insertMatch) { - data.completer.insertMatch(this.editor, data); - } else { - if (completions.filterText) { - var ranges = this.editor.selection.getAllRanges(); - for (var i = 0, range; range = ranges[i]; i++) { - range.start.column -= completions.filterText.length; - this.editor.session.remove(range); - } - } - if (data.snippet) - snippetManager.insertSnippet(this.editor, data.snippet); - else - this.editor.execCommand("insertstring", data.value || data); - } - if (this.completions == completions) - this.detach(); - this.editor.endOperation(); - }; - - - this.commands = { - "Up": function(editor) { editor.completer.goTo("up"); }, - "Down": function(editor) { editor.completer.goTo("down"); }, - "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, - "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, - - "Esc": function(editor) { editor.completer.detach(); }, - "Return": function(editor) { return editor.completer.insertMatch(); }, - "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); }, - "Tab": function(editor) { - var result = editor.completer.insertMatch(); - if (!result && !editor.tabstopManager) - editor.completer.goTo("down"); - else - return result; - }, - - "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, - "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } - }; - - this.gatherCompletions = function(editor, callback) { - var session = editor.getSession(); - var pos = editor.getCursorPosition(); - - var prefix = util.getCompletionPrefix(editor); - - this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); - this.base.$insertRight = true; - - var matches = []; - var total = editor.completers.length; - editor.completers.forEach(function(completer, i) { - completer.getCompletions(editor, session, pos, prefix, function(err, results) { - if (!err && results) - matches = matches.concat(results); - callback(null, { - prefix: util.getCompletionPrefix(editor), - matches: matches, - finished: (--total === 0) - }); - }); - }); - return true; - }; - - this.showPopup = function(editor, options) { - if (this.editor) - this.detach(); - - this.activated = true; - - this.editor = editor; - if (editor.completer != this) { - if (editor.completer) - editor.completer.detach(); - editor.completer = this; - } - - editor.on("changeSelection", this.changeListener); - editor.on("blur", this.blurListener); - editor.on("mousedown", this.mousedownListener); - editor.on("mousewheel", this.mousewheelListener); - - this.updateCompletions(false, options); - }; - - this.updateCompletions = function(keepPopupPosition, options) { - if (keepPopupPosition && this.base && this.completions) { - var pos = this.editor.getCursorPosition(); - var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); - if (prefix == this.completions.filterText) - return; - this.completions.setFilter(prefix); - if (!this.completions.filtered.length) - return this.detach(); - if (this.completions.filtered.length == 1 - && this.completions.filtered[0].value == prefix - && !this.completions.filtered[0].snippet) - return this.detach(); - this.openPopup(this.editor, prefix, keepPopupPosition); - return; - } - - if (options && options.matches) { - var pos = this.editor.getSelectionRange().start; - this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); - this.base.$insertRight = true; - this.completions = new FilteredList(options.matches); - return this.openPopup(this.editor, "", keepPopupPosition); - } - var _id = this.gatherCompletionsId; - var detachIfFinished = function(results) { - if (!results.finished) return; - return this.detach(); - }.bind(this); - - var processResults = function(results) { - var prefix = results.prefix; - var matches = results.matches; - - this.completions = new FilteredList(matches); - - if (this.exactMatch) - this.completions.exactMatch = true; - - this.completions.setFilter(prefix); - var filtered = this.completions.filtered; - if (!filtered.length) - return detachIfFinished(results); - if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) - return detachIfFinished(results); - if (this.autoInsert && filtered.length == 1 && results.finished) - return this.insertMatch(filtered[0]); - - this.openPopup(this.editor, prefix, keepPopupPosition); - }.bind(this); - - var isImmediate = true; - var immediateResults = null; - this.gatherCompletions(this.editor, function(err, results) { - var prefix = results.prefix; - var matches = results && results.matches; - - if (!matches || !matches.length) - return detachIfFinished(results); - if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId) - return; - if (isImmediate) { - immediateResults = results; - return; - } - - processResults(results); - }.bind(this)); - - isImmediate = false; - if (immediateResults) { - var results = immediateResults; - immediateResults = null; - processResults(results); - } - }; - - this.cancelContextMenu = function() { - this.editor.$mouseHandler.cancelContextMenu(); - }; - - this.updateDocTooltip = function() { - var popup = this.popup; - var all = popup.data; - var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); - var doc = null; - if (!selected || !this.editor || !this.popup.isOpen) - return this.hideDocTooltip(); - this.editor.completers.some(function(completer) { - if (completer.getDocTooltip) - doc = completer.getDocTooltip(selected); - return doc; - }); - if (!doc && typeof selected != "string") - doc = selected; - - if (typeof doc == "string") - doc = {docText: doc}; - if (!doc || !(doc.docHTML || doc.docText)) - return this.hideDocTooltip(); - this.showDocTooltip(doc); - }; - - this.showDocTooltip = function(item) { - if (!this.tooltipNode) { - this.tooltipNode = dom.createElement("div"); - this.tooltipNode.className = "ace_tooltip ace_doc-tooltip"; - this.tooltipNode.style.margin = 0; - this.tooltipNode.style.pointerEvents = "auto"; - this.tooltipNode.tabIndex = -1; - this.tooltipNode.onblur = this.blurListener.bind(this); - this.tooltipNode.onclick = this.onTooltipClick.bind(this); - } - - var tooltipNode = this.tooltipNode; - if (item.docHTML) { - tooltipNode.innerHTML = item.docHTML; - } else if (item.docText) { - tooltipNode.textContent = item.docText; - } - - if (!tooltipNode.parentNode) - document.body.appendChild(tooltipNode); - var popup = this.popup; - var rect = popup.container.getBoundingClientRect(); - tooltipNode.style.top = popup.container.style.top; - tooltipNode.style.bottom = popup.container.style.bottom; - - tooltipNode.style.display = "block"; - if (window.innerWidth - rect.right < 320) { - if (rect.left < 320) { - if(popup.isTopdown) { - tooltipNode.style.top = rect.bottom + "px"; - tooltipNode.style.left = rect.left + "px"; - tooltipNode.style.right = ""; - tooltipNode.style.bottom = ""; - } else { - tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; - tooltipNode.style.left = rect.left + "px"; - tooltipNode.style.right = ""; - tooltipNode.style.bottom = ""; - } - } else { - tooltipNode.style.right = window.innerWidth - rect.left + "px"; - tooltipNode.style.left = ""; - } - } else { - tooltipNode.style.left = (rect.right + 1) + "px"; - tooltipNode.style.right = ""; - } - }; - - this.hideDocTooltip = function() { - this.tooltipTimer.cancel(); - if (!this.tooltipNode) return; - var el = this.tooltipNode; - if (!this.editor.isFocused() && document.activeElement == el) - this.editor.focus(); - this.tooltipNode = null; - if (el.parentNode) - el.parentNode.removeChild(el); - }; - - this.onTooltipClick = function(e) { - var a = e.target; - while (a && a != this.tooltipNode) { - if (a.nodeName == "A" && a.href) { - a.rel = "noreferrer"; - a.target = "_blank"; - break; - } - a = a.parentNode; - } - }; - - this.destroy = function() { - this.detach(); - if (this.popup) { - this.popup.destroy(); - var el = this.popup.container; - if (el && el.parentNode) - el.parentNode.removeChild(el); - } - if (this.editor && this.editor.completer == this) - this.editor.completer == null; - this.popup = null; - }; - -}).call(Autocomplete.prototype); - - -Autocomplete.for = function(editor) { - if (editor.completer) { - return editor.completer; - } - if (config.get("sharedPopups")) { - if (!Autocomplete.$shared) - Autocomplete.$sharedInstance = new Autocomplete(); - editor.completer = Autocomplete.$sharedInstance; - } else { - editor.completer = new Autocomplete(); - editor.once("destroy", function(e, editor) { - editor.completer.destroy(); - }); - } - return editor.completer; -}; - -Autocomplete.startCommand = { - name: "startAutocomplete", - exec: function(editor, options) { - var completer = Autocomplete.for(editor); - completer.autoInsert = false; - completer.autoSelect = true; - completer.showPopup(editor, options); - completer.cancelContextMenu(); - }, - bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" -}; - -var FilteredList = function(array, filterText) { - this.all = array; - this.filtered = array; - this.filterText = filterText || ""; - this.exactMatch = false; -}; -(function(){ - this.setFilter = function(str) { - if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) - var matches = this.filtered; - else - var matches = this.all; - - this.filterText = str; - matches = this.filterCompletions(matches, this.filterText); - matches = matches.sort(function(a, b) { - return b.exactMatch - a.exactMatch || b.$score - a.$score - || (a.caption || a.value).localeCompare(b.caption || b.value); - }); - var prev = null; - matches = matches.filter(function(item){ - var caption = item.snippet || item.caption || item.value; - if (caption === prev) return false; - prev = caption; - return true; - }); - - this.filtered = matches; - }; - this.filterCompletions = function(items, needle) { - var results = []; - var upper = needle.toUpperCase(); - var lower = needle.toLowerCase(); - loop: for (var i = 0, item; item = items[i]; i++) { - var caption = item.caption || item.value || item.snippet; - if (!caption) continue; - var lastIndex = -1; - var matchMask = 0; - var penalty = 0; - var index, distance; - - if (this.exactMatch) { - if (needle !== caption.substr(0, needle.length)) - continue loop; - } else { - var fullMatchIndex = caption.toLowerCase().indexOf(lower); - if (fullMatchIndex > -1) { - penalty = fullMatchIndex; - } else { - for (var j = 0; j < needle.length; j++) { - var i1 = caption.indexOf(lower[j], lastIndex + 1); - var i2 = caption.indexOf(upper[j], lastIndex + 1); - index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; - if (index < 0) - continue loop; - distance = index - lastIndex - 1; - if (distance > 0) { - if (lastIndex === -1) - penalty += 10; - penalty += distance; - matchMask = matchMask | (1 << j); - } - lastIndex = index; - } - } - } - item.matchMask = matchMask; - item.exactMatch = penalty ? 0 : 1; - item.$score = (item.score || 0) - penalty; - results.push(item); - } - return results; - }; -}).call(FilteredList.prototype); - -exports.Autocomplete = Autocomplete; -exports.FilteredList = FilteredList; - -}); - -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -'use strict'; -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 100000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}\ -.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\ -vertical-align: middle;\ -}\ -.ace_optionsMenuEntry button[ace_selected_button=true] {\ -background: #e7e7e7;\ -box-shadow: 1px 0px 2px 0px #adadad inset;\ -border-color: #adadad;\ -}\ -.ace_optionsMenuEntry button {\ -background: white;\ -border: 1px solid lightgray;\ -margin: 0px;\ -}\ -.ace_optionsMenuEntry button:hover{\ -background: #f0f0f0;\ -}"; -dom.importCssString(cssText, "settings_menu.css", false); - -module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { - var closer = document.createElement('div'); - var ignoreFocusOut = false; - - function documentEscListener(e) { - if (e.keyCode === 27) { - close(); - } - } - - function close() { - if (!closer) return; - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - if (editor) { - editor.focus(); - } - closer = null; - callback && callback(); - } - function setIgnoreFocusOut(ignore) { - ignoreFocusOut = ignore; - if (ignore) { - closer.style.pointerEvents = "none"; - contentElement.style.pointerEvents = "auto"; - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); - closer.addEventListener('click', function(e) { - if (!ignoreFocusOut) { - close(); - } - }); - document.addEventListener('keydown', documentEscListener); - - contentElement.addEventListener('click', function (e) { - e.stopPropagation(); - }); - - closer.appendChild(contentElement); - document.body.appendChild(closer); - if (editor) { - editor.blur(); - } - return { - close: close, - setIgnoreFocusOut: setIgnoreFocusOut - }; -}; - -}); - -ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], - Alda: ["alda"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - Apex: ["apex|cls|trigger|tgr"], - AQL: ["aql"], - AsciiDoc: ["asciidoc|adoc"], - ASL: ["dsl|asl|asl.json"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - Crystal: ["cr"], - CSharp: ["cs"], - Csound_Document: ["csd"], - Csound_Orchestra: ["orc"], - Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Edifact: ["edi"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], - FSL: ["fsl"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], - GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], - HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSON5: ["json5"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - Latte: ["latte"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MediaWiki: ["wiki|mediawiki"], - MEL: ["mel"], - MIPS: ["s|asm"], - MIXAL: ["mixal"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nginx: ["nginx|conf"], - Nim: ["nim"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - Nunjucks: ["nunjucks|nunjs|nj|njk"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - PHP_Laravel_blade: ["blade.php"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prisma: ["prisma"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Puppet: ["epp|pp"], - Python: ["py"], - QML: ["qml"], - R: ["r"], - Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala|sbt"], - Scheme: ["scm|sm|rkt|oak|scheme"], - Scrypt: ["scrypt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Slim: ["slim|skim"], - Smarty: ["smarty|tpl"], - Smithy: ["smithy"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Terraform: ["tf", "tfvars", "terragrunt"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Visualforce: ["vfp|component|page"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Zeek: ["zeek|bro"], - Django: ["html"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C and C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey / AutoIt" -}; - -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); - -ace.define("ace/ext/prompt",["require","exports","module","ace/range","ace/lib/dom","ace/ext/menu_tools/get_editor_keyboard_shortcuts","ace/autocomplete","ace/autocomplete/popup","ace/autocomplete/popup","ace/undomanager","ace/tokenizer","ace/ext/menu_tools/overlay_page","ace/ext/modelist"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -var dom = require("../lib/dom"); -var shortcuts = require("../ext/menu_tools/get_editor_keyboard_shortcuts"); -var FilteredList= require("../autocomplete").FilteredList; -var AcePopup = require('../autocomplete/popup').AcePopup; -var $singleLineEditor = require('../autocomplete/popup').$singleLineEditor; -var UndoManager = require("../undomanager").UndoManager; -var Tokenizer = require("../tokenizer").Tokenizer; -var overlayPage = require("./menu_tools/overlay_page").overlayPage; -var modelist = require("./modelist"); -var openPrompt; - -function prompt(editor, message, options, callback) { - if (typeof message == "object") { - return prompt(editor, "", message, options); - } - if (openPrompt) { - var lastPrompt = openPrompt; - editor = lastPrompt.editor; - lastPrompt.close(); - if (lastPrompt.name && lastPrompt.name == options.name) - return; - } - if (options.$type) - return prompt[options.$type](editor, callback); - - var cmdLine = $singleLineEditor(); - cmdLine.session.setUndoManager(new UndoManager()); - - var el = dom.buildDom(["div", {class: "ace_prompt_container" + (options.hasDescription ? " input-box-with-description" : "")}]); - var overlay = overlayPage(editor, el, done); - el.appendChild(cmdLine.container); - - if (editor) { - editor.cmdLine = cmdLine; - cmdLine.setOption("fontSize", editor.getOption("fontSize")); - } - if (message) { - cmdLine.setValue(message, 1); - } - if (options.selection) { - cmdLine.selection.setRange({ - start: cmdLine.session.doc.indexToPosition(options.selection[0]), - end: cmdLine.session.doc.indexToPosition(options.selection[1]) - }); - } - - if (options.getCompletions) { - var popup = new AcePopup(); - popup.renderer.setStyle("ace_autocomplete_inline"); - popup.container.style.display = "block"; - popup.container.style.maxWidth = "600px"; - popup.container.style.width = "100%"; - popup.container.style.marginTop = "3px"; - popup.renderer.setScrollMargin(2, 2, 0, 0); - popup.autoSelect = false; - popup.renderer.$maxLines = 15; - popup.setRow(-1); - popup.on("click", function(e) { - var data = popup.getData(popup.getRow()); - if (!data.error) { - cmdLine.setValue(data.value || data.name || data); - accept(); - e.stop(); - } - }); - el.appendChild(popup.container); - updateCompletions(); - } - - if (options.$rules) { - var tokenizer = new Tokenizer(options.$rules); - cmdLine.session.bgTokenizer.setTokenizer(tokenizer); - } - - if (options.placeholder) { - cmdLine.setOption("placeholder", options.placeholder); - } - - if (options.hasDescription) { - var promptTextContainer = dom.buildDom(["div", {class: "ace_prompt_text_container"}]); - dom.buildDom(options.prompt || "Press 'Enter' to confirm or 'Escape' to cancel", promptTextContainer); - el.appendChild(promptTextContainer); - } - - overlay.setIgnoreFocusOut(options.ignoreFocusOut); - - function accept() { - var val; - if (popup && popup.getCursorPosition().row > 0) { - val = valueFromRecentList(); - } else { - val = cmdLine.getValue(); - } - var curData = popup ? popup.getData(popup.getRow()) : val; - if (curData && !curData.error) { - done(); - options.onAccept && options.onAccept({ - value: val, - item: curData - }, cmdLine); - } - } - - var keys = { - "Enter": accept, - "Esc|Shift-Esc": function() { - options.onCancel && options.onCancel(cmdLine.getValue(), cmdLine); - done(); - } - }; - - if (popup) { - Object.assign(keys, { - "Up": function(editor) { popup.goTo("up"); valueFromRecentList();}, - "Down": function(editor) { popup.goTo("down"); valueFromRecentList();}, - "Ctrl-Up|Ctrl-Home": function(editor) { popup.goTo("start"); valueFromRecentList();}, - "Ctrl-Down|Ctrl-End": function(editor) { popup.goTo("end"); valueFromRecentList();}, - "Tab": function(editor) { - popup.goTo("down"); valueFromRecentList(); - }, - "PageUp": function(editor) { popup.gotoPageUp(); valueFromRecentList();}, - "PageDown": function(editor) { popup.gotoPageDown(); valueFromRecentList();} - }); - } - - cmdLine.commands.bindKeys(keys); - - function done() { - overlay.close(); - callback && callback(); - openPrompt = null; - } - - cmdLine.on("input", function() { - options.onInput && options.onInput(); - updateCompletions(); - }); - - function updateCompletions() { - if (options.getCompletions) { - var prefix; - if (options.getPrefix) { - prefix = options.getPrefix(cmdLine); - } - - var completions = options.getCompletions(cmdLine); - popup.setData(completions, prefix); - popup.resize(true); - } - } - - function valueFromRecentList() { - var current = popup.getData(popup.getRow()); - if (current && !current.error) - return current.value || current.caption || current; - } - - cmdLine.resize(true); - if (popup) { - popup.resize(true); - } - cmdLine.focus(); - - openPrompt = { - close: done, - name: options.name, - editor: editor - }; -} - -prompt.gotoLine = function(editor, callback) { - function stringifySelection(selection) { - if (!Array.isArray(selection)) - selection = [selection]; - return selection.map(function(r) { - var cursor = r.isBackwards ? r.start: r.end; - var anchor = r.isBackwards ? r.end: r.start; - var row = anchor.row; - var s = (row + 1) + ":" + anchor.column; - - if (anchor.row == cursor.row) { - if (anchor.column != cursor.column) - s += ">" + ":" + cursor.column; - } else { - s += ">" + (cursor.row + 1) + ":" + cursor.column; - } - return s; - }).reverse().join(", "); - } - - prompt(editor, ":" + stringifySelection(editor.selection.toJSON()), { - name: "gotoLine", - selection: [1, Number.MAX_VALUE], - onAccept: function(data) { - var value = data.value; - var _history = prompt.gotoLine._history; - if (!_history) - prompt.gotoLine._history = _history = []; - if (_history.indexOf(value) != -1) - _history.splice(_history.indexOf(value), 1); - _history.unshift(value); - if (_history.length > 20) _history.length = 20; - - - var pos = editor.getCursorPosition(); - var ranges = []; - value.replace(/^:/, "").split(/,/).map(function(str) { - var parts = str.split(/([<>:+-]|c?\d+)|[^c\d<>:+-]+/).filter(Boolean); - var i = 0; - function readPosition() { - var c = parts[i++]; - if (!c) return; - if (c[0] == "c") { - var index = parseInt(c.slice(1)) || 0; - return editor.session.doc.indexToPosition(index); - } - var row = pos.row; - var column = 0; - if (/\d/.test(c)) { - row = parseInt(c) - 1; - c = parts[i++]; - } - if (c == ":") { - c = parts[i++]; - if (/\d/.test(c)) { - column = parseInt(c) || 0; - } - } - return {row: row, column: column}; - } - pos = readPosition(); - var range = Range.fromPoints(pos, pos); - if (parts[i] == ">") { - i++; - range.end = readPosition(); - } - else if (parts[i] == "<") { - i++; - range.start = readPosition(); - } - ranges.unshift(range); - }); - editor.selection.fromJSON(ranges); - var scrollTop = editor.renderer.scrollTop; - editor.renderer.scrollSelectionIntoView( - editor.selection.anchor, - editor.selection.cursor, - 0.5 - ); - editor.renderer.animateScrolling(scrollTop); - }, - history: function() { - var undoManager = editor.session.getUndoManager(); - if (!prompt.gotoLine._history) - return []; - return prompt.gotoLine._history; - - }, - getCompletions: function(cmdLine) { - var value = cmdLine.getValue(); - var m = value.replace(/^:/, "").split(":"); - var row = Math.min(parseInt(m[0]) || 1, editor.session.getLength()) - 1; - var line = editor.session.getLine(row); - var current = value + " " + line; - return [current].concat(this.history()); - }, - $rules: { - start: [{ - regex: /\d+/, - token: "string" - }, { - regex: /[:,><+\-c]/, - token: "keyword" - }] - } - }); -}; - -prompt.commands = function(editor, callback) { - function normalizeName(name) { - return (name || "").replace(/^./, function(x) { - return x.toUpperCase(x); - }).replace(/[a-z][A-Z]/g, function(x) { - return x[0] + " " + x[1].toLowerCase(x); - }); - } - function getEditorCommandsByName(excludeCommands) { - var commandsByName = []; - var commandMap = {}; - editor.keyBinding.$handlers.forEach(function(handler) { - var platform = handler.platform; - var cbn = handler.byName; - for (var i in cbn) { - var key = cbn[i].bindKey; - if (typeof key !== "string") { - key = key && key[platform] || ""; - } - var commands = cbn[i]; - var description = commands.description || normalizeName(commands.name); - if (!Array.isArray(commands)) - commands = [commands]; - commands.forEach(function(command) { - if (typeof command != "string") - command = command.name; - var needle = excludeCommands.find(function(el) { - return el === command; - }); - if (!needle) { - if (commandMap[command]) { - commandMap[command].key += "|" + key; - } else { - commandMap[command] = {key: key, command: command, description: description}; - commandsByName.push(commandMap[command]); - } - } - }); - } - }); - return commandsByName; - } - var excludeCommandsList = ["insertstring", "inserttext", "setIndentation", "paste"]; - var shortcutsArray = getEditorCommandsByName(excludeCommandsList); - shortcutsArray = shortcutsArray.map(function(item) { - return {value: item.description, meta: item.key, command: item.command}; - }); - prompt(editor, "", { - name: "commands", - selection: [0, Number.MAX_VALUE], - maxHistoryCount: 5, - onAccept: function(data) { - if (data.item) { - var commandName = data.item.command; - this.addToHistory(data.item); - - editor.execCommand(commandName); - } - }, - addToHistory: function(item) { - var history = this.history(); - history.unshift(item); - delete item.message; - for (var i = 1; i < history.length; i++) { - if (history[i]["command"] == item.command ) { - history.splice(i, 1); - break; - } - } - if (this.maxHistoryCount > 0 && history.length > this.maxHistoryCount) { - history.splice(history.length - 1, 1); - } - prompt.commands.history = history; - }, - history: function() { - return prompt.commands.history || []; - }, - getPrefix: function(cmdLine) { - var currentPos = cmdLine.getCursorPosition(); - var filterValue = cmdLine.getValue(); - return filterValue.substring(0, currentPos.column); - }, - getCompletions: function(cmdLine) { - function getFilteredCompletions(commands, prefix) { - var resultCommands = JSON.parse(JSON.stringify(commands)); - - var filtered = new FilteredList(resultCommands); - return filtered.filterCompletions(resultCommands, prefix); - } - - function getUniqueCommandList(commands, usedCommands) { - if (!usedCommands || !usedCommands.length) { - return commands; - } - var excludeCommands = []; - usedCommands.forEach(function(item) { - excludeCommands.push(item.command); - }); - - var resultCommands = []; - - commands.forEach(function(item) { - if (excludeCommands.indexOf(item.command) === -1) { - resultCommands.push(item); - } - }); - - return resultCommands; - } - - var prefix = this.getPrefix(cmdLine); - var recentlyUsedCommands = getFilteredCompletions(this.history(), prefix); - var otherCommands = getUniqueCommandList(shortcutsArray, recentlyUsedCommands); - otherCommands = getFilteredCompletions(otherCommands, prefix); - - if (recentlyUsedCommands.length && otherCommands.length) { - recentlyUsedCommands[0]["message"] = " Recently used"; - otherCommands[0]["message"] = " Other commands"; - } - - var completions = recentlyUsedCommands.concat(otherCommands); - return completions.length > 0 ? completions : [{ - value: "No matching commands", - error: 1 - }]; - } - }); -}; - -prompt.modes = function(editor, callback) { - var modesArray = modelist.modes; - modesArray = modesArray.map(function(item) { - return {value: item.caption, mode: item.name}; - }); - prompt(editor, "", { - name: "modes", - selection: [0, Number.MAX_VALUE], - onAccept: function(data) { - if (data.item) { - var modeName = "ace/mode/" + data.item.mode; - editor.session.setMode(modeName); - } - }, - getPrefix: function(cmdLine) { - var currentPos = cmdLine.getCursorPosition(); - var filterValue = cmdLine.getValue(); - return filterValue.substring(0, currentPos.column); - }, - getCompletions: function(cmdLine) { - function getFilteredCompletions(modes, prefix) { - var resultCommands = JSON.parse(JSON.stringify(modes)); - - var filtered = new FilteredList(resultCommands); - return filtered.filterCompletions(resultCommands, prefix); - } - - var prefix = this.getPrefix(cmdLine); - var completions = getFilteredCompletions(modesArray, prefix); - return completions.length > 0 ? completions : [{ - "caption": "No mode matching", - "value": "No mode matching", - "error": 1 - }]; - } - }); -}; - -dom.importCssString(".ace_prompt_container {\ - max-width: 600px;\ - width: 100%;\ - margin: 20px auto;\ - padding: 3px;\ - background: white;\ - border-radius: 2px;\ - box-shadow: 0px 2px 3px 0px #555;\ -}", "promtp.css", false); - - -exports.prompt = prompt; - -}); (function() { - ace.require(["ace/ext/prompt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-rtl.js b/src-noconflict/ext-rtl.js deleted file mode 100644 index 1a13ff8..0000000 --- a/src-noconflict/ext-rtl.js +++ /dev/null @@ -1,122 +0,0 @@ -ace.define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var commands = [{ - name: "leftToRight", - bindKey: { win: "Ctrl-Alt-Shift-L", mac: "Command-Alt-Shift-L" }, - exec: function(editor) { - editor.session.$bidiHandler.setRtlDirection(editor, false); - }, - readOnly: true -}, { - name: "rightToLeft", - bindKey: { win: "Ctrl-Alt-Shift-R", mac: "Command-Alt-Shift-R" }, - exec: function(editor) { - editor.session.$bidiHandler.setRtlDirection(editor, true); - }, - readOnly: true -}]; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - rtlText: { - set: function(val) { - if (val) { - this.on("change", onChange); - this.on("changeSelection", onChangeSelection); - this.renderer.on("afterRender", updateLineDirection); - this.commands.on("exec", onCommandEmitted); - this.commands.addCommands(commands); - } else { - this.off("change", onChange); - this.off("changeSelection", onChangeSelection); - this.renderer.off("afterRender", updateLineDirection); - this.commands.off("exec", onCommandEmitted); - this.commands.removeCommands(commands); - clearTextLayer(this.renderer); - } - this.renderer.updateFull(); - } - }, - rtl: { - set: function(val) { - this.session.$bidiHandler.$isRtl = val; - if (val) { - this.setOption("rtlText", false); - this.renderer.on("afterRender", updateLineDirection); - this.session.$bidiHandler.seenBidi = true; - } else { - this.renderer.off("afterRender", updateLineDirection); - clearTextLayer(this.renderer); - } - this.renderer.updateFull(); - } - } -}); -function onChangeSelection(e, editor) { - var lead = editor.getSelection().lead; - if (editor.session.$bidiHandler.isRtlLine(lead.row)) { - if (lead.column === 0) { - if (editor.session.$bidiHandler.isMoveLeftOperation && lead.row > 0) { - editor.getSelection().moveCursorTo(lead.row - 1, editor.session.getLine(lead.row - 1).length); - } else { - if (editor.getSelection().isEmpty()) - lead.column += 1; - else - lead.setPosition(lead.row, lead.column + 1); - } - } - } -} - -function onCommandEmitted(commadEvent) { - commadEvent.editor.session.$bidiHandler.isMoveLeftOperation = /gotoleft|selectleft|backspace|removewordleft/.test(commadEvent.command.name); -} -function onChange(delta, editor) { - var session = editor.session; - session.$bidiHandler.currentRow = null; - if (session.$bidiHandler.isRtlLine(delta.start.row) && delta.action === 'insert' && delta.lines.length > 1) { - for (var row = delta.start.row; row < delta.end.row; row++) { - if (session.getLine(row + 1).charAt(0) !== session.$bidiHandler.RLE) - session.doc.$lines[row + 1] = session.$bidiHandler.RLE + session.getLine(row + 1); - } - } -} - -function updateLineDirection(e, renderer) { - var session = renderer.session; - var $bidiHandler = session.$bidiHandler; - var cells = renderer.$textLayer.$lines.cells; - var width = renderer.layerConfig.width - renderer.layerConfig.padding + "px"; - cells.forEach(function(cell) { - var style = cell.element.style; - if ($bidiHandler && $bidiHandler.isRtlLine(cell.row)) { - style.direction = "rtl"; - style.textAlign = "right"; - style.width = width; - } else { - style.direction = ""; - style.textAlign = ""; - style.width = ""; - } - }); -} - -function clearTextLayer(renderer) { - var lines = renderer.$textLayer.$lines; - lines.cells.forEach(clear); - lines.cellCache.forEach(clear); - function clear(cell) { - var style = cell.element.style; - style.direction = style.textAlign = style.width = ""; - } -} - -}); (function() { - ace.require(["ace/ext/rtl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-searchbox.js b/src-noconflict/ext-searchbox.js deleted file mode 100644 index 046c42e..0000000 --- a/src-noconflict/ext-searchbox.js +++ /dev/null @@ -1,514 +0,0 @@ -ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = "\ -.ace_search {\ -background-color: #ddd;\ -color: #666;\ -border: 1px solid #cbcbcb;\ -border-top: 0 none;\ -overflow: hidden;\ -margin: 0;\ -padding: 4px 6px 0 4px;\ -position: absolute;\ -top: 0;\ -z-index: 99;\ -white-space: normal;\ -}\ -.ace_search.left {\ -border-left: 0 none;\ -border-radius: 0px 0px 5px 0px;\ -left: 0;\ -}\ -.ace_search.right {\ -border-radius: 0px 0px 0px 5px;\ -border-right: 0 none;\ -right: 0;\ -}\ -.ace_search_form, .ace_replace_form {\ -margin: 0 20px 4px 0;\ -overflow: hidden;\ -line-height: 1.9;\ -}\ -.ace_replace_form {\ -margin-right: 0;\ -}\ -.ace_search_form.ace_nomatch {\ -outline: 1px solid red;\ -}\ -.ace_search_field {\ -border-radius: 3px 0 0 3px;\ -background-color: white;\ -color: black;\ -border: 1px solid #cbcbcb;\ -border-right: 0 none;\ -outline: 0;\ -padding: 0;\ -font-size: inherit;\ -margin: 0;\ -line-height: inherit;\ -padding: 0 6px;\ -min-width: 17em;\ -vertical-align: top;\ -min-height: 1.8em;\ -box-sizing: content-box;\ -}\ -.ace_searchbtn {\ -border: 1px solid #cbcbcb;\ -line-height: inherit;\ -display: inline-block;\ -padding: 0 6px;\ -background: #fff;\ -border-right: 0 none;\ -border-left: 1px solid #dcdcdc;\ -cursor: pointer;\ -margin: 0;\ -position: relative;\ -color: #666;\ -}\ -.ace_searchbtn:last-child {\ -border-radius: 0 3px 3px 0;\ -border-right: 1px solid #cbcbcb;\ -}\ -.ace_searchbtn:disabled {\ -background: none;\ -cursor: default;\ -}\ -.ace_searchbtn:hover {\ -background-color: #eef1f6;\ -}\ -.ace_searchbtn.prev, .ace_searchbtn.next {\ -padding: 0px 0.7em\ -}\ -.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\ -content: \"\";\ -border: solid 2px #888;\ -width: 0.5em;\ -height: 0.5em;\ -border-width: 2px 0 0 2px;\ -display:inline-block;\ -transform: rotate(-45deg);\ -}\ -.ace_searchbtn.next:after {\ -border-width: 0 2px 2px 0 ;\ -}\ -.ace_searchbtn_close {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ -border-radius: 50%;\ -border: 0 none;\ -color: #656565;\ -cursor: pointer;\ -font: 16px/16px Arial;\ -padding: 0;\ -height: 14px;\ -width: 14px;\ -top: 9px;\ -right: 7px;\ -position: absolute;\ -}\ -.ace_searchbtn_close:hover {\ -background-color: #656565;\ -background-position: 50% 100%;\ -color: white;\ -}\ -.ace_button {\ -margin-left: 2px;\ -cursor: pointer;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -overflow: hidden;\ -opacity: 0.7;\ -border: 1px solid rgba(100,100,100,0.23);\ -padding: 1px;\ -box-sizing: border-box!important;\ -color: black;\ -}\ -.ace_button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_button:active {\ -background-color: #ddd;\ -}\ -.ace_button.checked {\ -border-color: #3399ff;\ -opacity:1;\ -}\ -.ace_search_options{\ -margin-bottom: 3px;\ -text-align: right;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -clear: both;\ -}\ -.ace_search_counter {\ -float: left;\ -font-family: arial;\ -padding: 0 8px;\ -}"; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); - -var MAX_COUNT = 999; - -dom.importCssString(searchboxCss, "ace_searchbox", false); - -var SearchBox = function(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - dom.buildDom(["div", {class:"ace_search right"}, - ["span", {action: "hide", class: "ace_searchbtn_close"}], - ["div", {class: "ace_search_form"}, - ["input", {class: "ace_search_field", placeholder: "Search for", spellcheck: "false"}], - ["span", {action: "findPrev", class: "ace_searchbtn prev"}, "\u200b"], - ["span", {action: "findNext", class: "ace_searchbtn next"}, "\u200b"], - ["span", {action: "findAll", class: "ace_searchbtn", title: "Alt-Enter"}, "All"] - ], - ["div", {class: "ace_replace_form"}, - ["input", {class: "ace_search_field", placeholder: "Replace with", spellcheck: "false"}], - ["span", {action: "replaceAndFindNext", class: "ace_searchbtn"}, "Replace"], - ["span", {action: "replaceAll", class: "ace_searchbtn"}, "All"] - ], - ["div", {class: "ace_search_options"}, - ["span", {action: "toggleReplace", class: "ace_button", title: "Toggle Replace mode", - style: "float:left;margin-top:-2px;padding:0 5px;"}, "+"], - ["span", {class: "ace_search_counter"}], - ["span", {action: "toggleRegexpMode", class: "ace_button", title: "RegExp Search"}, ".*"], - ["span", {action: "toggleCaseSensitive", class: "ace_button", title: "CaseSensitive Search"}, "Aa"], - ["span", {action: "toggleWholeWords", class: "ace_button", title: "Whole Word Search"}, "\\b"], - ["span", {action: "searchInSelection", class: "ace_button", title: "Search In Selection"}, "S"] - ] - ], div); - this.element = div.firstChild; - - this.setSession = this.setSession.bind(this); - - this.$init(); - this.setEditor(editor); - dom.importCssString(searchboxCss, "ace_searchbox", editor.container); -}; - -(function() { - this.setEditor = function(editor) { - editor.searchBox = this; - editor.renderer.scroller.appendChild(this.element); - this.editor = editor; - }; - - this.setSession = function(e) { - this.searchRange = null; - this.$syncOptions(true); - }; - - this.$initElements = function(sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOption = sb.querySelector("[action=searchInSelection]"); - this.replaceOption = sb.querySelector("[action=toggleReplace]"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - this.searchCounter = sb.querySelector(".ace_search_counter"); - }; - - this.$init = function() { - var sb = this.element; - - this.$initElements(sb); - - var _this = this; - event.addListener(sb, "mousedown", function(e) { - setTimeout(function(){ - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function(e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - - event.addCommandKeyListener(sb, function(e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - - this.$onChange = lang.delayedCall(function() { - _this.find(false, false); - }); - - event.addListener(this.searchInput, "input", function() { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function() { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function() { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - this.$closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function(editor) { - editor.searchBox.hide(); - } - }]); - this.$searchBarKb = new HashHandler(); - this.$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function(sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.replaceOption.checked = false; - sb.$syncOptions(); - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function(sb) { - if (sb.editor.getReadOnly()) - return; - sb.replaceOption.checked = true; - sb.$syncOptions(); - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function(sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function(sb) { - sb.findPrev(); - }, - "esc": function(sb) { - setTimeout(function() { sb.hide();}); - }, - "Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function(sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } - }); - - this.$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, - exec: function(sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, - exec: function(sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, - exec: function(sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleReplace", - exec: function(sb) { - sb.replaceOption.checked = !sb.replaceOption.checked; - sb.$syncOptions(); - } - }, { - name: "searchInSelection", - exec: function(sb) { - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - } - }]); - - this.setSearchRange = function(range) { - this.searchRange = range; - if (range) { - this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); - } else if (this.searchRangeMarker) { - this.editor.session.removeMarker(this.searchRangeMarker); - this.searchRangeMarker = null; - } - }; - - this.$syncOptions = function(preventScroll) { - dom.setCssClass(this.replaceOption, "checked", this.searchRange); - dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); - this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - var readOnly = this.editor.getReadOnly(); - this.replaceOption.style.display = readOnly ? "none" : ""; - this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; - this.find(false, false, preventScroll); - }; - - this.highlight = function(re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers(); - }; - this.find = function(skipCurrent, backwards, preventScroll) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll, - range: this.searchRange - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.updateCounter(); - }; - this.updateCounter = function() { - var editor = this.editor; - var regex = editor.$search.$options.re; - var all = 0; - var before = 0; - if (regex) { - var value = this.searchRange - ? editor.session.getTextRange(this.searchRange) - : editor.getValue(); - - var offset = editor.session.doc.positionToIndex(editor.selection.anchor); - if (this.searchRange) - offset -= editor.session.doc.positionToIndex(this.searchRange.start); - - var last = regex.lastIndex = 0; - var m; - while ((m = regex.exec(value))) { - all++; - last = m.index; - if (last <= offset) - before++; - if (all > MAX_COUNT) - break; - if (!m[0]) { - regex.lastIndex = last += 1; - if (last >= value.length) - break; - } - } - } - this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); - }; - this.findNext = function() { - this.find(true, false); - }; - this.findPrev = function() { - this.find(true, true); - }; - this.findAll = function(){ - var range = this.editor.findAll(this.searchInput.value, { - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.hide(); - }; - this.replace = function() { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - this.replaceAndFindNext = function() { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext(); - } - }; - this.replaceAll = function() { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - - this.hide = function() { - this.active = false; - this.setSearchRange(null); - this.editor.off("changeSession", this.setSession); - - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - this.show = function(value, isReplace) { - this.active = true; - this.editor.on("changeSession", this.setSession); - this.element.style.display = ""; - this.replaceOption.checked = isReplace; - - if (value) - this.searchInput.value = value; - - this.searchInput.focus(); - this.searchInput.select(); - - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - - this.$syncOptions(true); - }; - - this.isFocused = function() { - var el = document.activeElement; - return el == this.searchInput || el == this.replaceInput; - }; -}).call(SearchBox.prototype); - -exports.SearchBox = SearchBox; - -exports.Search = function(editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); (function() { - ace.require(["ace/ext/searchbox"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-settings_menu.js b/src-noconflict/ext-settings_menu.js deleted file mode 100644 index 38fd134..0000000 --- a/src-noconflict/ext-settings_menu.js +++ /dev/null @@ -1,820 +0,0 @@ -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -'use strict'; -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 100000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}\ -.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\ -vertical-align: middle;\ -}\ -.ace_optionsMenuEntry button[ace_selected_button=true] {\ -background: #e7e7e7;\ -box-shadow: 1px 0px 2px 0px #adadad inset;\ -border-color: #adadad;\ -}\ -.ace_optionsMenuEntry button {\ -background: white;\ -border: 1px solid lightgray;\ -margin: 0px;\ -}\ -.ace_optionsMenuEntry button:hover{\ -background: #f0f0f0;\ -}"; -dom.importCssString(cssText, "settings_menu.css", false); - -module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { - var closer = document.createElement('div'); - var ignoreFocusOut = false; - - function documentEscListener(e) { - if (e.keyCode === 27) { - close(); - } - } - - function close() { - if (!closer) return; - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - if (editor) { - editor.focus(); - } - closer = null; - callback && callback(); - } - function setIgnoreFocusOut(ignore) { - ignoreFocusOut = ignore; - if (ignore) { - closer.style.pointerEvents = "none"; - contentElement.style.pointerEvents = "auto"; - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); - closer.addEventListener('click', function(e) { - if (!ignoreFocusOut) { - close(); - } - }); - document.addEventListener('keydown', documentEscListener); - - contentElement.addEventListener('click', function (e) { - e.stopPropagation(); - }); - - closer.appendChild(contentElement); - document.body.appendChild(closer); - if (editor) { - editor.blur(); - } - return { - close: close, - setIgnoreFocusOut: setIgnoreFocusOut - }; -}; - -}); - -ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], - Alda: ["alda"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - Apex: ["apex|cls|trigger|tgr"], - AQL: ["aql"], - AsciiDoc: ["asciidoc|adoc"], - ASL: ["dsl|asl|asl.json"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - Crystal: ["cr"], - CSharp: ["cs"], - Csound_Document: ["csd"], - Csound_Orchestra: ["orc"], - Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Edifact: ["edi"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], - FSL: ["fsl"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], - GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], - HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSON5: ["json5"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - Latte: ["latte"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MediaWiki: ["wiki|mediawiki"], - MEL: ["mel"], - MIPS: ["s|asm"], - MIXAL: ["mixal"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nginx: ["nginx|conf"], - Nim: ["nim"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - Nunjucks: ["nunjucks|nunjs|nj|njk"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - PHP_Laravel_blade: ["blade.php"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prisma: ["prisma"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Puppet: ["epp|pp"], - Python: ["py"], - QML: ["qml"], - R: ["r"], - Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala|sbt"], - Scheme: ["scm|sm|rkt|oak|scheme"], - Scrypt: ["scrypt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Slim: ["slim|skim"], - Smarty: ["smarty|tpl"], - Smithy: ["smithy"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Terraform: ["tf", "tfvars", "terragrunt"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Visualforce: ["vfp|component|page"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Zeek: ["zeek|bro"], - Django: ["html"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C and C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey / AutoIt" -}; - -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); - -ace.define("ace/ext/themelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["IPlastic" ], - ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["Xcode" ], - ["Kuroir"], - ["KatzenMilch"], - ["SQL Server" ,"sqlserver" , "light"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Dracula" ,"" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["Gruvbox" ,"gruvbox" , "dark"], - ["Green on Black" ,"gob" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Nord Dark" ,"nord_dark" , "dark"], - ["One Dark" ,"one_dark" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] -]; - - -exports.themesByName = {}; -exports.themes = themeData.map(function(data) { - var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); - var theme = { - caption: data[0], - theme: "ace/theme/" + name, - isDark: data[2] == "dark", - name: name - }; - exports.themesByName[name] = theme; - return theme; -}); - -}); - -ace.define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/config","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) { -"use strict"; - -require("./menu_tools/overlay_page"); - -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var config = require("../config"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var buildDom = dom.buildDom; - -var modelist = require("./modelist"); -var themelist = require("./themelist"); - -var themes = { Bright: [], Dark: [] }; -themelist.themes.forEach(function(x) { - themes[x.isDark ? "Dark" : "Bright"].push({ caption: x.caption, value: x.theme }); -}); - -var modes = modelist.modes.map(function(x){ - return { caption: x.caption, value: x.mode }; -}); - - -var optionGroups = { - Main: { - Mode: { - path: "mode", - type: "select", - items: modes - }, - Theme: { - path: "theme", - type: "select", - items: themes - }, - "Keybinding": { - type: "buttonBar", - path: "keyboardHandler", - items: [ - { caption : "Ace", value : null }, - { caption : "Vim", value : "ace/keyboard/vim" }, - { caption : "Emacs", value : "ace/keyboard/emacs" }, - { caption : "Sublime", value : "ace/keyboard/sublime" }, - { caption : "VSCode", value : "ace/keyboard/vscode" } - ] - }, - "Font Size": { - path: "fontSize", - type: "number", - defaultValue: 12, - defaults: [ - {caption: "12px", value: 12}, - {caption: "24px", value: 24} - ] - }, - "Soft Wrap": { - type: "buttonBar", - path: "wrap", - items: [ - { caption : "Off", value : "off" }, - { caption : "View", value : "free" }, - { caption : "margin", value : "printMargin" }, - { caption : "40", value : "40" } - ] - }, - "Cursor Style": { - path: "cursorStyle", - items: [ - { caption : "Ace", value : "ace" }, - { caption : "Slim", value : "slim" }, - { caption : "Smooth", value : "smooth" }, - { caption : "Smooth And Slim", value : "smooth slim" }, - { caption : "Wide", value : "wide" } - ] - }, - "Folding": { - path: "foldStyle", - items: [ - { caption : "Manual", value : "manual" }, - { caption : "Mark begin", value : "markbegin" }, - { caption : "Mark begin and end", value : "markbeginend" } - ] - }, - "Soft Tabs": [{ - path: "useSoftTabs" - }, { - ariaLabel: "Tab Size", - path: "tabSize", - type: "number", - values: [2, 3, 4, 8, 16] - }], - "Overscroll": { - type: "buttonBar", - path: "scrollPastEnd", - items: [ - { caption : "None", value : 0 }, - { caption : "Half", value : 0.5 }, - { caption : "Full", value : 1 } - ] - } - }, - More: { - "Atomic soft tabs": { - path: "navigateWithinSoftTabs" - }, - "Enable Behaviours": { - path: "behavioursEnabled" - }, - "Wrap with quotes": { - path: "wrapBehavioursEnabled" - }, - "Enable Auto Indent": { - path: "enableAutoIndent" - }, - "Full Line Selection": { - type: "checkbox", - values: "text|line", - path: "selectionStyle" - }, - "Highlight Active Line": { - path: "highlightActiveLine" - }, - "Show Invisibles": { - path: "showInvisibles" - }, - "Show Indent Guides": { - path: "displayIndentGuides" - }, - "Persistent HScrollbar": { - path: "hScrollBarAlwaysVisible" - }, - "Persistent VScrollbar": { - path: "vScrollBarAlwaysVisible" - }, - "Animate scrolling": { - path: "animatedScroll" - }, - "Show Gutter": { - path: "showGutter" - }, - "Show Line Numbers": { - path: "showLineNumbers" - }, - "Relative Line Numbers": { - path: "relativeLineNumbers" - }, - "Fixed Gutter Width": { - path: "fixedWidthGutter" - }, - "Show Print Margin": [{ - path: "showPrintMargin" - }, { - ariaLabel: "Print Margin", - type: "number", - path: "printMarginColumn" - }], - "Indented Soft Wrap": { - path: "indentedSoftWrap" - }, - "Highlight selected word": { - path: "highlightSelectedWord" - }, - "Fade Fold Widgets": { - path: "fadeFoldWidgets" - }, - "Use textarea for IME": { - path: "useTextareaForIME" - }, - "Merge Undo Deltas": { - path: "mergeUndoDeltas", - items: [ - { caption : "Always", value : "always" }, - { caption : "Never", value : "false" }, - { caption : "Timed", value : "true" } - ] - }, - "Elastic Tabstops": { - path: "useElasticTabstops" - }, - "Incremental Search": { - path: "useIncrementalSearch" - }, - "Read-only": { - path: "readOnly" - }, - "Copy without selection": { - path: "copyWithEmptySelection" - }, - "Live Autocompletion": { - path: "enableLiveAutocompletion" - } - } -}; - - -var OptionPanel = function(editor, element) { - this.editor = editor; - this.container = element || document.createElement("div"); - this.groups = []; - this.options = {}; -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.add = function(config) { - if (config.Main) - oop.mixin(optionGroups.Main, config.Main); - if (config.More) - oop.mixin(optionGroups.More, config.More); - }; - - this.render = function() { - this.container.innerHTML = ""; - buildDom(["table", {role: "presentation", id: "controls"}, - this.renderOptionGroup(optionGroups.Main), - ["tr", null, ["td", {colspan: 2}, - ["table", {role: "presentation", id: "more-controls"}, - this.renderOptionGroup(optionGroups.More) - ] - ]], - ["tr", null, ["td", {colspan: 2}, "version " + config.version]] - ], this.container); - }; - - this.renderOptionGroup = function(group) { - return Object.keys(group).map(function(key, i) { - var item = group[key]; - if (!item.position) - item.position = i / 10000; - if (!item.label) - item.label = key; - return item; - }).sort(function(a, b) { - return a.position - b.position; - }).map(function(item) { - return this.renderOption(item.label, item); - }, this); - }; - - this.renderOptionControl = function(key, option) { - var self = this; - if (Array.isArray(option)) { - return option.map(function(x) { - return self.renderOptionControl(key, x); - }); - } - var control; - - var value = self.getOption(option); - - if (option.values && option.type != "checkbox") { - if (typeof option.values == "string") - option.values = option.values.split("|"); - option.items = option.values.map(function(v) { - return { value: v, name: v }; - }); - } - - if (option.type == "buttonBar") { - control = ["div", {role: "group", "aria-labelledby": option.path + "-label"}, option.items.map(function(item) { - return ["button", { - value: item.value, - ace_selected_button: value == item.value, - 'aria-pressed': value == item.value, - onclick: function() { - self.setOption(option, item.value); - var nodes = this.parentNode.querySelectorAll("[ace_selected_button]"); - for (var i = 0; i < nodes.length; i++) { - nodes[i].removeAttribute("ace_selected_button"); - nodes[i].setAttribute("aria-pressed", false); - } - this.setAttribute("ace_selected_button", true); - this.setAttribute("aria-pressed", true); - } - }, item.desc || item.caption || item.name]; - })]; - } else if (option.type == "number") { - control = ["input", {type: "number", value: value || option.defaultValue, style:"width:3em", oninput: function() { - self.setOption(option, parseInt(this.value)); - }}]; - if (option.ariaLabel) { - control[1]["aria-label"] = option.ariaLabel; - } else { - control[1].id = key; - } - if (option.defaults) { - control = [control, option.defaults.map(function(item) { - return ["button", {onclick: function() { - var input = this.parentNode.firstChild; - input.value = item.value; - input.oninput(); - }}, item.caption]; - })]; - } - } else if (option.items) { - var buildItems = function(items) { - return items.map(function(item) { - return ["option", { value: item.value || item.name }, item.desc || item.caption || item.name]; - }); - }; - - var items = Array.isArray(option.items) - ? buildItems(option.items) - : Object.keys(option.items).map(function(key) { - return ["optgroup", {"label": key}, buildItems(option.items[key])]; - }); - control = ["select", { id: key, value: value, onchange: function() { - self.setOption(option, this.value); - } }, items]; - } else { - if (typeof option.values == "string") - option.values = option.values.split("|"); - if (option.values) value = value == option.values[1]; - control = ["input", { type: "checkbox", id: key, checked: value || null, onchange: function() { - var value = this.checked; - if (option.values) value = option.values[value ? 1 : 0]; - self.setOption(option, value); - }}]; - if (option.type == "checkedNumber") { - control = [control, []]; - } - } - return control; - }; - - this.renderOption = function(key, option) { - if (option.path && !option.onchange && !this.editor.$options[option.path]) - return; - var path = Array.isArray(option) ? option[0].path : option.path; - this.options[path] = option; - var safeKey = "-" + path; - var safeId = path + "-label"; - var control = this.renderOptionControl(safeKey, option); - return ["tr", {class: "ace_optionsMenuEntry"}, ["td", - ["label", {for: safeKey, id: safeId}, key] - ], ["td", control]]; - }; - - this.setOption = function(option, value) { - if (typeof option == "string") - option = this.options[option]; - if (value == "false") value = false; - if (value == "true") value = true; - if (value == "null") value = null; - if (value == "undefined") value = undefined; - if (typeof value == "string" && parseFloat(value).toString() == value) - value = parseFloat(value); - if (option.onchange) - option.onchange(value); - else if (option.path) - this.editor.setOption(option.path, value); - this._signal("setOption", {name: option.path, value: value}); - }; - - this.getOption = function(option) { - if (option.getValue) - return option.getValue(); - return this.editor.getOption(option.path); - }; - -}).call(OptionPanel.prototype); - -exports.OptionPanel = OptionPanel; - -}); - -ace.define("ace/ext/settings_menu",["require","exports","module","ace/ext/options","ace/ext/menu_tools/overlay_page","ace/editor"], function(require, exports, module) { -"use strict"; -var OptionPanel = require("./options").OptionPanel; -var overlayPage = require('./menu_tools/overlay_page').overlayPage; -function showSettingsMenu(editor) { - if (!document.getElementById('ace_settingsmenu')) { - var options = new OptionPanel(editor); - options.render(); - options.container.id = "ace_settingsmenu"; - overlayPage(editor, options.container); - options.container.querySelector("select,input,button,checkbox").focus(); - } -} -module.exports.init = function() { - var Editor = require("../editor").Editor; - Editor.prototype.showSettingsMenu = function() { - showSettingsMenu(this); - }; -}; -}); (function() { - ace.require(["ace/ext/settings_menu"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-spellcheck.js b/src-noconflict/ext-spellcheck.js deleted file mode 100644 index 99afa66..0000000 --- a/src-noconflict/ext-spellcheck.js +++ /dev/null @@ -1,73 +0,0 @@ -ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; -var event = require("../lib/event"); - -exports.contextMenuHandler = function(e){ - var host = e.target; - var text = host.textInput.getElement(); - if (!host.selection.isEmpty()) - return; - var c = host.getCursorPosition(); - var r = host.session.getWordRange(c.row, c.column); - var w = host.session.getTextRange(r); - - host.session.tokenRe.lastIndex = 0; - if (!host.session.tokenRe.test(w)) - return; - var PLACEHOLDER = "\x01\x01"; - var value = w + " " + PLACEHOLDER; - text.value = value; - text.setSelectionRange(w.length, w.length + 1); - text.setSelectionRange(0, 0); - text.setSelectionRange(0, w.length); - - var afterKeydown = false; - event.addListener(text, "keydown", function onKeydown() { - event.removeListener(text, "keydown", onKeydown); - afterKeydown = true; - }); - - host.textInput.setInputHandler(function(newVal) { - if (newVal == value) - return ''; - if (newVal.lastIndexOf(value, 0) === 0) - return newVal.slice(value.length); - if (newVal.substr(text.selectionEnd) == value) - return newVal.slice(0, -value.length); - if (newVal.slice(-2) == PLACEHOLDER) { - var val = newVal.slice(0, -2); - if (val.slice(-1) == " ") { - if (afterKeydown) - return val.substring(0, text.selectionEnd); - val = val.slice(0, -1); - host.session.replace(r, val); - return ""; - } - } - - return newVal; - }); -}; -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - spellcheck: { - set: function(val) { - var text = this.textInput.getElement(); - text.spellcheck = !!val; - if (!val) - this.removeListener("nativecontextmenu", exports.contextMenuHandler); - else - this.on("nativecontextmenu", exports.contextMenuHandler); - }, - value: true - } -}); - -}); (function() { - ace.require(["ace/ext/spellcheck"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-split.js b/src-noconflict/ext-split.js deleted file mode 100644 index d1f8be3..0000000 --- a/src-noconflict/ext-split.js +++ /dev/null @@ -1,207 +0,0 @@ -ace.define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Editor = require("./editor").Editor; -var Renderer = require("./virtual_renderer").VirtualRenderer; -var EditSession = require("./edit_session").EditSession; - - -var Split = function(container, theme, splits) { - this.BELOW = 1; - this.BESIDE = 0; - - this.$container = container; - this.$theme = theme; - this.$splits = 0; - this.$editorCSS = ""; - this.$editors = []; - this.$orientation = this.BESIDE; - - this.setSplits(splits || 1); - this.$cEditor = this.$editors[0]; - - - this.on("focus", function(editor) { - this.$cEditor = editor; - }.bind(this)); -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$createEditor = function() { - var el = document.createElement("div"); - el.className = this.$editorCSS; - el.style.cssText = "position: absolute; top:0px; bottom:0px"; - this.$container.appendChild(el); - var editor = new Editor(new Renderer(el, this.$theme)); - - editor.on("focus", function() { - this._emit("focus", editor); - }.bind(this)); - - this.$editors.push(editor); - editor.setFontSize(this.$fontSize); - return editor; - }; - - this.setSplits = function(splits) { - var editor; - if (splits < 1) { - throw "The number of splits have to be > 0!"; - } - - if (splits == this.$splits) { - return; - } else if (splits > this.$splits) { - while (this.$splits < this.$editors.length && this.$splits < splits) { - editor = this.$editors[this.$splits]; - this.$container.appendChild(editor.container); - editor.setFontSize(this.$fontSize); - this.$splits ++; - } - while (this.$splits < splits) { - this.$createEditor(); - this.$splits ++; - } - } else { - while (this.$splits > splits) { - editor = this.$editors[this.$splits - 1]; - this.$container.removeChild(editor.container); - this.$splits --; - } - } - this.resize(); - }; - this.getSplits = function() { - return this.$splits; - }; - this.getEditor = function(idx) { - return this.$editors[idx]; - }; - this.getCurrentEditor = function() { - return this.$cEditor; - }; - this.focus = function() { - this.$cEditor.focus(); - }; - this.blur = function() { - this.$cEditor.blur(); - }; - this.setTheme = function(theme) { - this.$editors.forEach(function(editor) { - editor.setTheme(theme); - }); - }; - this.setKeyboardHandler = function(keybinding) { - this.$editors.forEach(function(editor) { - editor.setKeyboardHandler(keybinding); - }); - }; - this.forEach = function(callback, scope) { - this.$editors.forEach(callback, scope); - }; - - - this.$fontSize = ""; - this.setFontSize = function(size) { - this.$fontSize = size; - this.forEach(function(editor) { - editor.setFontSize(size); - }); - }; - - this.$cloneSession = function(session) { - var s = new EditSession(session.getDocument(), session.getMode()); - - var undoManager = session.getUndoManager(); - s.setUndoManager(undoManager); - s.setTabSize(session.getTabSize()); - s.setUseSoftTabs(session.getUseSoftTabs()); - s.setOverwrite(session.getOverwrite()); - s.setBreakpoints(session.getBreakpoints()); - s.setUseWrapMode(session.getUseWrapMode()); - s.setUseWorker(session.getUseWorker()); - s.setWrapLimitRange(session.$wrapLimitRange.min, - session.$wrapLimitRange.max); - s.$foldData = session.$cloneFoldData(); - - return s; - }; - this.setSession = function(session, idx) { - var editor; - if (idx == null) { - editor = this.$cEditor; - } else { - editor = this.$editors[idx]; - } - var isUsed = this.$editors.some(function(editor) { - return editor.session === session; - }); - - if (isUsed) { - session = this.$cloneSession(session); - } - editor.setSession(session); - return session; - }; - this.getOrientation = function() { - return this.$orientation; - }; - this.setOrientation = function(orientation) { - if (this.$orientation == orientation) { - return; - } - this.$orientation = orientation; - this.resize(); - }; - this.resize = function() { - var width = this.$container.clientWidth; - var height = this.$container.clientHeight; - var editor; - - if (this.$orientation == this.BESIDE) { - var editorWidth = width / this.$splits; - for (var i = 0; i < this.$splits; i++) { - editor = this.$editors[i]; - editor.container.style.width = editorWidth + "px"; - editor.container.style.top = "0px"; - editor.container.style.left = i * editorWidth + "px"; - editor.container.style.height = height + "px"; - editor.resize(); - } - } else { - var editorHeight = height / this.$splits; - for (var i = 0; i < this.$splits; i++) { - editor = this.$editors[i]; - editor.container.style.width = width + "px"; - editor.container.style.top = i * editorHeight + "px"; - editor.container.style.left = "0px"; - editor.container.style.height = editorHeight + "px"; - editor.resize(); - } - } - }; - -}).call(Split.prototype); - -exports.Split = Split; -}); - -ace.define("ace/ext/split",["require","exports","module","ace/split"], function(require, exports, module) { -"use strict"; -module.exports = require("../split"); - -}); (function() { - ace.require(["ace/ext/split"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-static_highlight.js b/src-noconflict/ext-static_highlight.js deleted file mode 100644 index ada9bca..0000000 --- a/src-noconflict/ext-static_highlight.js +++ /dev/null @@ -1,229 +0,0 @@ -ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var EditSession = require("../edit_session").EditSession; -var TextLayer = require("../layer/text").Text; -var baseStyles = ".ace_static_highlight {\ -font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;\ -font-size: 12px;\ -white-space: pre-wrap\ -}\ -.ace_static_highlight .ace_gutter {\ -width: 2em;\ -text-align: right;\ -padding: 0 3px 0 0;\ -margin-right: 3px;\ -contain: none;\ -}\ -.ace_static_highlight.ace_show_gutter .ace_line {\ -padding-left: 2.6em;\ -}\ -.ace_static_highlight .ace_line { position: relative; }\ -.ace_static_highlight .ace_gutter-cell {\ --moz-user-select: -moz-none;\ --khtml-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -top: 0;\ -bottom: 0;\ -left: 0;\ -position: absolute;\ -}\ -.ace_static_highlight .ace_gutter-cell:before {\ -content: counter(ace_line, decimal);\ -counter-increment: ace_line;\ -}\ -.ace_static_highlight {\ -counter-reset: ace_line;\ -}\ -"; -var config = require("../config"); -var dom = require("../lib/dom"); -var escapeHTML = require("../lib/lang").escapeHTML; - -function Element(type) { - this.type = type; - this.style = {}; - this.textContent = ""; -} -Element.prototype.cloneNode = function() { - return this; -}; -Element.prototype.appendChild = function(child) { - this.textContent += child.toString(); -}; -Element.prototype.toString = function() { - var stringBuilder = []; - if (this.type != "fragment") { - stringBuilder.push("<", this.type); - if (this.className) - stringBuilder.push(" class='", this.className, "'"); - var styleStr = []; - for (var key in this.style) { - styleStr.push(key, ":", this.style[key]); - } - if (styleStr.length) - stringBuilder.push(" style='", styleStr.join(""), "'"); - stringBuilder.push(">"); - } - - if (this.textContent) { - stringBuilder.push(this.textContent); - } - - if (this.type != "fragment") { - stringBuilder.push(""); - } - - return stringBuilder.join(""); -}; - - -var simpleDom = { - createTextNode: function(textContent, element) { - return escapeHTML(textContent); - }, - createElement: function(type) { - return new Element(type); - }, - createFragment: function() { - return new Element("fragment"); - } -}; - -var SimpleTextLayer = function() { - this.config = {}; - this.dom = simpleDom; -}; -SimpleTextLayer.prototype = TextLayer.prototype; - -var highlight = function(el, opts, callback) { - var m = el.className.match(/lang-(\w+)/); - var mode = opts.mode || m && ("ace/mode/" + m[1]); - if (!mode) - return false; - var theme = opts.theme || "ace/theme/textmate"; - - var data = ""; - var nodes = []; - - if (el.firstElementChild) { - var textLen = 0; - for (var i = 0; i < el.childNodes.length; i++) { - var ch = el.childNodes[i]; - if (ch.nodeType == 3) { - textLen += ch.data.length; - data += ch.data; - } else { - nodes.push(textLen, ch); - } - } - } else { - data = el.textContent; - if (opts.trim) - data = data.trim(); - } - - highlight.render(data, mode, theme, opts.firstLineNumber, !opts.showGutter, function (highlighted) { - dom.importCssString(highlighted.css, "ace_highlight"); - el.innerHTML = highlighted.html; - var container = el.firstChild.firstChild; - for (var i = 0; i < nodes.length; i += 2) { - var pos = highlighted.session.doc.indexToPosition(nodes[i]); - var node = nodes[i + 1]; - var lineEl = container.children[pos.row]; - lineEl && lineEl.appendChild(node); - } - callback && callback(); - }); -}; -highlight.render = function(input, mode, theme, lineStart, disableGutter, callback) { - var waiting = 1; - var modeCache = EditSession.prototype.$modes; - if (typeof theme == "string") { - waiting++; - config.loadModule(['theme', theme], function(m) { - theme = m; - --waiting || done(); - }); - } - var modeOptions; - if (mode && typeof mode === "object" && !mode.getTokenizer) { - modeOptions = mode; - mode = modeOptions.path; - } - if (typeof mode == "string") { - waiting++; - config.loadModule(['mode', mode], function(m) { - if (!modeCache[mode] || modeOptions) - modeCache[mode] = new m.Mode(modeOptions); - mode = modeCache[mode]; - --waiting || done(); - }); - } - function done() { - var result = highlight.renderSync(input, mode, theme, lineStart, disableGutter); - return callback ? callback(result) : result; - } - return --waiting || done(); -}; -highlight.renderSync = function(input, mode, theme, lineStart, disableGutter) { - lineStart = parseInt(lineStart || 1, 10); - - var session = new EditSession(""); - session.setUseWorker(false); - session.setMode(mode); - - var textLayer = new SimpleTextLayer(); - textLayer.setSession(session); - Object.keys(textLayer.$tabStrings).forEach(function(k) { - if (typeof textLayer.$tabStrings[k] == "string") { - var el = simpleDom.createFragment(); - el.textContent = textLayer.$tabStrings[k]; - textLayer.$tabStrings[k] = el; - } - }); - - session.setValue(input); - var length = session.getLength(); - - var outerEl = simpleDom.createElement("div"); - outerEl.className = theme.cssClass; - - var innerEl = simpleDom.createElement("div"); - innerEl.className = "ace_static_highlight" + (disableGutter ? "" : " ace_show_gutter"); - innerEl.style["counter-reset"] = "ace_line " + (lineStart - 1); - - for (var ix = 0; ix < length; ix++) { - var lineEl = simpleDom.createElement("div"); - lineEl.className = "ace_line"; - - if (!disableGutter) { - var gutterEl = simpleDom.createElement("span"); - gutterEl.className ="ace_gutter ace_gutter-cell"; - gutterEl.textContent = ""; - lineEl.appendChild(gutterEl); - } - textLayer.$renderLine(lineEl, ix, false); - lineEl.textContent += "\n"; - innerEl.appendChild(lineEl); - } - outerEl.appendChild(innerEl); - - return { - css: baseStyles + theme.cssText, - html: outerEl.toString(), - session: session - }; -}; - -module.exports = highlight; -module.exports.highlight = highlight; -}); (function() { - ace.require(["ace/ext/static_highlight"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-statusbar.js b/src-noconflict/ext-statusbar.js deleted file mode 100644 index 8224179..0000000 --- a/src-noconflict/ext-statusbar.js +++ /dev/null @@ -1,56 +0,0 @@ -ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { -"use strict"; -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); - -var StatusBar = function(editor, parentNode) { - this.element = dom.createElement("div"); - this.element.className = "ace_status-indicator"; - this.element.style.cssText = "display: inline-block;"; - parentNode.appendChild(this.element); - - var statusUpdate = lang.delayedCall(function(){ - this.updateStatus(editor); - }.bind(this)).schedule.bind(null, 100); - - editor.on("changeStatus", statusUpdate); - editor.on("changeSelection", statusUpdate); - editor.on("keyboardActivity", statusUpdate); -}; - -(function(){ - this.updateStatus = function(editor) { - var status = []; - function add(str, separator) { - str && status.push(str, separator || "|"); - } - - add(editor.keyBinding.getStatusText(editor)); - if (editor.commands.recording) - add("REC"); - - var sel = editor.selection; - var c = sel.lead; - - if (!sel.isEmpty()) { - var r = editor.getSelectionRange(); - add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " "); - } - add(c.row + ":" + c.column, " "); - if (sel.rangeCount) - add("[" + sel.rangeCount + "]", " "); - status.pop(); - this.element.textContent = status.join(""); - }; -}).call(StatusBar.prototype); - -exports.StatusBar = StatusBar; - -}); (function() { - ace.require(["ace/ext/statusbar"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-textarea.js b/src-noconflict/ext-textarea.js deleted file mode 100644 index abd05da..0000000 --- a/src-noconflict/ext-textarea.js +++ /dev/null @@ -1,430 +0,0 @@ -ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace"], function(require, exports, module) { -"use strict"; - -var event = require("../lib/event"); -var UA = require("../lib/useragent"); -var net = require("../lib/net"); -var ace = require("../ace"); - -module.exports = exports = ace; -var getCSSProperty = function(element, container, property) { - var ret = element.style[property]; - - if (!ret) { - if (window.getComputedStyle) { - ret = window.getComputedStyle(element, '').getPropertyValue(property); - } else { - ret = element.currentStyle[property]; - } - } - - if (!ret || ret == 'auto' || ret == 'intrinsic') { - ret = container.style[property]; - } - return ret; -}; - -function applyStyles(elm, styles) { - for (var style in styles) { - elm.style[style] = styles[style]; - } -} - -function setupContainer(element, getValue) { - if (element.type != 'textarea') { - throw new Error("Textarea required!"); - } - - var parentNode = element.parentNode; - var container = document.createElement('div'); - var resizeEvent = function() { - var style = 'position:relative;'; - [ - 'margin-top', 'margin-left', 'margin-right', 'margin-bottom' - ].forEach(function(item) { - style += item + ':' + - getCSSProperty(element, container, item) + ';'; - }); - var width = getCSSProperty(element, container, 'width') || (element.clientWidth + "px"); - var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); - style += 'height:' + height + ';width:' + width + ';'; - style += 'display:inline-block;'; - container.setAttribute('style', style); - }; - event.addListener(window, 'resize', resizeEvent); - resizeEvent(); - parentNode.insertBefore(container, element.nextSibling); - while (parentNode !== document) { - if (parentNode.tagName.toUpperCase() === 'FORM') { - var oldSumit = parentNode.onsubmit; - parentNode.onsubmit = function(evt) { - element.value = getValue(); - if (oldSumit) { - oldSumit.call(this, evt); - } - }; - break; - } - parentNode = parentNode.parentNode; - } - return container; -} - -exports.transformTextarea = function(element, options) { - var isFocused = element.autofocus || document.activeElement == element; - var session; - var container = setupContainer(element, function() { - return session.getValue(); - }); - element.style.display = 'none'; - container.style.background = 'white'; - var editorDiv = document.createElement("div"); - applyStyles(editorDiv, { - top: "0px", - left: "0px", - right: "0px", - bottom: "0px", - border: "1px solid gray", - position: "absolute" - }); - container.appendChild(editorDiv); - - var settingOpener = document.createElement("div"); - applyStyles(settingOpener, { - position: "absolute", - right: "0px", - bottom: "0px", - cursor: "nw-resize", - border: "solid 9px", - borderColor: "lightblue gray gray #ceade6", - zIndex: 101 - }); - - var settingDiv = document.createElement("div"); - var settingDivStyles = { - top: "0px", - left: "20%", - right: "0px", - bottom: "0px", - position: "absolute", - padding: "5px", - zIndex: 100, - color: "white", - display: "none", - overflow: "auto", - fontSize: "14px", - boxShadow: "-5px 2px 3px gray" - }; - if (!UA.isOldIE) { - settingDivStyles.backgroundColor = "rgba(0, 0, 0, 0.6)"; - } else { - settingDivStyles.backgroundColor = "#333"; - } - - applyStyles(settingDiv, settingDivStyles); - container.appendChild(settingDiv); - - options = options || exports.defaultOptions; - var editor = ace.edit(editorDiv); - session = editor.getSession(); - - session.setValue(element.value || element.innerHTML); - if (isFocused) - editor.focus(); - container.appendChild(settingOpener); - setupApi(editor, editorDiv, settingDiv, ace, options); - setupSettingPanel(settingDiv, settingOpener, editor); - - var state = ""; - event.addListener(settingOpener, "mousemove", function(e) { - var rect = this.getBoundingClientRect(); - var x = e.clientX - rect.left, y = e.clientY - rect.top; - if (x + y < (rect.width + rect.height)/2) { - this.style.cursor = "pointer"; - state = "toggle"; - } else { - state = "resize"; - this.style.cursor = "nw-resize"; - } - }); - - event.addListener(settingOpener, "mousedown", function(e) { - e.preventDefault(); - if (state == "toggle") { - editor.setDisplaySettings(); - return; - } - container.style.zIndex = 100000; - var rect = container.getBoundingClientRect(); - var startX = rect.width + rect.left - e.clientX; - var startY = rect.height + rect.top - e.clientY; - event.capture(settingOpener, function(e) { - container.style.width = e.clientX - rect.left + startX + "px"; - container.style.height = e.clientY - rect.top + startY + "px"; - editor.resize(); - }, function() {}); - }); - - return editor; -}; - -function load(url, module, callback) { - net.loadScript(url, function() { - require([module], callback); - }); -} - -function setupApi(editor, editorDiv, settingDiv, ace, options) { - var session = editor.getSession(); - var renderer = editor.renderer; - - function toBool(value) { - return value === "true" || value == true; - } - - editor.setDisplaySettings = function(display) { - if (display == null) - display = settingDiv.style.display == "none"; - if (display) { - settingDiv.style.display = "block"; - settingDiv.hideButton.focus(); - editor.on("focus", function onFocus() { - editor.removeListener("focus", onFocus); - settingDiv.style.display = "none"; - }); - } else { - editor.focus(); - } - }; - - editor.$setOption = editor.setOption; - editor.$getOption = editor.getOption; - editor.setOption = function(key, value) { - switch (key) { - case "mode": - editor.$setOption("mode", "ace/mode/" + value); - break; - case "theme": - editor.$setOption("theme", "ace/theme/" + value); - break; - case "keybindings": - switch (value) { - case "vim": - editor.setKeyboardHandler("ace/keyboard/vim"); - break; - case "emacs": - editor.setKeyboardHandler("ace/keyboard/emacs"); - break; - default: - editor.setKeyboardHandler(null); - } - break; - - case "wrap": - case "fontSize": - editor.$setOption(key, value); - break; - - default: - editor.$setOption(key, toBool(value)); - } - }; - - editor.getOption = function(key) { - switch (key) { - case "mode": - return editor.$getOption("mode").substr("ace/mode/".length); - break; - - case "theme": - return editor.$getOption("theme").substr("ace/theme/".length); - break; - - case "keybindings": - var value = editor.getKeyboardHandler(); - switch (value && value.$id) { - case "ace/keyboard/vim": - return "vim"; - case "ace/keyboard/emacs": - return "emacs"; - default: - return "ace"; - } - break; - - default: - return editor.$getOption(key); - } - }; - - editor.setOptions(options); - return editor; -} - -function setupSettingPanel(settingDiv, settingOpener, editor) { - var BOOL = null; - - var desc = { - mode: "Mode:", - wrap: "Soft Wrap:", - theme: "Theme:", - fontSize: "Font Size:", - showGutter: "Display Gutter:", - keybindings: "Keyboard", - showPrintMargin: "Show Print Margin:", - useSoftTabs: "Use Soft Tabs:", - showInvisibles: "Show Invisibles" - }; - - var optionValues = { - mode: { - text: "Plain", - javascript: "JavaScript", - xml: "XML", - html: "HTML", - css: "CSS", - scss: "SCSS", - python: "Python", - php: "PHP", - java: "Java", - ruby: "Ruby", - c_cpp: "C/C++", - coffee: "CoffeeScript", - json: "json", - perl: "Perl", - clojure: "Clojure", - ocaml: "OCaml", - csharp: "C#", - haxe: "haXe", - svg: "SVG", - textile: "Textile", - groovy: "Groovy", - liquid: "Liquid", - Scala: "Scala" - }, - theme: { - clouds: "Clouds", - clouds_midnight: "Clouds Midnight", - cobalt: "Cobalt", - crimson_editor: "Crimson Editor", - dawn: "Dawn", - gob: "Green on Black", - eclipse: "Eclipse", - idle_fingers: "Idle Fingers", - kr_theme: "Kr Theme", - merbivore: "Merbivore", - merbivore_soft: "Merbivore Soft", - mono_industrial: "Mono Industrial", - monokai: "Monokai", - pastel_on_dark: "Pastel On Dark", - solarized_dark: "Solarized Dark", - solarized_light: "Solarized Light", - textmate: "Textmate", - twilight: "Twilight", - vibrant_ink: "Vibrant Ink" - }, - showGutter: BOOL, - fontSize: { - "10px": "10px", - "11px": "11px", - "12px": "12px", - "14px": "14px", - "16px": "16px" - }, - wrap: { - off: "Off", - 40: "40", - 80: "80", - free: "Free" - }, - keybindings: { - ace: "ace", - vim: "vim", - emacs: "emacs" - }, - showPrintMargin: BOOL, - useSoftTabs: BOOL, - showInvisibles: BOOL - }; - - var table = []; - table.push(""); - - function renderOption(builder, option, obj, cValue) { - if (!obj) { - builder.push( - "" - ); - return; - } - builder.push(""); - } - - for (var option in exports.defaultOptions) { - table.push(""); - table.push(""); - } - table.push("
    SettingValue
    ", desc[option], ""); - renderOption(table, option, optionValues[option], editor.getOption(option)); - table.push("
    "); - settingDiv.innerHTML = table.join(""); - - var onChange = function(e) { - var select = e.currentTarget; - editor.setOption(select.title, select.value); - }; - var onClick = function(e) { - var cb = e.currentTarget; - editor.setOption(cb.title, cb.checked); - }; - var selects = settingDiv.getElementsByTagName("select"); - for (var i = 0; i < selects.length; i++) - selects[i].onchange = onChange; - var cbs = settingDiv.getElementsByTagName("input"); - for (var i = 0; i < cbs.length; i++) - cbs[i].onclick = onClick; - - - var button = document.createElement("input"); - button.type = "button"; - button.value = "Hide"; - event.addListener(button, "click", function() { - editor.setDisplaySettings(false); - }); - settingDiv.appendChild(button); - settingDiv.hideButton = button; -} -exports.defaultOptions = { - mode: "javascript", - theme: "textmate", - wrap: "off", - fontSize: "12px", - showGutter: "false", - keybindings: "ace", - showPrintMargin: "false", - useSoftTabs: "true", - showInvisibles: "false" -}; - -}); (function() { - ace.require(["ace/ext/textarea"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-themelist.js b/src-noconflict/ext-themelist.js deleted file mode 100644 index 654e8bb..0000000 --- a/src-noconflict/ext-themelist.js +++ /dev/null @@ -1,67 +0,0 @@ -ace.define("ace/ext/themelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["IPlastic" ], - ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["Xcode" ], - ["Kuroir"], - ["KatzenMilch"], - ["SQL Server" ,"sqlserver" , "light"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Dracula" ,"" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["Gruvbox" ,"gruvbox" , "dark"], - ["Green on Black" ,"gob" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Nord Dark" ,"nord_dark" , "dark"], - ["One Dark" ,"one_dark" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] -]; - - -exports.themesByName = {}; -exports.themes = themeData.map(function(data) { - var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); - var theme = { - caption: data[0], - theme: "ace/theme/" + name, - isDark: data[2] == "dark", - name: name - }; - exports.themesByName[name] = theme; - return theme; -}); - -}); (function() { - ace.require(["ace/ext/themelist"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/ext-whitespace.js b/src-noconflict/ext-whitespace.js deleted file mode 100644 index d95c786..0000000 --- a/src-noconflict/ext-whitespace.js +++ /dev/null @@ -1,213 +0,0 @@ -ace.define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var lang = require("../lib/lang"); -exports.$detectIndentation = function(lines, fallback) { - var stats = []; - var changes = []; - var tabIndents = 0; - var prevSpaces = 0; - var max = Math.min(lines.length, 1000); - for (var i = 0; i < max; i++) { - var line = lines[i]; - if (!/^\s*[^*+\-\s]/.test(line)) - continue; - - if (line[0] == "\t") { - tabIndents++; - prevSpaces = -Number.MAX_VALUE; - } else { - var spaces = line.match(/^ */)[0].length; - if (spaces && line[spaces] != "\t") { - var diff = spaces - prevSpaces; - if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff)) - changes[diff] = (changes[diff] || 0) + 1; - - stats[spaces] = (stats[spaces] || 0) + 1; - } - prevSpaces = spaces; - } - while (i < max && line[line.length - 1] == "\\") - line = lines[i++]; - } - - function getScore(indent) { - var score = 0; - for (var i = indent; i < stats.length; i += indent) - score += stats[i] || 0; - return score; - } - - var changesTotal = changes.reduce(function(a,b){return a+b;}, 0); - - var first = {score: 0, length: 0}; - var spaceIndents = 0; - for (var i = 1; i < 12; i++) { - var score = getScore(i); - if (i == 1) { - spaceIndents = score; - score = stats[1] ? 0.9 : 0.8; - if (!stats.length) - score = 0; - } else - score /= spaceIndents; - - if (changes[i]) - score += changes[i] / changesTotal; - - if (score > first.score) - first = {score: score, length: i}; - } - - if (first.score && first.score > 1.4) - var tabLength = first.length; - - if (tabIndents > spaceIndents + 1) { - if (tabLength == 1 || spaceIndents < tabIndents / 4 || first.score < 1.8) - tabLength = undefined; - return {ch: "\t", length: tabLength}; - } - if (spaceIndents > tabIndents + 1) - return {ch: " ", length: tabLength}; -}; - -exports.detectIndentation = function(session) { - var lines = session.getLines(0, 1000); - var indent = exports.$detectIndentation(lines) || {}; - - if (indent.ch) - session.setUseSoftTabs(indent.ch == " "); - - if (indent.length) - session.setTabSize(indent.length); - return indent; -}; -exports.trimTrailingSpace = function(session, options) { - var doc = session.getDocument(); - var lines = doc.getAllLines(); - - var min = options && options.trimEmpty ? -1 : 0; - var cursors = [], ci = -1; - if (options && options.keepCursorPosition) { - if (session.selection.rangeCount) { - session.selection.rangeList.ranges.forEach(function(x, i, ranges) { - var next = ranges[i + 1]; - if (next && next.cursor.row == x.cursor.row) - return; - cursors.push(x.cursor); - }); - } else { - cursors.push(session.selection.getCursor()); - } - ci = 0; - } - var cursorRow = cursors[ci] && cursors[ci].row; - - for (var i = 0, l=lines.length; i < l; i++) { - var line = lines[i]; - var index = line.search(/\s+$/); - - if (i == cursorRow) { - if (index < cursors[ci].column && index > min) - index = cursors[ci].column; - ci++; - cursorRow = cursors[ci] ? cursors[ci].row : -1; - } - - if (index > min) - doc.removeInLine(i, index, line.length); - } -}; - -exports.convertIndentation = function(session, ch, len) { - var oldCh = session.getTabString()[0]; - var oldLen = session.getTabSize(); - if (!len) len = oldLen; - if (!ch) ch = oldCh; - - var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len); - - var doc = session.doc; - var lines = doc.getAllLines(); - - var cache = {}; - var spaceCache = {}; - for (var i = 0, l=lines.length; i < l; i++) { - var line = lines[i]; - var match = line.match(/^\s*/)[0]; - if (match) { - var w = session.$getStringScreenWidth(match)[0]; - var tabCount = Math.floor(w/oldLen); - var reminder = w%oldLen; - var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount)); - toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder)); - - if (toInsert != match) { - doc.removeInLine(i, 0, match.length); - doc.insertInLine({row: i, column: 0}, toInsert); - } - } - } - session.setTabSize(len); - session.setUseSoftTabs(ch == " "); -}; - -exports.$parseStringArg = function(text) { - var indent = {}; - if (/t/.test(text)) - indent.ch = "\t"; - else if (/s/.test(text)) - indent.ch = " "; - var m = text.match(/\d+/); - if (m) - indent.length = parseInt(m[0], 10); - return indent; -}; - -exports.$parseArg = function(arg) { - if (!arg) - return {}; - if (typeof arg == "string") - return exports.$parseStringArg(arg); - if (typeof arg.text == "string") - return exports.$parseStringArg(arg.text); - return arg; -}; - -exports.commands = [{ - name: "detectIndentation", - description: "Detect indentation from content", - exec: function(editor) { - exports.detectIndentation(editor.session); - } -}, { - name: "trimTrailingSpace", - description: "Trim trailing whitespace", - exec: function(editor, args) { - exports.trimTrailingSpace(editor.session, args); - } -}, { - name: "convertIndentation", - description: "Convert indentation to ...", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - exports.convertIndentation(editor.session, indent.ch, indent.length); - } -}, { - name: "setIndentation", - description: "Set indentation", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - indent.length && editor.session.setTabSize(indent.length); - indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); - } -}]; - -}); (function() { - ace.require(["ace/ext/whitespace"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/keybinding-emacs.js b/src-noconflict/keybinding-emacs.js deleted file mode 100644 index 190b77f..0000000 --- a/src-noconflict/keybinding-emacs.js +++ /dev/null @@ -1,1169 +0,0 @@ -ace.define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = require("./search").Search; -var EditSession = require("./edit_session").EditSession; -var SearchHighlight = require("./search_highlight").SearchHighlight; -function Occur() {} - -oop.inherits(Occur, Search); - -(function() { - this.enter = function(editor, options) { - if (!options.needle) return false; - var pos = editor.getCursorPosition(); - this.displayOccurContent(editor, options); - var translatedPos = this.originalToOccurPosition(editor.session, pos); - editor.moveCursorToPosition(translatedPos); - return true; - }; - this.exit = function(editor, options) { - var pos = options.translatePosition && editor.getCursorPosition(); - var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); - this.displayOriginalContent(editor); - if (translatedPos) - editor.moveCursorToPosition(translatedPos); - return true; - }; - - this.highlight = function(sess, regexp) { - var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_occur-highlight", "text")); - hl.setRegexp(regexp); - sess._emit("changeBackMarker"); // force highlight layer redraw - }; - - this.displayOccurContent = function(editor, options) { - this.$originalSession = editor.session; - var found = this.matchingLines(editor.session, options); - var lines = found.map(function(foundLine) { return foundLine.content; }); - var occurSession = new EditSession(lines.join('\n')); - occurSession.$occur = this; - occurSession.$occurMatchingLines = found; - editor.setSession(occurSession); - this.$useEmacsStyleLineStart = this.$originalSession.$useEmacsStyleLineStart; - occurSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; - this.highlight(occurSession, options.re); - occurSession._emit('changeBackMarker'); - }; - - this.displayOriginalContent = function(editor) { - editor.setSession(this.$originalSession); - this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; - }; - this.originalToOccurPosition = function(session, pos) { - var lines = session.$occurMatchingLines; - var nullPos = {row: 0, column: 0}; - if (!lines) return nullPos; - for (var i = 0; i < lines.length; i++) { - if (lines[i].row === pos.row) - return {row: i, column: pos.column}; - } - return nullPos; - }; - this.occurToOriginalPosition = function(session, pos) { - var lines = session.$occurMatchingLines; - if (!lines || !lines[pos.row]) - return pos; - return {row: lines[pos.row].row, column: pos.column}; - }; - - this.matchingLines = function(session, options) { - options = oop.mixin({}, options); - if (!session || !options.needle) return []; - var search = new Search(); - search.set(options); - return search.findAll(session).reduce(function(lines, range) { - var row = range.start.row; - var last = lines[lines.length-1]; - return last && last.row === row ? - lines : - lines.concat({row: row, content: session.getLine(row)}); - }, []); - }; - -}).call(Occur.prototype); - -var dom = require('./lib/dom'); -dom.importCssString(".ace_occur-highlight {\n\ - border-radius: 4px;\n\ - background-color: rgba(87, 255, 8, 0.25);\n\ - position: absolute;\n\ - z-index: 4;\n\ - box-sizing: border-box;\n\ - box-shadow: 0 0 4px rgb(91, 255, 50);\n\ -}\n\ -.ace_dark .ace_occur-highlight {\n\ - background-color: rgb(80, 140, 85);\n\ - box-shadow: 0 0 4px rgb(60, 120, 70);\n\ -}\n", "incremental-occur-highlighting", false); - -exports.Occur = Occur; - -}); - -ace.define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(require, exports, module) { - -var config = require("../config"), - Occur = require("../occur").Occur; -var occurStartCommand = { - name: "occur", - exec: function(editor, options) { - var alreadyInOccur = !!editor.session.$occur; - var occurSessionActive = new Occur().enter(editor, options); - if (occurSessionActive && !alreadyInOccur) - OccurKeyboardHandler.installIn(editor); - }, - readOnly: true -}; - -var occurCommands = [{ - name: "occurexit", - bindKey: 'esc|Ctrl-G', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}, { - name: "occuraccept", - bindKey: 'enter', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {translatePosition: true}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}]; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var oop = require("../lib/oop"); - - -function OccurKeyboardHandler() {} - -oop.inherits(OccurKeyboardHandler, HashHandler); - -(function() { - - this.isOccurHandler = true; - - this.attach = function(editor) { - HashHandler.call(this, occurCommands, editor.commands.platform); - this.$editor = editor; - }; - - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { - var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - return (cmd && cmd.command) ? cmd : undefined; - }; - -}).call(OccurKeyboardHandler.prototype); - -OccurKeyboardHandler.installIn = function(editor) { - var handler = new this(); - editor.keyBinding.addKeyboardHandler(handler); - editor.commands.addCommands(occurCommands); -}; - -OccurKeyboardHandler.uninstallFrom = function(editor) { - editor.commands.removeCommands(occurCommands); - var handler = editor.getKeyboardHandler(); - if (handler.isOccurHandler) - editor.keyBinding.removeKeyboardHandler(handler); -}; - -exports.occurStartCommand = occurStartCommand; - -}); - -ace.define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(require, exports, module) { - -var config = require("../config"); -var oop = require("../lib/oop"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var occurStartCommand = require("./occur_commands").occurStartCommand; -exports.iSearchStartCommands = [{ - name: "iSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(editor, options) { - config.loadModule(["core", "ace/incremental_search"], function(e) { - var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); - iSearch.activate(editor, options.backwards); - if (options.jumpToFirstMatch) iSearch.next(options); - }); - }, - readOnly: true -}, { - name: "iSearchBackwards", - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); }, - readOnly: true -}, { - name: "iSearchAndGo", - bindKey: {win: "Ctrl-K", mac: "Command-G"}, - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}, { - name: "iSearchBackwardsAndGo", - bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"}, - exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}]; -exports.iSearchCommands = [{ - name: "restartSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(iSearch) { - iSearch.cancelSearch(true); - } -}, { - name: "searchForward", - bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - iSearch.next(options); - } -}, { - name: "searchBackward", - bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - options.backwards = true; - iSearch.next(options); - } -}, { - name: "extendSearchTerm", - exec: function(iSearch, string) { - iSearch.addString(string); - } -}, { - name: "extendSearchTermSpace", - bindKey: "space", - exec: function(iSearch) { iSearch.addString(' '); } -}, { - name: "shrinkSearchTerm", - bindKey: "backspace", - exec: function(iSearch) { - iSearch.removeChar(); - } -}, { - name: 'confirmSearch', - bindKey: 'return', - exec: function(iSearch) { iSearch.deactivate(); } -}, { - name: 'cancelSearch', - bindKey: 'esc|Ctrl-G', - exec: function(iSearch) { iSearch.deactivate(true); } -}, { - name: 'occurisearch', - bindKey: 'Ctrl-O', - exec: function(iSearch) { - var options = oop.mixin({}, iSearch.$options); - iSearch.deactivate(); - occurStartCommand.exec(iSearch.$editor, options); - } -}, { - name: "yankNextWord", - bindKey: "Ctrl-w", - exec: function(iSearch) { - var ed = iSearch.$editor, - range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorWordRight(); }), - string = ed.session.getTextRange(range); - iSearch.addString(string); - } -}, { - name: "yankNextChar", - bindKey: "Ctrl-Alt-y", - exec: function(iSearch) { - var ed = iSearch.$editor, - range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorRight(); }), - string = ed.session.getTextRange(range); - iSearch.addString(string); - } -}, { - name: 'recenterTopBottom', - bindKey: 'Ctrl-l', - exec: function(iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } -}, { - name: 'selectAllMatches', - bindKey: 'Ctrl-space', - exec: function(iSearch) { - var ed = iSearch.$editor, - hl = ed.session.$isearchHighlight, - ranges = hl && hl.cache ? hl.cache - .reduce(function(ranges, ea) { - return ranges.concat(ea ? ea : []); }, []) : []; - iSearch.deactivate(false); - ranges.forEach(ed.selection.addRange.bind(ed.selection)); - } -}, { - name: 'searchAsRegExp', - bindKey: 'Alt-r', - exec: function(iSearch) { - iSearch.convertNeedleToRegExp(); - } -}].map(function(cmd) { - cmd.readOnly = true; - cmd.isIncrementalSearchCommand = true; - cmd.scrollIntoView = "animate-cursor"; - return cmd; -}); - -function IncrementalSearchKeyboardHandler(iSearch) { - this.$iSearch = iSearch; -} - -oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); - -(function() { - - this.attach = function(editor) { - var iSearch = this.$iSearch; - HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); - this.$commandExecHandler = editor.commands.on('exec', function(e) { - if (!e.command.isIncrementalSearchCommand) - return iSearch.deactivate(); - e.stopPropagation(); - e.preventDefault(); - var scrollTop = editor.session.getScrollTop(); - var result = e.command.exec(iSearch, e.args || {}); - editor.renderer.scrollCursorIntoView(null, 0.5); - editor.renderer.animateScrolling(scrollTop); - return result; - }); - }; - - this.detach = function(editor) { - if (!this.$commandExecHandler) return; - editor.commands.off('exec', this.$commandExecHandler); - delete this.$commandExecHandler; - }; - - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { - if (((hashId === 1/*ctrl*/ || hashId === 8/*command*/) && key === 'v') - || (hashId === 1/*ctrl*/ && key === 'y')) return null; - var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - if (cmd && cmd.command) { return cmd; } - if (hashId == -1) { - var extendCmd = this.commands.extendSearchTerm; - if (extendCmd) { return {command: extendCmd, args: key}; } - } - return false; - }; - -}).call(IncrementalSearchKeyboardHandler.prototype); - - -exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; - -}); - -ace.define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = require("./search").Search; -var SearchHighlight = require("./search_highlight").SearchHighlight; -var iSearchCommandModule = require("./commands/incremental_search_commands"); -var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; -function IncrementalSearch() { - this.$options = {wrap: false, skipCurrent: false}; - this.$keyboardHandler = new ISearchKbd(this); -} - -oop.inherits(IncrementalSearch, Search); - -function isRegExp(obj) { - return obj instanceof RegExp; -} - -function regExpToObject(re) { - var string = String(re), - start = string.indexOf('/'), - flagStart = string.lastIndexOf('/'); - return { - expression: string.slice(start+1, flagStart), - flags: string.slice(flagStart+1) - }; -} - -function stringToRegExp(string, flags) { - try { - return new RegExp(string, flags); - } catch (e) { return string; } -} - -function objectToRegExp(obj) { - return stringToRegExp(obj.expression, obj.flags); -} - -(function() { - - this.activate = function(editor, backwards) { - this.$editor = editor; - this.$startPos = this.$currentPos = editor.getCursorPosition(); - this.$options.needle = ''; - this.$options.backwards = backwards; - editor.keyBinding.addKeyboardHandler(this.$keyboardHandler); - this.$originalEditorOnPaste = editor.onPaste; - editor.onPaste = this.onPaste.bind(this); - this.$mousedownHandler = editor.on('mousedown', this.onMouseDown.bind(this)); - this.selectionFix(editor); - this.statusMessage(true); - }; - - this.deactivate = function(reset) { - this.cancelSearch(reset); - var editor = this.$editor; - editor.keyBinding.removeKeyboardHandler(this.$keyboardHandler); - if (this.$mousedownHandler) { - editor.off('mousedown', this.$mousedownHandler); - delete this.$mousedownHandler; - } - editor.onPaste = this.$originalEditorOnPaste; - this.message(''); - }; - - this.selectionFix = function(editor) { - if (editor.selection.isEmpty() && !editor.session.$emacsMark) { - editor.clearSelection(); - } - }; - - this.highlight = function(regexp) { - var sess = this.$editor.session, - hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_isearch-result", "text")); - hl.setRegexp(regexp); - sess._emit("changeBackMarker"); // force highlight layer redraw - }; - - this.cancelSearch = function(reset) { - var e = this.$editor; - this.$prevNeedle = this.$options.needle; - this.$options.needle = ''; - if (reset) { - e.moveCursorToPosition(this.$startPos); - this.$currentPos = this.$startPos; - } else { - e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); - } - this.highlight(null); - return Range.fromPoints(this.$currentPos, this.$currentPos); - }; - - this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) { - if (!this.$editor) return null; - var options = this.$options; - if (needleUpdateFunc) { - options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; - } - if (options.needle.length === 0) { - this.statusMessage(true); - return this.cancelSearch(true); - } - options.start = this.$currentPos; - var session = this.$editor.session, - found = this.find(session), - shouldSelect = this.$editor.emacsMark ? - !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); - if (found) { - if (options.backwards) found = Range.fromPoints(found.end, found.start); - this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end)); - if (moveToNext) this.$currentPos = found.end; - this.highlight(options.re); - } - - this.statusMessage(found); - - return found; - }; - - this.addString = function(s) { - return this.highlightAndFindWithNeedle(false, function(needle) { - if (!isRegExp(needle)) - return needle + s; - var reObj = regExpToObject(needle); - reObj.expression += s; - return objectToRegExp(reObj); - }); - }; - - this.removeChar = function(c) { - return this.highlightAndFindWithNeedle(false, function(needle) { - if (!isRegExp(needle)) - return needle.substring(0, needle.length-1); - var reObj = regExpToObject(needle); - reObj.expression = reObj.expression.substring(0, reObj.expression.length-1); - return objectToRegExp(reObj); - }); - }; - - this.next = function(options) { - options = options || {}; - this.$options.backwards = !!options.backwards; - this.$currentPos = this.$editor.getCursorPosition(); - return this.highlightAndFindWithNeedle(true, function(needle) { - return options.useCurrentOrPrevSearch && needle.length === 0 ? - this.$prevNeedle || '' : needle; - }); - }; - - this.onMouseDown = function(evt) { - this.deactivate(); - return true; - }; - - this.onPaste = function(text) { - this.addString(text); - }; - - this.convertNeedleToRegExp = function() { - return this.highlightAndFindWithNeedle(false, function(needle) { - return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig'); - }); - }; - - this.convertNeedleToString = function() { - return this.highlightAndFindWithNeedle(false, function(needle) { - return isRegExp(needle) ? regExpToObject(needle).expression : needle; - }); - }; - - this.statusMessage = function(found) { - var options = this.$options, msg = ''; - msg += options.backwards ? 'reverse-' : ''; - msg += 'isearch: ' + options.needle; - msg += found ? '' : ' (not found)'; - this.message(msg); - }; - - this.message = function(msg) { - if (this.$editor.showCommandLine) { - this.$editor.showCommandLine(msg); - this.$editor.focus(); - } - }; - -}).call(IncrementalSearch.prototype); - - -exports.IncrementalSearch = IncrementalSearch; - -var dom = require('./lib/dom'); -dom.importCssString("\ -.ace_marker-layer .ace_isearch-result {\ - position: absolute;\ - z-index: 6;\ - box-sizing: border-box;\ -}\ -div.ace_isearch-result {\ - border-radius: 4px;\ - background-color: rgba(255, 200, 0, 0.5);\ - box-shadow: 0 0 4px rgb(255, 200, 0);\ -}\ -.ace_dark div.ace_isearch-result {\ - background-color: rgb(100, 110, 160);\ - box-shadow: 0 0 4px rgb(80, 90, 140);\ -}", "incremental-search-highlighting", false); -var commands = require("./commands/command_manager"); -(function() { - this.setupIncrementalSearch = function(editor, val) { - if (this.usesIncrementalSearch == val) return; - this.usesIncrementalSearch = val; - var iSearchCommands = iSearchCommandModule.iSearchStartCommands; - var method = val ? 'addCommands' : 'removeCommands'; - this[method](iSearchCommands); - }; -}).call(commands.CommandManager.prototype); -var Editor = require("./editor").Editor; -require("./config").defineOptions(Editor.prototype, "editor", { - useIncrementalSearch: { - set: function(val) { - this.keyBinding.$handlers.forEach(function(handler) { - if (handler.setupIncrementalSearch) { - handler.setupIncrementalSearch(this, val); - } - }); - this._emit('incrementalSearchSettingChanged', {isEnabled: val}); - } - } -}); - -}); - -ace.define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); -require("../incremental_search"); -var iSearchCommandModule = require("../commands/incremental_search_commands"); - - -var HashHandler = require("./hash_handler").HashHandler; -exports.handler = new HashHandler(); - -exports.handler.isEmacs = true; -exports.handler.$id = "ace/keyboard/emacs"; - -var initialized = false; -var $formerLongWords; -var $formerLineStart; - -exports.handler.attach = function(editor) { - if (!initialized) { - initialized = true; - dom.importCssString('\ - .emacs-mode .ace_cursor{\ - border: 1px rgba(50,250,50,0.8) solid!important;\ - box-sizing: border-box!important;\ - background-color: rgba(0,250,0,0.9);\ - opacity: 0.5;\ - }\ - .emacs-mode .ace_hidden-cursors .ace_cursor{\ - opacity: 1;\ - background-color: transparent;\ - }\ - .emacs-mode .ace_overwrite-cursors .ace_cursor {\ - opacity: 1;\ - background-color: transparent;\ - border-width: 0 0 2px 2px !important;\ - }\ - .emacs-mode .ace_text-layer {\ - z-index: 4\ - }\ - .emacs-mode .ace_cursor-layer {\ - z-index: 2\ - }', 'emacsMode' - ); - } - $formerLongWords = editor.session.$selectLongWords; - editor.session.$selectLongWords = true; - $formerLineStart = editor.session.$useEmacsStyleLineStart; - editor.session.$useEmacsStyleLineStart = true; - - editor.session.$emacsMark = null; // the active mark - editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; - - editor.emacsMark = function() { - return this.session.$emacsMark; - }; - - editor.setEmacsMark = function(p) { - this.session.$emacsMark = p; - }; - - editor.pushEmacsMark = function(p, activate) { - var prevMark = this.session.$emacsMark; - if (prevMark) - this.session.$emacsMarkRing.push(prevMark); - if (!p || activate) this.setEmacsMark(p); - else this.session.$emacsMarkRing.push(p); - }; - - editor.popEmacsMark = function() { - var mark = this.emacsMark(); - if (mark) { this.setEmacsMark(null); return mark; } - return this.session.$emacsMarkRing.pop(); - }; - - editor.getLastEmacsMark = function(p) { - return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; - }; - - editor.emacsMarkForSelection = function(replacement) { - var sel = this.selection, - multiRangeLength = this.multiSelect ? - this.multiSelect.getAllRanges().length : 1, - selIndex = sel.index || 0, - markRing = this.session.$emacsMarkRing, - markIndex = markRing.length - (multiRangeLength - selIndex), - lastMark = markRing[markIndex] || sel.anchor; - if (replacement) { - markRing.splice(markIndex, 1, - "row" in replacement && "column" in replacement ? - replacement : undefined); - } - return lastMark; - }; - - editor.on("click", $resetMarkMode); - editor.on("changeSession", $kbSessionChange); - editor.renderer.$blockCursor = true; - editor.setStyle("emacs-mode"); - editor.commands.addCommands(commands); - exports.handler.platform = editor.commands.platform; - editor.$emacsModeHandler = this; - editor.on('copy', this.onCopy); - editor.on('paste', this.onPaste); -}; - -exports.handler.detach = function(editor) { - editor.renderer.$blockCursor = false; - editor.session.$selectLongWords = $formerLongWords; - editor.session.$useEmacsStyleLineStart = $formerLineStart; - editor.off("click", $resetMarkMode); - editor.off("changeSession", $kbSessionChange); - editor.unsetStyle("emacs-mode"); - editor.commands.removeCommands(commands); - editor.off('copy', this.onCopy); - editor.off('paste', this.onPaste); - editor.$emacsModeHandler = null; -}; - -var $kbSessionChange = function(e) { - if (e.oldSession) { - e.oldSession.$selectLongWords = $formerLongWords; - e.oldSession.$useEmacsStyleLineStart = $formerLineStart; - } - - $formerLongWords = e.session.$selectLongWords; - e.session.$selectLongWords = true; - $formerLineStart = e.session.$useEmacsStyleLineStart; - e.session.$useEmacsStyleLineStart = true; - - if (!e.session.hasOwnProperty('$emacsMark')) - e.session.$emacsMark = null; - if (!e.session.hasOwnProperty('$emacsMarkRing')) - e.session.$emacsMarkRing = []; -}; - -var $resetMarkMode = function(e) { - e.editor.session.$emacsMark = null; -}; - -var keys = require("../lib/keys").KEY_MODS; -var eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"}; -var combinations = ["C-S-M-CMD", - "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", - "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", - "CMD", "M", "S", "C"]; -combinations.forEach(function(c) { - var hashId = 0; - c.split("-").forEach(function(c) { - hashId = hashId | keys[eMods[c]]; - }); - eMods[hashId] = c.toLowerCase() + "-"; -}); - -exports.handler.onCopy = function(e, editor) { - if (editor.$handlesEmacsOnCopy) return; - editor.$handlesEmacsOnCopy = true; - exports.handler.commands.killRingSave.exec(editor); - editor.$handlesEmacsOnCopy = false; -}; - -exports.handler.onPaste = function(e, editor) { - editor.pushEmacsMark(editor.getCursorPosition()); -}; - -exports.handler.bindKey = function(key, command) { - if (typeof key == "object") - key = key[this.platform]; - if (!key) - return; - - var ckb = this.commandKeyBinding; - key.split("|").forEach(function(keyPart) { - keyPart = keyPart.toLowerCase(); - ckb[keyPart] = command; - var keyParts = keyPart.split(" ").slice(0,-1); - keyParts.reduce(function(keyMapKeys, keyPart, i) { - var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; - return keyMapKeys.concat([prefix + keyPart]); - }, []).forEach(function(keyPart) { - if (!ckb[keyPart]) ckb[keyPart] = "null"; - }); - }, this); -}; - -exports.handler.getStatusText = function(editor, data) { - var str = ""; - if (data.count) - str += data.count; - if (data.keyChain) - str += " " + data.keyChain; - return str; -}; - -exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { - if (keyCode === -1) return undefined; - - var editor = data.editor; - editor._signal("changeStatus"); - if (hashId == -1) { - editor.pushEmacsMark(); - if (data.count) { - var str = new Array(data.count + 1).join(key); - data.count = null; - return {command: "insertstring", args: str}; - } - } - - var modifier = eMods[hashId]; - if (modifier == "c-" || data.count) { - var count = parseInt(key[key.length - 1]); - if (typeof count === 'number' && !isNaN(count)) { - data.count = Math.max(data.count, 0) || 0; - data.count = 10 * data.count + count; - return {command: "null"}; - } - } - if (modifier) key = modifier + key; - if (data.keyChain) key = data.keyChain += " " + key; - var command = this.commandKeyBinding[key]; - data.keyChain = command == "null" ? key : ""; - if (!command) return undefined; - if (command === "null") return {command: "null"}; - - if (command === "universalArgument") { - data.count = -4; - return {command: "null"}; - } - var args; - if (typeof command !== "string") { - args = command.args; - if (command.command) command = command.command; - if (command === "goorselect") { - command = editor.emacsMark() ? args[1] : args[0]; - args = null; - } - } - - if (typeof command === "string") { - if (command === "insertstring" || - command === "splitline" || - command === "togglecomment") { - editor.pushEmacsMark(); - } - command = this.commands[command] || editor.commands.commands[command]; - if (!command) return undefined; - } - - if (!command.readOnly && !command.isYank) - data.lastCommand = null; - - if (!command.readOnly && editor.emacsMark()) - editor.setEmacsMark(null); - - if (data.count) { - var count = data.count; - data.count = 0; - if (!command || !command.handlesCount) { - return { - args: args, - command: { - exec: function(editor, args) { - for (var i = 0; i < count; i++) - command.exec(editor, args); - }, - multiSelectAction: command.multiSelectAction - } - }; - } else { - if (!args) args = {}; - if (typeof args === 'object') args.count = count; - } - } - - return {command: command, args: args}; -}; - -exports.emacsKeys = { - "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]}, - "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]}, - "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]}, - "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]}, - "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]}, - "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]}, - "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]}, - "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]}, - "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]}, - "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]}, - "S-Up|S-C-p" : "selectup", - "S-Down|S-C-n" : "selectdown", - "S-Left|S-C-b" : "selectleft", - "S-Right|S-C-f" : "selectright", - "S-C-Left|S-M-b" : "selectwordleft", - "S-C-Right|S-M-f" : "selectwordright", - "S-Home|S-C-a" : "selecttolinestart", - "S-End|S-C-e" : "selecttolineend", - "S-C-Home" : "selecttostart", - "S-C-End" : "selecttoend", - - "C-l" : "recenterTopBottom", - "M-s" : "centerselection", - "M-g": "gotoline", - "C-x C-p": "selectall", - "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]}, - "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]}, - "S-C-Down": "selectpagedown", - "S-C-Up": "selectpageup", - - "C-s": "iSearch", - "C-r": "iSearchBackwards", - - "M-C-s": "findnext", - "M-C-r": "findprevious", - "S-M-5": "replace", - "Backspace": "backspace", - "Delete|C-d": "del", - "Return|C-m": {command: "insertstring", args: "\n"}, // "newline" - "C-o": "splitline", - - "M-d|C-Delete": {command: "killWord", args: "right"}, - "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"}, - "C-k": "killLine", - - "C-y|S-Delete": "yank", - "M-y": "yankRotate", - "C-g": "keyboardQuit", - - "C-w|C-S-W": "killRegion", - "M-w": "killRingSave", - "C-Space": "setMark", - "C-x C-x": "exchangePointAndMark", - - "C-t": "transposeletters", - "M-u": "touppercase", // Doesn't work - "M-l": "tolowercase", - "M-/": "autocomplete", // Doesn't work - "C-u": "universalArgument", - - "M-;": "togglecomment", - - "C-/|C-x u|S-C--|C-z": "undo", - "S-C-/|S-C-x u|C--|S-C-z": "redo", // infinite undo? - "C-x r": "selectRectangularRegion", - "M-x": {command: "focusCommandLine", args: "M-x "} -}; - - -exports.handler.bindKeys(exports.emacsKeys); - -exports.handler.addCommands({ - recenterTopBottom: function(editor) { - var renderer = editor.renderer; - var pos = renderer.$cursorLayer.getPixelPosition(); - var h = renderer.$size.scrollerHeight - renderer.lineHeight; - var scrollTop = renderer.scrollTop; - if (Math.abs(pos.top - scrollTop) < 2) { - scrollTop = pos.top - h; - } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { - scrollTop = pos.top; - } else { - scrollTop = pos.top - h * 0.5; - } - editor.session.setScrollTop(scrollTop); - }, - selectRectangularRegion: function(editor) { - editor.multiSelect.toggleBlockSelection(); - }, - setMark: { - exec: function(editor, args) { - - if (args && args.count) { - if (editor.inMultiSelectMode) editor.forEachSelection(moveToMark); - else moveToMark(); - moveToMark(); - return; - } - - var mark = editor.emacsMark(), - ranges = editor.selection.getAllRanges(), - rangePositions = ranges.map(function(r) { return {row: r.start.row, column: r.start.column}; }), - transientMarkModeActive = true, - hasNoSelection = ranges.every(function(range) { return range.isEmpty(); }); - if (transientMarkModeActive && (mark || !hasNoSelection)) { - if (editor.inMultiSelectMode) editor.forEachSelection({exec: editor.clearSelection.bind(editor)}); - else editor.clearSelection(); - if (mark) editor.pushEmacsMark(null); - return; - } - - if (!mark) { - rangePositions.forEach(function(pos) { editor.pushEmacsMark(pos); }); - editor.setEmacsMark(rangePositions[rangePositions.length-1]); - return; - } - - function moveToMark() { - var mark = editor.popEmacsMark(); - mark && editor.moveCursorToPosition(mark); - } - - }, - readOnly: true, - handlesCount: true - }, - exchangePointAndMark: { - exec: function exchangePointAndMark$exec(editor, args) { - var sel = editor.selection; - if (!args.count && !sel.isEmpty()) { // just invert selection - sel.setSelectionRange(sel.getRange(), !sel.isBackwards()); - return; - } - - if (args.count) { // replace mark and point - var pos = {row: sel.lead.row, column: sel.lead.column}; - sel.clearSelection(); - sel.moveCursorToPosition(editor.emacsMarkForSelection(pos)); - } else { // create selection to last mark - sel.selectToPosition(editor.emacsMarkForSelection()); - } - }, - readOnly: true, - handlesCount: true, - multiSelectAction: "forEach" - }, - killWord: { - exec: function(editor, dir) { - editor.clearSelection(); - if (dir == "left") - editor.selection.selectWordLeft(); - else - editor.selection.selectWordRight(); - - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - exports.killRing.add(text); - - editor.session.remove(range); - editor.clearSelection(); - }, - multiSelectAction: "forEach" - }, - killLine: function(editor) { - editor.pushEmacsMark(null); - editor.clearSelection(); - var range = editor.getSelectionRange(); - var line = editor.session.getLine(range.start.row); - range.end.column = line.length; - line = line.substr(range.start.column); - - var foldLine = editor.session.getFoldLine(range.start.row); - if (foldLine && range.end.row != foldLine.end.row) { - range.end.row = foldLine.end.row; - line = "x"; - } - if (/^\s*$/.test(line)) { - range.end.row++; - line = editor.session.getLine(range.end.row); - range.end.column = /^\s*$/.test(line) ? line.length : 0; - } - var text = editor.session.getTextRange(range); - if (editor.prevOp.command == this) - exports.killRing.append(text); - else - exports.killRing.add(text); - - editor.session.remove(range); - editor.clearSelection(); - }, - yank: function(editor) { - editor.onPaste(exports.killRing.get() || ''); - editor.keyBinding.$data.lastCommand = "yank"; - }, - yankRotate: function(editor) { - if (editor.keyBinding.$data.lastCommand != "yank") - return; - editor.undo(); - editor.session.$emacsMarkRing.pop(); // also undo recording mark - editor.onPaste(exports.killRing.rotate()); - editor.keyBinding.$data.lastCommand = "yank"; - }, - killRegion: { - exec: function(editor) { - exports.killRing.add(editor.getCopyText()); - editor.commands.byName.cut.exec(editor); - editor.setEmacsMark(null); - }, - readOnly: true, - multiSelectAction: "forEach" - }, - killRingSave: { - exec: function(editor) { - - editor.$handlesEmacsOnCopy = true; - var marks = editor.session.$emacsMarkRing.slice(), - deselectedMarks = []; - exports.killRing.add(editor.getCopyText()); - - setTimeout(function() { - function deselect() { - var sel = editor.selection, range = sel.getRange(), - pos = sel.isBackwards() ? range.end : range.start; - deselectedMarks.push({row: pos.row, column: pos.column}); - sel.clearSelection(); - } - editor.$handlesEmacsOnCopy = false; - if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect}); - else deselect(); - editor.setEmacsMark(null); - editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse()); - }, 0); - }, - readOnly: true - }, - keyboardQuit: function(editor) { - editor.selection.clearSelection(); - editor.setEmacsMark(null); - editor.keyBinding.$data.count = null; - }, - focusCommandLine: function(editor, arg) { - if (editor.showCommandLine) - editor.showCommandLine(arg); - } -}); - -exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); - -var commands = exports.handler.commands; -commands.yank.isYank = true; -commands.yankRotate.isYank = true; - -exports.killRing = { - $data: [], - add: function(str) { - str && this.$data.push(str); - if (this.$data.length > 30) - this.$data.shift(); - }, - append: function(str) { - var idx = this.$data.length - 1; - var text = this.$data[idx] || ""; - if (str) text += str; - if (text) this.$data[idx] = text; - }, - get: function(n) { - n = n || 1; - return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n'); - }, - pop: function() { - if (this.$data.length > 1) - this.$data.pop(); - return this.get(); - }, - rotate: function() { - this.$data.unshift(this.$data.pop()); - return this.get(); - } -}; - -}); (function() { - ace.require(["ace/keyboard/emacs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/keybinding-sublime.js b/src-noconflict/keybinding-sublime.js deleted file mode 100644 index 9f811bc..0000000 --- a/src-noconflict/keybinding-sublime.js +++ /dev/null @@ -1,422 +0,0 @@ -ace.define("ace/keyboard/sublime",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module) { -"use strict"; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; - -function moveBySubWords(editor, direction, extend) { - var selection = editor.selection; - var row = selection.lead.row; - var column = selection.lead.column; - - var line = editor.session.getLine(row); - if (!line[column + direction]) { - var method = (extend ? "selectWord" : "moveCursorShortWord") - + (direction == 1 ? "Right" : "Left"); - return editor.selection[method](); - } - if (direction == -1) column--; - while (line[column]) { - var type = getType(line[column]) + getType(line[column + direction]); - column += direction; - if (direction == 1) { - if (type == "WW" && getType(line[column + 1]) == "w") - break; - } - else { - if (type == "wW") { - if (getType(line[column - 1]) == "W") { - column -= 1; - break; - } else { - continue; - } - } - if (type == "Ww") - break; - } - if (/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(type)) - break; - } - if (direction == -1) column++; - if (extend) - editor.selection.moveCursorTo(row, column); - else - editor.selection.moveTo(row, column); - - function getType(x) { - if (!x) return "-"; - if (/\s/.test(x)) return "s"; - if (x == "_") return "_"; - if (x.toUpperCase() == x && x.toLowerCase() != x) return "W"; - if (x.toUpperCase() != x && x.toLowerCase() == x) return "w"; - return "o"; - } -} - -exports.handler = new HashHandler(); - -exports.handler.addCommands([{ - name: "find_all_under", - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - editor.findAll(); - }, - readOnly: true -}, { - name: "find_under", - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - editor.findNext(); - }, - readOnly: true -}, { - name: "find_under_prev", - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - editor.findPrevious(); - }, - readOnly: true -}, { - name: "find_under_expand", - exec: function(editor) { - editor.selectMore(1, false, true); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "find_under_expand_skip", - exec: function(editor) { - editor.selectMore(1, true, true); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "delete_to_hard_bol", - exec: function(editor) { - var pos = editor.selection.getCursor(); - editor.session.remove({ - start: { row: pos.row, column: 0 }, - end: pos - }); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "delete_to_hard_eol", - exec: function(editor) { - var pos = editor.selection.getCursor(); - editor.session.remove({ - start: pos, - end: { row: pos.row, column: Infinity } - }); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "moveToWordStartLeft", - exec: function(editor) { - editor.selection.moveCursorLongWordLeft(); - editor.clearSelection(); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "moveToWordEndRight", - exec: function(editor) { - editor.selection.moveCursorLongWordRight(); - editor.clearSelection(); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "selectToWordStartLeft", - exec: function(editor) { - var sel = editor.selection; - sel.$moveSelection(sel.moveCursorLongWordLeft); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "selectToWordEndRight", - exec: function(editor) { - var sel = editor.selection; - sel.$moveSelection(sel.moveCursorLongWordRight); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "selectSubWordRight", - exec: function(editor) { - moveBySubWords(editor, 1, true); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectSubWordLeft", - exec: function(editor) { - moveBySubWords(editor, -1, true); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "moveSubWordRight", - exec: function(editor) { - moveBySubWords(editor, 1); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "moveSubWordLeft", - exec: function(editor) { - moveBySubWords(editor, -1); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}]); - - -[{ - bindKey: { mac: "cmd-k cmd-backspace|cmd-backspace", win: "ctrl-shift-backspace|ctrl-k ctrl-backspace" }, - name: "removetolinestarthard" -}, { - bindKey: { mac: "cmd-k cmd-k|cmd-delete|ctrl-k", win: "ctrl-shift-delete|ctrl-k ctrl-k" }, - name: "removetolineendhard" -}, { - bindKey: { mac: "cmd-shift-d", win: "ctrl-shift-d" }, - name: "duplicateSelection" -}, { - bindKey: { mac: "cmd-l", win: "ctrl-l" }, - name: "expandtoline" -}, -{ - bindKey: {mac: "cmd-shift-a", win: "ctrl-shift-a"}, - name: "expandSelection", - args: {to: "tag"} -}, { - bindKey: {mac: "cmd-shift-j", win: "ctrl-shift-j"}, - name: "expandSelection", - args: {to: "indentation"} -}, { - bindKey: {mac: "ctrl-shift-m", win: "ctrl-shift-m"}, - name: "expandSelection", - args: {to: "brackets"} -}, { - bindKey: {mac: "cmd-shift-space", win: "ctrl-shift-space"}, - name: "expandSelection", - args: {to: "scope"} -}, -{ - bindKey: { mac: "ctrl-cmd-g", win: "alt-f3" }, - name: "find_all_under" -}, { - bindKey: { mac: "alt-cmd-g", win: "ctrl-f3" }, - name: "find_under" -}, { - bindKey: { mac: "shift-alt-cmd-g", win: "ctrl-shift-f3" }, - name: "find_under_prev" -}, { - bindKey: { mac: "cmd-g", win: "f3" }, - name: "findnext" -}, { - bindKey: { mac: "shift-cmd-g", win: "shift-f3" }, - name: "findprevious" -}, { - bindKey: { mac: "cmd-d", win: "ctrl-d" }, - name: "find_under_expand" -}, { - bindKey: { mac: "cmd-k cmd-d", win: "ctrl-k ctrl-d" }, - name: "find_under_expand_skip" -}, -{ - bindKey: { mac: "cmd-alt-[", win: "ctrl-shift-[" }, - name: "toggleFoldWidget" -}, { - bindKey: { mac: "cmd-alt-]", win: "ctrl-shift-]" }, - name: "unfold" -}, { - bindKey: { mac: "cmd-k cmd-0|cmd-k cmd-j", win: "ctrl-k ctrl-0|ctrl-k ctrl-j" }, - name: "unfoldall" -}, { - bindKey: { mac: "cmd-k cmd-1", win: "ctrl-k ctrl-1" }, - name: "foldOther", - args: { level: 1 } -}, -{ - bindKey: { win: "ctrl-left", mac: "alt-left" }, - name: "moveToWordStartLeft" -}, { - bindKey: { win: "ctrl-right", mac: "alt-right" }, - name: "moveToWordEndRight" -}, { - bindKey: { win: "ctrl-shift-left", mac: "alt-shift-left" }, - name: "selectToWordStartLeft" -}, { - bindKey: { win: "ctrl-shift-right", mac: "alt-shift-right" }, - name: "selectToWordEndRight" -}, -{ - bindKey: {mac: "ctrl-alt-shift-right|ctrl-shift-right", win: "alt-shift-right"}, - name: "selectSubWordRight" -}, { - bindKey: {mac: "ctrl-alt-shift-left|ctrl-shift-left", win: "alt-shift-left"}, - name: "selectSubWordLeft" -}, { - bindKey: {mac: "ctrl-alt-right|ctrl-right", win: "alt-right"}, - name: "moveSubWordRight" -}, { - bindKey: {mac: "ctrl-alt-left|ctrl-left", win: "alt-left"}, - name: "moveSubWordLeft" -}, -{ - bindKey: { mac: "ctrl-m", win: "ctrl-m" }, - name: "jumptomatching", - args: { to: "brackets" } -}, -{ - bindKey: { mac: "ctrl-f6", win: "ctrl-f6" }, - name: "goToNextError" -}, { - bindKey: { mac: "ctrl-shift-f6", win: "ctrl-shift-f6" }, - name: "goToPreviousError" -}, - -{ - bindKey: { mac: "ctrl-o" }, - name: "splitline" -}, -{ - bindKey: {mac: "ctrl-shift-w", win: "alt-shift-w"}, - name: "surrowndWithTag" -},{ - bindKey: {mac: "cmd-alt-.", win: "alt-."}, - name: "close_tag" -}, -{ - bindKey: { mac: "cmd-j", win: "ctrl-j" }, - name: "joinlines" -}, - -{ - bindKey: {mac: "ctrl--", win: "alt--"}, - name: "jumpBack" -}, { - bindKey: {mac: "ctrl-shift--", win: "alt-shift--"}, - name: "jumpForward" -}, - -{ - bindKey: { mac: "cmd-k cmd-l", win: "ctrl-k ctrl-l" }, - name: "tolowercase" -}, { - bindKey: { mac: "cmd-k cmd-u", win: "ctrl-k ctrl-u" }, - name: "touppercase" -}, - -{ - bindKey: {mac: "cmd-shift-v", win: "ctrl-shift-v"}, - name: "paste_and_indent" -}, { - bindKey: {mac: "cmd-k cmd-v|cmd-alt-v", win: "ctrl-k ctrl-v"}, - name: "paste_from_history" -}, - -{ - bindKey: { mac: "cmd-shift-enter", win: "ctrl-shift-enter" }, - name: "addLineBefore" -}, { - bindKey: { mac: "cmd-enter", win: "ctrl-enter" }, - name: "addLineAfter" -}, { - bindKey: { mac: "ctrl-shift-k", win: "ctrl-shift-k" }, - name: "removeline" -}, { - bindKey: { mac: "ctrl-alt-up", win: "ctrl-up" }, - name: "scrollup" -}, { - bindKey: { mac: "ctrl-alt-down", win: "ctrl-down" }, - name: "scrolldown" -}, { - bindKey: { mac: "cmd-a", win: "ctrl-a" }, - name: "selectall" -}, { - bindKey: { linux: "alt-shift-down", mac: "ctrl-shift-down", win: "ctrl-alt-down" }, - name: "addCursorBelow" -}, { - bindKey: { linux: "alt-shift-up", mac: "ctrl-shift-up", win: "ctrl-alt-up" }, - name: "addCursorAbove" -}, - - -{ - bindKey: { mac: "cmd-k cmd-c|ctrl-l", win: "ctrl-k ctrl-c" }, - name: "centerselection" -}, - -{ - bindKey: { mac: "f5", win: "f9" }, - name: "sortlines" -}, -{ - bindKey: {mac: "ctrl-f5", win: "ctrl-f9"}, - name: "sortlines", - args: {caseSensitive: true} -}, -{ - bindKey: { mac: "cmd-shift-l", win: "ctrl-shift-l" }, - name: "splitSelectionIntoLines" -}, { - bindKey: { mac: "ctrl-cmd-down", win: "ctrl-shift-down" }, - name: "movelinesdown" -}, { - bindKey: { mac: "ctrl-cmd-up", win: "ctrl-shift-up" }, - name: "movelinesup" -}, { - bindKey: { mac: "alt-down", win: "alt-down" }, - name: "modifyNumberDown" -}, { - bindKey: { mac: "alt-up", win: "alt-up" }, - name: "modifyNumberUp" -}, { - bindKey: { mac: "cmd-/", win: "ctrl-/" }, - name: "togglecomment" -}, { - bindKey: { mac: "cmd-alt-/", win: "ctrl-shift-/" }, - name: "toggleBlockComment" -}, - - -{ - bindKey: { linux: "ctrl-alt-q", mac: "ctrl-q", win: "ctrl-q" }, - name: "togglerecording" -}, { - bindKey: { linux: "ctrl-alt-shift-q", mac: "ctrl-shift-q", win: "ctrl-shift-q" }, - name: "replaymacro" -}, - -{ - bindKey: { mac: "ctrl-t", win: "ctrl-t" }, - name: "transpose" -} - -].forEach(function(binding) { - var command = exports.handler.commands[binding.name]; - if (command) - command.bindKey = binding.bindKey; - exports.handler.bindKey(binding.bindKey, command || binding.name); -}); - -}); (function() { - ace.require(["ace/keyboard/sublime"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/keybinding-vim.js b/src-noconflict/keybinding-vim.js deleted file mode 100644 index cbc961c..0000000 --- a/src-noconflict/keybinding-vim.js +++ /dev/null @@ -1,6198 +0,0 @@ -ace.define("ace/ext/hardwrap",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -function hardWrap(editor, options) { - var max = options.column || editor.getOption("printMarginColumn"); - - var row = Math.min(options.startRow, options.endRow); - var endRow = Math.max(options.startRow, options.endRow); - - var session = editor.session; - - while (row <= endRow) { - var line = session.getLine(row); - if (line.length > max) { - var space = findSpace(line, max, 5); - if (space) { - session.replace(new Range(row,space.start,row,space.end), "\n"); - } - endRow++; - } else if (/\S/.test(line) && row != endRow) { - var nextLine = session.getLine(row + 1); - if (nextLine && /\S/.test(nextLine)) { - var trimmedLine = line.replace(/\s+$/, ""); - var trimmedNextLine = nextLine.replace(/^\s+/, ""); - var mergedLine = trimmedLine + " " + trimmedNextLine; - - var space = findSpace(mergedLine, max, 5); - if (space && space.start > trimmedLine.length || mergedLine.length < max) { - var replaceRange = new Range(row,trimmedLine.length,row + 1,nextLine.length - trimmedNextLine.length); - session.replace(replaceRange, " "); - row--; - endRow--; - } - } - } - row++; - } - - function findSpace(line, max, min) { - if (line.length < max) - return; - var before = line.slice(0, max); - var after = line.slice(max); - var spaceAfter = /^(?:(\s+)|(\S+)(\s+))/.exec(after); - var spaceBefore = /(?:(\s+)|(\s+)(\S+))$/.exec(before); - var start = 0; - var end = 0; - if (spaceBefore && !spaceBefore[2]) { - start = max - spaceBefore[1].length; - end = max; - } - if (spaceAfter && !spaceAfter[2]) { - if (!start) - start = max; - end = max + spaceAfter[1].length; - } - if (start) { - return { - start: start, - end: end - }; - } - if (spaceBefore && spaceBefore[2] && spaceBefore.index > min) { - return { - start: spaceBefore.index, - end: spaceBefore.index + spaceBefore[3].length - }; - } - - } - -} - -exports.hardWrap = hardWrap; - -}); - -ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/ext/hardwrap","ace/multi_select"], function(require, exports, module) { - 'use strict'; - - function log() { - var d = ""; - function format(p) { - if (typeof p != "object") - return p + ""; - if ("line" in p) { - return p.line + ":" + p.ch; - } - if ("anchor" in p) { - return format(p.anchor) + "->" + format(p.head); - } - if (Array.isArray(p)) - return "[" + p.map(function(x) { - return format(x); - }) + "]"; - return JSON.stringify(p); - } - for (var i = 0; i < arguments.length; i++) { - var p = arguments[i]; - var f = format(p); - d += f + " "; - } - console.log(d); - } - var Range = require("../range").Range; - var EventEmitter = require("../lib/event_emitter").EventEmitter; - var dom = require("../lib/dom"); - var oop = require("../lib/oop"); - var KEYS = require("../lib/keys"); - var event = require("../lib/event"); - var Search = require("../search").Search; - var useragent = require("../lib/useragent"); - var SearchHighlight = require("../search_highlight").SearchHighlight; - var multiSelectCommands = require("../commands/multi_select_commands"); - var TextModeTokenRe = require("../mode/text").Mode.prototype.tokenRe; - var hardWrap = require("../ext/hardwrap").hardWrap; - require("../multi_select"); - - var CodeMirror = function(ace) { - this.ace = ace; - this.state = {}; - this.marks = {}; - this.$uid = 0; - this.onChange = this.onChange.bind(this); - this.onSelectionChange = this.onSelectionChange.bind(this); - this.onBeforeEndOperation = this.onBeforeEndOperation.bind(this); - this.ace.on('change', this.onChange); - this.ace.on('changeSelection', this.onSelectionChange); - this.ace.on('beforeEndOperation', this.onBeforeEndOperation); - }; - CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - CodeMirror.defineOption = function(name, val, setter) {}; - CodeMirror.commands = { - redo: function(cm) { cm.ace.redo(); }, - undo: function(cm) { cm.ace.undo(); }, - newlineAndIndent: function(cm) { cm.ace.insert("\n"); } - }; - CodeMirror.keyMap = {}; - CodeMirror.addClass = CodeMirror.rmClass = function() {}; - CodeMirror.e_stop = CodeMirror.e_preventDefault = event.stopEvent; - CodeMirror.keyName = function(e) { - var key = (KEYS[e.keyCode] || e.key || ""); - if (key.length == 1) key = key.toUpperCase(); - key = event.getModifierString(e).replace(/(^|-)\w/g, function(m) { - return m.toUpperCase(); - }) + key; - return key; - }; - CodeMirror.keyMap['default'] = function(key) { - return function(cm) { - var cmd = cm.ace.commands.commandKeyBinding[key.toLowerCase()]; - return cmd && cm.ace.execCommand(cmd) !== false; - }; - }; - CodeMirror.lookupKey = function lookupKey(key, map, handle) { - if (!map) map = "default"; - if (typeof map == "string") - map = CodeMirror.keyMap[map]; - var found = typeof map == "function" ? map(key) : map[key]; - if (found === false) return "nothing"; - if (found === "...") return "multi"; - if (found != null && handle(found)) return "handled"; - - if (map.fallthrough) { - if (!Array.isArray(map.fallthrough)) - return lookupKey(key, map.fallthrough, handle); - for (var i = 0; i < map.fallthrough.length; i++) { - var result = lookupKey(key, map.fallthrough[i], handle); - if (result) return result; - } - } - }; - - - CodeMirror.findMatchingTag = function(cm, head) { - - }; - - CodeMirror.signal = function(o, name, e) { return o._signal(name, e) }; - CodeMirror.on = event.addListener; - CodeMirror.off = event.removeListener; - CodeMirror.isWordChar = function(ch) { - if (ch < "\x7f") return /^\w$/.test(ch); - TextModeTokenRe.lastIndex = 0; - return TextModeTokenRe.test(ch); - }; - -(function() { - oop.implement(CodeMirror.prototype, EventEmitter); - - this.destroy = function() { - this.ace.off('change', this.onChange); - this.ace.off('changeSelection', this.onSelectionChange); - this.ace.off('beforeEndOperation', this.onBeforeEndOperation); - this.removeOverlay(); - }; - this.virtualSelectionMode = function() { - return this.ace.inVirtualSelectionMode && this.ace.selection.index; - }; - this.onChange = function(delta) { - var change = { text: delta.action[0] == 'i' ? delta.lines : [] }; - var curOp = this.curOp = this.curOp || {}; - if (!curOp.changeHandlers) - curOp.changeHandlers = this._eventRegistry["change"] && this._eventRegistry["change"].slice(); - if (!curOp.lastChange) { - curOp.lastChange = curOp.change = change; - } else { - curOp.lastChange.next = curOp.lastChange = change; - } - this.$updateMarkers(delta); - }; - this.onSelectionChange = function() { - var curOp = this.curOp = this.curOp || {}; - if (!curOp.cursorActivityHandlers) - curOp.cursorActivityHandlers = this._eventRegistry["cursorActivity"] && this._eventRegistry["cursorActivity"].slice(); - this.curOp.cursorActivity = true; - if (this.ace.inMultiSelectMode) { - this.ace.keyBinding.removeKeyboardHandler(multiSelectCommands.keyboardHandler); - } - }; - this.operation = function(fn, force) { - if (!force && this.curOp || force && this.curOp && this.curOp.force) { - return fn(); - } - if (force || !this.ace.curOp) { - if (this.curOp) - this.onBeforeEndOperation(); - } - if (!this.ace.curOp) { - var prevOp = this.ace.prevOp; - this.ace.startOperation({ - command: { name: "vim", scrollIntoView: "cursor" } - }); - } - var curOp = this.curOp = this.curOp || {}; - this.curOp.force = force; - var result = fn(); - if (this.ace.curOp && this.ace.curOp.command.name == "vim") { - if (this.state.dialog) - this.ace.curOp.command.scrollIntoView = false; - this.ace.endOperation(); - if (!curOp.cursorActivity && !curOp.lastChange && prevOp) - this.ace.prevOp = prevOp; - } - if (force || !this.ace.curOp) { - if (this.curOp) - this.onBeforeEndOperation(); - } - return result; - }; - this.onBeforeEndOperation = function() { - var op = this.curOp; - if (op) { - if (op.change) { this.signal("change", op.change, op); } - if (op && op.cursorActivity) { this.signal("cursorActivity", null, op); } - this.curOp = null; - } - }; - - this.signal = function(eventName, e, handlers) { - var listeners = handlers ? handlers[eventName + "Handlers"] - : (this._eventRegistry || {})[eventName]; - if (!listeners) - return; - listeners = listeners.slice(); - for (var i=0; i 0) { - point.row += rowShift; - point.column += point.row == end.row ? colShift : 0; - continue; - } - if (!isInsert && cmp2 <= 0) { - point.row = start.row; - point.column = start.column; - if (cmp2 === 0) - point.bias = 1; - } - } - }; - var Marker = function(cm, id, row, column) { - this.cm = cm; - this.id = id; - this.row = row; - this.column = column; - cm.marks[this.id] = this; - }; - Marker.prototype.clear = function() { delete this.cm.marks[this.id] }; - Marker.prototype.find = function() { return toCmPos(this) }; - this.setBookmark = function(cursor, options) { - var bm = new Marker(this, this.$uid++, cursor.line, cursor.ch); - if (!options || !options.insertLeft) - bm.$insertRight = true; - this.marks[bm.id] = bm; - return bm; - }; - this.moveH = function(increment, unit) { - if (unit == 'char') { - var sel = this.ace.selection; - sel.clearSelection(); - sel.moveCursorBy(0, increment); - } - }; - this.findPosV = function(start, amount, unit, goalColumn) { - if (unit == 'page') { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - amount = amount * Math.floor(config.height / config.lineHeight); - unit = 'line'; - } - if (unit == 'line') { - var screenPos = this.ace.session.documentToScreenPosition(start.line, start.ch); - if (goalColumn != null) - screenPos.column = goalColumn; - screenPos.row += amount; - screenPos.row = Math.min(Math.max(0, screenPos.row), this.ace.session.getScreenLength() - 1); - var pos = this.ace.session.screenToDocumentPosition(screenPos.row, screenPos.column); - return toCmPos(pos); - } else { - debugger; - } - }; - this.charCoords = function(pos, mode) { - if (mode == 'div' || !mode) { - var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); - return {left: sc.column, top: sc.row}; - }if (mode == 'local') { - var renderer = this.ace.renderer; - var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); - var lh = renderer.layerConfig.lineHeight; - var cw = renderer.layerConfig.characterWidth; - var top = lh * sc.row; - return {left: sc.column * cw, top: top, bottom: top + lh}; - } - }; - this.coordsChar = function(pos, mode) { - var renderer = this.ace.renderer; - if (mode == 'local') { - var row = Math.max(0, Math.floor(pos.top / renderer.lineHeight)); - var col = Math.max(0, Math.floor(pos.left / renderer.characterWidth)); - var ch = renderer.session.screenToDocumentPosition(row, col); - return toCmPos(ch); - } else if (mode == 'div') { - throw "not implemented"; - } - }; - this.getSearchCursor = function(query, pos, caseFold) { - var caseSensitive = false; - var isRegexp = false; - if (query instanceof RegExp && !query.global) { - caseSensitive = !query.ignoreCase; - query = query.source; - isRegexp = true; - } - if (query == "\\n") { query = "\n"; isRegexp = false; } - var search = new Search(); - if (pos.ch == undefined) pos.ch = Number.MAX_VALUE; - var acePos = {row: pos.line, column: pos.ch}; - var cm = this; - var last = null; - return { - findNext: function() { return this.find(false) }, - findPrevious: function() {return this.find(true) }, - find: function(back) { - search.setOptions({ - needle: query, - caseSensitive: caseSensitive, - wrap: false, - backwards: back, - regExp: isRegexp, - start: last || acePos - }); - var range = search.find(cm.ace.session); - last = range; - return last && [!last.isEmpty()]; - }, - from: function() { return last && toCmPos(last.start) }, - to: function() { return last && toCmPos(last.end) }, - replace: function(text) { - if (last) { - last.end = cm.ace.session.doc.replace(last, text); - } - } - }; - }; - this.scrollTo = function(x, y) { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - var maxHeight = config.maxHeight; - maxHeight -= (renderer.$size.scrollerHeight - renderer.lineHeight) * renderer.$scrollPastEnd; - if (y != null) this.ace.session.setScrollTop(Math.max(0, Math.min(y, maxHeight))); - if (x != null) this.ace.session.setScrollLeft(Math.max(0, Math.min(x, config.width))); - }; - this.scrollInfo = function() { return 0; }; - this.scrollIntoView = function(pos, margin) { - if (pos) { - var renderer = this.ace.renderer; - var viewMargin = { "top": 0, "bottom": margin }; - renderer.scrollCursorIntoView(toAcePos(pos), - (renderer.lineHeight * 2) / renderer.$size.scrollerHeight, viewMargin); - } - }; - this.getLine = function(row) { return this.ace.session.getLine(row) }; - this.getRange = function(s, e) { - return this.ace.session.getTextRange(new Range(s.line, s.ch, e.line, e.ch)); - }; - this.replaceRange = function(text, s, e) { - if (!e) e = s; - var range = new Range(s.line, s.ch, e.line, e.ch); - this.ace.session.$clipRangeToDocument(range); - return this.ace.session.replace(range, text); - }; - this.replaceSelection = - this.replaceSelections = function(p) { - var sel = this.ace.selection; - if (this.ace.inVirtualSelectionMode) { - this.ace.session.replace(sel.getRange(), p[0] || ""); - return; - } - sel.inVirtualSelectionMode = true; - var ranges = sel.rangeList.ranges; - if (!ranges.length) ranges = [this.ace.multiSelect.getRange()]; - for (var i = ranges.length; i--;) - this.ace.session.replace(ranges[i], p[i] || ""); - sel.inVirtualSelectionMode = false; - }; - this.getSelection = function() { - return this.ace.getSelectedText(); - }; - this.getSelections = function() { - return this.listSelections().map(function(x) { - return this.getRange(x.anchor, x.head); - }, this); - }; - this.getInputField = function() { - return this.ace.textInput.getElement(); - }; - this.getWrapperElement = function() { - return this.ace.container; - }; - var optMap = { - indentWithTabs: "useSoftTabs", - indentUnit: "tabSize", - tabSize: "tabSize", - firstLineNumber: "firstLineNumber", - readOnly: "readOnly" - }; - this.setOption = function(name, val) { - this.state[name] = val; - switch (name) { - case 'indentWithTabs': - name = optMap[name]; - val = !val; - break; - case 'keyMap': - this.state.$keyMap = val; - return; - break; - default: - name = optMap[name]; - } - if (name) - this.ace.setOption(name, val); - }; - this.getOption = function(name, val) { - var aceOpt = optMap[name]; - if (aceOpt) - val = this.ace.getOption(aceOpt); - switch (name) { - case 'indentWithTabs': - name = optMap[name]; - return !val; - case 'keyMap': - return this.state.$keyMap; - } - return aceOpt ? val : this.state[name]; - }; - this.toggleOverwrite = function(on) { - this.state.overwrite = on; - return this.ace.setOverwrite(on); - }; - this.addOverlay = function(o) { - if (!this.$searchHighlight || !this.$searchHighlight.session) { - var highlight = new SearchHighlight(null, "ace_highlight-marker", "text"); - var marker = this.ace.session.addDynamicMarker(highlight); - highlight.id = marker.id; - highlight.session = this.ace.session; - highlight.destroy = function(o) { - highlight.session.off("change", highlight.updateOnChange); - highlight.session.off("changeEditor", highlight.destroy); - highlight.session.removeMarker(highlight.id); - highlight.session = null; - }; - highlight.updateOnChange = function(delta) { - var row = delta.start.row; - if (row == delta.end.row) highlight.cache[row] = undefined; - else highlight.cache.splice(row, highlight.cache.length); - }; - highlight.session.on("changeEditor", highlight.destroy); - highlight.session.on("change", highlight.updateOnChange); - } - var re = new RegExp(o.query.source, "gmi"); - this.$searchHighlight = o.highlight = highlight; - this.$searchHighlight.setRegexp(re); - this.ace.renderer.updateBackMarkers(); - }; - this.removeOverlay = function(o) { - if (this.$searchHighlight && this.$searchHighlight.session) { - this.$searchHighlight.destroy(); - } - }; - this.getScrollInfo = function() { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - return { - left: renderer.scrollLeft, - top: renderer.scrollTop, - height: config.maxHeight, - width: config.width, - clientHeight: config.height, - clientWidth: config.width - }; - }; - this.getValue = function() { - return this.ace.getValue(); - }; - this.setValue = function(v) { - return this.ace.setValue(v, -1); - }; - this.getTokenTypeAt = function(pos) { - var token = this.ace.session.getTokenAt(pos.line, pos.ch); - return token && /comment|string/.test(token.type) ? "string" : ""; - }; - this.findMatchingBracket = function(pos) { - var m = this.ace.session.findMatchingBracket(toAcePos(pos)); - return {to: m && toCmPos(m)}; - }; - this.indentLine = function(line, method) { - if (method === true) - this.ace.session.indentRows(line, line, "\t"); - else if (method === false) - this.ace.session.outdentRows(new Range(line, 0, line, 0)); - }; - this.indexFromPos = function(pos) { - return this.ace.session.doc.positionToIndex(toAcePos(pos)); - }; - this.posFromIndex = function(index) { - return toCmPos(this.ace.session.doc.indexToPosition(index)); - }; - this.focus = function(index) { - return this.ace.textInput.focus(); - }; - this.blur = function(index) { - return this.ace.blur(); - }; - this.defaultTextHeight = function(index) { - return this.ace.renderer.layerConfig.lineHeight; - }; - this.scanForBracket = function(pos, dir, _, options) { - var re = options.bracketRegex.source; - var tokenRe = /paren|text|operator|tag/; - if (dir == 1) { - var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos), tokenRe); - } else { - var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), {row: pos.line, column: pos.ch + 1}, tokenRe); - } - return m && {pos: toCmPos(m)}; - }; - this.refresh = function() { - return this.ace.resize(true); - }; - this.getMode = function() { - return { name : this.getOption("mode") }; - }; - this.execCommand = function(name) { - if (name == "indentAuto") this.ace.execCommand("autoindent"); - else console.log(name + " is not implemented"); - }; - this.getLineNumber = function(handle) { - return handle.row; - } - this.getLineHandle = function(row) { - return {text: this.ace.session.getLine(row), row: row}; - } -}).call(CodeMirror.prototype); - function toAcePos(cmPos) { - return {row: cmPos.line, column: cmPos.ch}; - } - function toCmPos(acePos) { - return new Pos(acePos.row, acePos.column); - } - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { - this.pos = this.start = 0; - this.string = string; - this.tabSize = tabSize || 8; - this.lastColumnPos = this.lastColumnValue = 0; - this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - throw "not implemented"; - }, - indentation: function() { - throw "not implemented"; - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; -CodeMirror.defineExtension = function(name, fn) { - CodeMirror.prototype[name] = fn; -}; -dom.importCssString(".normal-mode .ace_cursor{\ - border: none;\ - background-color: rgba(255,0,0,0.5);\ -}\ -.normal-mode .ace_hidden-cursors .ace_cursor{\ - background-color: transparent;\ - border: 1px solid red;\ - opacity: 0.7\ -}\ -.ace_dialog {\ - position: absolute;\ - left: 0; right: 0;\ - background: inherit;\ - z-index: 15;\ - padding: .1em .8em;\ - overflow: hidden;\ - color: inherit;\ -}\ -.ace_dialog-top {\ - border-bottom: 1px solid #444;\ - top: 0;\ -}\ -.ace_dialog-bottom {\ - border-top: 1px solid #444;\ - bottom: 0;\ -}\ -.ace_dialog input {\ - border: none;\ - outline: none;\ - background: transparent;\ - width: 20em;\ - color: inherit;\ - font-family: monospace;\ -}", "vimMode", false); -(function() { - function dialogDiv(cm, template, bottom) { - var wrap = cm.ace.container; - var dialog; - dialog = wrap.appendChild(document.createElement("div")); - if (bottom) - dialog.className = "ace_dialog ace_dialog-bottom"; - else - dialog.className = "ace_dialog ace_dialog-top"; - - if (typeof template == "string") { - dialog.innerHTML = template; - } else { // Assuming it's a detached DOM element. - dialog.appendChild(template); - } - return dialog; - } - - function closeNotification(cm, newVal) { - if (cm.state.currentNotificationClose) - cm.state.currentNotificationClose(); - cm.state.currentNotificationClose = newVal; - } - - CodeMirror.defineExtension("openDialog", function(template, callback, options) { - if (this.virtualSelectionMode()) return; - if (!options) options = {}; - - closeNotification(this, null); - - var dialog = dialogDiv(this, template, options.bottom); - var closed = false, me = this; - this.state.dialog = dialog; - function close(newVal) { - if (typeof newVal == 'string') { - inp.value = newVal; - } else { - if (closed) return; - - if (newVal && newVal.type == "blur") { - if (document.activeElement === inp) - return; - } - - me.state.dialog = null; - closed = true; - dialog.parentNode.removeChild(dialog); - me.focus(); - - if (options.onClose) options.onClose(dialog); - var cm = me; - if (cm.state.vim) { - cm.state.vim.status = null; - cm.ace._signal("changeStatus"); - cm.ace.renderer.$loop.schedule(cm.ace.renderer.CHANGE_CURSOR); - } - } - } - - var inp = dialog.getElementsByTagName("input")[0], button; - if (inp) { - if (options.value) { - inp.value = options.value; - if (options.selectValueOnOpen !== false) inp.select(); - } - - if (options.onInput) - CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);}); - if (options.onKeyUp) - CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);}); - - CodeMirror.on(inp, "keydown", function(e) { - if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; } - if (e.keyCode == 13) callback(inp.value); - if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) { - inp.blur(); - CodeMirror.e_stop(e); - close(); - } - }); - - if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close); - - inp.focus(); - } else if (button = dialog.getElementsByTagName("button")[0]) { - CodeMirror.on(button, "click", function() { - close(); - me.focus(); - }); - - if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close); - - button.focus(); - } - return close; - }); - - CodeMirror.defineExtension("openNotification", function(template, options) { - if (this.virtualSelectionMode()) return; - closeNotification(this, close); - var dialog = dialogDiv(this, template, options && options.bottom); - var closed = false, doneTimer; - var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000; - - function close() { - if (closed) return; - closed = true; - clearTimeout(doneTimer); - dialog.parentNode.removeChild(dialog); - } - - CodeMirror.on(dialog, 'click', function(e) { - CodeMirror.e_preventDefault(e); - close(); - }); - - if (duration) - doneTimer = setTimeout(close, duration); - - return close; - }); -})(); - - - var defaultKeymap = [ - { keys: '', type: 'keyToKey', toKeys: 'h' }, - { keys: '', type: 'keyToKey', toKeys: 'l' }, - { keys: '', type: 'keyToKey', toKeys: 'k' }, - { keys: '', type: 'keyToKey', toKeys: 'j' }, - { keys: '', type: 'keyToKey', toKeys: 'l' }, - { keys: '', type: 'keyToKey', toKeys: 'h', context: 'normal'}, - { keys: '', type: 'keyToKey', toKeys: 'x', context: 'normal'}, - { keys: '', type: 'keyToKey', toKeys: 'W' }, - { keys: '', type: 'keyToKey', toKeys: 'B', context: 'normal' }, - { keys: '', type: 'keyToKey', toKeys: 'w' }, - { keys: '', type: 'keyToKey', toKeys: 'b', context: 'normal' }, - { keys: '', type: 'keyToKey', toKeys: 'j' }, - { keys: '', type: 'keyToKey', toKeys: 'k' }, - { keys: '', type: 'keyToKey', toKeys: '' }, - { keys: '', type: 'keyToKey', toKeys: '' }, - { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, - { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, - { keys: '', type: 'keyToKey', toKeys: '' }, // ace_patch ipad keyboard sends C-Esc instead of C-[ - { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, - { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, - { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, - { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, - { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, - { keys: '', type: 'keyToKey', toKeys: '0' }, - { keys: '', type: 'keyToKey', toKeys: '$' }, - { keys: '', type: 'keyToKey', toKeys: '' }, - { keys: '', type: 'keyToKey', toKeys: '' }, - { keys: '', type: 'keyToKey', toKeys: 'j^', context: 'normal' }, - { keys: '', type: 'action', action: 'toggleOverwrite', context: 'insert' }, - { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false }}, - { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true }}, - { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true }}, - { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true }}, - { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true }}, - { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false }}, - { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false }}, - { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true }}, - { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true }}, - { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }}, - { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true }}, - { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true }}, - { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }}, - { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }}, - { keys: '(', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: false }}, - { keys: ')', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: true }}, - { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }}, - { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }}, - { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }}, - { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }}, - { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: '0', type: 'motion', motion: 'moveToStartOfLine' }, - { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }}, - { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar:true }}, - { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, - { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true }}, - { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true }}, - { keys: 'f', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true , inclusive: true }}, - { keys: 'F', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false }}, - { keys: 't', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true }}, - { keys: 'T', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false }}, - { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true }}, - { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false }}, - { keys: '\'', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true, linewise: true}}, - { keys: '`', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true}}, - { keys: ']`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, - { keys: '[`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, - { keys: ']\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, - { keys: '[\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, - { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true}}, - { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true}}, - { keys: ']', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true}}, - { keys: '[', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true}}, - { keys: '|', type: 'motion', motion: 'moveToColumn'}, - { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context:'visual'}, - { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: {sameLine: true}, context:'visual'}, - { keys: 'd', type: 'operator', operator: 'delete' }, - { keys: 'y', type: 'operator', operator: 'yank' }, - { keys: 'c', type: 'operator', operator: 'change' }, - { keys: '=', type: 'operator', operator: 'indentAuto' }, - { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }}, - { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }}, - { keys: 'g~', type: 'operator', operator: 'changeCase' }, - { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, isEdit: true }, - { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true }, - { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }}, - { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }}, - { keys: 'gn', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: true }}, - { keys: 'gN', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: false }}, - { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }}, - { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }}, - { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'expandToLine', motionArgs: { linewise: true }, context: 'normal'}, - { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'}, - { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'}, - { keys: '', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' }, - { keys: '', type: 'idle', context: 'normal' }, - { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }}, - { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }}, - { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }}, - { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true }}, - { keys: 'a', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'charAfter' }, context: 'normal' }, - { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' }, - { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' }, - { keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' }, - { keys: 'gi', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'lastEdit' }, context: 'normal' }, - { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' }, - { keys: 'gI', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'bol'}, context: 'normal' }, - { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' }, - { keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' }, - { keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' }, - { keys: 'v', type: 'action', action: 'toggleVisualMode' }, - { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true }}, - { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, - { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, - { keys: 'gv', type: 'action', action: 'reselectLastSelection' }, - { keys: 'J', type: 'action', action: 'joinLines', isEdit: true }, - { keys: 'gJ', type: 'action', action: 'joinLines', actionArgs: { keepSpaces: true }, isEdit: true }, - { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }}, - { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }}, - { keys: 'r', type: 'action', action: 'replace', isEdit: true }, - { keys: '@', type: 'action', action: 'replayMacro' }, - { keys: 'q', type: 'action', action: 'enterMacroRecordMode' }, - { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }, context: 'normal'}, - { keys: 'R', type: 'operator', operator: 'change', operatorArgs: { linewise: true, fullLine: true }, context: 'visual', exitVisualBlock: true}, - { keys: 'u', type: 'action', action: 'undo', context: 'normal' }, - { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true }, - { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true }, - { keys: '', type: 'action', action: 'redo' }, - { keys: 'm', type: 'action', action: 'setMark' }, - { keys: '"', type: 'action', action: 'setRegister' }, - { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }}, - { keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }}, - { keys: 'z', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }}, - { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: '.', type: 'action', action: 'repeatLastEdit' }, - { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}}, - { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}}, - { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: true }, context: 'insert' }, - { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: false }, context: 'insert' }, - { keys: 'a', type: 'motion', motion: 'textObjectManipulation' }, - { keys: 'i', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }}, - { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, - { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, - { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, - { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, - { keys: ':', type: 'ex' } - ]; - var defaultKeymapLength = defaultKeymap.length; - var defaultExCommandMap = [ - { name: 'colorscheme', shortName: 'colo' }, - { name: 'map' }, - { name: 'imap', shortName: 'im' }, - { name: 'nmap', shortName: 'nm' }, - { name: 'vmap', shortName: 'vm' }, - { name: 'unmap' }, - { name: 'write', shortName: 'w' }, - { name: 'undo', shortName: 'u' }, - { name: 'redo', shortName: 'red' }, - { name: 'set', shortName: 'se' }, - { name: 'setlocal', shortName: 'setl' }, - { name: 'setglobal', shortName: 'setg' }, - { name: 'sort', shortName: 'sor' }, - { name: 'substitute', shortName: 's', possiblyAsync: true }, - { name: 'nohlsearch', shortName: 'noh' }, - { name: 'yank', shortName: 'y' }, - { name: 'delmarks', shortName: 'delm' }, - { name: 'registers', shortName: 'reg', excludeFromCommandHistory: true }, - { name: 'vglobal', shortName: 'v' }, - { name: 'global', shortName: 'g' } - ]; - - var Pos = CodeMirror.Pos; - - var Vim = function() { return vimApi; } //{ - function enterVimMode(cm) { - cm.setOption('disableInput', true); - cm.setOption('showCursorWhenSelecting', false); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - cm.on('cursorActivity', onCursorActivity); - maybeInitVimState(cm); - CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); - } - - function leaveVimMode(cm) { - cm.setOption('disableInput', false); - cm.off('cursorActivity', onCursorActivity); - CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); - cm.state.vim = null; - } - function detachVimMap(cm, next) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!next || next.attach != attachVimMap) - leaveVimMode(cm); - } - function attachVimMap(cm, prev) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.addClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!prev || prev.attach != attachVimMap) - enterVimMode(cm); - } - CodeMirror.defineOption('vimMode', false, function(cm, val, prev) { - if (val && cm.getOption("keyMap") != "vim") - cm.setOption("keyMap", "vim"); - else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption("keyMap"))) - cm.setOption("keyMap", "default"); - }); - - function cmKey(key, cm) { - if (!cm) { return undefined; } - if (this[key]) { return this[key]; } - var vimKey = cmKeyToVimKey(key); - if (!vimKey) { - return false; - } - var cmd = CodeMirror.Vim.findKey(cm, vimKey); - if (typeof cmd == 'function') { - CodeMirror.signal(cm, 'vim-keypress', vimKey); - } - return cmd; - } - - var modifiers = {Shift:'S',Ctrl:'C',Alt:'A',Cmd:'D',Mod:'A',CapsLock:''}; - var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del',Insert:'Ins'}; - function cmKeyToVimKey(key) { - if (key.charAt(0) == '\'') { - return key.charAt(1); - } - var pieces = key.split(/-(?!$)/); - var lastPiece = pieces[pieces.length - 1]; - if (pieces.length == 1 && pieces[0].length == 1) { - return false; - } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) { - return false; - } - var hasCharacter = false; - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i]; - if (piece in modifiers) { pieces[i] = modifiers[piece]; } - else { hasCharacter = true; } - if (piece in specialKeys) { pieces[i] = specialKeys[piece]; } - } - if (!hasCharacter) { - return false; - } - if (isUpperCase(lastPiece)) { - pieces[pieces.length - 1] = lastPiece.toLowerCase(); - } - return '<' + pieces.join('-') + '>'; - } - - function getOnPasteFn(cm) { - var vim = cm.state.vim; - if (!vim.onPasteFn) { - vim.onPasteFn = function() { - if (!vim.insertMode) { - cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); - actions.enterInsertMode(cm, {}, vim); - } - }; - } - return vim.onPasteFn; - } - - var numberRegex = /[\d]/; - var wordCharTest = [CodeMirror.isWordChar, function(ch) { - return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); - }], bigWordCharTest = [function(ch) { - return /\S/.test(ch); - }]; - function makeKeyRange(start, size) { - var keys = []; - for (var i = start; i < start + size; i++) { - keys.push(String.fromCharCode(i)); - } - return keys; - } - var upperCaseAlphabet = makeKeyRange(65, 26); - var lowerCaseAlphabet = makeKeyRange(97, 26); - var numbers = makeKeyRange(48, 10); - var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); - var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '_', '/']); - var upperCaseChars; - try { upperCaseChars = new RegExp("^[\\p{Lu}]$", "u"); } - catch (_) { upperCaseChars = /^[A-Z]$/; } - - function isLine(cm, line) { - return line >= cm.firstLine() && line <= cm.lastLine(); - } - function isLowerCase(k) { - return (/^[a-z]$/).test(k); - } - function isMatchableSymbol(k) { - return '()[]{}'.indexOf(k) != -1; - } - function isNumber(k) { - return numberRegex.test(k); - } - function isUpperCase(k) { - return upperCaseChars.test(k); - } - function isWhiteSpaceString(k) { - return (/^\s*$/).test(k); - } - function isEndOfSentenceSymbol(k) { - return '.?!'.indexOf(k) != -1; - } - function inArray(val, arr) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == val) { - return true; - } - } - return false; - } - - var options = {}; - function defineOption(name, defaultValue, type, aliases, callback) { - if (defaultValue === undefined && !callback) { - throw Error('defaultValue is required unless callback is provided'); - } - if (!type) { type = 'string'; } - options[name] = { - type: type, - defaultValue: defaultValue, - callback: callback - }; - if (aliases) { - for (var i = 0; i < aliases.length; i++) { - options[aliases[i]] = options[name]; - } - } - if (defaultValue) { - setOption(name, defaultValue); - } - } - - function setOption(name, value, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - return new Error('Unknown option: ' + name); - } - if (option.type == 'boolean') { - if (value && value !== true) { - return new Error('Invalid argument: ' + name + '=' + value); - } else if (value !== false) { - value = true; - } - } - if (option.callback) { - if (scope !== 'local') { - option.callback(value, undefined); - } - if (scope !== 'global' && cm) { - option.callback(value, cm); - } - } else { - if (scope !== 'local') { - option.value = option.type == 'boolean' ? !!value : value; - } - if (scope !== 'global' && cm) { - cm.state.vim.options[name] = {value: value}; - } - } - } - - function getOption(name, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - return new Error('Unknown option: ' + name); - } - if (option.callback) { - var local = cm && option.callback(undefined, cm); - if (scope !== 'global' && local !== undefined) { - return local; - } - if (scope !== 'local') { - return option.callback(); - } - return; - } else { - var local = (scope !== 'global') && (cm && cm.state.vim.options[name]); - return (local || (scope !== 'local') && option || {}).value; - } - } - - defineOption('filetype', undefined, 'string', ['ft'], function(name, cm) { - if (cm === undefined) { - return; - } - if (name === undefined) { - var mode = cm.getOption('mode'); - return mode == 'null' ? '' : mode; - } else { - var mode = name == '' ? 'null' : name; - cm.setOption('mode', mode); - } - }); - - var createCircularJumpList = function() { - var size = 100; - var pointer = -1; - var head = 0; - var tail = 0; - var buffer = new Array(size); - function add(cm, oldCur, newCur) { - var current = pointer % size; - var curMark = buffer[current]; - function useNextSlot(cursor) { - var next = ++pointer % size; - var trashMark = buffer[next]; - if (trashMark) { - trashMark.clear(); - } - buffer[next] = cm.setBookmark(cursor); - } - if (curMark) { - var markPos = curMark.find(); - if (markPos && !cursorEqual(markPos, oldCur)) { - useNextSlot(oldCur); - } - } else { - useNextSlot(oldCur); - } - useNextSlot(newCur); - head = pointer; - tail = pointer - size + 1; - if (tail < 0) { - tail = 0; - } - } - function move(cm, offset) { - pointer += offset; - if (pointer > head) { - pointer = head; - } else if (pointer < tail) { - pointer = tail; - } - var mark = buffer[(size + pointer) % size]; - if (mark && !mark.find()) { - var inc = offset > 0 ? 1 : -1; - var newCur; - var oldCur = cm.getCursor(); - do { - pointer += inc; - mark = buffer[(size + pointer) % size]; - if (mark && - (newCur = mark.find()) && - !cursorEqual(oldCur, newCur)) { - break; - } - } while (pointer < head && pointer > tail); - } - return mark; - } - function find(cm, offset) { - var oldPointer = pointer; - var mark = move(cm, offset); - pointer = oldPointer; - return mark && mark.find(); - } - return { - cachedCursor: undefined, //used for # and * jumps - add: add, - find: find, - move: move - }; - }; - var createInsertModeChanges = function(c) { - if (c) { - return { - changes: c.changes, - expectCursorActivityForChange: c.expectCursorActivityForChange - }; - } - return { - changes: [], - expectCursorActivityForChange: false - }; - }; - - function MacroModeState() { - this.latestRegister = undefined; - this.isPlaying = false; - this.isRecording = false; - this.replaySearchQueries = []; - this.onRecordingDone = undefined; - this.lastInsertModeChanges = createInsertModeChanges(); - } - MacroModeState.prototype = { - exitMacroRecordMode: function() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.onRecordingDone) { - macroModeState.onRecordingDone(); // close dialog - } - macroModeState.onRecordingDone = undefined; - macroModeState.isRecording = false; - }, - enterMacroRecordMode: function(cm, registerName) { - var register = - vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.clear(); - this.latestRegister = registerName; - if (cm.openDialog) { - this.onRecordingDone = cm.openDialog( - document.createTextNode('(recording)['+registerName+']'), null, {bottom:true}); - } - this.isRecording = true; - } - } - }; - - function maybeInitVimState(cm) { - if (!cm.state.vim) { - cm.state.vim = { - inputState: new InputState(), - lastEditInputState: undefined, - lastEditActionCommand: undefined, - lastHPos: -1, - lastHSPos: -1, - lastMotion: null, - marks: {}, - fakeCursor: null, - insertMode: false, - insertModeRepeat: undefined, - visualMode: false, - visualLine: false, - visualBlock: false, - lastSelection: null, - lastPastedText: null, - sel: {}, - options: {} - }; - } - return cm.state.vim; - } - var vimGlobalState; - function resetVimGlobalState() { - vimGlobalState = { - searchQuery: null, - searchIsReversed: false, - lastSubstituteReplacePart: undefined, - jumpList: createCircularJumpList(), - macroModeState: new MacroModeState, - lastCharacterSearch: {increment:0, forward:true, selectedCharacter:''}, - registerController: new RegisterController({}), - searchHistoryController: new HistoryController(), - exCommandHistoryController : new HistoryController() - }; - for (var optionName in options) { - var option = options[optionName]; - option.value = option.defaultValue; - } - } - - var lastInsertModeKeyTimer; - var vimApi= { - buildKeyMap: function() { - }, - getRegisterController: function() { - return vimGlobalState.registerController; - }, - resetVimGlobalState_: resetVimGlobalState, - getVimGlobalState_: function() { - return vimGlobalState; - }, - maybeInitVimState_: maybeInitVimState, - - suppressErrorLogging: false, - - InsertModeKey: InsertModeKey, - map: function(lhs, rhs, ctx) { - exCommandDispatcher.map(lhs, rhs, ctx); - }, - unmap: function(lhs, ctx) { - exCommandDispatcher.unmap(lhs, ctx); - }, - noremap: function(lhs, rhs, ctx) { - function toCtxArray(ctx) { - return ctx ? [ctx] : ['normal', 'insert', 'visual']; - } - var ctxsToMap = toCtxArray(ctx); - var actualLength = defaultKeymap.length, origLength = defaultKeymapLength; - for (var i = actualLength - origLength; - i < actualLength && ctxsToMap.length; - i++) { - var mapping = defaultKeymap[i]; - if (mapping.keys == rhs && - (!ctx || !mapping.context || mapping.context === ctx) && - mapping.type.substr(0, 2) !== 'ex' && - mapping.type.substr(0, 3) !== 'key') { - var newMapping = {}; - for (var key in mapping) { - newMapping[key] = mapping[key]; - } - newMapping.keys = lhs; - if (ctx && !newMapping.context) { - newMapping.context = ctx; - } - this._mapCommand(newMapping); - var mappedCtxs = toCtxArray(mapping.context); - ctxsToMap = ctxsToMap.filter(function(el) { return mappedCtxs.indexOf(el) === -1; }); - } - } - }, - mapclear: function(ctx) { - var actualLength = defaultKeymap.length, - origLength = defaultKeymapLength; - var userKeymap = defaultKeymap.slice(0, actualLength - origLength); - defaultKeymap = defaultKeymap.slice(actualLength - origLength); - if (ctx) { - for (var i = userKeymap.length - 1; i >= 0; i--) { - var mapping = userKeymap[i]; - if (ctx !== mapping.context) { - if (mapping.context) { - this._mapCommand(mapping); - } else { - var contexts = ['normal', 'insert', 'visual']; - for (var j in contexts) { - if (contexts[j] !== ctx) { - var newMapping = {}; - for (var key in mapping) { - newMapping[key] = mapping[key]; - } - newMapping.context = contexts[j]; - this._mapCommand(newMapping); - } - } - } - } - } - } - }, - setOption: setOption, - getOption: getOption, - defineOption: defineOption, - defineEx: function(name, prefix, func){ - if (!prefix) { - prefix = name; - } else if (name.indexOf(prefix) !== 0) { - throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); - } - exCommands[name]=func; - exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; - }, - handleKey: function (cm, key, origin) { - var command = this.findKey(cm, key, origin); - if (typeof command === 'function') { - return command(); - } - }, - findKey: function(cm, key, origin) { - var vim = maybeInitVimState(cm); - function handleMacroRecording() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - if (key == 'q') { - macroModeState.exitMacroRecordMode(); - clearInputState(cm); - return true; - } - if (origin != 'mapping') { - logKey(macroModeState, key); - } - } - } - function handleEsc() { - if (key == '') { - clearInputState(cm); - if (vim.visualMode) { - exitVisualMode(cm); - } else if (vim.insertMode) { - exitInsertMode(cm); - } - return true; - } - } - function doKeyToKey(keys) { - var match; - while (keys) { - match = (/<\w+-.+?>|<\w+>|./).exec(keys); - key = match[0]; - keys = keys.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'mapping'); - } - } - - function handleKeyInsertMode() { - if (handleEsc()) { return true; } - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - var keysAreChars = key.length == 1; - var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - while (keys.length > 1 && match.type != 'full') { - var keys = vim.inputState.keyBuffer = keys.slice(1); - var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - if (thisMatch.type != 'none') { match = thisMatch; } - } - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - lastInsertModeKeyTimer = window.setTimeout( - function() { if (vim.insertMode && vim.inputState.keyBuffer) { clearInputState(cm); } }, - getOption('insertModeEscKeysTimeout')); - return !keysAreChars; - } - - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - if (keysAreChars) { - var selections = cm.listSelections(); - for (var i = 0; i < selections.length; i++) { - var here = selections[i].head; - cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); - } - vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); - } - clearInputState(cm); - return match.command; - } - - function handleKeyNonInsertMode() { - if (handleMacroRecording() || handleEsc()) { return true; } - - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - if (/^[1-9]\d*$/.test(keys)) { return true; } - - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (!keysMatcher) { clearInputState(cm); return false; } - var context = vim.visualMode ? 'visual' : - 'normal'; - var mainKey = keysMatcher[2] || keysMatcher[1]; - if (vim.inputState.operatorShortcut && vim.inputState.operatorShortcut.slice(-1) == mainKey) { - mainKey = vim.inputState.operatorShortcut; - } - var match = commandDispatcher.matchCommand(mainKey, defaultKeymap, vim.inputState, context); - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { return true; } - - vim.inputState.keyBuffer = ''; - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (keysMatcher[1] && keysMatcher[1] != '0') { - vim.inputState.pushRepeatDigit(keysMatcher[1]); - } - return match.command; - } - - var command; - if (vim.insertMode) { command = handleKeyInsertMode(); } - else { command = handleKeyNonInsertMode(); } - if (command === false) { - return undefined; //ace_patch - } else if (command === true) { - return function() { return true; }; - } else { - return function() { - if ((command.operator || command.isEdit) && cm.getOption('readOnly')) - return; // ace_patch - return cm.operation(function() { - cm.curOp.isVimOp = true; - try { - if (command.type == 'keyToKey') { - doKeyToKey(command.toKeys); - } else { - commandDispatcher.processCommand(cm, vim, command); - } - } catch (e) { - cm.state.vim = undefined; - maybeInitVimState(cm); - if (!CodeMirror.Vim.suppressErrorLogging) { - console['log'](e); - } - throw e; - } - return true; - }); - }; - } - }, - handleEx: function(cm, input) { - exCommandDispatcher.processCommand(cm, input); - }, - - defineMotion: defineMotion, - defineAction: defineAction, - defineOperator: defineOperator, - mapCommand: mapCommand, - _mapCommand: _mapCommand, - - defineRegister: defineRegister, - - exitVisualMode: exitVisualMode, - exitInsertMode: exitInsertMode - }; - function InputState() { - this.prefixRepeat = []; - this.motionRepeat = []; - - this.operator = null; - this.operatorArgs = null; - this.motion = null; - this.motionArgs = null; - this.keyBuffer = []; // For matching multi-key commands. - this.registerName = null; // Defaults to the unnamed register. - } - InputState.prototype.pushRepeatDigit = function(n) { - if (!this.operator) { - this.prefixRepeat = this.prefixRepeat.concat(n); - } else { - this.motionRepeat = this.motionRepeat.concat(n); - } - }; - InputState.prototype.getRepeat = function() { - var repeat = 0; - if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { - repeat = 1; - if (this.prefixRepeat.length > 0) { - repeat *= parseInt(this.prefixRepeat.join(''), 10); - } - if (this.motionRepeat.length > 0) { - repeat *= parseInt(this.motionRepeat.join(''), 10); - } - } - return repeat; - }; - - function clearInputState(cm, reason) { - cm.state.vim.inputState = new InputState(); - CodeMirror.signal(cm, 'vim-command-done', reason); - } - function Register(text, linewise, blockwise) { - this.clear(); - this.keyBuffer = [text || '']; - this.insertModeChanges = []; - this.searchQueries = []; - this.linewise = !!linewise; - this.blockwise = !!blockwise; - } - Register.prototype = { - setText: function(text, linewise, blockwise) { - this.keyBuffer = [text || '']; - this.linewise = !!linewise; - this.blockwise = !!blockwise; - }, - pushText: function(text, linewise) { - if (linewise) { - if (!this.linewise) { - this.keyBuffer.push('\n'); - } - this.linewise = true; - } - this.keyBuffer.push(text); - }, - pushInsertModeChanges: function(changes) { - this.insertModeChanges.push(createInsertModeChanges(changes)); - }, - pushSearchQuery: function(query) { - this.searchQueries.push(query); - }, - clear: function() { - this.keyBuffer = []; - this.insertModeChanges = []; - this.searchQueries = []; - this.linewise = false; - }, - toString: function() { - return this.keyBuffer.join(''); - } - }; - function defineRegister(name, register) { - var registers = vimGlobalState.registerController.registers; - if (!name || name.length != 1) { - throw Error('Register name must be 1 character'); - } - registers[name] = register; - validRegisters.push(name); - } - function RegisterController(registers) { - this.registers = registers; - this.unnamedRegister = registers['"'] = new Register(); - registers['.'] = new Register(); - registers[':'] = new Register(); - registers['/'] = new Register(); - } - RegisterController.prototype = { - pushText: function(registerName, operator, text, linewise, blockwise) { - if (registerName === '_') return; - if (linewise && text.charAt(text.length - 1) !== '\n'){ - text += '\n'; - } - var register = this.isValidRegister(registerName) ? - this.getRegister(registerName) : null; - if (!register) { - switch (operator) { - case 'yank': - this.registers['0'] = new Register(text, linewise, blockwise); - break; - case 'delete': - case 'change': - if (text.indexOf('\n') == -1) { - this.registers['-'] = new Register(text, linewise); - } else { - this.shiftNumericRegisters_(); - this.registers['1'] = new Register(text, linewise); - } - break; - } - this.unnamedRegister.setText(text, linewise, blockwise); - return; - } - var append = isUpperCase(registerName); - if (append) { - register.pushText(text, linewise); - } else { - register.setText(text, linewise, blockwise); - } - this.unnamedRegister.setText(register.toString(), linewise); - }, - getRegister: function(name) { - if (!this.isValidRegister(name)) { - return this.unnamedRegister; - } - name = name.toLowerCase(); - if (!this.registers[name]) { - this.registers[name] = new Register(); - } - return this.registers[name]; - }, - isValidRegister: function(name) { - return name && inArray(name, validRegisters); - }, - shiftNumericRegisters_: function() { - for (var i = 9; i >= 2; i--) { - this.registers[i] = this.getRegister('' + (i - 1)); - } - } - }; - function HistoryController() { - this.historyBuffer = []; - this.iterator = 0; - this.initialPrefix = null; - } - HistoryController.prototype = { - nextMatch: function (input, up) { - var historyBuffer = this.historyBuffer; - var dir = up ? -1 : 1; - if (this.initialPrefix === null) this.initialPrefix = input; - for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i+= dir) { - var element = historyBuffer[i]; - for (var j = 0; j <= element.length; j++) { - if (this.initialPrefix == element.substring(0, j)) { - this.iterator = i; - return element; - } - } - } - if (i >= historyBuffer.length) { - this.iterator = historyBuffer.length; - return this.initialPrefix; - } - if (i < 0 ) return input; - }, - pushInput: function(input) { - var index = this.historyBuffer.indexOf(input); - if (index > -1) this.historyBuffer.splice(index, 1); - if (input.length) this.historyBuffer.push(input); - }, - reset: function() { - this.initialPrefix = null; - this.iterator = this.historyBuffer.length; - } - }; - var commandDispatcher = { - matchCommand: function(keys, keyMap, inputState, context) { - var matches = commandMatches(keys, keyMap, context, inputState); - if (!matches.full && !matches.partial) { - return {type: 'none'}; - } else if (!matches.full && matches.partial) { - return {type: 'partial'}; - } - - var bestMatch; - for (var i = 0; i < matches.full.length; i++) { - var match = matches.full[i]; - if (!bestMatch) { - bestMatch = match; - } - } - if (bestMatch.keys.slice(-11) == '') { - var character = lastChar(keys); - if (//.test(character) || !character) return {type: 'none'}; //ace_patch - inputState.selectedCharacter = character; - } - return {type: 'full', command: bestMatch}; - }, - processCommand: function(cm, vim, command) { - vim.inputState.repeatOverride = command.repeatOverride; - switch (command.type) { - case 'motion': - this.processMotion(cm, vim, command); - break; - case 'operator': - this.processOperator(cm, vim, command); - break; - case 'operatorMotion': - this.processOperatorMotion(cm, vim, command); - break; - case 'action': - this.processAction(cm, vim, command); - break; - case 'search': - this.processSearch(cm, vim, command); - break; - case 'ex': - case 'keyToEx': - this.processEx(cm, vim, command); - break; - default: - break; - } - }, - processMotion: function(cm, vim, command) { - vim.inputState.motion = command.motion; - vim.inputState.motionArgs = copyArgs(command.motionArgs); - this.evalInput(cm, vim); - }, - processOperator: function(cm, vim, command) { - var inputState = vim.inputState; - if (inputState.operator) { - if (inputState.operator == command.operator) { - inputState.motion = 'expandToLine'; - inputState.motionArgs = { linewise: true }; - this.evalInput(cm, vim); - return; - } else { - clearInputState(cm); - } - } - inputState.operator = command.operator; - inputState.operatorArgs = copyArgs(command.operatorArgs); - if (command.keys.length > 1) { - inputState.operatorShortcut = command.keys; - } - if (command.exitVisualBlock) { - vim.visualBlock = false; - updateCmSelection(cm); - } - if (vim.visualMode) { - this.evalInput(cm, vim); - } - }, - processOperatorMotion: function(cm, vim, command) { - var visualMode = vim.visualMode; - var operatorMotionArgs = copyArgs(command.operatorMotionArgs); - if (operatorMotionArgs) { - if (visualMode && operatorMotionArgs.visualLine) { - vim.visualLine = true; - } - } - this.processOperator(cm, vim, command); - if (!visualMode) { - this.processMotion(cm, vim, command); - } - }, - processAction: function(cm, vim, command) { - var inputState = vim.inputState; - var repeat = inputState.getRepeat(); - var repeatIsExplicit = !!repeat; - var actionArgs = copyArgs(command.actionArgs) || {}; - if (inputState.selectedCharacter) { - actionArgs.selectedCharacter = inputState.selectedCharacter; - } - if (command.operator) { - this.processOperator(cm, vim, command); - } - if (command.motion) { - this.processMotion(cm, vim, command); - } - if (command.motion || command.operator) { - this.evalInput(cm, vim); - } - actionArgs.repeat = repeat || 1; - actionArgs.repeatIsExplicit = repeatIsExplicit; - actionArgs.registerName = inputState.registerName; - clearInputState(cm); - vim.lastMotion = null; - if (command.isEdit) { - this.recordLastEdit(vim, inputState, command); - } - actions[command.action](cm, actionArgs, vim); - }, - processSearch: function(cm, vim, command) { - if (!cm.getSearchCursor) { - return; - } - var forward = command.searchArgs.forward; - var wholeWordOnly = command.searchArgs.wholeWordOnly; - getSearchState(cm).setReversed(!forward); - var promptPrefix = (forward) ? '/' : '?'; - var originalQuery = getSearchState(cm).getQuery(); - var originalScrollPos = cm.getScrollInfo(); - function handleQuery(query, ignoreCase, smartCase) { - vimGlobalState.searchHistoryController.pushInput(query); - vimGlobalState.searchHistoryController.reset(); - try { - updateSearchQuery(cm, query, ignoreCase, smartCase); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + query); - clearInputState(cm); - return; - } - commandDispatcher.processMotion(cm, vim, { - type: 'motion', - motion: 'findNext', - motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } - }); - } - function onPromptClose(query) { - handleQuery(query, true /** ignoreCase */, true /** smartCase */); - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - logSearchQuery(macroModeState, query); - } - } - function onPromptKeyUp(e, query, close) { - var keyName = CodeMirror.keyName(e), up, offset; - if (keyName == 'Up' || keyName == 'Down') { - up = keyName == 'Up' ? true : false; - offset = e.target ? e.target.selectionEnd : 0; - query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; - close(query); - if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.searchHistoryController.reset(); - } - var parsedQuery; - try { - parsedQuery = updateSearchQuery(cm, query, - true /** ignoreCase */, true /** smartCase */); - } catch (e) { - } - if (parsedQuery) { - cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); - } else { - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - } - } - function onPromptKeyDown(e, query, close) { - var keyName = CodeMirror.keyName(e); - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && query == '')) { - vimGlobalState.searchHistoryController.pushInput(query); - vimGlobalState.searchHistoryController.reset(); - updateSearchQuery(cm, originalQuery); - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } else if (keyName == 'Up' || keyName == 'Down') { - CodeMirror.e_stop(e); - } else if (keyName == 'Ctrl-U') { - CodeMirror.e_stop(e); - close(''); - } - } - switch (command.searchArgs.querySrc) { - case 'prompt': - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { - var query = macroModeState.replaySearchQueries.shift(); - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - } else { - showPrompt(cm, { - onClose: onPromptClose, - prefix: promptPrefix, - desc: '(JavaScript regexp)', - onKeyUp: onPromptKeyUp, - onKeyDown: onPromptKeyDown - }); - } - break; - case 'wordUnderCursor': - var word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - true /** noSymbol */); - var isKeyword = true; - if (!word) { - word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - false /** noSymbol */); - isKeyword = false; - } - if (!word) { - return; - } - var query = cm.getLine(word.start.line).substring(word.start.ch, - word.end.ch); - if (isKeyword && wholeWordOnly) { - query = '\\b' + query + '\\b'; - } else { - query = escapeRegex(query); - } - vimGlobalState.jumpList.cachedCursor = cm.getCursor(); - cm.setCursor(word.start); - - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - break; - } - }, - processEx: function(cm, vim, command) { - function onPromptClose(input) { - vimGlobalState.exCommandHistoryController.pushInput(input); - vimGlobalState.exCommandHistoryController.reset(); - exCommandDispatcher.processCommand(cm, input); - } - function onPromptKeyDown(e, input, close) { - var keyName = CodeMirror.keyName(e), up, offset; - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && input == '')) { - vimGlobalState.exCommandHistoryController.pushInput(input); - vimGlobalState.exCommandHistoryController.reset(); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } - if (keyName == 'Up' || keyName == 'Down') { - CodeMirror.e_stop(e); - up = keyName == 'Up' ? true : false; - offset = e.target ? e.target.selectionEnd : 0; - input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; - close(input); - if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); - } else if (keyName == 'Ctrl-U') { - CodeMirror.e_stop(e); - close(''); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.exCommandHistoryController.reset(); - } - } - if (command.type == 'keyToEx') { - exCommandDispatcher.processCommand(cm, command.exArgs.input); - } else { - if (vim.visualMode) { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', - onKeyDown: onPromptKeyDown, selectValueOnOpen: false}); - } else { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', - onKeyDown: onPromptKeyDown}); - } - } - }, - evalInput: function(cm, vim) { - var inputState = vim.inputState; - var motion = inputState.motion; - var motionArgs = inputState.motionArgs || {}; - var operator = inputState.operator; - var operatorArgs = inputState.operatorArgs || {}; - var registerName = inputState.registerName; - var sel = vim.sel; - var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head): cm.getCursor('head')); - var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor')); - var oldHead = copyCursor(origHead); - var oldAnchor = copyCursor(origAnchor); - var newHead, newAnchor; - var repeat; - if (operator) { - this.recordLastEdit(vim, inputState); - } - if (inputState.repeatOverride !== undefined) { - repeat = inputState.repeatOverride; - } else { - repeat = inputState.getRepeat(); - } - if (repeat > 0 && motionArgs.explicitRepeat) { - motionArgs.repeatIsExplicit = true; - } else if (motionArgs.noRepeat || - (!motionArgs.explicitRepeat && repeat === 0)) { - repeat = 1; - motionArgs.repeatIsExplicit = false; - } - if (inputState.selectedCharacter) { - motionArgs.selectedCharacter = operatorArgs.selectedCharacter = - inputState.selectedCharacter; - } - motionArgs.repeat = repeat; - clearInputState(cm); - if (motion) { - var motionResult = motions[motion](cm, origHead, motionArgs, vim, inputState); - vim.lastMotion = motions[motion]; - if (!motionResult) { - return; - } - if (motionArgs.toJumplist) { - if (!operator && cm.ace.curOp != null) - cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch - var jumpList = vimGlobalState.jumpList; - var cachedCursor = jumpList.cachedCursor; - if (cachedCursor) { - recordJumpPosition(cm, cachedCursor, motionResult); - delete jumpList.cachedCursor; - } else { - recordJumpPosition(cm, origHead, motionResult); - } - } - if (motionResult instanceof Array) { - newAnchor = motionResult[0]; - newHead = motionResult[1]; - } else { - newHead = motionResult; - } - if (!newHead) { - newHead = copyCursor(origHead); - } - if (vim.visualMode) { - if (!(vim.visualBlock && newHead.ch === Infinity)) { - newHead = clipCursorToContent(cm, newHead); - } - if (newAnchor) { - newAnchor = clipCursorToContent(cm, newAnchor); - } - newAnchor = newAnchor || oldAnchor; - sel.anchor = newAnchor; - sel.head = newHead; - updateCmSelection(cm); - updateMark(cm, vim, '<', - cursorIsBefore(newAnchor, newHead) ? newAnchor - : newHead); - updateMark(cm, vim, '>', - cursorIsBefore(newAnchor, newHead) ? newHead - : newAnchor); - } else if (!operator) { - newHead = clipCursorToContent(cm, newHead); - cm.setCursor(newHead.line, newHead.ch); - } - } - if (operator) { - if (operatorArgs.lastSel) { - newAnchor = oldAnchor; - var lastSel = operatorArgs.lastSel; - var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); - var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); - if (lastSel.visualLine) { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } else if (lastSel.visualBlock) { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); - } else if (lastSel.head.line == lastSel.anchor.line) { - newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset); - } else { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } - vim.visualMode = true; - vim.visualLine = lastSel.visualLine; - vim.visualBlock = lastSel.visualBlock; - sel = vim.sel = { - anchor: newAnchor, - head: newHead - }; - updateCmSelection(cm); - } else if (vim.visualMode) { - operatorArgs.lastSel = { - anchor: copyCursor(sel.anchor), - head: copyCursor(sel.head), - visualBlock: vim.visualBlock, - visualLine: vim.visualLine - }; - } - var curStart, curEnd, linewise, mode; - var cmSel; - if (vim.visualMode) { - curStart = cursorMin(sel.head, sel.anchor); - curEnd = cursorMax(sel.head, sel.anchor); - linewise = vim.visualLine || operatorArgs.linewise; - mode = vim.visualBlock ? 'block' : - linewise ? 'line' : - 'char'; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode); - if (linewise) { - var ranges = cmSel.ranges; - if (mode == 'block') { - for (var i = 0; i < ranges.length; i++) { - ranges[i].head.ch = lineLength(cm, ranges[i].head.line); - } - } else if (mode == 'line') { - ranges[0].head = Pos(ranges[0].head.line + 1, 0); - } - } - } else { - curStart = copyCursor(newAnchor || oldAnchor); - curEnd = copyCursor(newHead || oldHead); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curStart; - curStart = curEnd; - curEnd = tmp; - } - linewise = motionArgs.linewise || operatorArgs.linewise; - if (linewise) { - expandSelectionToLine(cm, curStart, curEnd); - } else if (motionArgs.forward) { - clipToLine(cm, curStart, curEnd); - } - mode = 'char'; - var exclusive = !motionArgs.inclusive || linewise; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode, exclusive); - } - cm.setSelections(cmSel.ranges, cmSel.primary); - vim.lastMotion = null; - operatorArgs.repeat = repeat; // For indent in visual mode. - operatorArgs.registerName = registerName; - operatorArgs.linewise = linewise; - var operatorMoveTo = operators[operator]( - cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); - if (vim.visualMode) { - exitVisualMode(cm, operatorMoveTo != null); - } - if (operatorMoveTo) { - cm.setCursor(operatorMoveTo); - } - } - }, - recordLastEdit: function(vim, inputState, actionCommand) { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - vim.lastEditInputState = inputState; - vim.lastEditActionCommand = actionCommand; - macroModeState.lastInsertModeChanges.changes = []; - macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; - macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock ? vim.sel.head.line - vim.sel.anchor.line : 0; - } - }; - var motions = { - moveToTopLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToMiddleLine: function(cm) { - var range = getUserVisibleLines(cm); - var line = Math.floor((range.top + range.bottom) * 0.5); - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToBottomLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - expandToLine: function(_cm, head, motionArgs) { - var cur = head; - return Pos(cur.line + motionArgs.repeat - 1, Infinity); - }, - findNext: function(cm, _head, motionArgs) { - var state = getSearchState(cm); - var query = state.getQuery(); - if (!query) { - return; - } - var prev = !motionArgs.forward; - prev = (state.isReversed()) ? !prev : prev; - highlightSearchMatches(cm, query); - return findNext(cm, prev/** prev */, query, motionArgs.repeat); - }, - findAndSelectNextInclusive: function(cm, _head, motionArgs, vim, prevInputState) { - var state = getSearchState(cm); - var query = state.getQuery(); - - if (!query) { - return; - } - - var prev = !motionArgs.forward; - prev = (state.isReversed()) ? !prev : prev; - var next = findNextFromAndToInclusive(cm, prev, query, motionArgs.repeat, vim); - if (!next) { - return; - } - if (prevInputState.operator) { - return next; - } - - var from = next[0]; - var to = Pos(next[1].line, next[1].ch - 1); - - if (vim.visualMode) { - if (vim.visualLine || vim.visualBlock) { - vim.visualLine = false; - vim.visualBlock = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: ""}); - } - var anchor = vim.sel.anchor; - if (anchor) { - if (state.isReversed()) { - if (motionArgs.forward) { - return [anchor, from]; - } - - return [anchor, to]; - } else { - if (motionArgs.forward) { - return [anchor, to]; - } - - return [anchor, from]; - } - } - } else { - vim.visualMode = true; - vim.visualLine = false; - vim.visualBlock = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: ""}); - } - - return prev ? [to, from] : [from, to]; - }, - goToMark: function(cm, _head, motionArgs, vim) { - var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter); - if (pos) { - return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; - } - return null; - }, - moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) { - if (vim.visualBlock && motionArgs.sameLine) { - var sel = vim.sel; - return [ - clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), - clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch)) - ]; - } else { - return ([vim.sel.head, vim.sel.anchor]); - } - }, - jumpToMark: function(cm, head, motionArgs, vim) { - var best = head; - for (var i = 0; i < motionArgs.repeat; i++) { - var cursor = best; - for (var key in vim.marks) { - if (!isLowerCase(key)) { - continue; - } - var mark = vim.marks[key].find(); - var isWrongDirection = (motionArgs.forward) ? - cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); - - if (isWrongDirection) { - continue; - } - if (motionArgs.linewise && (mark.line == cursor.line)) { - continue; - } - - var equal = cursorEqual(cursor, best); - var between = (motionArgs.forward) ? - cursorIsBetween(cursor, mark, best) : - cursorIsBetween(best, mark, cursor); - - if (equal || between) { - best = mark; - } - } - } - - if (motionArgs.linewise) { - best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); - } - return best; - }, - moveByCharacters: function(_cm, head, motionArgs) { - var cur = head; - var repeat = motionArgs.repeat; - var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; - return Pos(cur.line, ch); - }, - moveByLines: function(cm, head, motionArgs, vim) { - var cur = head; - var endCh = cur.ch; - switch (vim.lastMotion) { - case this.moveByLines: - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveToColumn: - case this.moveToEol: - endCh = vim.lastHPos; - break; - default: - vim.lastHPos = endCh; - } - var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); - var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; - var first = cm.firstLine(); - var last = cm.lastLine(); - if (line < first && cur.line == first){ - return this.moveToStartOfLine(cm, head, motionArgs, vim); - } else if (line > last && cur.line == last){ - return moveToEol(cm, head, motionArgs, vim, true); - } - var fold = cm.ace.session.getFoldLine(line); - if (fold) { - if (motionArgs.forward) { - if (line > fold.start.row) - line = fold.end.row + 1; - } else { - line = fold.start.row; - } - } - if (motionArgs.toFirstChar){ - endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); - vim.lastHPos = endCh; - } - vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; - return Pos(line, endCh); - }, - moveByDisplayLines: function(cm, head, motionArgs, vim) { - var cur = head; - switch (vim.lastMotion) { - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveByLines: - case this.moveToColumn: - case this.moveToEol: - break; - default: - vim.lastHSPos = cm.charCoords(cur,'div').left; - } - var repeat = motionArgs.repeat; - var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); - if (res.hitSide) { - if (motionArgs.forward) { - var lastCharCoords = cm.charCoords(res, 'div'); - var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; - var res = cm.coordsChar(goalCoords, 'div'); - } else { - var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); - resCoords.left = vim.lastHSPos; - res = cm.coordsChar(resCoords, 'div'); - } - } - vim.lastHPos = res.ch; - return res; - }, - moveByPage: function(cm, head, motionArgs) { - var curStart = head; - var repeat = motionArgs.repeat; - return cm.findPosV(curStart, (motionArgs.forward ? repeat : -repeat), 'page'); - }, - moveByParagraph: function(cm, head, motionArgs) { - var dir = motionArgs.forward ? 1 : -1; - return findParagraph(cm, head, motionArgs.repeat, dir); - }, - moveBySentence: function(cm, head, motionArgs) { - var dir = motionArgs.forward ? 1 : -1; - return findSentence(cm, head, motionArgs.repeat, dir); - }, - moveByScroll: function(cm, head, motionArgs, vim) { - var scrollbox = cm.getScrollInfo(); - var curEnd = null; - var repeat = motionArgs.repeat; - if (!repeat) { - repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); - } - var orig = cm.charCoords(head, 'local'); - motionArgs.repeat = repeat; - var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); - if (!curEnd) { - return null; - } - var dest = cm.charCoords(curEnd, 'local'); - cm.scrollTo(null, scrollbox.top + dest.top - orig.top); - return curEnd; - }, - moveByWords: function(cm, head, motionArgs) { - return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, - !!motionArgs.wordEnd, !!motionArgs.bigWord); - }, - moveTillCharacter: function(cm, _head, motionArgs) { - var repeat = motionArgs.repeat; - var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter); - var increment = motionArgs.forward ? -1 : 1; - recordLastCharacterSearch(increment, motionArgs); - if (!curEnd) return null; - curEnd.ch += increment; - return curEnd; - }, - moveToCharacter: function(cm, head, motionArgs) { - var repeat = motionArgs.repeat; - recordLastCharacterSearch(0, motionArgs); - return moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToSymbol: function(cm, head, motionArgs) { - var repeat = motionArgs.repeat; - return findSymbol(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToColumn: function(cm, head, motionArgs, vim) { - var repeat = motionArgs.repeat; - vim.lastHPos = repeat - 1; - vim.lastHSPos = cm.charCoords(head,'div').left; - return moveToColumn(cm, repeat); - }, - moveToEol: function(cm, head, motionArgs, vim) { - return moveToEol(cm, head, motionArgs, vim, false); - }, - moveToFirstNonWhiteSpaceCharacter: function(cm, head) { - var cursor = head; - return Pos(cursor.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); - }, - moveToMatchedSymbol: function(cm, head) { - var cursor = head; - var line = cursor.line; - var ch = cursor.ch; - var lineText = cm.getLine(line); - var symbol; - for (; ch < lineText.length; ch++) { - symbol = lineText.charAt(ch); - if (symbol && isMatchableSymbol(symbol)) { - var style = cm.getTokenTypeAt(Pos(line, ch + 1)); - if (style !== "string" && style !== "comment") { - break; - } - } - } - if (ch < lineText.length) { - var re = /[<>]/.test(lineText[ch]) ? /[(){}[\]<>]/ : /[(){}[\]]/; //ace_patch? - var matched = cm.findMatchingBracket(Pos(line, ch+1), {bracketRegex: re}); - return matched.to; - } else { - return cursor; - } - }, - moveToStartOfLine: function(_cm, head) { - return Pos(head.line, 0); - }, - moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) { - var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); - if (motionArgs.repeatIsExplicit) { - lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); - } - return Pos(lineNum, - findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); - }, - textObjectManipulation: function(cm, head, motionArgs, vim) { - var mirroredPairs = {'(': ')', ')': '(', - '{': '}', '}': '{', - '[': ']', ']': '[', - '<': '>', '>': '<'}; - var selfPaired = {'\'': true, '"': true, '`': true}; - - var character = motionArgs.selectedCharacter; - if (character == 'b') { - character = '('; - } else if (character == 'B') { - character = '{'; - } - var inclusive = !motionArgs.textObjectInner; - - var tmp; - if (mirroredPairs[character]) { - tmp = selectCompanionObject(cm, head, character, inclusive); - } else if (selfPaired[character]) { - tmp = findBeginningAndEnd(cm, head, character, inclusive); - } else if (character === 'W') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - true /** bigWord */); - } else if (character === 'w') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - false /** bigWord */); - } else if (character === 'p') { - tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); - motionArgs.linewise = true; - if (vim.visualMode) { - if (!vim.visualLine) { vim.visualLine = true; } - } else { - var operatorArgs = vim.inputState.operatorArgs; - if (operatorArgs) { operatorArgs.linewise = true; } - tmp.end.line--; - } - } else if (character === 't') { - tmp = expandTagUnderCursor(cm, head, inclusive); - } else { - return null; - } - - if (!cm.state.vim.visualMode) { - return [tmp.start, tmp.end]; - } else { - return expandSelection(cm, tmp.start, tmp.end); - } - }, - - repeatLastCharacterSearch: function(cm, head, motionArgs) { - var lastSearch = vimGlobalState.lastCharacterSearch; - var repeat = motionArgs.repeat; - var forward = motionArgs.forward === lastSearch.forward; - var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); - cm.moveH(-increment, 'char'); - motionArgs.inclusive = forward ? true : false; - var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); - if (!curEnd) { - cm.moveH(increment, 'char'); - return head; - } - curEnd.ch += increment; - return curEnd; - } - }; - - function defineMotion(name, fn) { - motions[name] = fn; - } - - function fillArray(val, times) { - var arr = []; - for (var i = 0; i < times; i++) { - arr.push(val); - } - return arr; - } - var operators = { - change: function(cm, args, ranges) { - var finalHead, text; - var vim = cm.state.vim; - var anchor = ranges[0].anchor, - head = ranges[0].head; - if (!vim.visualMode) { - text = cm.getRange(anchor, head); - var lastState = vim.lastEditInputState || {}; - if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { - var match = (/\s+$/).exec(text); - if (match && lastState.motionArgs && lastState.motionArgs.forward) { - head = offsetCursor(head, 0, - match[0].length); - text = text.slice(0, - match[0].length); - } - } - var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE); - var wasLastLine = cm.firstLine() == cm.lastLine(); - if (head.line > cm.lastLine() && args.linewise && !wasLastLine) { - cm.replaceRange('', prevLineEnd, head); - } else { - cm.replaceRange('', anchor, head); - } - if (args.linewise) { - if (!wasLastLine) { - cm.setCursor(prevLineEnd); - CodeMirror.commands.newlineAndIndent(cm); - } - anchor.ch = Number.MAX_VALUE; - } - finalHead = anchor; - } else if (args.fullLine) { - head.ch = Number.MAX_VALUE; - head.line--; - cm.setSelection(anchor, head) - text = cm.getSelection(); - cm.replaceSelection(""); - finalHead = anchor; - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = cursorMin(ranges[0].head, ranges[0].anchor); - } - vimGlobalState.registerController.pushText( - args.registerName, 'change', text, - args.linewise, ranges.length > 1); - actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim); - }, - 'delete': function(cm, args, ranges) { - var finalHead, text; - var vim = cm.state.vim; - if (!vim.visualBlock) { - var anchor = ranges[0].anchor, - head = ranges[0].head; - if (args.linewise && - head.line != cm.firstLine() && - anchor.line == cm.lastLine() && - anchor.line == head.line - 1) { - if (anchor.line == cm.firstLine()) { - anchor.ch = 0; - } else { - anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); - } - } - text = cm.getRange(anchor, head); - cm.replaceRange('', anchor, head); - finalHead = anchor; - if (args.linewise) { - finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); - } - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = ranges[0].anchor; - } - vimGlobalState.registerController.pushText( - args.registerName, 'delete', text, - args.linewise, vim.visualBlock); - return clipCursorToContent(cm, finalHead); - }, - indent: function(cm, args, ranges) { - var vim = cm.state.vim; - var startLine = ranges[0].anchor.line; - var endLine = vim.visualBlock ? - ranges[ranges.length - 1].anchor.line : - ranges[0].head.line; - var repeat = (vim.visualMode) ? args.repeat : 1; - if (args.linewise) { - endLine--; - } - for (var i = startLine; i <= endLine; i++) { - for (var j = 0; j < repeat; j++) { - cm.indentLine(i, args.indentRight); - } - } - return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); - }, - indentAuto: function(cm, _args, ranges) { - if (ranges.length > 1) { - cm.setSelection(ranges[0].anchor, ranges[ranges.length - 1].head); - } - cm.execCommand("indentAuto"); - return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); - }, - changeCase: function(cm, args, ranges, oldAnchor, newHead) { - var selections = cm.getSelections(); - var swapped = []; - var toLower = args.toLower; - for (var j = 0; j < selections.length; j++) { - var toSwap = selections[j]; - var text = ''; - if (toLower === true) { - text = toSwap.toLowerCase(); - } else if (toLower === false) { - text = toSwap.toUpperCase(); - } else { - for (var i = 0; i < toSwap.length; i++) { - var character = toSwap.charAt(i); - text += isUpperCase(character) ? character.toLowerCase() : - character.toUpperCase(); - } - } - swapped.push(text); - } - cm.replaceSelections(swapped); - if (args.shouldMoveCursor){ - return newHead; - } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { - return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); - } else if (args.linewise){ - return oldAnchor; - } else { - return cursorMin(ranges[0].anchor, ranges[0].head); - } - }, - yank: function(cm, args, ranges, oldAnchor) { - var vim = cm.state.vim; - var text = cm.getSelection(); - var endPos = vim.visualMode - ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) - : oldAnchor; - vimGlobalState.registerController.pushText( - args.registerName, 'yank', - text, args.linewise, vim.visualBlock); - return endPos; - } - }; - - function defineOperator(name, fn) { - operators[name] = fn; - } - - var actions = { - jumpListWalk: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat; - var forward = actionArgs.forward; - var jumpList = vimGlobalState.jumpList; - - var mark = jumpList.move(cm, forward ? repeat : -repeat); - var markPos = mark ? mark.find() : undefined; - markPos = markPos ? markPos : cm.getCursor(); - cm.setCursor(markPos); - cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch - }, - scroll: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat || 1; - var lineHeight = cm.defaultTextHeight(); - var top = cm.getScrollInfo().top; - var delta = lineHeight * repeat; - var newPos = actionArgs.forward ? top + delta : top - delta; - var cursor = copyCursor(cm.getCursor()); - var cursorCoords = cm.charCoords(cursor, 'local'); - if (actionArgs.forward) { - if (newPos > cursorCoords.top) { - cursor.line += (newPos - cursorCoords.top) / lineHeight; - cursor.line = Math.ceil(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo(null, cursorCoords.top); - } else { - cm.scrollTo(null, newPos); - } - } else { - var newBottom = newPos + cm.getScrollInfo().clientHeight; - if (newBottom < cursorCoords.bottom) { - cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; - cursor.line = Math.floor(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo( - null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); - } else { - cm.scrollTo(null, newPos); - } - } - }, - scrollToCursor: function(cm, actionArgs) { - var lineNum = cm.getCursor().line; - var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); - var height = cm.getScrollInfo().clientHeight; - var y = charCoords.top; - var lineHeight = charCoords.bottom - y; - switch (actionArgs.position) { - case 'center': y = y - (height / 2) + lineHeight; - break; - case 'bottom': y = y - height + lineHeight; - break; - } - cm.scrollTo(null, y); - }, - replayMacro: function(cm, actionArgs, vim) { - var registerName = actionArgs.selectedCharacter; - var repeat = actionArgs.repeat; - var macroModeState = vimGlobalState.macroModeState; - if (registerName == '@') { - registerName = macroModeState.latestRegister; - } else { - macroModeState.latestRegister = registerName; - } - while(repeat--){ - executeMacroRegister(cm, vim, macroModeState, registerName); - } - }, - enterMacroRecordMode: function(cm, actionArgs) { - var macroModeState = vimGlobalState.macroModeState; - var registerName = actionArgs.selectedCharacter; - if (vimGlobalState.registerController.isValidRegister(registerName)) { - macroModeState.enterMacroRecordMode(cm, registerName); - } - }, - toggleOverwrite: function(cm) { - if (!cm.state.overwrite) { - cm.toggleOverwrite(true); - cm.setOption('keyMap', 'vim-replace'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); - } else { - cm.toggleOverwrite(false); - cm.setOption('keyMap', 'vim-insert'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); - } - }, - enterInsertMode: function(cm, actionArgs, vim) { - if (cm.getOption('readOnly')) { return; } - vim.insertMode = true; - vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; - var insertAt = (actionArgs) ? actionArgs.insertAt : null; - var sel = vim.sel; - var head = actionArgs.head || cm.getCursor('head'); - var height = cm.listSelections().length; - if (insertAt == 'eol') { - head = Pos(head.line, lineLength(cm, head.line)); - } else if (insertAt == 'bol') { - head = Pos(head.line, 0); - } else if (insertAt == 'charAfter') { - head = offsetCursor(head, 0, 1); - } else if (insertAt == 'firstNonBlank') { - head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head); - } else if (insertAt == 'startOfSelectedArea') { - if (!vim.visualMode) - return; - if (!vim.visualBlock) { - if (sel.head.line < sel.anchor.line) { - head = sel.head; - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.min(sel.head.ch, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'endOfSelectedArea') { - if (!vim.visualMode) - return; - if (!vim.visualBlock) { - if (sel.head.line >= sel.anchor.line) { - head = offsetCursor(sel.head, 0, 1); - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.max(sel.head.ch + 1, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'inplace') { - if (vim.visualMode){ - return; - } - } else if (insertAt == 'lastEdit') { - head = getLastEditPos(cm) || head; - } - cm.setOption('disableInput', false); - if (actionArgs && actionArgs.replace) { - cm.toggleOverwrite(true); - cm.setOption('keyMap', 'vim-replace'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); - } else { - cm.toggleOverwrite(false); - cm.setOption('keyMap', 'vim-insert'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); - } - if (!vimGlobalState.macroModeState.isPlaying) { - cm.on('change', onChange); - CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (vim.visualMode) { - exitVisualMode(cm); - } - selectForInsert(cm, head, height); - }, - toggleVisualMode: function(cm, actionArgs, vim) { - var repeat = actionArgs.repeat; - var anchor = cm.getCursor(); - var head; - if (!vim.visualMode) { - vim.visualMode = true; - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - head = clipCursorToContent( - cm, Pos(anchor.line, anchor.ch + repeat - 1)); - vim.sel = { - anchor: anchor, - head: head - }; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - } else if (vim.visualLine ^ actionArgs.linewise || - vim.visualBlock ^ actionArgs.blockwise) { - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - } else { - exitVisualMode(cm); - } - }, - reselectLastSelection: function(cm, _actionArgs, vim) { - var lastSelection = vim.lastSelection; - if (vim.visualMode) { - updateLastSelection(cm, vim); - } - if (lastSelection) { - var anchor = lastSelection.anchorMark.find(); - var head = lastSelection.headMark.find(); - if (!anchor || !head) { - return; - } - vim.sel = { - anchor: anchor, - head: head - }; - vim.visualMode = true; - vim.visualLine = lastSelection.visualLine; - vim.visualBlock = lastSelection.visualBlock; - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - CodeMirror.signal(cm, 'vim-mode-change', { - mode: 'visual', - subMode: vim.visualLine ? 'linewise' : - vim.visualBlock ? 'blockwise' : ''}); - } - }, - joinLines: function(cm, actionArgs, vim) { - var curStart, curEnd; - if (vim.visualMode) { - curStart = cm.getCursor('anchor'); - curEnd = cm.getCursor('head'); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curEnd; - curEnd = curStart; - curStart = tmp; - } - curEnd.ch = lineLength(cm, curEnd.line) - 1; - } else { - var repeat = Math.max(actionArgs.repeat, 2); - curStart = cm.getCursor(); - curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, - Infinity)); - } - var finalCh = 0; - for (var i = curStart.line; i < curEnd.line; i++) { - finalCh = lineLength(cm, curStart.line); - var tmp = Pos(curStart.line + 1, - lineLength(cm, curStart.line + 1)); - var text = cm.getRange(curStart, tmp); - text = actionArgs.keepSpaces - ? text.replace(/\n\r?/g, '') - : text.replace(/\n\s*/g, ' '); - cm.replaceRange(text, curStart, tmp); - } - var curFinalPos = Pos(curStart.line, finalCh); - if (vim.visualMode) { - exitVisualMode(cm, false); - } - cm.setCursor(curFinalPos); - }, - newLineAndEnterInsertMode: function(cm, actionArgs, vim) { - vim.insertMode = true; - var insertAt = copyCursor(cm.getCursor()); - if (insertAt.line === cm.firstLine() && !actionArgs.after) { - cm.replaceRange('\n', Pos(cm.firstLine(), 0)); - cm.setCursor(cm.firstLine(), 0); - } else { - insertAt.line = (actionArgs.after) ? insertAt.line : - insertAt.line - 1; - insertAt.ch = lineLength(cm, insertAt.line); - cm.setCursor(insertAt); - var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - newlineFn(cm); - } - this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); - }, - paste: function(cm, actionArgs, vim) { - var cur = copyCursor(cm.getCursor()); - var register = vimGlobalState.registerController.getRegister( - actionArgs.registerName); - var text = register.toString(); - if (!text) { - return; - } - if (actionArgs.matchIndent) { - var tabSize = cm.getOption("tabSize"); - var whitespaceLength = function(str) { - var tabs = (str.split("\t").length - 1); - var spaces = (str.split(" ").length - 1); - return tabs * tabSize + spaces * 1; - }; - var currentLine = cm.getLine(cm.getCursor().line); - var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); - var chompedText = text.replace(/\n$/, ''); - var wasChomped = text !== chompedText; - var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); - var text = chompedText.replace(/^\s*/gm, function(wspace) { - var newIndent = indent + (whitespaceLength(wspace) - firstIndent); - if (newIndent < 0) { - return ""; - } - else if (cm.getOption("indentWithTabs")) { - var quotient = Math.floor(newIndent / tabSize); - return Array(quotient + 1).join('\t'); - } - else { - return Array(newIndent + 1).join(' '); - } - }); - text += wasChomped ? "\n" : ""; - } - if (actionArgs.repeat > 1) { - var text = Array(actionArgs.repeat + 1).join(text); - } - var linewise = register.linewise; - var blockwise = register.blockwise; - if (blockwise) { - text = text.split('\n'); - if (linewise) { - text.pop(); - } - for (var i = 0; i < text.length; i++) { - text[i] = (text[i] == '') ? ' ' : text[i]; - } - cur.ch += actionArgs.after ? 1 : 0; - cur.ch = Math.min(lineLength(cm, cur.line), cur.ch); - } else if (linewise) { - if(vim.visualMode) { - text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; - } else if (actionArgs.after) { - text = '\n' + text.slice(0, text.length - 1); - cur.ch = lineLength(cm, cur.line); - } else { - cur.ch = 0; - } - } else { - cur.ch += actionArgs.after ? 1 : 0; - } - var curPosFinal; - var idx; - if (vim.visualMode) { - vim.lastPastedText = text; - var lastSelectionCurEnd; - var selectedArea = getSelectedAreaRange(cm, vim); - var selectionStart = selectedArea[0]; - var selectionEnd = selectedArea[1]; - var selectedText = cm.getSelection(); - var selections = cm.listSelections(); - var emptyStrings = new Array(selections.length).join('1').split('1'); - if (vim.lastSelection) { - lastSelectionCurEnd = vim.lastSelection.headMark.find(); - } - vimGlobalState.registerController.unnamedRegister.setText(selectedText); - if (blockwise) { - cm.replaceSelections(emptyStrings); - selectionEnd = Pos(selectionStart.line + text.length-1, selectionStart.ch); - cm.setCursor(selectionStart); - selectBlock(cm, selectionEnd); - cm.replaceSelections(text); - curPosFinal = selectionStart; - } else if (vim.visualBlock) { - cm.replaceSelections(emptyStrings); - cm.setCursor(selectionStart); - cm.replaceRange(text, selectionStart, selectionStart); - curPosFinal = selectionStart; - } else { - cm.replaceRange(text, selectionStart, selectionEnd); - curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); - } - if(lastSelectionCurEnd) { - vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); - } - if (linewise) { - curPosFinal.ch=0; - } - } else { - if (blockwise) { - cm.setCursor(cur); - for (var i = 0; i < text.length; i++) { - var line = cur.line+i; - if (line > cm.lastLine()) { - cm.replaceRange('\n', Pos(line, 0)); - } - var lastCh = lineLength(cm, line); - if (lastCh < cur.ch) { - extendLineToColumn(cm, line, cur.ch); - } - } - cm.setCursor(cur); - selectBlock(cm, Pos(cur.line + text.length-1, cur.ch)); - cm.replaceSelections(text); - curPosFinal = cur; - } else { - cm.replaceRange(text, cur); - if (linewise && actionArgs.after) { - curPosFinal = Pos( - cur.line + 1, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); - } else if (linewise && !actionArgs.after) { - curPosFinal = Pos( - cur.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); - } else if (!linewise && actionArgs.after) { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length - 1); - } else { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length); - } - } - } - if (vim.visualMode) { - exitVisualMode(cm, false); - } - cm.setCursor(curPosFinal); - }, - undo: function(cm, actionArgs) { - cm.operation(function() { - repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); - cm.setCursor(cm.getCursor('anchor')); - }); - }, - redo: function(cm, actionArgs) { - repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); - }, - setRegister: function(_cm, actionArgs, vim) { - vim.inputState.registerName = actionArgs.selectedCharacter; - }, - setMark: function(cm, actionArgs, vim) { - var markName = actionArgs.selectedCharacter; - updateMark(cm, vim, markName, cm.getCursor()); - }, - replace: function(cm, actionArgs, vim) { - var replaceWith = actionArgs.selectedCharacter; - var curStart = cm.getCursor(); - var replaceTo; - var curEnd; - var selections = cm.listSelections(); - if (vim.visualMode) { - curStart = cm.getCursor('start'); - curEnd = cm.getCursor('end'); - } else { - var line = cm.getLine(curStart.line); - replaceTo = curStart.ch + actionArgs.repeat; - if (replaceTo > line.length) { - replaceTo=line.length; - } - curEnd = Pos(curStart.line, replaceTo); - } - if (replaceWith=='\n') { - if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); - (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); - } else { - var replaceWithStr = cm.getRange(curStart, curEnd); - replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); - if (vim.visualBlock) { - var spaces = new Array(cm.getOption("tabSize")+1).join(' '); - replaceWithStr = cm.getSelection(); - replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); - cm.replaceSelections(replaceWithStr); - } else { - cm.replaceRange(replaceWithStr, curStart, curEnd); - } - if (vim.visualMode) { - curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? - selections[0].anchor : selections[0].head; - cm.setCursor(curStart); - exitVisualMode(cm, false); - } else { - cm.setCursor(offsetCursor(curEnd, 0, -1)); - } - } - }, - incrementNumberToken: function(cm, actionArgs) { - var cur = cm.getCursor(); - var lineStr = cm.getLine(cur.line); - var re = /(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi; - var match; - var start; - var end; - var numberStr; - while ((match = re.exec(lineStr)) !== null) { - start = match.index; - end = start + match[0].length; - if (cur.ch < end)break; - } - if (!actionArgs.backtrack && (end <= cur.ch))return; - if (match) { - var baseStr = match[2] || match[4] - var digits = match[3] || match[5] - var increment = actionArgs.increase ? 1 : -1; - var base = {'0b': 2, '0': 8, '': 10, '0x': 16}[baseStr.toLowerCase()]; - var number = parseInt(match[1] + digits, base) + (increment * actionArgs.repeat); - numberStr = number.toString(base); - var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : '' - if (numberStr.charAt(0) === '-') { - numberStr = '-' + baseStr + zeroPadding + numberStr.substr(1); - } else { - numberStr = baseStr + zeroPadding + numberStr; - } - var from = Pos(cur.line, start); - var to = Pos(cur.line, end); - cm.replaceRange(numberStr, from, to); - } else { - return; - } - cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); - }, - repeatLastEdit: function(cm, actionArgs, vim) { - var lastEditInputState = vim.lastEditInputState; - if (!lastEditInputState) { return; } - var repeat = actionArgs.repeat; - if (repeat && actionArgs.repeatIsExplicit) { - vim.lastEditInputState.repeatOverride = repeat; - } else { - repeat = vim.lastEditInputState.repeatOverride || repeat; - } - repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); - }, - indent: function(cm, actionArgs) { - cm.indentLine(cm.getCursor().line, actionArgs.indentRight); - }, - exitInsertMode: exitInsertMode - }; - - function defineAction(name, fn) { - actions[name] = fn; - } - function clipCursorToContent(cm, cur) { - var vim = cm.state.vim; - var includeLineBreak = vim.insertMode || vim.visualMode; - var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); - var maxCh = lineLength(cm, line) - 1 + !!includeLineBreak; - var ch = Math.min(Math.max(0, cur.ch), maxCh); - return Pos(line, ch); - } - function copyArgs(args) { - var ret = {}; - for (var prop in args) { - if (args.hasOwnProperty(prop)) { - ret[prop] = args[prop]; - } - } - return ret; - } - function offsetCursor(cur, offsetLine, offsetCh) { - if (typeof offsetLine === 'object') { - offsetCh = offsetLine.ch; - offsetLine = offsetLine.line; - } - return Pos(cur.line + offsetLine, cur.ch + offsetCh); - } - function commandMatches(keys, keyMap, context, inputState) { - var match, partial = [], full = []; - for (var i = 0; i < keyMap.length; i++) { - var command = keyMap[i]; - if (context == 'insert' && command.context != 'insert' || - command.context && command.context != context || - inputState.operator && command.type == 'action' || - !(match = commandMatch(keys, command.keys))) { continue; } - if (match == 'partial') { partial.push(command); } - if (match == 'full') { full.push(command); } - } - return { - partial: partial.length && partial, - full: full.length && full - }; - } - function commandMatch(pressed, mapped) { - if (mapped.slice(-11) == '') { - var prefixLen = mapped.length - 11; - var pressedPrefix = pressed.slice(0, prefixLen); - var mappedPrefix = mapped.slice(0, prefixLen); - return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : - mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; - } else { - return pressed == mapped ? 'full' : - mapped.indexOf(pressed) == 0 ? 'partial' : false; - } - } - function lastChar(keys) { - var match = /^.*(<[^>]+>)$/.exec(keys); - var selectedCharacter = match ? match[1] : keys.slice(-1); - if (selectedCharacter.length > 1){ - switch(selectedCharacter){ - case '': - selectedCharacter='\n'; - break; - case '': - selectedCharacter=' '; - break; - default: - selectedCharacter=''; - break; - } - } - return selectedCharacter; - } - function repeatFn(cm, fn, repeat) { - return function() { - for (var i = 0; i < repeat; i++) { - fn(cm); - } - }; - } - function copyCursor(cur) { - return Pos(cur.line, cur.ch); - } - function cursorEqual(cur1, cur2) { - return cur1.ch == cur2.ch && cur1.line == cur2.line; - } - function cursorIsBefore(cur1, cur2) { - if (cur1.line < cur2.line) { - return true; - } - if (cur1.line == cur2.line && cur1.ch < cur2.ch) { - return true; - } - return false; - } - function cursorMin(cur1, cur2) { - if (arguments.length > 2) { - cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur1 : cur2; - } - function cursorMax(cur1, cur2) { - if (arguments.length > 2) { - cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur2 : cur1; - } - function cursorIsBetween(cur1, cur2, cur3) { - var cur1before2 = cursorIsBefore(cur1, cur2); - var cur2before3 = cursorIsBefore(cur2, cur3); - return cur1before2 && cur2before3; - } - function lineLength(cm, lineNum) { - return cm.getLine(lineNum).length; - } - function trim(s) { - if (s.trim) { - return s.trim(); - } - return s.replace(/^\s+|\s+$/g, ''); - } - function escapeRegex(s) { - return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); - } - function extendLineToColumn(cm, lineNum, column) { - var endCh = lineLength(cm, lineNum); - var spaces = new Array(column-endCh+1).join(' '); - cm.setCursor(Pos(lineNum, endCh)); - cm.replaceRange(spaces, cm.getCursor()); - } - function selectBlock(cm, selectionEnd) { - var selections = [], ranges = cm.listSelections(); - var head = copyCursor(cm.clipPos(selectionEnd)); - var isClipped = !cursorEqual(selectionEnd, head); - var curHead = cm.getCursor('head'); - var primIndex = getIndex(ranges, curHead); - var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); - var max = ranges.length - 1; - var index = max - primIndex > primIndex ? max : 0; - var base = ranges[index].anchor; - - var firstLine = Math.min(base.line, head.line); - var lastLine = Math.max(base.line, head.line); - var baseCh = base.ch, headCh = head.ch; - - var dir = ranges[index].head.ch - baseCh; - var newDir = headCh - baseCh; - if (dir > 0 && newDir <= 0) { - baseCh++; - if (!isClipped) { headCh--; } - } else if (dir < 0 && newDir >= 0) { - baseCh--; - if (!wasClipped) { headCh++; } - } else if (dir < 0 && newDir == -1) { - baseCh--; - headCh++; - } - for (var line = firstLine; line <= lastLine; line++) { - var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)}; - selections.push(range); - } - cm.setSelections(selections); - selectionEnd.ch = headCh; - base.ch = baseCh; - return base; - } - function selectForInsert(cm, head, height) { - var sel = []; - for (var i = 0; i < height; i++) { - var lineHead = offsetCursor(head, i, 0); - sel.push({anchor: lineHead, head: lineHead}); - } - cm.setSelections(sel, 0); - } - function getIndex(ranges, cursor, end) { - for (var i = 0; i < ranges.length; i++) { - var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor); - var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor); - if (atAnchor || atHead) { - return i; - } - } - return -1; - } - function getSelectedAreaRange(cm, vim) { - var lastSelection = vim.lastSelection; - var getCurrentSelectedAreaRange = function() { - var selections = cm.listSelections(); - var start = selections[0]; - var end = selections[selections.length-1]; - var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head; - var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor; - return [selectionStart, selectionEnd]; - }; - var getLastSelectedAreaRange = function() { - var selectionStart = cm.getCursor(); - var selectionEnd = cm.getCursor(); - var block = lastSelection.visualBlock; - if (block) { - var width = block.width; - var height = block.height; - selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width); - var selections = []; - for (var i = selectionStart.line; i < selectionEnd.line; i++) { - var anchor = Pos(i, selectionStart.ch); - var head = Pos(i, selectionEnd.ch); - var range = {anchor: anchor, head: head}; - selections.push(range); - } - cm.setSelections(selections); - } else { - var start = lastSelection.anchorMark.find(); - var end = lastSelection.headMark.find(); - var line = end.line - start.line; - var ch = end.ch - start.ch; - selectionEnd = {line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch}; - if (lastSelection.visualLine) { - selectionStart = Pos(selectionStart.line, 0); - selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); - } - cm.setSelection(selectionStart, selectionEnd); - } - return [selectionStart, selectionEnd]; - }; - if (!vim.visualMode) { - return getLastSelectedAreaRange(); - } else { - return getCurrentSelectedAreaRange(); - } - } - function updateLastSelection(cm, vim) { - var anchor = vim.sel.anchor; - var head = vim.sel.head; - if (vim.lastPastedText) { - head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length); - vim.lastPastedText = null; - } - vim.lastSelection = {'anchorMark': cm.setBookmark(anchor), - 'headMark': cm.setBookmark(head), - 'anchor': copyCursor(anchor), - 'head': copyCursor(head), - 'visualMode': vim.visualMode, - 'visualLine': vim.visualLine, - 'visualBlock': vim.visualBlock}; - } - function expandSelection(cm, start, end) { - var sel = cm.state.vim.sel; - var head = sel.head; - var anchor = sel.anchor; - var tmp; - if (cursorIsBefore(end, start)) { - tmp = end; - end = start; - start = tmp; - } - if (cursorIsBefore(head, anchor)) { - head = cursorMin(start, head); - anchor = cursorMax(anchor, end); - } else { - anchor = cursorMin(start, anchor); - head = cursorMax(head, end); - head = offsetCursor(head, 0, -1); - if (head.ch == -1 && head.line != cm.firstLine()) { - head = Pos(head.line - 1, lineLength(cm, head.line - 1)); - } - } - return [anchor, head]; - } - function updateCmSelection(cm, sel, mode) { - var vim = cm.state.vim; - sel = sel || vim.sel; - var mode = mode || - vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char'; - var cmSel = makeCmSelection(cm, sel, mode); - cm.setSelections(cmSel.ranges, cmSel.primary); - updateFakeCursor(cm); - } - function makeCmSelection(cm, sel, mode, exclusive) { - var head = copyCursor(sel.head); - var anchor = copyCursor(sel.anchor); - if (mode == 'char') { - var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; - var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; - head = offsetCursor(sel.head, 0, headOffset); - anchor = offsetCursor(sel.anchor, 0, anchorOffset); - return { - ranges: [{anchor: anchor, head: head}], - primary: 0 - }; - } else if (mode == 'line') { - if (!cursorIsBefore(sel.head, sel.anchor)) { - anchor.ch = 0; - - var lastLine = cm.lastLine(); - if (head.line > lastLine) { - head.line = lastLine; - } - head.ch = lineLength(cm, head.line); - } else { - head.ch = 0; - anchor.ch = lineLength(cm, anchor.line); - } - return { - ranges: [{anchor: anchor, head: head}], - primary: 0 - }; - } else if (mode == 'block') { - var top = Math.min(anchor.line, head.line), - left = Math.min(anchor.ch, head.ch), - bottom = Math.max(anchor.line, head.line), - right = Math.max(anchor.ch, head.ch) + 1; - var height = bottom - top + 1; - var primary = head.line == top ? 0 : height - 1; - var ranges = []; - for (var i = 0; i < height; i++) { - ranges.push({ - anchor: Pos(top + i, left), - head: Pos(top + i, right) - }); - } - return { - ranges: ranges, - primary: primary - }; - } - } - function getHead(cm) { - var cur = cm.getCursor('head'); - if (cm.getSelection().length == 1) { - cur = cursorMin(cur, cm.getCursor('anchor')); - } - return cur; - } - function exitVisualMode(cm, moveHead) { - var vim = cm.state.vim; - if (moveHead !== false) { - cm.setCursor(clipCursorToContent(cm, vim.sel.head)); - } - updateLastSelection(cm, vim); - vim.visualMode = false; - vim.visualLine = false; - vim.visualBlock = false; - if (!vim.insertMode) CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - clearFakeCursor(vim); - } - function clipToLine(cm, curStart, curEnd) { - var selection = cm.getRange(curStart, curEnd); - if (/\n\s*$/.test(selection)) { - var lines = selection.split('\n'); - lines.pop(); - var line; - for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { - curEnd.line--; - curEnd.ch = 0; - } - if (line) { - curEnd.line--; - curEnd.ch = lineLength(cm, curEnd.line); - } else { - curEnd.ch = 0; - } - } - } - function expandSelectionToLine(_cm, curStart, curEnd) { - curStart.ch = 0; - curEnd.ch = 0; - curEnd.line++; - } - - function findFirstNonWhiteSpaceCharacter(text) { - if (!text) { - return 0; - } - var firstNonWS = text.search(/\S/); - return firstNonWS == -1 ? text.length : firstNonWS; - } - - function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { - var cur = getHead(cm); - var line = cm.getLine(cur.line); - var idx = cur.ch; - var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0]; - while (!test(line.charAt(idx))) { - idx++; - if (idx >= line.length) { return null; } - } - - if (bigWord) { - test = bigWordCharTest[0]; - } else { - test = wordCharTest[0]; - if (!test(line.charAt(idx))) { - test = wordCharTest[1]; - } - } - - var end = idx, start = idx; - while (test(line.charAt(end)) && end < line.length) { end++; } - while (test(line.charAt(start)) && start >= 0) { start--; } - start++; - - if (inclusive) { - var wordEnd = end; - while (/\s/.test(line.charAt(end)) && end < line.length) { end++; } - if (wordEnd == end) { - var wordStart = start; - while (/\s/.test(line.charAt(start - 1)) && start > 0) { start--; } - if (!start) { start = wordStart; } - } - } - return { start: Pos(cur.line, start), end: Pos(cur.line, end) }; - } - function expandTagUnderCursor(cm, head, inclusive) { - var cur = head; - if (!CodeMirror.findMatchingTag || !CodeMirror.findEnclosingTag) { - return { start: cur, end: cur }; - } - - var tags = CodeMirror.findMatchingTag(cm, head) || CodeMirror.findEnclosingTag(cm, head); - if (!tags || !tags.open || !tags.close) { - return { start: cur, end: cur }; - } - - if (inclusive) { - return { start: tags.open.from, end: tags.close.to }; - } - return { start: tags.open.to, end: tags.close.from }; - } - - function recordJumpPosition(cm, oldCur, newCur) { - if (!cursorEqual(oldCur, newCur)) { - vimGlobalState.jumpList.add(cm, oldCur, newCur); - } - } - - function recordLastCharacterSearch(increment, args) { - vimGlobalState.lastCharacterSearch.increment = increment; - vimGlobalState.lastCharacterSearch.forward = args.forward; - vimGlobalState.lastCharacterSearch.selectedCharacter = args.selectedCharacter; - } - - var symbolToMode = { - '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', - '[': 'section', ']': 'section', - '*': 'comment', '/': 'comment', - 'm': 'method', 'M': 'method', - '#': 'preprocess' - }; - var findSymbolModes = { - bracket: { - isComplete: function(state) { - if (state.nextCh === state.symb) { - state.depth++; - if (state.depth >= 1)return true; - } else if (state.nextCh === state.reverseSymb) { - state.depth--; - } - return false; - } - }, - section: { - init: function(state) { - state.curMoveThrough = true; - state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; - }, - isComplete: function(state) { - return state.index === 0 && state.nextCh === state.symb; - } - }, - comment: { - isComplete: function(state) { - var found = state.lastCh === '*' && state.nextCh === '/'; - state.lastCh = state.nextCh; - return found; - } - }, - method: { - init: function(state) { - state.symb = (state.symb === 'm' ? '{' : '}'); - state.reverseSymb = state.symb === '{' ? '}' : '{'; - }, - isComplete: function(state) { - if (state.nextCh === state.symb)return true; - return false; - } - }, - preprocess: { - init: function(state) { - state.index = 0; - }, - isComplete: function(state) { - if (state.nextCh === '#') { - var token = state.lineText.match(/^#(\w+)/)[1]; - if (token === 'endif') { - if (state.forward && state.depth === 0) { - return true; - } - state.depth++; - } else if (token === 'if') { - if (!state.forward && state.depth === 0) { - return true; - } - state.depth--; - } - if (token === 'else' && state.depth === 0)return true; - } - return false; - } - } - }; - function findSymbol(cm, repeat, forward, symb) { - var cur = copyCursor(cm.getCursor()); - var increment = forward ? 1 : -1; - var endLine = forward ? cm.lineCount() : -1; - var curCh = cur.ch; - var line = cur.line; - var lineText = cm.getLine(line); - var state = { - lineText: lineText, - nextCh: lineText.charAt(curCh), - lastCh: null, - index: curCh, - symb: symb, - reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], - forward: forward, - depth: 0, - curMoveThrough: false - }; - var mode = symbolToMode[symb]; - if (!mode)return cur; - var init = findSymbolModes[mode].init; - var isComplete = findSymbolModes[mode].isComplete; - if (init) { init(state); } - while (line !== endLine && repeat) { - state.index += increment; - state.nextCh = state.lineText.charAt(state.index); - if (!state.nextCh) { - line += increment; - state.lineText = cm.getLine(line) || ''; - if (increment > 0) { - state.index = 0; - } else { - var lineLen = state.lineText.length; - state.index = (lineLen > 0) ? (lineLen-1) : 0; - } - state.nextCh = state.lineText.charAt(state.index); - } - if (isComplete(state)) { - cur.line = line; - cur.ch = state.index; - repeat--; - } - } - if (state.nextCh || state.curMoveThrough) { - return Pos(line, state.index); - } - return cur; - } - function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { - var lineNum = cur.line; - var pos = cur.ch; - var line = cm.getLine(lineNum); - var dir = forward ? 1 : -1; - var charTests = bigWord ? bigWordCharTest: wordCharTest; - - if (emptyLineIsWord && line == '') { - lineNum += dir; - line = cm.getLine(lineNum); - if (!isLine(cm, lineNum)) { - return null; - } - pos = (forward) ? 0 : line.length; - } - - while (true) { - if (emptyLineIsWord && line == '') { - return { from: 0, to: 0, line: lineNum }; - } - var stop = (dir > 0) ? line.length : -1; - var wordStart = stop, wordEnd = stop; - while (pos != stop) { - var foundWord = false; - for (var i = 0; i < charTests.length && !foundWord; ++i) { - if (charTests[i](line.charAt(pos))) { - wordStart = pos; - while (pos != stop && charTests[i](line.charAt(pos))) { - pos += dir; - } - wordEnd = pos; - foundWord = wordStart != wordEnd; - if (wordStart == cur.ch && lineNum == cur.line && - wordEnd == wordStart + dir) { - continue; - } else { - return { - from: Math.min(wordStart, wordEnd + 1), - to: Math.max(wordStart, wordEnd), - line: lineNum }; - } - } - } - if (!foundWord) { - pos += dir; - } - } - lineNum += dir; - if (!isLine(cm, lineNum)) { - return null; - } - line = cm.getLine(lineNum); - pos = (dir > 0) ? 0 : line.length; - } - } - function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { - var curStart = copyCursor(cur); - var words = []; - if (forward && !wordEnd || !forward && wordEnd) { - repeat++; - } - var emptyLineIsWord = !(forward && wordEnd); - for (var i = 0; i < repeat; i++) { - var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); - if (!word) { - var eodCh = lineLength(cm, cm.lastLine()); - words.push(forward - ? {line: cm.lastLine(), from: eodCh, to: eodCh} - : {line: 0, from: 0, to: 0}); - break; - } - words.push(word); - cur = Pos(word.line, forward ? (word.to - 1) : word.from); - } - var shortCircuit = words.length != repeat; - var firstWord = words[0]; - var lastWord = words.pop(); - if (forward && !wordEnd) { - if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.from); - } else if (forward && wordEnd) { - return Pos(lastWord.line, lastWord.to - 1); - } else if (!forward && wordEnd) { - if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.to); - } else { - return Pos(lastWord.line, lastWord.from); - } - } - - function moveToEol(cm, head, motionArgs, vim, keepHPos) { - var cur = head; - var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); - var end=cm.clipPos(retval); - end.ch--; - if (!keepHPos) { - vim.lastHPos = Infinity; - vim.lastHSPos = cm.charCoords(end,'div').left; - } - return retval; - } - - function moveToCharacter(cm, repeat, forward, character) { - var cur = cm.getCursor(); - var start = cur.ch; - var idx; - for (var i = 0; i < repeat; i ++) { - var line = cm.getLine(cur.line); - idx = charIdxInLine(start, line, character, forward, true); - if (idx == -1) { - return null; - } - start = idx; - } - return Pos(cm.getCursor().line, idx); - } - - function moveToColumn(cm, repeat) { - var line = cm.getCursor().line; - return clipCursorToContent(cm, Pos(line, repeat - 1)); - } - - function updateMark(cm, vim, markName, pos) { - if (!inArray(markName, validMarks)) { - return; - } - if (vim.marks[markName]) { - vim.marks[markName].clear(); - } - vim.marks[markName] = cm.setBookmark(pos); - } - - function charIdxInLine(start, line, character, forward, includeChar) { - var idx; - if (forward) { - idx = line.indexOf(character, start + 1); - if (idx != -1 && !includeChar) { - idx -= 1; - } - } else { - idx = line.lastIndexOf(character, start - 1); - if (idx != -1 && !includeChar) { - idx += 1; - } - } - return idx; - } - - function findParagraph(cm, head, repeat, dir, inclusive) { - var line = head.line; - var min = cm.firstLine(); - var max = cm.lastLine(); - var start, end, i = line; - function isEmpty(i) { return !/\S/.test(cm.getLine(i)); } // ace_patch - function isBoundary(i, dir, any) { - if (any) { return isEmpty(i) != isEmpty(i + dir); } - return !isEmpty(i) && isEmpty(i + dir); - } - function skipFold(i) { - dir = dir > 0 ? 1 : -1; - var foldLine = cm.ace.session.getFoldLine(i); - if (foldLine) { - if (i + dir > foldLine.start.row && i + dir < foldLine.end.row) - dir = (dir > 0 ? foldLine.end.row : foldLine.start.row) - i; - } - } - if (dir) { - while (min <= i && i <= max && repeat > 0) { - skipFold(i); - if (isBoundary(i, dir)) { repeat--; } - i += dir; - } - return new Pos(i, 0); - } - - var vim = cm.state.vim; - if (vim.visualLine && isBoundary(line, 1, true)) { - var anchor = vim.sel.anchor; - if (isBoundary(anchor.line, -1, true)) { - if (!inclusive || anchor.line != line) { - line += 1; - } - } - } - var startState = isEmpty(line); - for (i = line; i <= max && repeat; i++) { - if (isBoundary(i, 1, true)) { - if (!inclusive || isEmpty(i) != startState) { - repeat--; - } - } - } - end = new Pos(i, 0); - if (i > max && !startState) { startState = true; } - else { inclusive = false; } - for (i = line; i > min; i--) { - if (!inclusive || isEmpty(i) == startState || i == line) { - if (isBoundary(i, -1, true)) { break; } - } - } - start = new Pos(i, 0); - return { start: start, end: end }; - } - - function findSentence(cm, cur, repeat, dir) { - function nextChar(cm, idx) { - if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) { - idx.ln += idx.dir; - if (!isLine(cm, idx.ln)) { - idx.line = null; - idx.ln = null; - idx.pos = null; - return; - } - idx.line = cm.getLine(idx.ln); - idx.pos = (idx.dir > 0) ? 0 : idx.line.length - 1; - } - else { - idx.pos += idx.dir; - } - } - function forward(cm, ln, pos, dir) { - var line = cm.getLine(ln); - var stop = (line === ""); - - var curr = { - line: line, - ln: ln, - pos: pos, - dir: dir, - } - - var last_valid = { - ln: curr.ln, - pos: curr.pos, - } - - var skip_empty_lines = (curr.line === ""); - nextChar(cm, curr); - - while (curr.line !== null) { - last_valid.ln = curr.ln; - last_valid.pos = curr.pos; - - if (curr.line === "" && !skip_empty_lines) { - return { ln: curr.ln, pos: curr.pos, }; - } - else if (stop && curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) { - return { ln: curr.ln, pos: curr.pos, }; - } - else if (isEndOfSentenceSymbol(curr.line[curr.pos]) - && !stop - && (curr.pos === curr.line.length - 1 - || isWhiteSpaceString(curr.line[curr.pos + 1]))) { - stop = true; - } - - nextChar(cm, curr); - } - var line = cm.getLine(last_valid.ln); - last_valid.pos = 0; - for(var i = line.length - 1; i >= 0; --i) { - if (!isWhiteSpaceString(line[i])) { - last_valid.pos = i; - break; - } - } - - return last_valid; - - } - function reverse(cm, ln, pos, dir) { - var line = cm.getLine(ln); - - var curr = { - line: line, - ln: ln, - pos: pos, - dir: dir, - } - - var last_valid = { - ln: curr.ln, - pos: null, - }; - - var skip_empty_lines = (curr.line === ""); - nextChar(cm, curr); - - while (curr.line !== null) { - - if (curr.line === "" && !skip_empty_lines) { - if (last_valid.pos !== null) { - return last_valid; - } - else { - return { ln: curr.ln, pos: curr.pos }; - } - } - else if (isEndOfSentenceSymbol(curr.line[curr.pos]) - && last_valid.pos !== null - && !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) { - return last_valid; - } - else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) { - skip_empty_lines = false; - last_valid = { ln: curr.ln, pos: curr.pos } - } - - nextChar(cm, curr); - } - var line = cm.getLine(last_valid.ln); - last_valid.pos = 0; - for(var i = 0; i < line.length; ++i) { - if (!isWhiteSpaceString(line[i])) { - last_valid.pos = i; - break; - } - } - return last_valid; - } - - var curr_index = { - ln: cur.line, - pos: cur.ch, - }; - - while (repeat > 0) { - if (dir < 0) { - curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir); - } - else { - curr_index = forward(cm, curr_index.ln, curr_index.pos, dir); - } - repeat--; - } - - return Pos(curr_index.ln, curr_index.pos); - } - function selectCompanionObject(cm, head, symb, inclusive) { - var cur = head, start, end; - - var bracketRegexp = ({ - '(': /[()]/, ')': /[()]/, - '[': /[[\]]/, ']': /[[\]]/, - '{': /[{}]/, '}': /[{}]/, - '<': /[<>]/, '>': /[<>]/})[symb]; - var openSym = ({ - '(': '(', ')': '(', - '[': '[', ']': '[', - '{': '{', '}': '{', - '<': '<', '>': '<'})[symb]; - var curChar = cm.getLine(cur.line).charAt(cur.ch); - var offset = curChar === openSym ? 1 : 0; - - start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, undefined, {'bracketRegex': bracketRegexp}); - end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, undefined, {'bracketRegex': bracketRegexp}); - - if (!start || !end) { - return { start: cur, end: cur }; - } - - start = start.pos; - end = end.pos; - - if ((start.line == end.line && start.ch > end.ch) - || (start.line > end.line)) { - var tmp = start; - start = end; - end = tmp; - } - - if (inclusive) { - end.ch += 1; - } else { - start.ch += 1; - } - - return { start: start, end: end }; - } - function findBeginningAndEnd(cm, head, symb, inclusive) { - var cur = copyCursor(head); - var line = cm.getLine(cur.line); - var chars = line.split(''); - var start, end, i, len; - var firstIndex = chars.indexOf(symb); - if (cur.ch < firstIndex) { - cur.ch = firstIndex; - } - else if (firstIndex < cur.ch && chars[cur.ch] == symb) { - end = cur.ch; // assign end to the current cursor - --cur.ch; // make sure to look backwards - } - if (chars[cur.ch] == symb && !end) { - start = cur.ch + 1; // assign start to ahead of the cursor - } else { - for (i = cur.ch; i > -1 && !start; i--) { - if (chars[i] == symb) { - start = i + 1; - } - } - } - if (start && !end) { - for (i = start, len = chars.length; i < len && !end; i++) { - if (chars[i] == symb) { - end = i; - } - } - } - if (!start || !end) { - return { start: cur, end: cur }; - } - if (inclusive) { - --start; ++end; - } - - return { - start: Pos(cur.line, start), - end: Pos(cur.line, end) - }; - } - defineOption('pcre', true, 'boolean'); - function SearchState() {} - SearchState.prototype = { - getQuery: function() { - return vimGlobalState.query; - }, - setQuery: function(query) { - vimGlobalState.query = query; - }, - getOverlay: function() { - return this.searchOverlay; - }, - setOverlay: function(overlay) { - this.searchOverlay = overlay; - }, - isReversed: function() { - return vimGlobalState.isReversed; - }, - setReversed: function(reversed) { - vimGlobalState.isReversed = reversed; - }, - getScrollbarAnnotate: function() { - return this.annotate; - }, - setScrollbarAnnotate: function(annotate) { - this.annotate = annotate; - } - }; - function getSearchState(cm) { - var vim = cm.state.vim; - return vim.searchState_ || (vim.searchState_ = new SearchState()); - } - function splitBySlash(argString) { - return splitBySeparator(argString, '/'); - } - - function findUnescapedSlashes(argString) { - return findUnescapedSeparators(argString, '/'); - } - - function splitBySeparator(argString, separator) { - var slashes = findUnescapedSeparators(argString, separator) || []; - if (!slashes.length) return []; - var tokens = []; - if (slashes[0] !== 0) return; - for (var i = 0; i < slashes.length; i++) { - if (typeof slashes[i] == 'number') - tokens.push(argString.substring(slashes[i] + 1, slashes[i+1])); - } - return tokens; - } - - function findUnescapedSeparators(str, separator) { - if (!separator) - separator = '/'; - - var escapeNextChar = false; - var slashes = []; - for (var i = 0; i < str.length; i++) { - var c = str.charAt(i); - if (!escapeNextChar && c == separator) { - slashes.push(i); - } - escapeNextChar = !escapeNextChar && (c == '\\'); - } - return slashes; - } - function translateRegex(str) { - var specials = '|(){'; - var unescape = '}'; - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - var specialComesNext = (n && specials.indexOf(n) != -1); - if (escapeNextChar) { - if (c !== '\\' || !specialComesNext) { - out.push(c); - } - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if (n && unescape.indexOf(n) != -1) { - specialComesNext = true; - } - if (!specialComesNext || n === '\\') { - out.push(c); - } - } else { - out.push(c); - if (specialComesNext && n !== '\\') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - var charUnescapes = {'\\n': '\n', '\\r': '\r', '\\t': '\t'}; - function translateRegexReplace(str) { - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - if (charUnescapes[c + n]) { - out.push(charUnescapes[c+n]); - i++; - } else if (escapeNextChar) { - out.push(c); - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if ((isNumber(n) || n === '$')) { - out.push('$'); - } else if (n !== '/' && n !== '\\') { - out.push('\\'); - } - } else { - if (c === '$') { - out.push('$'); - } - out.push(c); - if (n === '/') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - var unescapes = {'\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t', '\\&':'&'}; - function unescapeRegexReplace(str) { - var stream = new CodeMirror.StringStream(str); - var output = []; - while (!stream.eol()) { - while (stream.peek() && stream.peek() != '\\') { - output.push(stream.next()); - } - var matched = false; - for (var matcher in unescapes) { - if (stream.match(matcher, true)) { - matched = true; - output.push(unescapes[matcher]); - break; - } - } - if (!matched) { - output.push(stream.next()); - } - } - return output.join(''); - } - function parseQuery(query, ignoreCase, smartCase) { - var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); - lastSearchRegister.setText(query); - if (query instanceof RegExp) { return query; } - var slashes = findUnescapedSlashes(query); - var regexPart; - var forceIgnoreCase; - if (!slashes.length) { - regexPart = query; - } else { - regexPart = query.substring(0, slashes[0]); - var flagsPart = query.substring(slashes[0]); - forceIgnoreCase = (flagsPart.indexOf('i') != -1); - } - if (!regexPart) { - return null; - } - if (!getOption('pcre')) { - regexPart = translateRegex(regexPart); - } - if (smartCase) { - ignoreCase = (/^[^A-Z]*$/).test(regexPart); - } - var regexp = new RegExp(regexPart, - (ignoreCase || forceIgnoreCase) ? 'im' : 'm'); - return regexp; - } - function hdom(n) { - if (typeof n === 'string') n = document.createElement(n); - for (var a, i = 1; i < arguments.length; i++) { - if (!(a = arguments[i])) continue; - if (typeof a !== 'object') a = document.createTextNode(a); - if (a.nodeType) n.appendChild(a); - else for (var key in a) { - if (!Object.prototype.hasOwnProperty.call(a, key)) continue; - if (key[0] === '$') n.style[key.slice(1)] = a[key]; - else n.setAttribute(key, a[key]); - } - } - return n; - } - - function showConfirm(cm, template) { - var pre = hdom('span', {$color: 'red', $whiteSpace: 'pre'}, template); //ace_patch span instead of pre - if (cm.openNotification) { - cm.openNotification(pre, {bottom: true, duration: 5000}); - } else { - alert(pre.innerText); - } - } - - function makePrompt(prefix, desc) { - return hdom(document.createDocumentFragment(), - hdom('span', {$fontFamily: 'monospace', $whiteSpace: 'pre'}, - prefix, - hdom('input', {type: 'text', autocorrect: 'off', - autocapitalize: 'off', spellcheck: 'false'})), - desc && hdom('span', {$color: '#888'}, desc)); - } - - function showPrompt(cm, options) { - var shortText = (options.prefix || '') + ' ' + (options.desc || ''); - var template = makePrompt(options.prefix, options.desc); - if (cm.openDialog) { - cm.openDialog(template, options.onClose, { - onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, - bottom: true, selectValueOnOpen: false, value: options.value - }); - } - else { - options.onClose(prompt(shortText, '')); - } - } - - function regexEqual(r1, r2) { - if (r1 instanceof RegExp && r2 instanceof RegExp) { - var props = ['global', 'multiline', 'ignoreCase', 'source']; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (r1[prop] !== r2[prop]) { - return false; - } - } - return true; - } - return false; - } - function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { - if (!rawQuery) { - return; - } - var state = getSearchState(cm); - var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); - if (!query) { - return; - } - highlightSearchMatches(cm, query); - if (regexEqual(query, state.getQuery())) { - return query; - } - state.setQuery(query); - return query; - } - function searchOverlay(query) { - if (query.source.charAt(0) == '^') { - var matchSol = true; - } - return { - token: function(stream) { - if (matchSol && !stream.sol()) { - stream.skipToEnd(); - return; - } - var match = stream.match(query, false); - if (match) { - if (match[0].length == 0) { - stream.next(); - return 'searching'; - } - if (!stream.sol()) { - stream.backUp(1); - if (!query.exec(stream.next() + match[0])) { - stream.next(); - return null; - } - } - stream.match(query); - return 'searching'; - } - while (!stream.eol()) { - stream.next(); - if (stream.match(query, false)) break; - } - }, - query: query - }; - } - function highlightSearchMatches(cm, query) { - var searchState = getSearchState(cm); - var overlay = searchState.getOverlay(); - if (!overlay || query != overlay.query) { - if (overlay) { - cm.removeOverlay(overlay); - } - overlay = searchOverlay(query); - cm.addOverlay(overlay); - if (cm.showMatchesOnScrollbar) { - if (searchState.getScrollbarAnnotate()) { - searchState.getScrollbarAnnotate().clear(); - } - searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); - } - searchState.setOverlay(overlay); - } - } - function findNext(cm, prev, query, repeat) { - if (repeat === undefined) { repeat = 1; } - return cm.operation(function() { - var pos = cm.getCursor(); - var cursor = cm.getSearchCursor(query, pos); - for (var i = 0; i < repeat; i++) { - var found = cursor.find(prev); - if (i == 0 && found && cursorEqual(cursor.from(), pos)) { - var lastEndPos = prev ? cursor.from() : cursor.to(); - found = cursor.find(prev); - if (found && !found[0] && cursorEqual(cursor.from(), lastEndPos)) { - if (cm.getLine(lastEndPos.line).length == lastEndPos.ch) - found = cursor.find(prev); - } - } - if (!found) { - cursor = cm.getSearchCursor(query, - (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); - if (!cursor.find(prev)) { - return; - } - } - } - return cursor.from(); - }); - } - function findNextFromAndToInclusive(cm, prev, query, repeat, vim) { - if (repeat === undefined) { repeat = 1; } - return cm.operation(function() { - var pos = cm.getCursor(); - var cursor = cm.getSearchCursor(query, pos); - var found = cursor.find(!prev); - if (!vim.visualMode && found && cursorEqual(cursor.from(), pos)) { - cursor.find(!prev); - } - - for (var i = 0; i < repeat; i++) { - found = cursor.find(prev); - if (!found) { - cursor = cm.getSearchCursor(query, - (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); - if (!cursor.find(prev)) { - return; - } - } - } - return [cursor.from(), cursor.to()]; - }); - } - function clearSearchHighlight(cm) { - var state = getSearchState(cm); - cm.removeOverlay(getSearchState(cm).getOverlay()); - state.setOverlay(null); - if (state.getScrollbarAnnotate()) { - state.getScrollbarAnnotate().clear(); - state.setScrollbarAnnotate(null); - } - } - function isInRange(pos, start, end) { - if (typeof pos != 'number') { - pos = pos.line; - } - if (start instanceof Array) { - return inArray(pos, start); - } else { - if (typeof end == 'number') { - return (pos >= start && pos <= end); - } else { - return pos == start; - } - } - } - function getUserVisibleLines(cm) { - var renderer = cm.ace.renderer; - return { - top: renderer.getFirstFullyVisibleRow(), - bottom: renderer.getLastFullyVisibleRow() - } - } - - function getMarkPos(cm, vim, markName) { - if (markName == '\'' || markName == '`') { - return vimGlobalState.jumpList.find(cm, -1) || Pos(0, 0); - } else if (markName == '.') { - return getLastEditPos(cm); - } - - var mark = vim.marks[markName]; - return mark && mark.find(); - } - - function getLastEditPos(cm) { - var undoManager = cm.ace.session.$undoManager; - if (undoManager && undoManager.$lastDelta) - return toCmPos(undoManager.$lastDelta.end); - } - - var ExCommandDispatcher = function() { - this.buildCommandMap_(); - }; - ExCommandDispatcher.prototype = { - processCommand: function(cm, input, opt_params) { - var that = this; - cm.operation(function () { - cm.curOp.isVimOp = true; - that._processCommand(cm, input, opt_params); - }); - }, - _processCommand: function(cm, input, opt_params) { - var vim = cm.state.vim; - var commandHistoryRegister = vimGlobalState.registerController.getRegister(':'); - var previousCommand = commandHistoryRegister.toString(); - if (vim.visualMode) { - exitVisualMode(cm); - } - var inputStream = new CodeMirror.StringStream(input); - commandHistoryRegister.setText(input); - var params = opt_params || {}; - params.input = input; - try { - this.parseInput_(cm, inputStream, params); - } catch(e) { - showConfirm(cm, e.toString()); - throw e; - } - var command; - var commandName; - if (!params.commandName) { - if (params.line !== undefined) { - commandName = 'move'; - } - } else { - command = this.matchCommand_(params.commandName); - if (command) { - commandName = command.name; - if (command.excludeFromCommandHistory) { - commandHistoryRegister.setText(previousCommand); - } - this.parseCommandArgs_(inputStream, params, command); - if (command.type == 'exToKey') { - for (var i = 0; i < command.toKeys.length; i++) { - CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping'); - } - return; - } else if (command.type == 'exToEx') { - this.processCommand(cm, command.toInput); - return; - } - } - } - if (!commandName) { - showConfirm(cm, 'Not an editor command ":' + input + '"'); - return; - } - try { - exCommands[commandName](cm, params); - if ((!command || !command.possiblyAsync) && params.callback) { - params.callback(); - } - } catch(e) { - showConfirm(cm, e.toString()); - throw e; - } - }, - parseInput_: function(cm, inputStream, result) { - inputStream.eatWhile(':'); - if (inputStream.eat('%')) { - result.line = cm.firstLine(); - result.lineEnd = cm.lastLine(); - } else { - result.line = this.parseLineSpec_(cm, inputStream); - if (result.line !== undefined && inputStream.eat(',')) { - result.lineEnd = this.parseLineSpec_(cm, inputStream); - } - } - var commandMatch = inputStream.match(/^(\w+|!!|@@|[!#&*<=>@~])/); - if (commandMatch) { - result.commandName = commandMatch[1]; - } else { - result.commandName = inputStream.match(/.*/)[0]; - } - - return result; - }, - parseLineSpec_: function(cm, inputStream) { - var numberMatch = inputStream.match(/^(\d+)/); - if (numberMatch) { - return parseInt(numberMatch[1], 10) - 1; - } - switch (inputStream.next()) { - case '.': - return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); - case '$': - return this.parseLineSpecOffset_(inputStream, cm.lastLine()); - case '\'': - var markName = inputStream.next(); - var markPos = getMarkPos(cm, cm.state.vim, markName); - if (!markPos) throw new Error('Mark not set'); - return this.parseLineSpecOffset_(inputStream, markPos.line); - case '-': - case '+': - inputStream.backUp(1); - return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); - default: - inputStream.backUp(1); - return undefined; - } - }, - parseLineSpecOffset_: function(inputStream, line) { - var offsetMatch = inputStream.match(/^([+-])?(\d+)/); - if (offsetMatch) { - var offset = parseInt(offsetMatch[2], 10); - if (offsetMatch[1] == "-") { - line -= offset; - } else { - line += offset; - } - } - return line; - }, - parseCommandArgs_: function(inputStream, params, command) { - if (inputStream.eol()) { - return; - } - params.argString = inputStream.match(/.*/)[0]; - var delim = command.argDelimiter || /\s+/; - var args = trim(params.argString).split(delim); - if (args.length && args[0]) { - params.args = args; - } - }, - matchCommand_: function(commandName) { - for (var i = commandName.length; i > 0; i--) { - var prefix = commandName.substring(0, i); - if (this.commandMap_[prefix]) { - var command = this.commandMap_[prefix]; - if (command.name.indexOf(commandName) === 0) { - return command; - } - } - } - return null; - }, - buildCommandMap_: function() { - this.commandMap_ = {}; - for (var i = 0; i < defaultExCommandMap.length; i++) { - var command = defaultExCommandMap[i]; - var key = command.shortName || command.name; - this.commandMap_[key] = command; - } - }, - map: function(lhs, rhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (rhs != ':' && rhs.charAt(0) == ':') { - this.commandMap_[commandName] = { - name: commandName, - type: 'exToEx', - toInput: rhs.substring(1), - user: true - }; - } else { - this.commandMap_[commandName] = { - name: commandName, - type: 'exToKey', - toKeys: rhs, - user: true - }; - } - } else { - if (rhs != ':' && rhs.charAt(0) == ':') { - var mapping = { - keys: lhs, - type: 'keyToEx', - exArgs: { input: rhs.substring(1) } - }; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } else { - var mapping = { - keys: lhs, - type: 'keyToKey', - toKeys: rhs - }; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } - } - }, - unmap: function(lhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { - delete this.commandMap_[commandName]; - return; - } - } else { - var keys = lhs; - for (var i = 0; i < defaultKeymap.length; i++) { - if (keys == defaultKeymap[i].keys - && defaultKeymap[i].context === ctx) { - defaultKeymap.splice(i, 1); - return; - } - } - } - } - }; - - var exCommands = { - colorscheme: function(cm, params) { - if (!params.args || params.args.length < 1) { - showConfirm(cm, cm.getOption('theme')); - return; - } - cm.setOption('theme', params.args[0]); - }, - map: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 2) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); - }, - imap: function(cm, params) { this.map(cm, params, 'insert'); }, - nmap: function(cm, params) { this.map(cm, params, 'normal'); }, - vmap: function(cm, params) { this.map(cm, params, 'visual'); }, - unmap: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 1) { - if (cm) { - showConfirm(cm, 'No such mapping: ' + params.input); - } - return; - } - exCommandDispatcher.unmap(mapArgs[0], ctx); - }, - move: function(cm, params) { - commandDispatcher.processCommand(cm, cm.state.vim, { - type: 'motion', - motion: 'moveToLineOrEdgeOfDocument', - motionArgs: { forward: false, explicitRepeat: true, - linewise: true }, - repeatOverride: params.line+1}); - }, - set: function(cm, params) { - var setArgs = params.args; - var setCfg = params.setCfg || {}; - if (!setArgs || setArgs.length < 1) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - var expr = setArgs[0].split('='); - var optionName = expr[0]; - var value = expr[1]; - var forceGet = false; - - if (optionName.charAt(optionName.length - 1) == '?') { - if (value) { throw Error('Trailing characters: ' + params.argString); } - optionName = optionName.substring(0, optionName.length - 1); - forceGet = true; - } - if (value === undefined && optionName.substring(0, 2) == 'no') { - optionName = optionName.substring(2); - value = false; - } - - var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; - if (optionIsBoolean && value == undefined) { - value = true; - } - if (!optionIsBoolean && value === undefined || forceGet) { - var oldValue = getOption(optionName, cm, setCfg); - if (oldValue instanceof Error) { - showConfirm(cm, oldValue.message); - } else if (oldValue === true || oldValue === false) { - showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); - } else { - showConfirm(cm, ' ' + optionName + '=' + oldValue); - } - } else { - var setOptionReturn = setOption(optionName, value, cm, setCfg); - if (setOptionReturn instanceof Error) { - showConfirm(cm, setOptionReturn.message); - } - } - }, - setlocal: function (cm, params) { - params.setCfg = {scope: 'local'}; - this.set(cm, params); - }, - setglobal: function (cm, params) { - params.setCfg = {scope: 'global'}; - this.set(cm, params); - }, - registers: function(cm, params) { - var regArgs = params.args; - var registers = vimGlobalState.registerController.registers; - var regInfo = '----------Registers----------\n\n'; - if (!regArgs) { - for (var registerName in registers) { - var text = registers[registerName].toString(); - if (text.length) { - regInfo += '"' + registerName + ' ' + text + '\n' - } - } - } else { - var registerName; - regArgs = regArgs.join(''); - for (var i = 0; i < regArgs.length; i++) { - registerName = regArgs.charAt(i); - if (!vimGlobalState.registerController.isValidRegister(registerName)) { - continue; - } - var register = registers[registerName] || new Register(); - regInfo += '"' + registerName + ' ' + register.toString() + '\n' - } - } - showConfirm(cm, regInfo); - }, - sort: function(cm, params) { - var reverse, ignoreCase, unique, number, pattern; - function parseArgs() { - if (params.argString) { - var args = new CodeMirror.StringStream(params.argString); - if (args.eat('!')) { reverse = true; } - if (args.eol()) { return; } - if (!args.eatSpace()) { return 'Invalid arguments'; } - var opts = args.match(/([dinuox]+)?\s*(\/.+\/)?\s*/); - if (!opts && !args.eol()) { return 'Invalid arguments'; } - if (opts[1]) { - ignoreCase = opts[1].indexOf('i') != -1; - unique = opts[1].indexOf('u') != -1; - var decimal = opts[1].indexOf('d') != -1 || opts[1].indexOf('n') != -1 && 1; - var hex = opts[1].indexOf('x') != -1 && 1; - var octal = opts[1].indexOf('o') != -1 && 1; - if (decimal + hex + octal > 1) { return 'Invalid arguments'; } - number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; - } - if (opts[2]) { - pattern = new RegExp(opts[2].substr(1, opts[2].length - 2), ignoreCase ? 'i' : ''); - } - } - } - var err = parseArgs(); - if (err) { - showConfirm(cm, err + ': ' + params.argString); - return; - } - var lineStart = params.line || cm.firstLine(); - var lineEnd = params.lineEnd || params.line || cm.lastLine(); - if (lineStart == lineEnd) { return; } - var curStart = Pos(lineStart, 0); - var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); - var text = cm.getRange(curStart, curEnd).split('\n'); - var numberRegex = pattern ? pattern : - (number == 'decimal') ? /(-?)([\d]+)/ : - (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : - (number == 'octal') ? /([0-7]+)/ : null; - var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; - var numPart = [], textPart = []; - if (number || pattern) { - for (var i = 0; i < text.length; i++) { - var matchPart = pattern ? text[i].match(pattern) : null; - if (matchPart && matchPart[0] != '') { - numPart.push(matchPart); - } else if (!pattern && numberRegex.exec(text[i])) { - numPart.push(text[i]); - } else { - textPart.push(text[i]); - } - } - } else { - textPart = text; - } - function compareFn(a, b) { - if (reverse) { var tmp; tmp = a; a = b; b = tmp; } - if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } - var anum = number && numberRegex.exec(a); - var bnum = number && numberRegex.exec(b); - if (!anum) { return a < b ? -1 : 1; } - anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); - bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); - return anum - bnum; - } - function comparePatternFn(a, b) { - if (reverse) { var tmp; tmp = a; a = b; b = tmp; } - if (ignoreCase) { a[0] = a[0].toLowerCase(); b[0] = b[0].toLowerCase(); } - return (a[0] < b[0]) ? -1 : 1; - } - numPart.sort(pattern ? comparePatternFn : compareFn); - if (pattern) { - for (var i = 0; i < numPart.length; i++) { - numPart[i] = numPart[i].input; - } - } else if (!number) { textPart.sort(compareFn); } - text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); - if (unique) { // Remove duplicate lines - var textOld = text; - var lastLine; - text = []; - for (var i = 0; i < textOld.length; i++) { - if (textOld[i] != lastLine) { - text.push(textOld[i]); - } - lastLine = textOld[i]; - } - } - cm.replaceRange(text.join('\n'), curStart, curEnd); - }, - vglobal: function(cm, params) { - this.global(cm, params); - }, - global: function(cm, params) { - var argString = params.argString; - if (!argString) { - showConfirm(cm, 'Regular Expression missing from global'); - return; - } - var inverted = params.commandName[0] === 'v'; - var lineStart = (params.line !== undefined) ? params.line : cm.firstLine(); - var lineEnd = params.lineEnd || params.line || cm.lastLine(); - var tokens = splitBySlash(argString); - var regexPart = argString, cmd; - if (tokens.length) { - regexPart = tokens[0]; - cmd = tokens.slice(1, tokens.length).join('/'); - } - if (regexPart) { - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } - } - var query = getSearchState(cm).getQuery(); - var matchedLines = []; - for (var i = lineStart; i <= lineEnd; i++) { - var line = cm.getLineHandle(i); - var matched = query.test(line.text); - if (matched !== inverted) { - matchedLines.push(cmd ? line : line.text); - } - } - if (!cmd) { - showConfirm(cm, matchedLines.join('\n')); - return; - } - var index = 0; - var nextCommand = function() { - if (index < matchedLines.length) { - var line = matchedLines[index++]; - var lineNum = cm.getLineNumber(line); - if (lineNum == null) { - nextCommand(); - return; - } - var command = (lineNum + 1) + cmd; - exCommandDispatcher.processCommand(cm, command, { - callback: nextCommand - }); - } - }; - nextCommand(); - }, - substitute: function(cm, params) { - if (!cm.getSearchCursor) { - throw new Error('Search feature not available. Requires searchcursor.js or ' + - 'any other getSearchCursor implementation.'); - } - var argString = params.argString; - var tokens = argString ? splitBySeparator(argString, argString[0]) : []; - var regexPart, replacePart = '', trailing, flagsPart, count; - var confirm = false; // Whether to confirm each replace. - var global = false; // True to replace all instances on a line, false to replace only 1. - if (tokens.length) { - regexPart = tokens[0]; - if (getOption('pcre') && regexPart !== '') { - regexPart = new RegExp(regexPart).source; //normalize not escaped characters - } - replacePart = tokens[1]; - if (replacePart !== undefined) { - if (getOption('pcre')) { - replacePart = unescapeRegexReplace(replacePart.replace(/([^\\])&/g,"$1$$&")); - } else { - replacePart = translateRegexReplace(replacePart); - } - vimGlobalState.lastSubstituteReplacePart = replacePart; - } - trailing = tokens[2] ? tokens[2].split(' ') : []; - } else { - if (argString && argString.length) { - showConfirm(cm, 'Substitutions should be of the form ' + - ':s/pattern/replace/'); - return; - } - } - if (trailing) { - flagsPart = trailing[0]; - count = parseInt(trailing[1]); - if (flagsPart) { - if (flagsPart.indexOf('c') != -1) { - confirm = true; - } - if (flagsPart.indexOf('g') != -1) { - global = true; - } - if (getOption('pcre')) { - regexPart = regexPart + '/' + flagsPart; - } else { - regexPart = regexPart.replace(/\//g, "\\/") + '/' + flagsPart; - } - } - } - if (regexPart) { - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } - } - replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart; - if (replacePart === undefined) { - showConfirm(cm, 'No previous substitute regular expression'); - return; - } - var state = getSearchState(cm); - var query = state.getQuery(); - var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; - var lineEnd = params.lineEnd || lineStart; - if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) { - lineEnd = Infinity; - } - if (count) { - lineStart = lineEnd; - lineEnd = lineStart + count - 1; - } - var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); - var cursor = cm.getSearchCursor(query, startPos); - doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback); - }, - redo: CodeMirror.commands.redo, - undo: CodeMirror.commands.undo, - write: function(cm) { - if (CodeMirror.commands.save) { - CodeMirror.commands.save(cm); - } else if (cm.save) { - cm.save(); - } - }, - nohlsearch: function(cm) { - clearSearchHighlight(cm); - }, - yank: function (cm) { - var cur = copyCursor(cm.getCursor()); - var line = cur.line; - var lineText = cm.getLine(line); - vimGlobalState.registerController.pushText( - '0', 'yank', lineText, true, true); - }, - delmarks: function(cm, params) { - if (!params.argString || !trim(params.argString)) { - showConfirm(cm, 'Argument required'); - return; - } - - var state = cm.state.vim; - var stream = new CodeMirror.StringStream(trim(params.argString)); - while (!stream.eol()) { - stream.eatSpace(); - var count = stream.pos; - - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var sym = stream.next(); - if (stream.match('-', true)) { - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var startMark = sym; - var finishMark = stream.next(); - if (isLowerCase(startMark) && isLowerCase(finishMark) || - isUpperCase(startMark) && isUpperCase(finishMark)) { - var start = startMark.charCodeAt(0); - var finish = finishMark.charCodeAt(0); - if (start >= finish) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - for (var j = 0; j <= finish - start; j++) { - var mark = String.fromCharCode(start + j); - delete state.marks[mark]; - } - } else { - showConfirm(cm, 'Invalid argument: ' + startMark + '-'); - return; - } - } else { - delete state.marks[sym]; - } - } - } - }; - - var exCommandDispatcher = new ExCommandDispatcher(); - function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, - replaceWith, callback) { - cm.state.vim.exMode = true; - var done = false; - var lastPos, modifiedLineNumber, joined; - function replaceAll() { - cm.operation(function() { - while (!done) { - replace(); - next(); - } - stop(); - }); - } - function replace() { - var text = cm.getRange(searchCursor.from(), searchCursor.to()); - var newText = text.replace(query, replaceWith); - var unmodifiedLineNumber = searchCursor.to().line; - searchCursor.replace(newText); - modifiedLineNumber = searchCursor.to().line; - lineEnd += modifiedLineNumber - unmodifiedLineNumber; - joined = modifiedLineNumber < unmodifiedLineNumber; - } - function findNextValidMatch() { - var lastMatchTo = lastPos && copyCursor(searchCursor.to()); - var match = searchCursor.findNext(); - if (match && !match[0] && lastMatchTo && cursorEqual(searchCursor.from(), lastMatchTo)) { - match = searchCursor.findNext(); - } - return match; - } - function next() { - while(findNextValidMatch() && - isInRange(searchCursor.from(), lineStart, lineEnd)) { - if (!global && searchCursor.from().line == modifiedLineNumber && !joined) { - continue; - } - cm.scrollIntoView(searchCursor.from(), 30); - cm.setSelection(searchCursor.from(), searchCursor.to()); - lastPos = searchCursor.from(); - done = false; - return; - } - done = true; - } - function stop(close) { - if (close) { close(); } - cm.focus(); - if (lastPos) { - cm.setCursor(lastPos); - var vim = cm.state.vim; - vim.exMode = false; - vim.lastHPos = vim.lastHSPos = lastPos.ch; - } - if (callback) { callback(); } - } - function onPromptKeyDown(e, _value, close) { - CodeMirror.e_stop(e); - var keyName = CodeMirror.keyName(e); - switch (keyName) { - case 'Y': - replace(); next(); break; - case 'N': - next(); break; - case 'A': - var savedCallback = callback; - callback = undefined; - cm.operation(replaceAll); - callback = savedCallback; - break; - case 'L': - replace(); - case 'Q': - case 'Esc': - case 'Ctrl-C': - case 'Ctrl-[': - stop(close); - break; - } - if (done) { stop(close); } - return true; - } - next(); - if (done) { - showConfirm(cm, 'No matches for ' + query.source); - return; - } - if (!confirm) { - replaceAll(); - if (callback) { callback(); } - return; - } - showPrompt(cm, { - prefix: hdom('span', 'replace with ', hdom('strong', replaceWith), ' (y/n/a/q/l)'), - onKeyDown: onPromptKeyDown - }); - } - - CodeMirror.keyMap.vim = { - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function exitInsertMode(cm) { - var vim = cm.state.vim; - var macroModeState = vimGlobalState.macroModeState; - var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); - var isPlaying = macroModeState.isPlaying; - var lastChange = macroModeState.lastInsertModeChanges; - if (!isPlaying) { - cm.off('change', onChange); - CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (!isPlaying && vim.insertModeRepeat > 1) { - repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, - true /** repeatForInsert */); - vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; - } - delete vim.insertModeRepeat; - vim.insertMode = false; - cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); - cm.setOption('keyMap', 'vim'); - cm.setOption('disableInput', true); - cm.toggleOverwrite(false); // exit replace mode if we were in it. - insertModeChangeRegister.setText(lastChange.changes.join('')); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (macroModeState.isRecording) { - logInsertModeChange(macroModeState); - } - } - - function _mapCommand(command) { - defaultKeymap.unshift(command); - } - - function mapCommand(keys, type, name, args, extra) { - var command = {keys: keys, type: type}; - command[type] = name; - command[type + "Args"] = args; - for (var key in extra) - command[key] = extra[key]; - _mapCommand(command); - } - defineOption('insertModeEscKeysTimeout', 200, 'number'); - - CodeMirror.keyMap['vim-insert'] = { - fallthrough: ['default'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - CodeMirror.keyMap['vim-replace'] = { - 'Backspace': 'goCharLeft', - fallthrough: ['vim-insert'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function executeMacroRegister(cm, vim, macroModeState, registerName) { - var register = vimGlobalState.registerController.getRegister(registerName); - if (registerName == ':') { - if (register.keyBuffer[0]) { - exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); - } - macroModeState.isPlaying = false; - return; - } - var keyBuffer = register.keyBuffer; - var imc = 0; - macroModeState.isPlaying = true; - macroModeState.replaySearchQueries = register.searchQueries.slice(0); - for (var i = 0; i < keyBuffer.length; i++) { - var text = keyBuffer[i]; - var match, key; - while (text) { - match = (/<\w+-.+?>|<\w+>|./).exec(text); - key = match[0]; - text = text.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'macro'); - if (vim.insertMode) { - var changes = register.insertModeChanges[imc++].changes; - vimGlobalState.macroModeState.lastInsertModeChanges.changes = - changes; - repeatInsertModeChanges(cm, changes, 1); - exitInsertMode(cm); - } - } - } - macroModeState.isPlaying = false; - } - - function logKey(macroModeState, key) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.pushText(key); - } - } - - function logInsertModeChange(macroModeState) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushInsertModeChanges) { - register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); - } - } - - function logSearchQuery(macroModeState, query) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushSearchQuery) { - register.pushSearchQuery(query); - } - } - function onChange(cm, changeObj) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - if (!macroModeState.isPlaying) { - while(changeObj) { - lastChange.expectCursorActivityForChange = true; - if (lastChange.ignoreCount > 1) { - lastChange.ignoreCount--; - } else if (changeObj.origin == '+input' || changeObj.origin == 'paste' - || changeObj.origin === undefined /* only in testing */) { - var selectionCount = cm.listSelections().length; - if (selectionCount > 1) - lastChange.ignoreCount = selectionCount; - var text = changeObj.text.join('\n'); - if (lastChange.maybeReset) { - lastChange.changes = []; - lastChange.maybeReset = false; - } - if (text) { - if (cm.state.overwrite && !/\n/.test(text)) { - lastChange.changes.push([text]); - } else { - lastChange.changes.push(text); - } - } - } - changeObj = changeObj.next; - } - } - } - function onCursorActivity(cm) { - var vim = cm.state.vim; - if (vim.insertMode) { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - var lastChange = macroModeState.lastInsertModeChanges; - if (lastChange.expectCursorActivityForChange) { - lastChange.expectCursorActivityForChange = false; - } else { - lastChange.maybeReset = true; - } - } else if (!cm.curOp.isVimOp) { - handleExternalSelection(cm, vim); - } - if (vim.visualMode) { - updateFakeCursor(cm); - } - } - function updateFakeCursor(cm) { - } - function clearFakeCursor(vim) { - } - function handleExternalSelection(cm, vim, keepHPos) { - var anchor = cm.getCursor('anchor'); - var head = cm.getCursor('head'); - if (vim.visualMode && !cm.somethingSelected()) { - exitVisualMode(cm, false); - } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { - vim.visualMode = true; - vim.visualLine = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); - } - if (vim.visualMode) { - var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; - var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; - head = offsetCursor(head, 0, headOffset); - anchor = offsetCursor(anchor, 0, anchorOffset); - vim.sel = { - anchor: anchor, - head: head - }; - updateMark(cm, vim, '<', cursorMin(head, anchor)); - updateMark(cm, vim, '>', cursorMax(head, anchor)); - } else if (!vim.insertMode && !keepHPos) { - vim.lastHPos = cm.getCursor().ch; - } - } - function InsertModeKey(keyName) { - this.keyName = keyName; - } - function onKeyEventTargetKeyDown(e) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - var keyName = CodeMirror.keyName(e); - if (!keyName) { return; } - function onKeyFound() { - if (lastChange.maybeReset) { - lastChange.changes = []; - lastChange.maybeReset = false; - } - lastChange.changes.push(new InsertModeKey(keyName)); - return true; - } - if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { - CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound); - } - } - function repeatLastEdit(cm, vim, repeat, repeatForInsert) { - var macroModeState = vimGlobalState.macroModeState; - macroModeState.isPlaying = true; - var isAction = !!vim.lastEditActionCommand; - var cachedInputState = vim.inputState; - function repeatCommand() { - if (isAction) { - commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); - } else { - commandDispatcher.evalInput(cm, vim); - } - } - function repeatInsert(repeat) { - if (macroModeState.lastInsertModeChanges.changes.length > 0) { - repeat = !vim.lastEditActionCommand ? 1 : repeat; - var changeObject = macroModeState.lastInsertModeChanges; - repeatInsertModeChanges(cm, changeObject.changes, repeat); - } - } - vim.inputState = vim.lastEditInputState; - if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { - for (var i = 0; i < repeat; i++) { - repeatCommand(); - repeatInsert(1); - } - } else { - if (!repeatForInsert) { - repeatCommand(); - } - repeatInsert(repeat); - } - vim.inputState = cachedInputState; - if (vim.insertMode && !repeatForInsert) { - exitInsertMode(cm); - } - macroModeState.isPlaying = false; - } - - function repeatInsertModeChanges(cm, changes, repeat) { - function keyHandler(binding) { - if (typeof binding == 'string') { - CodeMirror.commands[binding](cm); - } else { - binding(cm); - } - return true; - } - var head = cm.getCursor('head'); - var visualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock; - if (visualBlock) { - selectForInsert(cm, head, visualBlock + 1); - repeat = cm.listSelections().length; - cm.setCursor(head); - } - for (var i = 0; i < repeat; i++) { - if (visualBlock) { - cm.setCursor(offsetCursor(head, i, 0)); - } - for (var j = 0; j < changes.length; j++) { - var change = changes[j]; - if (change instanceof InsertModeKey) { - CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); - } else if (typeof change == "string") { - var cur = cm.getCursor(); - cm.replaceRange(change, cur, cur); - } else { - var start = cm.getCursor(); - var end = offsetCursor(start, 0, change[0].length); - cm.replaceRange(change[0], start, end); - } - } - } - if (visualBlock) { - cm.setCursor(offsetCursor(head, 0, 1)); - } - } - - resetVimGlobalState(); - CodeMirror.Vim = Vim(); - - Vim = CodeMirror.Vim; - - var specialKey = {'return':'CR',backspace:'BS','delete':'Del',esc:'Esc', - left:'Left',right:'Right',up:'Up',down:'Down',space: 'Space', - home:'Home',end:'End',pageup:'PageUp',pagedown:'PageDown', enter: 'CR' - }; - function lookupKey(hashId, key, e) { - if (key.length > 1 && key[0] == "n") { - key = key.replace("numpad", ""); - } - key = specialKey[key] || key; - var name = ''; - if (e.ctrlKey) { name += 'C-'; } - if (e.altKey) { name += 'A-'; } - if ((name || key.length > 1) && e.shiftKey) { name += 'S-'; } - - name += key; - if (name.length > 1) { name = '<' + name + '>'; } - return name; - } - var handleKey = Vim.handleKey.bind(Vim); - Vim.handleKey = function(cm, key, origin) { - return cm.operation(function() { - return handleKey(cm, key, origin); - }, true); - } - function cloneVimState(state) { - var n = new state.constructor(); - Object.keys(state).forEach(function(key) { - var o = state[key]; - if (Array.isArray(o)) - o = o.slice(); - else if (o && typeof o == "object" && o.constructor != Object) - o = cloneVimState(o); - n[key] = o; - }); - if (state.sel) { - n.sel = { - head: state.sel.head && copyCursor(state.sel.head), - anchor: state.sel.anchor && copyCursor(state.sel.anchor) - }; - } - return n; - } - function multiSelectHandleKey(cm, key, origin) { - var isHandled = false; - var vim = Vim.maybeInitVimState_(cm); - var visualBlock = vim.visualBlock || vim.wasInVisualBlock; - - var wasMultiselect = cm.ace.inMultiSelectMode; - if (vim.wasInVisualBlock && !wasMultiselect) { - vim.wasInVisualBlock = false; - } else if (wasMultiselect && vim.visualBlock) { - vim.wasInVisualBlock = true; - } - - if (key == '' && !vim.insertMode && !vim.visualMode && wasMultiselect) { - cm.ace.exitMultiSelectMode(); - } else if (visualBlock || !wasMultiselect || cm.ace.inVirtualSelectionMode) { - isHandled = Vim.handleKey(cm, key, origin); - } else { - var old = cloneVimState(vim); - cm.operation(function() { - cm.ace.forEachSelection(function() { - var sel = cm.ace.selection; - cm.state.vim.lastHPos = sel.$desiredColumn == null ? sel.lead.column : sel.$desiredColumn; - var head = cm.getCursor("head"); - var anchor = cm.getCursor("anchor"); - var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; - var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; - head = offsetCursor(head, 0, headOffset); - anchor = offsetCursor(anchor, 0, anchorOffset); - cm.state.vim.sel.head = head; - cm.state.vim.sel.anchor = anchor; - - isHandled = handleKey(cm, key, origin); - sel.$desiredColumn = cm.state.vim.lastHPos == -1 ? null : cm.state.vim.lastHPos; - if (cm.virtualSelectionMode()) { - cm.state.vim = cloneVimState(old); - } - }); - if (cm.curOp.cursorActivity && !isHandled) - cm.curOp.cursorActivity = false; - }, true); - } - if (isHandled && !vim.visualMode && !vim.insert && vim.visualMode != cm.somethingSelected()) { - handleExternalSelection(cm, vim, true); - } - return isHandled; - } - exports.CodeMirror = CodeMirror; - var getVim = Vim.maybeInitVimState_; - exports.handler = { - $id: "ace/keyboard/vim", - drawCursor: function(element, pixelPos, config, sel, session) { - var vim = this.state.vim || {}; - var w = config.characterWidth; - var h = config.lineHeight; - var top = pixelPos.top; - var left = pixelPos.left; - if (!vim.insertMode) { - var isbackwards = !sel.cursor - ? session.selection.isBackwards() || session.selection.isEmpty() - : Range.comparePoints(sel.cursor, sel.start) <= 0; - if (!isbackwards && left > w) - left -= w; - } - if (!vim.insertMode && vim.status) { - h = h / 2; - top += h; - } - dom.translate(element, left, top); - dom.setStyle(element.style, "width", w + "px"); - dom.setStyle(element.style, "height", h + "px"); - }, - handleKeyboard: function(data, hashId, key, keyCode, e) { - var editor = data.editor; - var cm = editor.state.cm; - var vim = getVim(cm); - if (keyCode == -1) return; - if (!vim.insertMode) { - if (hashId == -1) { - if (key.charCodeAt(0) > 0xFF) { - if (data.inputKey) { - key = data.inputKey; - if (key && data.inputHash == 4) - key = key.toUpperCase(); - } - } - data.inputChar = key; - } - else if (hashId == 4 || hashId == 0) { - if (data.inputKey == key && data.inputHash == hashId && data.inputChar) { - key = data.inputChar; - hashId = -1 - } - else { - data.inputChar = null; - data.inputKey = key; - data.inputHash = hashId; - } - } - else { - data.inputChar = data.inputKey = null; - } - } - if (key == "c" && hashId == 1) { // key == "ctrl-c" - if (!useragent.isMac && editor.getCopyText()) { - editor.once("copy", function() { - editor.selection.clearSelection(); - }); - return {command: "null", passEvent: true}; - } - } - - if (key == "esc" && !vim.insertMode && !vim.visualMode && !cm.ace.inMultiSelectMode) { - var searchState = getSearchState(cm); - var overlay = searchState.getOverlay(); - if (overlay) cm.removeOverlay(overlay); - } - - if (hashId == -1 || hashId & 1 || hashId === 0 && key.length > 1) { - var insertMode = vim.insertMode; - var name = lookupKey(hashId, key, e || {}); - if (vim.status == null) - vim.status = ""; - var isHandled = multiSelectHandleKey(cm, name, 'user'); - vim = getVim(cm); // may be changed by multiSelectHandleKey - if (isHandled && vim.status != null) - vim.status += name; - else if (vim.status == null) - vim.status = ""; - cm._signal("changeStatus"); - if (!isHandled && (hashId != -1 || insertMode)) - return; - return {command: "null", passEvent: !isHandled}; - } - }, - attach: function(editor) { - if (!editor.state) editor.state = {}; - var cm = new CodeMirror(editor); - editor.state.cm = cm; - editor.$vimModeHandler = this; - CodeMirror.keyMap.vim.attach(cm); - getVim(cm).status = null; - cm.on('vim-command-done', function() { - if (cm.virtualSelectionMode()) return; - getVim(cm).status = null; - cm.ace._signal("changeStatus"); - cm.ace.session.markUndoGroup(); - }); - cm.on("changeStatus", function() { - cm.ace.renderer.updateCursor(); - cm.ace._signal("changeStatus"); - }); - cm.on("vim-mode-change", function() { - if (cm.virtualSelectionMode()) return; - updateInputMode(); - cm._signal("changeStatus"); - }); - function updateInputMode() { - var isIntsert = getVim(cm).insertMode; - cm.ace.renderer.setStyle("normal-mode", !isIntsert); - editor.textInput.setCommandMode(!isIntsert); - editor.renderer.$keepTextAreaAtCursor = isIntsert; - editor.renderer.$blockCursor = !isIntsert; - } - updateInputMode(); - editor.renderer.$cursorLayer.drawCursor = this.drawCursor.bind(cm); - }, - detach: function(editor) { - var cm = editor.state.cm; - CodeMirror.keyMap.vim.detach(cm); - cm.destroy(); - editor.state.cm = null; - editor.$vimModeHandler = null; - editor.renderer.$cursorLayer.drawCursor = null; - editor.renderer.setStyle("normal-mode", false); - editor.textInput.setCommandMode(false); - editor.renderer.$keepTextAreaAtCursor = true; - }, - getStatusText: function(editor) { - var cm = editor.state.cm; - var vim = getVim(cm); - if (vim.insertMode) - return "INSERT"; - var status = ""; - if (vim.visualMode) { - status += "VISUAL"; - if (vim.visualLine) - status += " LINE"; - if (vim.visualBlock) - status += " BLOCK"; - } - if (vim.status) - status += (status ? " " : "") + vim.status; - return status; - } - }; - Vim.defineOption({ - name: "wrap", - set: function(value, cm) { - if (cm) {cm.ace.setOption("wrap", value)} - }, - type: "boolean" - }, false); - Vim.defineEx('write', 'w', function() { - console.log(':write is not implemented') - }); - defaultKeymap.push( - { keys: 'zc', type: 'action', action: 'fold', actionArgs: { open: false } }, - { keys: 'zC', type: 'action', action: 'fold', actionArgs: { open: false, all: true } }, - { keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true } }, - { keys: 'zO', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - { keys: 'za', type: 'action', action: 'fold', actionArgs: { toggle: true } }, - { keys: 'zA', type: 'action', action: 'fold', actionArgs: { toggle: true, all: true } }, - { keys: 'zf', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - { keys: 'zd', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAbove" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelow" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAboveSkipCurrent" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelowSkipCurrent" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreBefore" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreAfter" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextBefore" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextAfter" } } - ); - - defaultKeymap.push({ - keys: 'gq', - type: 'operator', - operator: 'hardWrap' - }); - Vim.defineOperator("hardWrap", function(cm, operatorArgs, ranges, oldAnchor, newHead) { - var anchor = ranges[0].anchor.line; - var head = ranges[0].head.line; - if (operatorArgs.linewise) head--; - hardWrap(cm.ace, {startRow: anchor, endRow: head}); - return Pos(head, 0); - }); - defineOption('textwidth', undefined, 'number', ['tw'], function(width, cm) { - if (cm === undefined) { - return; - } - if (width === undefined) { - var value = cm.ace.getOption('printMarginColumn'); - return value; - } else { - var column = Math.round(width); - if (column > 1) { - cm.ace.setOption('printMarginColumn', column); - } - } - }); - - actions.aceCommand = function(cm, actionArgs, vim) { - cm.vimCmd = actionArgs; - if (cm.ace.inVirtualSelectionMode) - cm.ace.on("beforeEndOperation", delayedExecAceCommand); - else - delayedExecAceCommand(null, cm.ace); - }; - function delayedExecAceCommand(op, ace) { - ace.off("beforeEndOperation", delayedExecAceCommand); - var cmd = ace.state.cm.vimCmd; - if (cmd) { - ace.execCommand(cmd.exec ? cmd : cmd.name, cmd.args); - } - ace.curOp = ace.prevOp; - } - actions.fold = function(cm, actionArgs, vim) { - cm.ace.execCommand(['toggleFoldWidget', 'toggleFoldWidget', 'foldOther', 'unfoldall' - ][(actionArgs.all ? 2 : 0) + (actionArgs.open ? 1 : 0)]); - }; - - exports.handler.defaultKeymap = defaultKeymap; - exports.handler.actions = actions; - exports.Vim = Vim; -}); (function() { - ace.require(["ace/keyboard/vim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/keybinding-vscode.js b/src-noconflict/keybinding-vscode.js deleted file mode 100644 index 5a56a25..0000000 --- a/src-noconflict/keybinding-vscode.js +++ /dev/null @@ -1,262 +0,0 @@ -ace.define("ace/keyboard/vscode",["require","exports","module","ace/keyboard/hash_handler","ace/config"], function(require, exports, module) { -"use strict"; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var config = require("../config"); - -exports.handler = new HashHandler(); -exports.handler.$id = "ace/keyboard/vscode"; - -exports.handler.addCommands([{ - name: "toggleWordWrap", - exec: function(editor) { - var wrapUsed = editor.session.getUseWrapMode(); - editor.session.setUseWrapMode(!wrapUsed); - }, - readOnly: true -}, { - name: "navigateToLastEditLocation", - exec: function(editor) { - var lastDelta = editor.session.getUndoManager().$lastDelta; - var range = (lastDelta.action == "remove")? lastDelta.start: lastDelta.end; - editor.moveCursorTo(range.row, range.column); - editor.clearSelection(); - } -}, { - name: "replaceAll", - exec: function (editor) { - if (!editor.searchBox) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, true); - }); - } else { - if (editor.searchBox.active === true && editor.searchBox.replaceOption.checked === true) { - editor.searchBox.replaceAll(); - } - } - } -}, { - name: "replaceOne", - exec: function (editor) { - if (!editor.searchBox) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, true); - }); - } else { - if (editor.searchBox.active === true && editor.searchBox.replaceOption.checked === true) { - editor.searchBox.replace(); - } - } - } -}, { - name: "selectAllMatches", - exec: function (editor) { - if (!editor.searchBox) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, false); - }); - } else { - if (editor.searchBox.active === true) { - editor.searchBox.findAll(); - } - } - } -}, { - name: "toggleFindCaseSensitive", - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, false); - var sb = editor.searchBox; - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - }); - - } -}, { - name: "toggleFindInSelection", - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, false); - var sb = editor.searchBox; - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - }); - } -}, { - name: "toggleFindRegex", - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, false); - var sb = editor.searchBox; - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - }); - } -}, { - name: "toggleFindWholeWord", - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function(e) { - e.Search(editor, false); - var sb = editor.searchBox; - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - }); - } -}, { - name: "removeSecondaryCursors", - exec: function (editor) { - var ranges = editor.selection.ranges; - if (ranges && ranges.length > 1) - editor.selection.toSingleRange(ranges[ranges.length - 1]); - else - editor.selection.clearSelection(); - } -}]); - - -[{ - bindKey: {mac: "Ctrl-G", win: "Ctrl-G"}, - name: "gotoline" -}, { - bindKey: {mac: "Command-Shift-L|Command-F2", win: "Ctrl-Shift-L|Ctrl-F2"}, - name: "findAll" -}, { - bindKey: {mac: "Shift-F8|Shift-Option-F8", win: "Shift-F8|Shift-Alt-F8"}, - name: "goToPreviousError" -}, { - bindKey: {mac: "F8|Option-F8", win: "F8|Alt-F8"}, - name: "goToNextError" -}, { - bindKey: {mac: "Command-Shift-P|F1", win: "Ctrl-Shift-P|F1"}, - name: "openCommandPallete" -}, { - bindKey: {mac: "Command-K|Command-S", win: "Ctrl-K|Ctrl-S"}, - name: "showKeyboardShortcuts" -}, { - bindKey: {mac: "Shift-Option-Up", win: "Alt-Shift-Up"}, - name: "copylinesup" -}, { - bindKey: {mac: "Shift-Option-Down", win: "Alt-Shift-Down"}, - name: "copylinesdown" -}, { - bindKey: {mac: "Command-Shift-K", win: "Ctrl-Shift-K"}, - name: "removeline" -}, { - bindKey: {mac: "Command-Enter", win: "Ctrl-Enter"}, - name: "addLineAfter" -}, { - bindKey: {mac: "Command-Shift-Enter", win: "Ctrl-Shift-Enter"}, - name: "addLineBefore" -}, { - bindKey: {mac: "Command-Shift-\\", win: "Ctrl-Shift-\\"}, - name: "jumptomatching" -}, { - bindKey: {mac: "Command-]", win: "Ctrl-]"}, - name: "blockindent" -}, { - bindKey: {mac: "Command-[", win: "Ctrl-["}, - name: "blockoutdent" -}, { - bindKey: {mac: "Ctrl-PageDown", win: "Alt-PageDown"}, - name: "pagedown" -}, { - bindKey: {mac: "Ctrl-PageUp", win: "Alt-PageUp"}, - name: "pageup" -}, { - bindKey: {mac: "Shift-Option-A", win: "Shift-Alt-A"}, - name: "toggleBlockComment" -}, { - bindKey: {mac: "Option-Z", win: "Alt-Z"}, - name: "toggleWordWrap" -}, { - bindKey: {mac: "Command-G", win: "F3|Ctrl-K Ctrl-D"}, - name: "findnext" -}, { - bindKey: {mac: "Command-Shift-G", win: "Shift-F3"}, - name: "findprevious" -}, { - bindKey: {mac: "Option-Enter", win: "Alt-Enter"}, - name: "selectAllMatches" -}, { - bindKey: {mac: "Command-D", win: "Ctrl-D"}, - name: "selectMoreAfter" -}, { - bindKey: {mac: "Command-K Command-D", win: "Ctrl-K Ctrl-D"}, - name: "selectOrFindNext" -}, { - bindKey: {mac: "Shift-Option-I", win: "Shift-Alt-I"}, - name: "splitSelectionIntoLines" -}, { - bindKey: {mac: "Command-K M", win: "Ctrl-K M"}, - name: "modeSelect" -}, { - bindKey: {mac: "Command-Option-[", win: "Ctrl-Shift-["}, - name: "toggleFoldWidget" -}, { - bindKey: {mac: "Command-Option-]", win: "Ctrl-Shift-]"}, - name: "toggleFoldWidget" -}, { - bindKey: {mac: "Command-K Command-0", win: "Ctrl-K Ctrl-0"}, - name: "foldall" -}, { - bindKey: {mac: "Command-K Command-J", win: "Ctrl-K Ctrl-J"}, - name: "unfoldall" -}, { - bindKey: { mac: "Command-K Command-1", win: "Ctrl-K Ctrl-1" }, - name: "foldOther" -}, { - bindKey: { mac: "Command-K Command-Q", win: "Ctrl-K Ctrl-Q" }, - name: "navigateToLastEditLocation" -}, { - bindKey: { mac: "Command-K Command-R|Command-K Command-S", win: "Ctrl-K Ctrl-R|Ctrl-K Ctrl-S" }, - name: "showKeyboardShortcuts" -}, { - bindKey: { mac: "Command-K Command-X", win: "Ctrl-K Ctrl-X" }, - name: "trimTrailingSpace" -}, { - bindKey: {mac: "Shift-Down|Command-Shift-Down", win: "Shift-Down|Ctrl-Shift-Down"}, - name: "selectdown" -}, { - bindKey: {mac: "Shift-Up|Command-Shift-Up", win: "Shift-Up|Ctrl-Shift-Up"}, - name: "selectup" -}, { - bindKey: {mac: "Command-Alt-Enter", win: "Ctrl-Alt-Enter"}, - name: "replaceAll" -}, { - bindKey: {mac: "Command-Shift-1", win: "Ctrl-Shift-1"}, - name: "replaceOne" -}, { - bindKey: {mac: "Option-C", win: "Alt-C"}, - name: "toggleFindCaseSensitive" -}, { - bindKey: {mac: "Option-L", win: "Alt-L"}, - name: "toggleFindInSelection" -}, { - bindKey: {mac: "Option-R", win: "Alt-R"}, - name: "toggleFindRegex" -}, { - bindKey: {mac: "Option-W", win: "Alt-W"}, - name: "toggleFindWholeWord" -}, { - bindKey: {mac: "Command-L", win: "Ctrl-L"}, - name: "expandtoline" -}, { - bindKey: {mac: "Shift-Esc", win: "Shift-Esc"}, - name: "removeSecondaryCursors" -} -].forEach(function(binding) { - var command = exports.handler.commands[binding.name]; - if (command) - command.bindKey = binding.bindKey; - exports.handler.bindKey(binding.bindKey, command || binding.name); -}); - -}); (function() { - ace.require(["ace/keyboard/vscode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-abap.js b/src-noconflict/mode-abap.js deleted file mode 100644 index a4c9a3c..0000000 --- a/src-noconflict/mode-abap.js +++ /dev/null @@ -1,221 +0,0 @@ -ace.define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AbapHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": - "ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK" + - " CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY" + - " DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO" + - " ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT" + - " FETCH FIELDS FORM FORMAT FREE FROM FUNCTION" + - " GENERATE GET" + - " HIDE" + - " IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION" + - " LEAVE LIKE LINE LOAD LOCAL LOOP" + - " MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY" + - " ON OVERLAY OPTIONAL OTHERS" + - " PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT" + - " RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURN RETURNING ROLLBACK" + - " SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS" + - " TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES" + - " UNASSIGN ULINE UNPACK UPDATE" + - " WHEN WHILE WINDOW WRITE" + - " OCCURS STRUCTURE OBJECT PROPERTY" + - " CASTING APPEND RAISING VALUE COLOR" + - " CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT" + - " ID NUMBER FOR TITLE OUTPUT" + - " WITH EXIT USING" + - " INTO WHERE GROUP BY HAVING ORDER BY SINGLE" + - " APPENDING CORRESPONDING FIELDS OF TABLE" + - " LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING" + - " EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN", - "constant.language": - "TRUE FALSE NULL SPACE", - "support.type": - "c n i p f d t x string xstring decfloat16 decfloat34", - "keyword.operator": - "abs sign ceil floor trunc frac acos asin atan cos sin tan" + - " abapOperator cosh sinh tanh exp log log10 sqrt" + - " strlen xstrlen charlen numofchar dbmaxlen lines" - }, "text", true, " "); - - var compoundKeywords = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|"+ - "EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|"+ - "END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|"+ - "RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|"+ - "WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|"+ - "(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)"+ - "(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|"+ - "LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|"+ - "CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|"+ - "FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|"+ - "NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|"+ - "START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|"+ - "TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|"+ - "IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)"; - - this.$rules = { - "start" : [ - {token : "string", regex : "`", next : "string"}, - {token : "string", regex : "'", next : "qstring"}, - {token : "doc.comment", regex : /^\*.+/}, - {token : "comment", regex : /".+$/}, - {token : "invalid", regex: "\\.{2,}"}, - {token : "keyword.operator", regex: /\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/}, - {token : "paren.lparen", regex : "[\\[({]"}, - {token : "paren.rparen", regex : "[\\])}]"}, - {token : "constant.numeric", regex: "[+-]?\\d+\\b"}, - {token : "variable.parameter", regex : /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/}, - {token : "keyword", regex : compoundKeywords}, - {token : "variable.parameter", regex : /\w+-\w[\-\w]*/}, - {token : keywordMapper, regex : "\\b\\w+\\b"}, - {caseInsensitive: true} - ], - "qstring" : [ - {token : "constant.language.escape", regex : "''"}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} - ], - "string" : [ - {token : "constant.language.escape", regex : "``"}, - {token : "string", regex : "`", next : "start"}, - {defaultToken : "string"} - ] - }; -}; -oop.inherits(AbapHighlightRules, TextHighlightRules); - -exports.AbapHighlightRules = AbapHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/abap",["require","exports","module","ace/mode/abap_highlight_rules","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Rules = require("./abap_highlight_rules").AbapHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var oop = require("../lib/oop"); - -function Mode() { - this.HighlightRules = Rules; - this.foldingRules = new FoldMode(); -} - -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = '"'; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - return indent; - }; - - this.$id = "ace/mode/abap"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/abap"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-abc.js b/src-noconflict/mode-abc.js deleted file mode 100644 index 38876fe..0000000 --- a/src-noconflict/mode-abc.js +++ /dev/null @@ -1,271 +0,0 @@ -ace.define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var ABCHighlightRules = function () { - - this.$rules = { - start: [ - { - token: ['zupfnoter.information.comment.line.percentage', 'information.keyword', 'in formation.keyword.embedded'], - regex: '(%%%%)(hn\\.[a-z]*)(.*)', - comment: 'Instruction Comment' - }, - { - token: ['information.comment.line.percentage', 'information.keyword.embedded'], - regex: '(%%)(.*)', - comment: 'Instruction Comment' - }, - - { - token: 'comment.line.percentage', - regex: '%.*', - comment: 'Comments' - }, - - { - token: 'barline.keyword.operator', - regex: '[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+', - comment: 'Bar lines' - }, - { - token: ['information.keyword.embedded', 'information.argument.string.unquoted'], - regex: '(\\[[A-Za-z]:)([^\\]]*\\])', - comment: 'embedded Header lines' - }, - { - token: ['information.keyword', 'information.argument.string.unquoted'], - regex: '^([A-Za-z]:)([^%\\\\]*)', - comment: 'Header lines' - }, - { - token: ['text', 'entity.name.function', 'string.unquoted', 'text'], - regex: '(\\[)([A-Z]:)(.*?)(\\])', - comment: 'Inline fields' - }, - { - token: ['accent.constant.language', 'pitch.constant.numeric', 'duration.constant.numeric'], - regex: '([\\^=_]*)([A-Ga-gz][,\']*)([0-9]*/*[><0-9]*)', - comment: 'Notes' - }, - { - token: 'zupfnoter.jumptarget.string.quoted', - regex: '[\\"!]\\^\\:.*?[\\"!]', - comment: 'Zupfnoter jumptarget' - }, { - token: 'zupfnoter.goto.string.quoted', - regex: '[\\"!]\\^\\@.*?[\\"!]', - comment: 'Zupfnoter goto' - }, - { - token: 'zupfnoter.annotation.string.quoted', - regex: '[\\"!]\\^\\!.*?[\\"!]', - comment: 'Zupfnoter annoation' - }, - { - token: 'zupfnoter.annotationref.string.quoted', - regex: '[\\"!]\\^\\#.*?[\\"!]', - comment: 'Zupfnoter annotation reference' - }, - { - token: 'chordname.string.quoted', - regex: '[\\"!]\\^.*?[\\"!]', - comment: 'abc chord' - }, - { - token: 'string.quoted', - regex: '[\\"!].*?[\\"!]', - comment: 'abc annotation' - } - - ] - }; - - this.normalizeRules(); - }; - - ABCHighlightRules.metaData = { - fileTypes: ['abc'], - name: 'ABC', - scopeName: 'text.abcnotation' - }; - - - oop.inherits(ABCHighlightRules, TextHighlightRules); - - exports.ABCHighlightRules = ABCHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var ABCHighlightRules = require("./abc_highlight_rules").ABCHighlightRules; - var FoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function () { - this.HighlightRules = ABCHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function () { - this.lineCommentStart = "%"; - - this.$id = "ace/mode/abc"; - this.snippetFileId = "ace/snippets/abc"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/abc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-actionscript.js b/src-noconflict/mode-actionscript.js deleted file mode 100644 index 5d87deb..0000000 --- a/src-noconflict/mode-actionscript.js +++ /dev/null @@ -1,275 +0,0 @@ -ace.define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ActionScriptHighlightRules = function() { - - this.$rules = { start: - [ { token: 'support.class.actionscript.2', - regex: '\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b' }, - { token: 'support.function.actionscript.2', - regex: '\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b' }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b' }, - { token: 'keyword.control.actionscript.2', - regex: '\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b' }, - { token: 'storage.type.actionscript.2', - regex: '\\b(?:Boolean|Number|String|Void)\\b' }, - { token: 'constant.language.actionscript.2', - regex: '\\b(?:null|undefined|true|false)\\b' }, - { token: 'constant.numeric.actionscript.2', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.actionscript.2' } ] }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.actionscript.2' } ] }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b' }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.actionscript.2', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.actionscript.2' } ] }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-slash.actionscript.2', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.actionscript.2' } ] }, - { token: 'keyword.operator.actionscript.2', - regex: '\\binstanceof\\b' }, - { token: 'keyword.operator.symbolic.actionscript.2', - regex: '[-!%&*+=/?:]' }, - { token: - [ 'meta.preprocessor.actionscript.2', - 'punctuation.definition.preprocessor.actionscript.2', - 'meta.preprocessor.actionscript.2' ], - regex: '^([ \\t]*)(#)([a-zA-Z]+)' }, - { token: - [ 'storage.type.function.actionscript.2', - 'meta.function.actionscript.2', - 'entity.name.function.actionscript.2', - 'meta.function.actionscript.2', - 'punctuation.definition.parameters.begin.actionscript.2' ], - regex: '\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()', - push: - [ { token: 'punctuation.definition.parameters.end.actionscript.2', - regex: '\\)', - next: 'pop' }, - { token: 'variable.parameter.function.actionscript.2', - regex: '[^,)$]+' }, - { defaultToken: 'meta.function.actionscript.2' } ] }, - { token: - [ 'storage.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'entity.name.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'storage.modifier.extends.actionscript.2', - 'meta.class.actionscript.2', - 'entity.other.inherited-class.actionscript.2' ], - regex: '\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?' } ] }; - - this.normalizeRules(); -}; - -ActionScriptHighlightRules.metaData = { fileTypes: [ 'as' ], - keyEquivalent: '^~A', - name: 'ActionScript', - scopeName: 'source.actionscript.2' }; - - -oop.inherits(ActionScriptHighlightRules, TextHighlightRules); - -exports.ActionScriptHighlightRules = ActionScriptHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ActionScriptHighlightRules = require("./actionscript_highlight_rules").ActionScriptHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ActionScriptHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/actionscript"; - this.snippetFileId = "ace/snippets/actionscript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/actionscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ada.js b/src-noconflict/mode-ada.js deleted file mode 100644 index 98b67ca..0000000 --- a/src-noconflict/mode-ada.js +++ /dev/null @@ -1,137 +0,0 @@ -ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AdaHighlightRules = function() { -var keywords = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|" + -"access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|" + -"array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|" + -"body|private|then|if|procedure|type|case|in|protected|constant|interface|until|" + -"|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // character - regex : "'.'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(AdaHighlightRules, TextHighlightRules); - -exports.AdaHighlightRules = AdaHighlightRules; -}); - -ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AdaHighlightRules = require("./ada_highlight_rules").AdaHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = AdaHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*(begin|loop|then|is|do)\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - var complete_line = line + input; - if (complete_line.match(/^\s*(begin|end)$/)) { - return true; - } - - return false; - }; - - this.autoOutdent = function(state, session, row) { - - var line = session.getLine(row); - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine).length; - var indent = this.$getIndent(line).length; - if (indent <= prevIndent) { - return; - } - - session.outdentRows(new Range(row, 0, row + 2, 0)); - }; - - - this.$id = "ace/mode/ada"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/ada"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-alda.js b/src-noconflict/mode-alda.js deleted file mode 100644 index 1b0456c..0000000 --- a/src-noconflict/mode-alda.js +++ /dev/null @@ -1,311 +0,0 @@ -ace.define("ace/mode/alda_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var AldaHighlightRules = function() { - - this.$rules = { - pitch: [{ - token: "variable.parameter.operator.pitch.alda", - regex: /(?:[+\-]+|\=)/ - }, { - token: "", - regex: "", - next: "timing" - }], - timing: [{ - token: "string.quoted.operator.timing.alda", - regex: /\d+(?:s|ms)?/ - }, { - token: "", - regex: "", - next: "start" - }], - start: [{ - token: [ - "constant.language.instrument.alda", - "constant.language.instrument.alda", - "meta.part.call.alda", - "storage.type.nickname.alda", - "meta.part.call.alda" - ], - regex: /^([a-zA-Z]{2}[\w\-+\'()]*)((?:\s*\/\s*[a-zA-Z]{2}[\w\-+\'()]*)*)(?:(\s*)(\"[a-zA-Z]{2}[\w\-+\'()]*\"))?(\s*:)/ - }, { - token: [ - "text", - "entity.other.inherited-class.voice.alda", - "text" - ], - regex: /^(\s*)(V\d+)(:)/ - }, { - token: "comment.line.number-sign.alda", - regex: /#.*$/ - }, { - token: "entity.name.function.pipe.measure.alda", - regex: /\|/ - }, { - token: "comment.block.inline.alda", - regex: /\(comment\b/, - push: [{ - token: "comment.block.inline.alda", - regex: /\)/, - next: "pop" - }, { - defaultToken: "comment.block.inline.alda" - }] - }, { - token: "entity.name.function.marker.alda", - regex: /%[a-zA-Z]{2}[\w\-+\'()]*/ - }, { - token: "entity.name.function.at-marker.alda", - regex: /@[a-zA-Z]{2}[\w\-+\'()]*/ - }, { - token: "keyword.operator.octave-change.alda", - regex: /\bo\d+\b/ - }, { - token: "keyword.operator.octave-shift.alda", - regex: /[><]/ - }, { - token: "keyword.operator.repeat.alda", - regex: /\*\s*\d+/ - }, { - token: "string.quoted.operator.timing.alda", - regex: /[.]|r\d*(?:s|ms)?/ - },{ - token: "text", - regex: /([cdefgab])/, - next: "pitch" - }, { - token: "string.quoted.operator.timing.alda", - regex: /~/, - next: "timing" - }, { - token: "punctuation.section.embedded.cram.alda", - regex: /\}/, - next: "timing" - }, { - token: "constant.numeric.subchord.alda", - regex: /\// - }, { - todo: { - token: "punctuation.section.embedded.cram.alda", - regex: /\{/, - push: [{ - token: "punctuation.section.embedded.cram.alda", - regex: /\}/, - next: "pop" - }, { - include: "$self" - }] - } - }, { - todo: { - token: "keyword.control.sequence.alda", - regex: /\[/, - push: [{ - token: "keyword.control.sequence.alda", - regex: /\]/, - next: "pop" - }, { - include: "$self" - }] - } - }, { - token: "meta.inline.clojure.alda", - regex: /\(/, - push: [{ - token: "meta.inline.clojure.alda", - regex: /\)/, - next: "pop" - }, { - include: "source.clojure" - }, { - defaultToken: "meta.inline.clojure.alda" - }] - }] - }; - - this.normalizeRules(); - }; - - AldaHighlightRules.metaData = { - scopeName: "source.alda", - fileTypes: ["alda"], - name: "Alda" - }; - - - oop.inherits(AldaHighlightRules, TextHighlightRules); - - exports.AldaHighlightRules = AldaHighlightRules; - }); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/alda",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/alda_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AldaHighlightRules = require("./alda_highlight_rules").AldaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = AldaHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/alda"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/alda"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-apache_conf.js b/src-noconflict/mode-apache_conf.js deleted file mode 100644 index 1b962d5..0000000 --- a/src-noconflict/mode-apache_conf.js +++ /dev/null @@ -1,363 +0,0 @@ -ace.define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ApacheConfHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.comment.apacheconf', - 'comment.line.hash.ini', - 'comment.line.hash.ini' ], - regex: '^((?:\\s)*)(#)(.*$)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'text', - 'string.value.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '()' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.replacement.apacheconf', 'text' ], - regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: 'keyword.core.apacheconf', - regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, - { token: 'keyword.mpm.apacheconf', - regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, - { token: 'keyword.access.apacheconf', - regex: '\\b(?:Allow|Deny|Order)\\b' }, - { token: 'keyword.actions.apacheconf', - regex: '\\b(?:Action|Script)\\b' }, - { token: 'keyword.alias.apacheconf', - regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, - { token: 'keyword.auth.apacheconf', - regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, - { token: 'keyword.auth_anon.apacheconf', - regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, - { token: 'keyword.auth_dbm.apacheconf', - regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, - { token: 'keyword.auth_digest.apacheconf', - regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, - { token: 'keyword.auth_ldap.apacheconf', - regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, - { token: 'keyword.autoindex.apacheconf', - regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, - { token: 'keyword.cache.apacheconf', - regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, - { token: 'keyword.cern_meta.apacheconf', - regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, - { token: 'keyword.cgi.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, - { token: 'keyword.cgid.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, - { token: 'keyword.charset_lite.apacheconf', - regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, - { token: 'keyword.dav.apacheconf', - regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, - { token: 'keyword.deflate.apacheconf', - regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, - { token: 'keyword.dir.apacheconf', - regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, - { token: 'keyword.disk_cache.apacheconf', - regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, - { token: 'keyword.dumpio.apacheconf', - regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, - { token: 'keyword.env.apacheconf', - regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, - { token: 'keyword.expires.apacheconf', - regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, - { token: 'keyword.ext_filter.apacheconf', - regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, - { token: 'keyword.file_cache.apacheconf', - regex: '\\b(?:CacheFile|MMapFile)\\b' }, - { token: 'keyword.headers.apacheconf', - regex: '\\b(?:Header|RequestHeader)\\b' }, - { token: 'keyword.imap.apacheconf', - regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, - { token: 'keyword.include.apacheconf', - regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, - { token: 'keyword.isapi.apacheconf', - regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, - { token: 'keyword.ldap.apacheconf', - regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, - { token: 'keyword.log.apacheconf', - regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, - { token: 'keyword.mem_cache.apacheconf', - regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, - { token: 'keyword.mime.apacheconf', - regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, - { token: 'keyword.misc.apacheconf', - regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, - { token: 'keyword.negotiation.apacheconf', - regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, - { token: 'keyword.nw_ssl.apacheconf', - regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, - { token: 'keyword.proxy.apacheconf', - regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, - { token: 'keyword.rewrite.apacheconf', - regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, - { token: 'keyword.setenvif.apacheconf', - regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, - { token: 'keyword.so.apacheconf', - regex: '\\b(?:LoadFile|LoadModule)\\b' }, - { token: 'keyword.ssl.apacheconf', - regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, - { token: 'keyword.usertrack.apacheconf', - regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, - { token: 'keyword.vhost_alias.apacheconf', - regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, - { token: - [ 'keyword.php.apacheconf', - 'text', - 'entity.property.apacheconf', - 'text', - 'string.value.apacheconf', - 'text' ], - regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, - { token: - [ 'punctuation.variable.apacheconf', - 'variable.env.apacheconf', - 'variable.misc.apacheconf', - 'punctuation.variable.apacheconf' ], - regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, - { token: [ 'entity.mime-type.apacheconf', 'text' ], - regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, - { token: 'entity.helper.apacheconf', - regex: '\\b(?:from|unset|set|on|off)\\b', - caseInsensitive: true }, - { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, - { token: - [ 'text', - 'punctuation.definition.flag.apacheconf', - 'string.flag.apacheconf', - 'punctuation.definition.flag.apacheconf', - 'text' ], - regex: '(\\s)(\\[)(.*?)(\\])(\\s)' } ] }; - - this.normalizeRules(); -}; - -ApacheConfHighlightRules.metaData = { fileTypes: - [ 'conf', - 'CONF', - 'htaccess', - 'HTACCESS', - 'htgroups', - 'HTGROUPS', - 'htpasswd', - 'HTPASSWD', - '.htaccess', - '.HTACCESS', - '.htgroups', - '.HTGROUPS', - '.htpasswd', - '.HTPASSWD' ], - name: 'Apache Conf', - scopeName: 'source.apacheconf' }; - - -oop.inherits(ApacheConfHighlightRules, TextHighlightRules); - -exports.ApacheConfHighlightRules = ApacheConfHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ApacheConfHighlightRules = require("./apache_conf_highlight_rules").ApacheConfHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ApacheConfHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/apache_conf"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/apache_conf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-apex.js b/src-noconflict/mode-apex.js deleted file mode 100644 index e5f5b52..0000000 --- a/src-noconflict/mode-apex.js +++ /dev/null @@ -1,457 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/apex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("../mode/text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = require("../mode/doc_comment_highlight_rules").DocCommentHighlightRules; - -var ApexHighlightRules = function() { - var mainKeywordMapper = this.createKeywordMapper({ - "variable.language": "activate|any|autonomous|begin|bigdecimal|byte|cast|char|collect|const" - + "|end|exit|export|float|goto|group|having|hint|import|inner|into|join|loop|number|object|of|outer" - + "|parallel|pragma|retrieve|returning|search|short|stat|synchronized|then|this_month" - + "|transaction|type|when", - "keyword": "private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final" - + "|and|array|as|asc|break|bulk|by|catch|class|commit|continue|convertcurrency" - + "|delete|desc|do|else|enum|extends|false|final|finally|for|from|future|global" - + "|if|implements|in|insert|instanceof|interface|last_90_days|last_month" - + "|last_n_days|last_week|like|limit|list|map|merge|new|next_90_days|next_month|next_n_days" - + "|next_week|not|null|nulls|on|or|override|package|return" - + "|rollback|savepoint|select|set|sort|super|testmethod|this|this_week|throw|today" - + "|tolabel|tomorrow|trigger|true|try|undelete|update|upsert|using|virtual|webservice" - + "|where|while|yesterday|switch|case|default", - "storage.type": - "def|boolean|byte|char|short|int|float|pblob|date|datetime|decimal|double|id|integer|long|string|time|void|blob|Object", - "constant.language": - "true|false|null|after|before|count|excludes|first|includes|last|order|sharing|with", - "support.function": - "system|apex|label|apexpages|userinfo|schema" - }, "identifier", true); - function keywordMapper(value) { - if (value.slice(-3) == "__c") return "support.function"; - return mainKeywordMapper(value); - } - - function string(start, options) { - return { - regex: start + (options.multiline ? "" : "(?=.)"), - token: "string.start", - next: [{ - regex: options.escape, - token: "character.escape" - }, { - regex: options.error, - token: "error.invalid" - }, { - regex: start + (options.multiline ? "" : "|$"), - token: "string.end", - next: options.next || "start" - }, { - defaultToken: "string" - }] - }; - } - - function comments() { - return [{ - token : "comment", - regex : "\\/\\/(?=.)", - next : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; - } - - this.$rules = { - start: [ - string("'", { - escape: /\\[nb'"\\]/, - error: /\\./, - multiline: false - }), - comments("c"), - { - type: "decoration", - token: [ - "meta.package.apex", - "keyword.other.package.apex", - "meta.package.apex", - "storage.modifier.package.apex", - "meta.package.apex", - "punctuation.terminator.apex" - ], - regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*)((?:;)?))?/ - }, { - regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, - token: "constant.language" - }, - { - regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, - token: keywordMapper - }, - { - regex: "`#%", - token: "error.invalid" - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[LlDdEe][+-]?\d+)?)\b|\.\d+[LlDdEe]/ - }, { - token : "keyword.operator", - regex : /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[]/, - next : "maybe_soql", - merge : false - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start", - merge : false - }, { - token : "paren.rparen", - regex : /[\])}]/, - merge : false - } - ], - maybe_soql: [{ - regex: /\s+/, - token: "text" - }, { - regex: /(SELECT|FIND)\b/, - token: "keyword", - caseInsensitive: true, - next: "soql" - }, { - regex: "", - token: "none", - next: "start" - }], - soql: [{ - regex: "(:?ASC|BY|CATEGORY|CUBE|DATA|DESC|END|FIND|FIRST|FOR|FROM|GROUP|HAVING|IN|LAST" - + "|LIMIT|NETWORK|NULLS|OFFSET|ORDER|REFERENCE|RETURNING|ROLLUP|SCOPE|SELECT" - + "|SNIPPET|TRACKING|TYPEOF|UPDATE|USING|VIEW|VIEWSTAT|WHERE|WITH|AND|OR)\\b", - token: "keyword", - caseInsensitive: true - }, { - regex: "(:?target_length|toLabel|convertCurrency|count|Contact|Account|User|FIELDS)\\b", - token: "support.function", - caseInsensitive: true - }, { - token : "paren.rparen", - regex : /[\]]/, - next : "start", - merge : false - }, - string("'", { - escape: /\\[nb'"\\]/, - error: /\\./, - multiline: false, - next: "soql" - }), - string('"', { - escape: /\\[nb'"\\]/, - error: /\\./, - multiline: false, - next: "soql" - }), - { - regex: /\\./, - token: "character.escape" - }, - { - regex : /[\?\&\|\!\{\}\[\]\(\)\^\~\*\:\"\'\+\-\,\.=\\\/]/, - token : "keyword.operator" - }], - - "log-start" : [ { - token : "timestamp.invisible", - regex : /^[\d:.() ]+\|/, - next: "log-header" - }, { - token : "timestamp.invisible", - regex : /^ (Number of|Maximum)[^:]*:/, - next: "log-comment" - }, { - token : "invisible", - regex : /^Execute Anonymous:/, - next: "log-comment" - }, { - defaultToken: "text" - }], - "log-comment": [{ - token : "log-comment", - regex : /.*$/, - next: "log-start" - }], - "log-header": [{ - token : "timestamp.invisible", - regex : /((USER_DEBUG|\[\d+\]|DEBUG)\|)+/ - }, - { - token : "keyword", - regex: "(?:EXECUTION_FINISHED|EXECUTION_STARTED|CODE_UNIT_STARTED" - + "|CUMULATIVE_LIMIT_USAGE|LIMIT_USAGE_FOR_NS" - + "|CUMULATIVE_LIMIT_USAGE_END|CODE_UNIT_FINISHED)" - }, { - regex: "", - next: "log-start" - }] - }; - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - - - this.normalizeRules(); -}; - - -oop.inherits(ApexHighlightRules, TextHighlightRules); - -exports.ApexHighlightRules = ApexHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/apex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apex_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var ApexHighlightRules = require("./apex_highlight_rules").ApexHighlightRules; -var FoldMode = require("../mode/folding/cstyle").FoldMode; -var CstyleBehaviour = require("../mode/behaviour/cstyle").CstyleBehaviour; - -function ApexMode() { - TextMode.call(this); - - this.HighlightRules = ApexHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = new CstyleBehaviour(); -} - -oop.inherits(ApexMode, TextMode); - -ApexMode.prototype.lineCommentStart = "//"; - -ApexMode.prototype.blockComment = { - start: "/*", - end: "*/" -}; - -exports.Mode = ApexMode; - -}); (function() { - ace.require(["ace/mode/apex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-applescript.js b/src-noconflict/mode-applescript.js deleted file mode 100644 index ce1b47b..0000000 --- a/src-noconflict/mode-applescript.js +++ /dev/null @@ -1,278 +0,0 @@ -ace.define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AppleScriptHighlightRules = function() { - var keywords = ( - "about|above|after|against|and|around|as|at|back|before|beginning|" + - "behind|below|beneath|beside|between|but|by|considering|" + - "contain|contains|continue|copy|div|does|eighth|else|end|equal|" + - "equals|error|every|exit|fifth|first|for|fourth|from|front|" + - "get|given|global|if|ignoring|in|into|is|it|its|last|local|me|" + - "middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|" + - "reference|repeat|returning|script|second|set|seventh|since|" + - "sixth|some|tell|tenth|that|the|then|third|through|thru|" + - "timeout|times|to|transaction|try|until|where|while|whose|with|without" - ); - - var builtinConstants = ( - "AppleScript|false|linefeed|return|pi|quote|result|space|tab|true" - ); - - var builtinFunctions = ( - "activate|beep|count|delay|launch|log|offset|read|round|run|say|" + - "summarize|write" - ); - - var builtinTypes = ( - "alias|application|boolean|class|constant|date|file|integer|list|" + - "number|real|record|string|text|character|characters|contents|day|" + - "frontmost|id|item|length|month|name|paragraph|paragraphs|rest|" + - "reverse|running|time|version|weekday|word|words|year" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "support.type": builtinTypes, - "keyword": keywords - }, "identifier"); - - this.$rules = { - "start": [ - { - token: "comment", - regex: "--.*$" - }, - { - token : "comment", // multi line comment - regex : "\\(\\*", - next : "comment" - }, - { - token: "string", // " string - regex: '".*?"' - }, - { - token: "support.type", - regex: '\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b' - }, - { - token: "support.function", - regex: '\\b(clipboard info|the clipboard|info for|list (disks|folder)|' + - 'mount volume|path to|(close|open for) access|(get|set) eof|' + - 'current date|do shell script|get volume settings|random number|' + - 'set volume|system attribute|system info|time to GMT|' + - '(load|run|store) script|scripting components|' + - 'ASCII (character|number)|localized string|' + - 'choose (application|color|file|file name|' + - 'folder|from list|remote application|URL)|' + - 'display (alert|dialog))\\b|^\\s*return\\b' - }, - { - token: "constant.language", - regex: '\\b(text item delimiters|current application|missing value)\\b' - }, - { - token: "keyword", - regex: '\\b(apart from|aside from|instead of|out of|greater than|' + - "isn't|(doesn't|does not) (equal|come before|come after|contain)|" + - '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' + - 'contained by|comes (before|after)|a (ref|reference))\\b' - }, - { - token: keywordMapper, - regex: "[a-zA-Z][a-zA-Z0-9_]*\\b" - } - ], - "comment": [ - { - token: "comment", // closing comment - regex: "\\*\\)", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(AppleScriptHighlightRules, TextHighlightRules); - -exports.AppleScriptHighlightRules = AppleScriptHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AppleScriptHighlightRules = require("./applescript_highlight_rules").AppleScriptHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = AppleScriptHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "(*", end: "*)"}; - this.$id = "ace/mode/applescript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/applescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-aql.js b/src-noconflict/mode-aql.js deleted file mode 100644 index 706b0cb..0000000 --- a/src-noconflict/mode-aql.js +++ /dev/null @@ -1,102 +0,0 @@ -ace.define("ace/mode/aql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var AqlHighlightRules = function() { - - var keywords = ( - "for|search|outbound|inbound|any|graph|prune|options|shortest_path|to|in|return|filter|sort|limit|let|collect|remove|update|replace|insers|upsert|with" - ); - - var builtinConstants = ( - "true|false" - ); - - var builtinFunctions = ( - "append|contains_array|count|count_distinct|count_unique|first|flatten|intersection|last|length|minus|nth|outersection|pop|position|push|remove_nth|remove_value|remove_values|reverse|shift|slice|sorted|sorted_unique|union|union_distinct|unique|unshift|" + - "date_now|date_iso8601|date_timestamp|is_datestring|date_dayofweek|date_year|date_month|date_day|date_hour|date_minute|date_second|date_millisecond|date_dayofyear|date_isoweek|date_leapyear|date_quarter|date_days_in_month|date_trunc|date_format|date_add|date_subtract|date_diff|date_compare|" + - "attributes|count|has|is_same_collection|keep|length|matches|merge|merge_recursive|parse_identifier|translate|unset|unset_recursive|values|zip|" + - "fulltext|" + - "distance|geo_contains|geo_distance|geo_equals|geo_intersects|is_in_polygon|" + - "not_null|first_list|first_document|check_document|collection_count|collections|count|current_user|document|length|hash|apply|assert|/ warn|call|fail|noopt|passthru|sleep|v8|version|" + - "abs|acos|asin|atan|atan2|average|avg|ceil|cos|degrees|exp|exp2|floor|log|log2|log10|max|median|min|percentile|pi|pow|radians|rand|range|round|sin|sqrt|stddev_population|stddev_sample|stddev|sum|tan|variance_population|variance_sample|variance|" + - "char_length|concat|concat_separator|contains|count|encode_uri_component|find_first|find_last|json_parse|json_stringify|left|length|levenshtein_distance|like|lower|ltrim|md5|random_token|regex_matches|regex_split|regex_test|regex_replace|reverse|right|rtrim|sha1|sha512|split|soundex|substitute|substring|tokens|to_base64|to_hex|trim|upper|uuid|" + - "to_bool|to_number|to_string|to_array|to_list|is_null|is_bool|is_number|is_string|is_array|is_list|is_object|is_document|is_datestring|is_key|typename|" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "//.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; - this.normalizeRules(); - }; - - oop.inherits(AqlHighlightRules, TextHighlightRules); - - exports.AqlHighlightRules = AqlHighlightRules; - }); - -ace.define("ace/mode/aql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/aql_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var AqlHighlightRules = require("./aql_highlight_rules").AqlHighlightRules; - - var Mode = function() { - this.HighlightRules = AqlHighlightRules; - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() { - - this.lineCommentStart = "//"; - - this.$id = "ace/mode/aql"; - }).call(Mode.prototype); - - exports.Mode = Mode; - - }); (function() { - ace.require(["ace/mode/aql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-asciidoc.js b/src-noconflict/mode-asciidoc.js deleted file mode 100644 index c960e98..0000000 --- a/src-noconflict/mode-asciidoc.js +++ /dev/null @@ -1,349 +0,0 @@ -ace.define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AsciidocHighlightRules = function() { - var identifierRe = "[a-zA-Z\u00a1-\uffff]+\\b"; - - this.$rules = { - "start": [ - {token: "empty", regex: /$/}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock"}, - {token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock"}, - {token: "keyword", regex: /^={4,}\s*$/}, - {token: "text", regex: /^\s*$/}, - {token: "empty", regex: "", next: "dissallowDelimitedBlock"} - ], - - "dissallowDelimitedBlock": [ - {include: "paragraphEnd"}, - {token: "comment", regex: '^//.+$'}, - {token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"}, - - {include: "listStart"}, - {token: "literal", regex: /^\s+.+$/, next: "indentedBlock"}, - {token: "empty", regex: "", next: "text"} - ], - - "paragraphEnd": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock"}, - {token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock"}, - {token: "keyword", regex: /^(?:--|''')\s*$/, next: "start"}, - {token: "option", regex: /^\[.*\]\s*$/, next: "start"}, - {token: "pageBreak", regex: /^>{3,}$/, next: "start"}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start"}, - {token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start"}, - - {token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start"}, - {token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start"} - ], - - "listStart": [ - {token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText"}, - {token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText"}, - {token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text"}, - {token: "keyword", regex: /^\+\s*$/, next: "start"} - ], - - "text": [ - {token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/}, - {token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/}, - {token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/}, - {include: "macros"}, - {include: "paragraphEnd"}, - {token: "literal", regex:/\+{3,}/, next:"smallPassthrough"}, - {token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/}, - {token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/}, - {token: "keyword", regex: /\s\+$/}, - {token: "text", regex: identifierRe}, - {token: ["keyword", "string", "keyword"], - regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/}, - {token: "keyword", regex: /<<[\w\d\-$]+,?|>>/}, - {token: "constant.character", regex: /\({2,3}.*?\){2,3}/}, - {token: "keyword", regex: /\[\[.+?\]\]/}, - {token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/}, - - {include: "quotes"}, - {token: "empty", regex: /^\s*$/, next: "start"} - ], - - "listText": [ - {include: "listStart"}, - {include: "text"} - ], - - "indentedBlock": [ - {token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock"}, - {token: "literal", regex: "", next: "start"} - ], - - "listingBlock": [ - {token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} - ], - "literalBlock": [ - {token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} - ], - "passthroughBlock": [ - {token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"}, - {token: "literal", regex: "."} - ], - - "smallPassthrough": [ - {token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"} - ], - - "commentBlock": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "doc.comment", regex: '^.*$'} - ], - "tableBlock": [ - {token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock"}, - {token: "tableBlock", regex: /\|/}, - {include: "text", noEscape: true} - ], - "innerTableBlock": [ - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock"}, - {token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /!/} - ], - "macros": [ - {token: "macro", regex: /{[\w\-$]+}/}, - {token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/}, - {token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/}, - {token: "keyword", regex: /^:.+?:(?= |$)/} - ], - - "quotes": [ - {token: "string.italic", regex: /__[^_\s].*?__/}, - {token: "string.italic", regex: quoteRule("_")}, - - {token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/}, - {token: "keyword.bold", regex: quoteRule("\\*")}, - - {token: "literal", regex: quoteRule("\\+")}, - {token: "literal", regex: /\+\+[^+\s].*?\+\+/}, - {token: "literal", regex: /\$\$.+?\$\$/}, - {token: "literal", regex: quoteRule("`")}, - - {token: "keyword", regex: quoteRule("^")}, - {token: "keyword", regex: quoteRule("~")}, - {token: "keyword", regex: /##?/}, - {token: "keyword", regex: /(?:\B|^)``|\b''/} - ] - - }; - - function quoteRule(ch) { - var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)"; - return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])"; - } - - var tokenMap = { - macro: "constant.character", - tableBlock: "doc.comment", - titleUnderline: "markup.heading", - singleLineTitle: "markup.heading", - pageBreak: "string", - option: "string.regexp", - otherBlock: "markup.list", - literal: "support.function", - optionalTitle: "constant.numeric", - escape: "constant.language.escape", - link: "markup.underline.list" - }; - - for (var state in this.$rules) { - var stateRules = this.$rules[state]; - for (var i = stateRules.length; i--; ) { - var rule = stateRules[i]; - if (rule.include || typeof rule == "string") { - var args = [i, 1].concat(this.$rules[rule.include || rule]); - if (rule.noEscape) { - args = args.filter(function(x) { - return !x.next; - }); - } - stateRules.splice.apply(stateRules, args); - } else if (rule.token in tokenMap) { - rule.token = tokenMap[rule.token]; - } - } - } -}; -oop.inherits(AsciidocHighlightRules, TextHighlightRules); - -exports.AsciidocHighlightRules = AsciidocHighlightRules; -}); - -ace.define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/; - this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return ""; - - if (line[0] == "=") { - if (this.singleLineHeadingRe.test(line)) - return "start"; - if (session.getLine(row - 1).length != session.getLine(row).length) - return ""; - return "start"; - } - if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") - return "end"; - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - var token; - function getTokenType(row) { - token = session.getTokens(row)[0]; - return token && token.type; - } - - var levels = ["=","-","~","^","+"]; - var heading = "markup.heading"; - var singleLineHeadingRe = this.singleLineHeadingRe; - function getLevel() { - var match = token.value.match(singleLineHeadingRe); - if (match) - return match[0].length; - var level = levels.indexOf(token.value[0]) + 1; - if (level == 1) { - if (session.getLine(row - 1).length != session.getLine(row).length) - return Infinity; - } - return level; - } - - if (getTokenType(row) == heading) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (getTokenType(row) != heading) - continue; - var level = getLevel(); - if (level <= startHeadingLevel) - break; - } - - var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe); - endRow = isSingleLineHeading ? row - 1 : row - 2; - - if (endRow > startRow) { - while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == "[")) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } else { - var state = session.bgTokenizer.getState(row); - if (state == "dissallowDelimitedBlock") { - while (row -- > 0) { - if (session.bgTokenizer.getState(row).lastIndexOf("Block") == -1) - break; - } - endRow = row + 1; - if (endRow < startRow) { - var endColumn = session.getLine(row).length; - return new Range(endRow, 5, startRow, startColumn - 5); - } - } else { - while (++row < maxRow) { - if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") - break; - } - endRow = row; - if (endRow > startRow) { - var endColumn = session.getLine(row).length; - return new Range(startRow, 5, endRow, endColumn - 5); - } - } - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AsciidocHighlightRules = require("./asciidoc_highlight_rules").AsciidocHighlightRules; -var AsciidocFoldMode = require("./folding/asciidoc").FoldMode; - -var Mode = function() { - this.HighlightRules = AsciidocHighlightRules; - - this.foldingRules = new AsciidocFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { - if (state == "listblock") { - var match = /^((?:.+)?)([-+*][ ]+)/.exec(line); - if (match) { - return new Array(match[1].length + 1).join(" ") + match[2]; - } else { - return ""; - } - } else { - return this.$getIndent(line); - } - }; - this.$id = "ace/mode/asciidoc"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/asciidoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-asl.js b/src-noconflict/mode-asl.js deleted file mode 100644 index 2ab3ba8..0000000 --- a/src-noconflict/mode-asl.js +++ /dev/null @@ -1,422 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/asl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var ASLHighlightRules = function() { - var keywords = ( - "Default|DefinitionBlock|Device|Method|Else|ElseIf|For|Function|If|Include|Method|Return|" + - "Scope|Switch|Case|While|Break|BreakPoint|Continue|NoOp|Wait|True|False|" + - "AccessAs|Acquire|Alias|BankField|Buffer|Concatenate|ConcatenateResTemplate|" + - "CondRefOf|Connection|CopyObject|CreateBitField|CreateByteField|CreateDWordField|" + - "CreateField|CreateQWordField|CreateWordField|DataTableRegion|Debug|" + - "DMA|DWordIO|DWordMemory|DWordSpace|EisaId|EISAID|EndDependentFn|Event|ExtendedIO|" + - "ExtendedMemory|ExtendedSpace|External|Fatal|Field|FindSetLeftBit|FindSetRightBit|" + - "FixedDMA|FixedIO|Fprintf|FromBCD|GpioInt|GpioIo|I2CSerialBusV2|IndexField|" + - "Interrupt|IO|IRQ|IRQNoFlags|Load|LoadTable|Match|Memory32|Memory32Fixed|" + - "Mid|Mutex|Name|Notify|Offset|ObjectType|OperationRegion|Package|PowerResource|Printf|" + - "QWordIO|QWordMemory|QWordSpace|RawDataBuffer|Register|Release|Reset|ResourceTemplate|" + - "Signal|SizeOf|Sleep|SPISerialBusV2|Stall|StartDependentFn|StartDependentFnNoPri|" + - "Store|ThermalZone|Timer|ToBCD|ToBuffer|ToDecimalString|ToInteger|ToPLD|ToString|" + - "ToUUID|UARTSerialBusV2|Unicode|Unload|VendorLong|VendorShort|WordBusNumber|WordIO|" + - "WordSpace" - ); - - var keywordOperators = ( - "Add|And|Decrement|Divide|Increment|Index|LAnd|LEqual|LGreater|LGreaterEqual|" + - "LLess|LLessEqual|LNot|LNotEqual|LOr|Mod|Multiply|NAnd|NOr|Not|Or|RefOf|Revision|" + - "ShiftLeft|ShiftRight|Subtract|XOr|DerefOf" - ); - - var flags = ( - "AttribQuick|AttribSendReceive|AttribByte|AttribBytes|AttribRawBytes|" + - "AttribRawProcessBytes|AttribWord|AttribBlock|AttribProcessCall|AttribBlockProcessCall|" + - "AnyAcc|ByteAcc|WordAcc|DWordAcc|QWordAcc|BufferAcc|" + - "AddressRangeMemory|AddressRangeReserved|AddressRangeNVS|AddressRangeACPI|" + - "RegionSpaceKeyword|FFixedHW|PCC|" + - "AddressingMode7Bit|AddressingMode10Bit|" + - "DataBitsFive|DataBitsSix|DataBitsSeven|DataBitsEight|DataBitsNine|" + - "BusMaster|NotBusMaster|" + - "ClockPhaseFirst|ClockPhaseSecond|ClockPolarityLow|ClockPolarityHigh|" + - "SubDecode|PosDecode|" + - "BigEndianing|LittleEndian|" + - "FlowControlNone|FlowControlXon|FlowControlHardware|" + - "Edge|Level|ActiveHigh|ActiveLow|ActiveBoth|Decode16|Decode10|" + - "IoRestrictionNone|IoRestrictionInputOnly|IoRestrictionOutputOnly|" + - "IoRestrictionNoneAndPreserve|Lock|NoLock|MTR|MEQ|MLE|MLT|MGE|MGT|" + - "MaxFixed|MaxNotFixed|Cacheable|WriteCombining|Prefetchable|NonCacheable|" + - "MinFixed|MinNotFixed|" + - "ParityTypeNone|ParityTypeSpace|ParityTypeMark|ParityTypeOdd|ParityTypeEven|" + - "PullDefault|PullUp|PullDown|PullNone|PolarityHigh|PolarityLow|" + - "ISAOnlyRanges|NonISAOnlyRanges|EntireRange|ReadWrite|ReadOnly|" + - "UserDefRegionSpace|SystemIO|SystemMemory|PCI_Config|EmbeddedControl|" + - "SMBus|SystemCMOS|PciBarTarget|IPMI|GeneralPurposeIO|GenericSerialBus|" + - "ResourceConsumer|ResourceProducer|Serialized|NotSerialized|" + - "Shared|Exclusive|SharedAndWake|ExclusiveAndWake|ControllerInitiated|DeviceInitiated|" + - "StopBitsZero|StopBitsOne|StopBitsOnePlusHalf|StopBitsTwo|" + - "Width8Bit|Width16Bit|Width32Bit|Width64Bit|Width128Bit|Width256Bit|" + - "SparseTranslation|DenseTranslation|TypeTranslation|TypeStatic|" + - "Preserve|WriteAsOnes|WriteAsZeros|Transfer8|Transfer16|Transfer8_16|" + - "ThreeWireMode|FourWireMode" - ); - - var storageTypes = ( - "UnknownObj|IntObj|StrObj|BuffObj|PkgObj|FieldUnitObj|DeviceObj|" + - "EventObj|MethodObj|MutexObj|OpRegionObj|PowerResObj|ProcessorObj|" + - "ThermalZoneObj|BuffFieldObj|DDBHandleObj" - ); - - var builtinConstants = ( - "__FILE__|__PATH__|__LINE__|__DATE__|__IASL__" - ); - - var strNumbers = ( - "One|Ones|Zero" - ); - - var deprecated = ( - "Memory24|Processor" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.numeric": strNumbers, - "keyword.operator": keywordOperators, - "constant.language": builtinConstants, - "storage.type": storageTypes, - "constant.library": flags, - "invalid.deprecated": deprecated - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // ignored fields / comments - regex : "\\\[", - next : "ignoredfield" - }, { - token : "variable", - regex : "\\Local[0-7]|\\Arg[0-6]" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:define|elif|else|endif|error|if|ifdef|ifndef|include|includebuffer|line|pragma|undef|warning)\\b", - next : "directive" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "constant.character", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", - regex : /[0-9]+\b/ - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : /[!\~\*\/%+-<>\^|=&]/ - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "ignoredfield" : [ - { - token : "comment", // closing ignored fields / comments - regex : "\\\]", - next : "start" - }, { - defaultToken : "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>*s", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]*s', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - }; - - oop.inherits(ASLHighlightRules, TextHighlightRules); - - exports.ASLHighlightRules = ASLHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/asl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asl_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var ASLHighlightRules = require("./asl_highlight_rules").ASLHighlightRules; - var FoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function () { - this.HighlightRules = ASLHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function () { - this.$id = "ace/mode/asl"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/asl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-assembly_x86.js b/src-noconflict/mode-assembly_x86.js deleted file mode 100644 index de89e60..0000000 --- a/src-noconflict/mode-assembly_x86.js +++ /dev/null @@ -1,193 +0,0 @@ -ace.define("ace/mode/assembly_x86_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AssemblyX86HighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.control.assembly', - regex: '\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b', - caseInsensitive: true }, - { token: 'variable.parameter.register.assembly', - regex: '\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b', - caseInsensitive: true }, - { token: 'constant.character.decimal.assembly', - regex: '\\b[0-9]+\\b' }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b0x[A-F0-9]+\\b', - caseInsensitive: true }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b[A-F0-9]+h\\b', - caseInsensitive: true }, - { token: 'string.assembly', regex: /'([^\\']|\\.)*'/ }, - { token: 'string.assembly', regex: /"([^\\"]|\\.)*"/ }, - { token: 'support.function.directive.assembly', - regex: '^\\[', - push: - [ { token: 'support.function.directive.assembly', - regex: '\\]$', - next: 'pop' }, - { defaultToken: 'support.function.directive.assembly' } ] }, - { token: - [ 'support.function.directive.assembly', - 'support.function.directive.assembly', - 'entity.name.function.assembly' ], - regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' }, - { token: 'support.function.directive.assembly', - regex: '^endstruc\\b' }, - { token: - [ 'support.function.directive.assembly', - 'entity.name.function.assembly', - 'support.function.directive.assembly', - 'constant.character.assembly' ], - regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' }, - { token: 'support.function.directive.assembly', - regex: '^%endmacro' }, - { token: - [ 'text', - 'support.function.directive.assembly', - 'text', - 'entity.name.function.assembly' ], - regex: '(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)', - caseInsensitive: true }, - { token: 'support.function.directive.assembly', - regex: '\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b', - caseInsensitive: true }, - { token: 'entity.name.function.assembly', regex: '^\\s*%%[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^\\s*%\\$[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?:' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?\\b' }, - { token: 'comment.assembly', regex: ';.*$' } ] - }; - - this.normalizeRules(); -}; - -AssemblyX86HighlightRules.metaData = { fileTypes: [ 'asm' ], - name: 'Assembly x86', - scopeName: 'source.assembly' }; - - -oop.inherits(AssemblyX86HighlightRules, TextHighlightRules); - -exports.AssemblyX86HighlightRules = AssemblyX86HighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/assembly_x86",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_x86_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AssemblyX86HighlightRules = require("./assembly_x86_highlight_rules").AssemblyX86HighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = AssemblyX86HighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = [";"]; - this.$id = "ace/mode/assembly_x86"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/assembly_x86"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-autohotkey.js b/src-noconflict/mode-autohotkey.js deleted file mode 100644 index c18b349..0000000 --- a/src-noconflict/mode-autohotkey.js +++ /dev/null @@ -1,244 +0,0 @@ -ace.define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AutoHotKeyHighlightRules = function() { - var autoItKeywords = 'And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|' + - 'Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|' + - 'ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|' + - 'ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|' + - 'AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters'; - var atKeywords = 'AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR'; - - this.$rules = { start: - [ { token: 'comment.line.ahk', regex: '(?:^| );.*$' }, - { token: 'comment.block.ahk', - regex: '/\\*', push: - [ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block.ahk' } ] }, - { token: 'doc.comment.ahk', - regex: '#cs', push: - [ { token: 'doc.comment.ahk', regex: '#ce', next: 'pop' }, - { defaultToken: 'doc.comment.ahk' } ] }, - { token: 'keyword.command.ahk', - regex: '(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b', - caseInsensitive: true }, - { token: 'keyword.control.ahk', - regex: '(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b', - caseInsensitive: true }, - { token: 'support.function.ahk', - regex: '(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b', - caseInsensitive: true }, - { token: 'variable.predefined.ahk', - regex: '(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b', - caseInsensitive: true }, - { token: 'support.constant.ahk', - regex: '(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b', - caseInsensitive: true }, - { token: 'variable.parameter', - regex: '(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b', - caseInsensitive: true }, - { keywordMap: {"constant.language": autoItKeywords}, regex: '\\w+\\b'}, - { keywordMap: {"variable.function": atKeywords}, regex: '@\\w+\\b'}, - { token : "constant.numeric", regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, - { token: 'keyword.operator.ahk', - regex: '=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-' }, - { token: 'punctuation.ahk', - regex: /#|`|::|,|%/ }, - { token: 'paren', - regex: /[{}()]/ }, - { token: - [ 'punctuation.quote.double', - 'string.quoted.ahk', - 'punctuation.quote.double' ], - regex: '(")((?:[^"]|"")*)(")' }, - { token: [ 'label.ahk', 'punctuation.definition.label.ahk' ], - regex: '^([^: ]+)(:)(?!:)' } ] }; - - this.normalizeRules(); -}; - -AutoHotKeyHighlightRules.metaData = { name: 'AutoHotKey', - scopeName: 'source.ahk', - fileTypes: [ 'ahk' ], - foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '^\\s*\\*/|^\\s*\\}' }; - - -oop.inherits(AutoHotKeyHighlightRules, TextHighlightRules); - -exports.AutoHotKeyHighlightRules = AutoHotKeyHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var AutoHotKeyHighlightRules = require("./autohotkey_highlight_rules").AutoHotKeyHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = AutoHotKeyHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/autohotkey"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/autohotkey"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-batchfile.js b/src-noconflict/mode-batchfile.js deleted file mode 100644 index b4d9c5e..0000000 --- a/src-noconflict/mode-batchfile.js +++ /dev/null @@ -1,230 +0,0 @@ -ace.define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var BatchFileHighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.command.dosbatch', - regex: '\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b', - caseInsensitive: true }, - { token: 'keyword.control.statement.dosbatch', - regex: '\\b(?:goto|call|exit)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.if.dosbatch', - regex: '\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.dosbatch', - regex: '\\b(?:if|else)\\b', - caseInsensitive: true }, - { token: 'keyword.control.repeat.dosbatch', - regex: '\\bfor\\b', - caseInsensitive: true }, - { token: 'keyword.operator.dosbatch', - regex: '\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b' }, - { token: ['doc.comment', 'comment'], - regex: '(?:^|\\b)(rem)($|\\s.*$)', - caseInsensitive: true }, - { token: 'comment.line.colons.dosbatch', - regex: '::.*$' }, - { include: 'variable' }, - { token: 'punctuation.definition.string.begin.shell', - regex: '"', - push: [ - { token: 'punctuation.definition.string.end.shell', regex: '"', next: 'pop' }, - { include: 'variable' }, - { defaultToken: 'string.quoted.double.dosbatch' } ] }, - { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' }, - { token: 'keyword.operator.redirect.shell', - regex: '&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>' } ], - variable: [ - { token: 'constant.numeric', regex: '%%\\w+|%[*\\d]|%\\w+%'}, - { token: 'constant.numeric', regex: '%~\\d+'}, - { token: ['markup.list', 'constant.other', 'markup.list'], - regex: '(%)(\\w+)(%?)' }]}; - - this.normalizeRules(); -}; - -BatchFileHighlightRules.metaData = { name: 'Batch File', - scopeName: 'source.dosbatch', - fileTypes: [ 'bat' ] }; - - -oop.inherits(BatchFileHighlightRules, TextHighlightRules); - -exports.BatchFileHighlightRules = BatchFileHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var BatchFileHighlightRules = require("./batchfile_highlight_rules").BatchFileHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = BatchFileHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "::"; - this.blockComment = ""; - this.$id = "ace/mode/batchfile"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/batchfile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-c9search.js b/src-noconflict/mode-c9search.js deleted file mode 100644 index 4704ca7..0000000 --- a/src-noconflict/mode-c9search.js +++ /dev/null @@ -1,293 +0,0 @@ -ace.define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -function safeCreateRegexp(source, flag) { - try { - return new RegExp(source, flag); - } catch(e) {} -} - -var C9SearchHighlightRules = function() { - this.$rules = { - "start" : [ - { - tokenNames : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], - regex : /(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/, - onMatch : function(val, state, stack) { - var values = this.splitRegex.exec(val); - var types = this.tokenNames; - var tokens = [{ - type: types[0], - value: values[1] - }, { - type: types[1], - value: values[2] - }]; - - if (values[3]) { - if (values[3] == " ") - tokens[1] = { type: types[1], value: values[2] + " " }; - else - tokens.push({ type: types[1], value: values[3] }); - } - var regex = stack[1]; - var str = values[4]; - - var m; - var last = 0; - if (regex && regex.exec) { - regex.lastIndex = 0; - while (m = regex.exec(str)) { - var skipped = str.substring(last, m.index); - last = regex.lastIndex; - if (skipped) - tokens.push({type: types[2], value: skipped}); - if (m[0]) - tokens.push({type: types[3], value: m[0]}); - else if (!skipped) - break; - } - } - if (last < str.length) - tokens.push({type: types[2], value: str.substr(last)}); - return tokens; - } - }, - { - regex : "^Searching for [^\\r\\n]*$", - onMatch: function(val, state, stack) { - var parts = val.split("\x01"); - if (parts.length < 3) - return "text"; - - var options, search; - - var i = 0; - var tokens = [{ - value: parts[i++] + "'", - type: "text" - }, { - value: search = parts[i++], - type: "text" // "c9searchresults.keyword" - }, { - value: "'" + parts[i++], - type: "text" - }]; - if (parts[2] !== " in") { - tokens.push({ - value: "'" + parts[i++] + "'", - type: "text" - }, { - value: parts[i++], - type: "text" - }); - } - tokens.push({ - value: " " + parts[i++] + " ", - type: "text" - }); - if (parts[i+1]) { - options = parts[i+1]; - tokens.push({ - value: "(" + parts[i+1] + ")", - type: "text" - }); - i += 1; - } else { - i -= 1; - } - while (i++ < parts.length) { - parts[i] && tokens.push({ - value: parts[i], - type: "text" - }); - } - - if (search) { - if (!/regex/.test(options)) - search = lang.escapeRegExp(search); - if (/whole/.test(options)) - search = "\\b" + search + "\\b"; - } - - var regex = search && safeCreateRegexp( - "(" + search + ")", - / sensitive/.test(options) ? "g" : "ig" - ); - if (regex) { - stack[0] = state; - stack[1] = regex; - } - - return tokens; - } - }, - { - regex : "^(?=Found \\d+ matches)", - token : "text", - next : "numbers" - }, - { - token : "string", // single line - regex : "^\\S:?[^:]+", - next : "numbers" - } - ], - numbers:[{ - regex : "\\d+", - token : "constant.numeric" - }, { - regex : "$", - token : "text", - next : "start" - }] - }; - this.normalizeRules(); -}; - -oop.inherits(C9SearchHighlightRules, TextHighlightRules); - -exports.C9SearchHighlightRules = C9SearchHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^(\S.*:|Searching for.*)$/; - this.foldingStopMarker = /^(\s+|Found.*)$/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var lines = session.doc.getAllLines(row); - var line = lines[row]; - var level1 = /^(Found.*|Searching for.*)$/; - var level2 = /^(\S.*:|\s*)$/; - var re = level1.test(line) ? level1 : level2; - - var startRow = row; - var endRow = row; - - if (this.foldingStartMarker.test(line)) { - for (var i = row + 1, l = session.getLength(); i < l; i++) { - if (re.test(lines[i])) - break; - } - endRow = i; - } - else if (this.foldingStopMarker.test(line)) { - for (var i = row - 1; i >= 0; i--) { - line = lines[i]; - if (re.test(line)) - break; - } - startRow = i; - } - if (startRow != endRow) { - var col = line.length; - if (re === level1) - col = line.search(/\(Found[^)]+\)$|$/); - return new Range(startRow, col, endRow, 0); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var C9StyleFoldMode = require("./folding/c9search").FoldMode; - -var Mode = function() { - this.HighlightRules = C9SearchHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new C9StyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c9search"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/c9search"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-c_cpp.js b/src-noconflict/mode-c_cpp.js deleted file mode 100644 index 20f7722..0000000 --- a/src-noconflict/mode-c_cpp.js +++ /dev/null @@ -1,503 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + - "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "//$", - next : "start" - }, { - token : "comment", - regex : "//", - next : "singleLineComment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "constant.language.escape", regex: formatRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : 'R"\\(', - stateName: "rawString", - next: [ - { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; - this.snippetFileId = "ace/snippets/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/c_cpp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-cirru.js b/src-noconflict/mode-cirru.js deleted file mode 100644 index e78114b..0000000 --- a/src-noconflict/mode-cirru.js +++ /dev/null @@ -1,210 +0,0 @@ -ace.define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CirruHighlightRules = function() { - this.$rules = { - start: [{ - token: 'constant.numeric', - regex: /[\d\.]+/ - }, { - token: 'comment.line.double-dash', - regex: /--/, - next: 'comment' - }, { - token: 'storage.modifier', - regex: /\(/ - }, { - token: 'storage.modifier', - regex: /,/, - next: 'line' - }, { - token: 'support.function', - regex: /[^\(\)"\s{}\[\]]+/, - next: 'line' - }, { - token: 'string.quoted.double', - regex: /"/, - next: 'string' - }, { - token: 'storage.modifier', - regex: /\)/ - }], - comment: [{ - token: 'comment.line.double-dash', - regex: / +[^\n]+/, - next: 'start' - }], - string: [{ - token: 'string.quoted.double', - regex: /"/, - next: 'line' - }, { - token: 'constant.character.escape', - regex: /\\/, - next: 'escape' - }, { - token: 'string.quoted.double', - regex: /[^\\"]+/ - }], - escape: [{ - token: 'constant.character.escape', - regex: /./, - next: 'string' - }], - line: [{ - token: 'constant.numeric', - regex: /[\d\.]+/ - }, { - token: 'markup.raw', - regex: /^\s*/, - next: 'start' - }, { - token: 'storage.modifier', - regex: /\$/, - next: 'start' - }, { - token: 'variable.parameter', - regex: /[^\(\)"\s{}\[\]]+/ - }, { - token: 'storage.modifier', - regex: /\(/, - next: 'start' - }, { - token: 'storage.modifier', - regex: /\)/ - }, { - token: 'markup.raw', - regex: /^ */, - next: 'start' - }, { - token: 'string.quoted.double', - regex: /"/, - next: 'string' - }] - }; - -}; - -oop.inherits(CirruHighlightRules, TextHighlightRules); - -exports.CirruHighlightRules = CirruHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CirruHighlightRules = require("./cirru_highlight_rules").CirruHighlightRules; -var CoffeeFoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = CirruHighlightRules; - this.foldingRules = new CoffeeFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.$id = "ace/mode/cirru"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/cirru"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-clojure.js b/src-noconflict/mode-clojure.js deleted file mode 100644 index c51a152..0000000 --- a/src-noconflict/mode-clojure.js +++ /dev/null @@ -1,315 +0,0 @@ -ace.define("ace/mode/clojure_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - - -var ClojureHighlightRules = function() { - - var builtinFunctions = ( - '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' + - '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' + - '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' + - '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' + - '*read-eval* *source-path* *use-context-classloader* ' + - '*warn-on-reflection* + - -> ->> .. / < <= = ' + - '== > > >= >= accessor aclone ' + - 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' + - 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' + - 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' + - 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' + - 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' + - 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' + - 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' + - 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' + - 'char-escape-string char-name-string char? chars chunk chunk-append ' + - 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' + - 'class class? clear-agent-errors clojure-version coll? comment commute ' + - 'comp comparator compare compare-and-set! compile complement concat cond ' + - 'condp conj conj! cons constantly construct-proxy contains? count ' + - 'counted? create-ns create-struct cycle dec decimal? declare definline ' + - 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' + - 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' + - 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' + - 'double-array doubles drop drop-last drop-while empty empty? ensure ' + - 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' + - 'find-doc find-ns find-var first float float-array float? floats flush ' + - 'fn fn? fnext for force format future future-call future-cancel ' + - 'future-cancelled? future-done? future? gen-class gen-interface gensym ' + - 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' + - 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' + - 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' + - 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' + - 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' + - 'list* list? load load-file load-reader load-string loaded-libs locking ' + - 'long long-array longs loop macroexpand macroexpand-1 make-array ' + - 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' + - 'merge-with meta method-sig methods min min-key mod name namespace neg? ' + - 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' + - 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' + - 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' + - 'or parents partial partition pcalls peek persistent! pmap pop pop! ' + - 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' + - 'primitives-classnames print print-ctor print-doc print-dup print-method ' + - 'print-namespace-doc print-simple print-special-doc print-str printf ' + - 'println println-str prn prn-str promise proxy proxy-call-with-super ' + - 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' + - 'rand rand-int range ratio? rational? rationalize re-find re-groups ' + - 're-matcher re-matches re-pattern re-seq read read-line read-string ' + - 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' + - 'refer refer-clojure release-pending-sends rem remove remove-method ' + - 'remove-ns remove-watch repeat repeatedly replace replicate require ' + - 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' + - 'rsubseq second select-keys send send-off seq seq? seque sequence ' + - 'sequential? set set-validator! set? short short-array shorts ' + - 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' + - 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' + - 'split-at split-with str stream? string? struct struct-map subs subseq ' + - 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' + - 'take-last take-nth take-while test the-ns time to-array to-array-2d ' + - 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' + - 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' + - 'unchecked-remainder unchecked-subtract underive unquote ' + - 'unquote-splicing update-in update-proxy use val vals var-get var-set ' + - 'var? vary-meta vec vector vector? when when-first when-let when-not ' + - 'while with-bindings with-bindings* with-in-str with-loading-context ' + - 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' + - 'zero? zipmap' - ); - - var keywords = ('throw try var ' + - 'def do fn if let loop monitor-enter monitor-exit new quote recur set!' - ); - - var buildinConstants = ("true false nil"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier", false, " "); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : ";.*$" - }, { - token : "keyword", //parens - regex : "[\\(|\\)]" - }, { - token : "keyword", //lists - regex : "[\\'\\(]" - }, { - token : "keyword", //vectors - regex : "[\\[|\\]]" - }, { - token : "keyword", //sets and maps - regex : "[\\{|\\}|\\#\\{|\\#\\}]" - }, { - token : "keyword", // ampersands - regex : '[\\&]' - }, { - token : "keyword", // metadata - regex : '[\\#\\^\\{]' - }, { - token : "keyword", // anonymous fn syntactic sugar - regex : '[\\%]' - }, { - token : "keyword", // deref reader macro - regex : '[@]' - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language", - regex : '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" - }, { - token : "string", // single line - regex : '"', - next: "string" - }, { - token : "constant", // symbol - regex : /:[^()\[\]{}'"\^%`,;\s]+/ - }, { - token : "string.regexp", //Regular Expressions - regex : '/#"(?:\\.|(?:\\")|[^""\n])*"/g' - } - - ], - "string" : [ - { - token : "constant.language.escape", - regex : "\\\\.|\\\\$" - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - } - ] - }; -}; - -oop.inherits(ClojureHighlightRules, TextHighlightRules); - -exports.ClojureHighlightRules = ClojureHighlightRules; -}); - -ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingParensOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\)/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\))/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - var match = line.match(/^(\s+)/); - if (match) { - return match[1]; - } - - return ""; - }; - -}).call(MatchingParensOutdent.prototype); - -exports.MatchingParensOutdent = MatchingParensOutdent; -}); - -ace.define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules; -var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; - -var Mode = function() { - this.HighlightRules = ClojureHighlightRules; - this.$outdent = new MatchingParensOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - this.minorIndentFunctions = ["defn", "defn-", "defmacro", "def", "deftest", "testing"]; - - this.$toIndent = function(str) { - return str.split('').map(function(ch) { - if (/\s/.exec(ch)) { - return ch; - } else { - return ' '; - } - }).join(''); - }; - - this.$calculateIndent = function(line, tab) { - var baseIndent = this.$getIndent(line); - var delta = 0; - var isParen, ch; - for (var i = line.length - 1; i >= 0; i--) { - ch = line[i]; - if (ch === '(') { - delta--; - isParen = true; - } else if (ch === '(' || ch === '[' || ch === '{') { - delta--; - isParen = false; - } else if (ch === ')' || ch === ']' || ch === '}') { - delta++; - } - if (delta < 0) { - break; - } - } - if (delta < 0 && isParen) { - i += 1; - var iBefore = i; - var fn = ''; - while (true) { - ch = line[i]; - if (ch === ' ' || ch === '\t') { - if(this.minorIndentFunctions.indexOf(fn) !== -1) { - return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } else { - return this.$toIndent(line.substring(0, i + 1)); - } - } else if (ch === undefined) { - return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } - fn += line[i]; - i++; - } - } else if(delta < 0 && !isParen) { - return this.$toIndent(line.substring(0, i+1)); - } else if(delta > 0) { - baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); - return baseIndent; - } else { - return baseIndent; - } - }; - - this.getNextLineIndent = function(state, line, tab) { - return this.$calculateIndent(line, tab); - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/clojure"; - this.snippetFileId = "ace/snippets/clojure"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/clojure"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-cobol.js b/src-noconflict/mode-cobol.js deleted file mode 100644 index 6dd84ce..0000000 --- a/src-noconflict/mode-cobol.js +++ /dev/null @@ -1,101 +0,0 @@ -ace.define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CobolHighlightRules = function() { -var keywords = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|" + -"AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|" + -"ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|" + -"TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|" + -"UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|" + -"PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|" + -"CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|" + -"COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|" + -"RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|" + -"DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|" + -"ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|" + -"EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "\\*.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(CobolHighlightRules, TextHighlightRules); - -exports.CobolHighlightRules = CobolHighlightRules; -}); - -ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CobolHighlightRules = require("./cobol_highlight_rules").CobolHighlightRules; - -var Mode = function() { - this.HighlightRules = CobolHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "*"; - - this.$id = "ace/mode/cobol"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/cobol"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-coffee.js b/src-noconflict/mode-coffee.js deleted file mode 100644 index dc11759..0000000 --- a/src-noconflict/mode-coffee.js +++ /dev/null @@ -1,400 +0,0 @@ -ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes|yield|export|import|default" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|function|var|void|with|enum|implements|" + - "interface|let|package|private|protected|public|static" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift() || ""; - if (this.next.indexOf("string") != -1) - return "paren.string"; - } - return "paren"; - } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\.{1,3}" - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" - }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" - }, { - token : "string.regex", - regex : "\\S+" - }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" - }, { - defaultToken : "comment" - }] - }; - this.normalizeRules(); - } - - exports.CoffeeHighlightRules = CoffeeHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; -var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var FoldMode = require("./folding/coffee").FoldMode; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); - -function Mode() { - this.HighlightRules = Rules; - this.$outdent = new Outdent(); - this.foldingRules = new FoldMode(); -} - -oop.inherits(Mode, TextMode); - -(function() { - var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; - - this.lineCommentStart = "#"; - this.blockComment = {start: "###", end: "###"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && - state === 'start' && indenter.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/coffee"; - this.snippetFileId = "ace/snippets/coffee"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/coffee"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-coldfusion.js b/src-noconflict/mode-coldfusion.js deleted file mode 100644 index 91414fd..0000000 --- a/src-noconflict/mode-coldfusion.js +++ /dev/null @@ -1,2596 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var ColdfusionHighlightRules = function() { - HtmlHighlightRules.call(this); - this.$rules.tag[2].token = function (start, tag) { - var group = tag.slice(0,2) == "cf" ? "keyword" : "meta.tag"; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - group + ".tag-name.xml"]; - }; - - var jsAndCss = Object.keys(this.$rules).filter(function(x) { - return /^(js|css)-/.test(x); - }); - this.embedRules({ - cfmlComment: [ - { regex: "", token: "comment.end", next: "pop"}, - { defaultToken: "comment"} - ] - }, "", [ - { regex: "", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/csound_document_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_orchestra_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; -var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundDocumentHighlightRules = function() { - - var orchestraHighlightRules = new CsoundOrchestraHighlightRules("csound-"); - var scoreHighlightRules = new CsoundScoreHighlightRules("csound-score-"); - - this.$rules = { - "start": [ - { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : /(<)(CsoundSynthesi[sz]er)(>)/, - next : "synthesizer" - }, - {defaultToken : "text.csound-document"} - ], - - "synthesizer": [ - { - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "start" - }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)(CsInstruments)(>)", - next : orchestraHighlightRules.embeddedRulePrefix + "start" - }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)(CsScore)(>)", - next : scoreHighlightRules.embeddedRulePrefix + "start" - }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)([Hh][Tt][Mm][Ll])(>)", - next : "html-start" - } - ] - }; - - this.embedRules(orchestraHighlightRules.getRules(), orchestraHighlightRules.embeddedRulePrefix, [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); - this.embedRules(scoreHighlightRules.getRules(), scoreHighlightRules.embeddedRulePrefix, [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); - this.embedRules(HtmlHighlightRules, "html-", [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); - - this.normalizeRules(); -}; - -oop.inherits(CsoundDocumentHighlightRules, TextHighlightRules); - -exports.CsoundDocumentHighlightRules = CsoundDocumentHighlightRules; -}); - -ace.define("ace/mode/csound_document",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_document_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CsoundDocumentHighlightRules = require("./csound_document_highlight_rules").CsoundDocumentHighlightRules; - -var Mode = function() { - this.HighlightRules = CsoundDocumentHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/csound_document"; - this.snippetFileId = "ace/snippets/csound_document"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/csound_document"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-csound_orchestra.js b/src-noconflict/mode-csound_orchestra.js deleted file mode 100644 index 74a6438..0000000 --- a/src-noconflict/mode-csound_orchestra.js +++ /dev/null @@ -1,3035 +0,0 @@ -ace.define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundPreprocessorHighlightRules = function(embeddedRulePrefix) { - - this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix; - - this.semicolonComments = { - token : "comment.line.semicolon.csound", - regex : ";.*$" - }; - - this.comments = [ - { - token : "punctuation.definition.comment.begin.csound", - regex : "/\\*", - push : [ - { - token : "punctuation.definition.comment.end.csound", - regex : "\\*/", - next : "pop" - }, { - defaultToken: "comment.block.csound" - } - ] - }, { - token : "comment.line.double-slash.csound", - regex : "//.*$" - }, - this.semicolonComments - ]; - - this.macroUses = [ - { - token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], - regex : /(\$[A-Z_a-z]\w*\.?)(\()/, - next : "macro parameter value list" - }, { - token : "entity.name.function.preprocessor.csound", - regex : /\$[A-Z_a-z]\w*(?:\.|\b)/ - } - ]; - - this.numbers = [ - { - token : "constant.numeric.float.csound", - regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ - }, { - token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], - regex : /(0[Xx])([0-9A-Fa-f]+)/ - }, { - token : "constant.numeric.integer.decimal.csound", - regex : /\d+/ - } - ]; - - this.bracedStringContents = [ - { - token : "constant.character.escape.csound", - regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/ - }, - { - token : "constant.character.placeholder.csound", - regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ - }, { - token : "constant.character.escape.csound", - regex : /%%/ - } - ]; - - this.quotedStringContents = [ - this.macroUses, - this.bracedStringContents - ]; - - var start = [ - this.comments, - - { - token : "keyword.preprocessor.csound", - regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ - }, { - token : "keyword.preprocessor.csound", - regex : /#include/, - push : [ - this.comments, - { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" - } - ] - }, { - token : "keyword.preprocessor.csound", - regex : /#includestr/, - push : [ - this.comments, - { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" - } - ] - }, { - token : "keyword.preprocessor.csound", - regex : /#[ \t]*define/, - next : "define directive" - }, { - token : "keyword.preprocessor.csound", - regex : /#(?:ifn?def|undef)\b/, - next : "macro directive" - }, - - this.macroUses - ]; - - this.$rules = { - "start": start, - - "define directive": [ - this.comments, - { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ - }, { - token : "punctuation.definition.macro-parameter-name-list.begin.csound", - regex : /\(/, - next : "macro parameter name list" - }, { - token : "punctuation.definition.macro.begin.csound", - regex : /#/, - next : "macro body" - } - ], - "macro parameter name list": [ - { - token : "variable.parameter.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ - }, { - token : "punctuation.definition.macro-parameter-name-list.end.csound", - regex : /\)/, - next : "define directive" - } - ], - "macro body": [ - { - token : "constant.character.escape.csound", - regex : /\\#/ - }, { - token : "punctuation.definition.macro.end.csound", - regex : /#/, - next : "start" - }, - start - ], - - "macro directive": [ - this.comments, - { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/, - next : "start" - } - ], - - "macro parameter value list": [ - { - token : "punctuation.definition.macro-parameter-value-list.end.csound", - regex : /\)/, - next : "start" - }, { - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "macro parameter value quoted string" - }, this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" - }), { - token : "punctuation.macro-parameter-value-separator.csound", - regex : "[#']" - } - ], - "macro parameter value quoted string": [ - { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ - }, { - token : "invalid.illegal.csound", - regex : /[#'()]/ - }, { - token : "punctuation.definition.string.end.csound", - regex : /"/, - next : "macro parameter value list" - }, - this.quotedStringContents, - { - defaultToken: "string.quoted.csound" - } - ], - "macro parameter value parenthetical": [ - { - token : "constant.character.escape.csound", - regex : /\\\)/ - }, this.popRule({ - token : "punctuation.macro-parameter-value-parenthetical.end.csound", - regex : /\)/ - }), this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" - }), - start - ] - }; -}; - -oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); - -(function() { - - this.pushRule = function(params) { - if (Array.isArray(params.next)) { - for (var i = 0; i < params.next.length; i++) { - params.next[i] = this.embeddedRulePrefix + params.next[i]; - } - } - - return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { - if (stack.length === 0) - stack.push(currentState); - if (Array.isArray(params.next)) { - for (var i = 0; i < params.next.length; i++) { - stack.push(params.next[i]); - } - } else { - stack.push(params.next); - } - this.next = stack[stack.length - 1]; - return params.token; - }, - - get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, - set next(next) { - if (!Array.isArray(params.next)) { - params.next = next; - } - }, - - get token() { return params.token; } - }; - }; - - this.popRule = function(params) { - if (params.next) { - params.next = this.embeddedRulePrefix + params.next; - } - - return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { - stack.pop(); - if (params.next) { - stack.push(params.next); - this.next = stack[stack.length - 1]; - } else { - this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); - } - return params.token; - } - }; - }; - -}).call(CsoundPreprocessorHighlightRules.prototype); - -exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; -}); - -ace.define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; - -var CsoundScoreHighlightRules = function(embeddedRulePrefix) { - - CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); - - this.quotedStringContents.push({ - token : "invalid.illegal.csound-score", - regex : /[^"]*$/ - }); - - var start = this.$rules.start; - start.push( - { - token : "keyword.control.csound-score", - regex : /[aBbCdefiqstvxy]/ - }, { - token : "invalid.illegal.csound-score", - regex : /w/ - }, { - token : "constant.numeric.language.csound-score", - regex : /z/ - }, { - token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], - regex : /([nNpP][pP])(\d+)/ - }, { - token : "keyword.other.csound-score", - regex : /[mn]/, - push : [ - { - token : "empty", - regex : /$/, - next : "pop" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/ - } - ] - }, { - token : "keyword.preprocessor.csound-score", - regex : /r\b/, - next : "repeat section" - }, - - this.numbers, - - { - token : "keyword.operator.csound-score", - regex : "[!+\\-*/^%&|<>#~.]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound-score", - regex : /"/, - next : "quoted string" - }), - - this.pushRule({ - token : "punctuation.braced-loop.begin.csound-score", - regex : /{/, - next : "loop after left brace" - }) - ); - - this.addRules({ - "repeat section": [ - { - token : "empty", - regex : /$/, - next : "start" - }, - this.comments, - { - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "repeat section before label" - } - ], - "repeat section before label": [ - { - token : "empty", - regex : /$/, - next : "start" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/, - next : "start" - } - ], - - "quoted string": [ - this.popRule({ - token : "punctuation.definition.string.end.csound-score", - regex : /"/ - }), - this.quotedStringContents, - { - defaultToken: "string.quoted.csound-score" - } - ], - - "loop after left brace": [ - this.popRule({ - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "loop after repeat count" - }), - this.comments, - { - token : "invalid.illegal.csound", - regex : /\S.*/ - } - ], - "loop after repeat count": [ - this.popRule({ - token : "entity.name.function.preprocessor.csound-score", - regex : /[A-Z_a-z]\w*\b/, - next : "loop after macro name" - }), - this.comments, - { - token : "invalid.illegal.csound", - regex : /\S.*/ - } - ], - "loop after macro name": [ - start, - this.popRule({ - token : "punctuation.braced-loop.end.csound-score", - regex : /}/ - }) - ] - }); - - this.normalizeRules(); -}; - -oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); - -exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; -}); - -ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - - var builtinConstants = ("true|false|nil|_G|_VERSION"); - - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - - var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "support.function": functions, - "keyword.deprecated": deprecatedIn5152, - "constant.library": stdLibaries, - "constant.language": builtinConstants, - "variable.language": "self" - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var floatNumber = "(?:" + pointFloat + ")"; - - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; - }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] - }; - - this.normalizeRules(); -}; - -oop.inherits(LuaHighlightRules, TextHighlightRules); - -exports.LuaHighlightRules = LuaHighlightRules; -}); - -ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await|nonlocal" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + - "ascii|breakpoint|bytes" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "variable.language": "self|cls", - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "[uU]?"; - var strRawPre = "[rR]"; - var strFormatPre = "[fF]"; - var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token: "string", - regex: strRawPre + '"{3}', - next: "rawqqstring3" - }, { - token: "string", - regex: strRawPre + '"(?=.)', - next: "rawqqstring" - }, { - token: "string", - regex: strRawPre + "'{3}", - next: "rawqstring3" - }, { - token: "string", - regex: strRawPre + "'(?=.)", - next: "rawqstring" - }, { - token: "string", - regex: strFormatPre + '"{3}', - next: "fqqstring3" - }, { - token: "string", - regex: strFormatPre + '"(?=.)', - next: "fqqstring" - }, { - token: "string", - regex: strFormatPre + "'{3}", - next: "fqstring3" - }, { - token: "string", - regex: strFormatPre + "'(?=.)", - next: "fqstring" - },{ - token: "string", - regex: strRawFormatPre + '"{3}', - next: "rfqqstring3" - }, { - token: "string", - regex: strRawFormatPre + '"(?=.)', - next: "rfqqstring" - }, { - token: "string", - regex: strRawFormatPre + "'{3}", - next: "rfqstring3" - }, { - token: "string", - regex: strRawFormatPre + "'(?=.)", - next: "rfqstring" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token: "punctuation", - regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" - }, { - token: "paren.lparen", - regex: "[\\[\\(\\{]" - }, { - token: "paren.rparen", - regex: "[\\]\\)\\}]" - }, { - token: "text", - regex: "\\s+" - }, { - include: "constants" - }], - "qqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "qstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "qqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "qstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "fqqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "fqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rfqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring": [{ - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstringParRules": [{//TODO: nested {} - token: "paren.lparen", - regex: "[\\[\\(]" - }, { - token: "paren.rparen", - regex: "[\\]\\)]" - }, { - token: "string", - regex: "\\s+" - }, { - token: "string", - regex: "'[^']*'" - }, { - token: "string", - regex: '"[^"]*"' - }, { - token: "function.support", - regex: "(!s|!r|!a)" - }, { - include: "constants" - },{ - token: 'paren.rparen', - regex: "}", - next: 'pop' - },{ - token: 'paren.lparen', - regex: "{", - push: "fqstringParRules" - }], - "constants": [{ - token: "constant.numeric", // imaginary - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token: "constant.numeric", // float - regex: floatNumber - }, { - token: "constant.numeric", // long integer - regex: integer + "[lL]\\b" - }, { - token: "constant.numeric", // integer - regex: integer + "\\b" - }, { - token: ["punctuation", "function.support"],// method - regex: "(\\.)([a-zA-Z_]+)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }] - }; - this.normalizeRules(); -}; - -oop.inherits(PythonHighlightRules, TextHighlightRules); - -exports.PythonHighlightRules = PythonHighlightRules; -}); - -ace.define("ace/mode/csound_orchestra_highlight_rules",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/lua_highlight_rules","ace/mode/python_highlight_rules"], function(require, exports, module) { -"use strict"; - -var lang = require("../lib/lang"); -var oop = require("../lib/oop"); - -var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; -var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; - -var CsoundOrchestraHighlightRules = function(embeddedRulePrefix) { - - CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); - var opcodes = [ - "ATSadd", - "ATSaddnz", - "ATSbufread", - "ATScross", - "ATSinfo", - "ATSinterpread", - "ATSpartialtap", - "ATSread", - "ATSreadnz", - "ATSsinnoi", - "FLbox", - "FLbutBank", - "FLbutton", - "FLcloseButton", - "FLcolor", - "FLcolor2", - "FLcount", - "FLexecButton", - "FLgetsnap", - "FLgroup", - "FLgroupEnd", - "FLgroup_end", - "FLhide", - "FLhvsBox", - "FLhvsBoxSetValue", - "FLjoy", - "FLkeyIn", - "FLknob", - "FLlabel", - "FLloadsnap", - "FLmouse", - "FLpack", - "FLpackEnd", - "FLpack_end", - "FLpanel", - "FLpanelEnd", - "FLpanel_end", - "FLprintk", - "FLprintk2", - "FLroller", - "FLrun", - "FLsavesnap", - "FLscroll", - "FLscrollEnd", - "FLscroll_end", - "FLsetAlign", - "FLsetBox", - "FLsetColor", - "FLsetColor2", - "FLsetFont", - "FLsetPosition", - "FLsetSize", - "FLsetSnapGroup", - "FLsetText", - "FLsetTextColor", - "FLsetTextSize", - "FLsetTextType", - "FLsetVal", - "FLsetVal_i", - "FLsetVali", - "FLsetsnap", - "FLshow", - "FLslidBnk", - "FLslidBnk2", - "FLslidBnk2Set", - "FLslidBnk2Setk", - "FLslidBnkGetHandle", - "FLslidBnkSet", - "FLslidBnkSetk", - "FLslider", - "FLtabs", - "FLtabsEnd", - "FLtabs_end", - "FLtext", - "FLupdate", - "FLvalue", - "FLvkeybd", - "FLvslidBnk", - "FLvslidBnk2", - "FLxyin", - "JackoAudioIn", - "JackoAudioInConnect", - "JackoAudioOut", - "JackoAudioOutConnect", - "JackoFreewheel", - "JackoInfo", - "JackoInit", - "JackoMidiInConnect", - "JackoMidiOut", - "JackoMidiOutConnect", - "JackoNoteOut", - "JackoOn", - "JackoTransport", - "K35_hpf", - "K35_lpf", - "MixerClear", - "MixerGetLevel", - "MixerReceive", - "MixerSend", - "MixerSetLevel", - "MixerSetLevel_i", - "OSCbundle", - "OSCcount", - "OSCinit", - "OSCinitM", - "OSClisten", - "OSCraw", - "OSCsend", - "OSCsend_lo", - "S", - "STKBandedWG", - "STKBeeThree", - "STKBlowBotl", - "STKBlowHole", - "STKBowed", - "STKBrass", - "STKClarinet", - "STKDrummer", - "STKFMVoices", - "STKFlute", - "STKHevyMetl", - "STKMandolin", - "STKModalBar", - "STKMoog", - "STKPercFlut", - "STKPlucked", - "STKResonate", - "STKRhodey", - "STKSaxofony", - "STKShakers", - "STKSimple", - "STKSitar", - "STKStifKarp", - "STKTubeBell", - "STKVoicForm", - "STKWhistle", - "STKWurley", - "a", - "abs", - "active", - "adsr", - "adsyn", - "adsynt", - "adsynt2", - "aftouch", - "allpole", - "alpass", - "alwayson", - "ampdb", - "ampdbfs", - "ampmidi", - "ampmidicurve", - "ampmidid", - "apoleparams", - "arduinoRead", - "arduinoReadF", - "arduinoStart", - "arduinoStop", - "areson", - "aresonk", - "atone", - "atonek", - "atonex", - "autocorr", - "babo", - "balance", - "balance2", - "bamboo", - "barmodel", - "bbcutm", - "bbcuts", - "betarand", - "bexprnd", - "bformdec1", - "bformenc1", - "binit", - "biquad", - "biquada", - "birnd", - "bob", - "bpf", - "bpfcos", - "bqrez", - "butbp", - "butbr", - "buthp", - "butlp", - "butterbp", - "butterbr", - "butterhp", - "butterlp", - "button", - "buzz", - "c2r", - "cabasa", - "cauchy", - "cauchyi", - "cbrt", - "ceil", - "cell", - "cent", - "centroid", - "ceps", - "cepsinv", - "chanctrl", - "changed", - "changed2", - "chani", - "chano", - "chebyshevpoly", - "checkbox", - "chn_S", - "chn_a", - "chn_k", - "chnclear", - "chnexport", - "chnget", - "chngeta", - "chngeti", - "chngetk", - "chngetks", - "chngets", - "chnmix", - "chnparams", - "chnset", - "chnseta", - "chnseti", - "chnsetk", - "chnsetks", - "chnsets", - "chuap", - "clear", - "clfilt", - "clip", - "clockoff", - "clockon", - "cmp", - "cmplxprod", - "cntCreate", - "cntCycles", - "cntDelete", - "cntDelete_i", - "cntRead", - "cntReset", - "cntState", - "comb", - "combinv", - "compilecsd", - "compileorc", - "compilestr", - "compress", - "compress2", - "connect", - "control", - "convle", - "convolve", - "copya2ftab", - "copyf2array", - "cos", - "cosh", - "cosinv", - "cosseg", - "cossegb", - "cossegr", - "count", - "count_i", - "cps2pch", - "cpsmidi", - "cpsmidib", - "cpsmidinn", - "cpsoct", - "cpspch", - "cpstmid", - "cpstun", - "cpstuni", - "cpsxpch", - "cpumeter", - "cpuprc", - "cross2", - "crossfm", - "crossfmi", - "crossfmpm", - "crossfmpmi", - "crosspm", - "crosspmi", - "crunch", - "ctlchn", - "ctrl14", - "ctrl21", - "ctrl7", - "ctrlinit", - "ctrlpreset", - "ctrlprint", - "ctrlprintpresets", - "ctrlsave", - "ctrlselect", - "cuserrnd", - "dam", - "date", - "dates", - "db", - "dbamp", - "dbfsamp", - "dcblock", - "dcblock2", - "dconv", - "dct", - "dctinv", - "deinterleave", - "delay", - "delay1", - "delayk", - "delayr", - "delayw", - "deltap", - "deltap3", - "deltapi", - "deltapn", - "deltapx", - "deltapxw", - "denorm", - "diff", - "diode_ladder", - "directory", - "diskgrain", - "diskin", - "diskin2", - "dispfft", - "display", - "distort", - "distort1", - "divz", - "doppler", - "dot", - "downsamp", - "dripwater", - "dssiactivate", - "dssiaudio", - "dssictls", - "dssiinit", - "dssilist", - "dumpk", - "dumpk2", - "dumpk3", - "dumpk4", - "duserrnd", - "dust", - "dust2", - "envlpx", - "envlpxr", - "ephasor", - "eqfil", - "evalstr", - "event", - "event_i", - "exciter", - "exitnow", - "exp", - "expcurve", - "expon", - "exprand", - "exprandi", - "expseg", - "expsega", - "expsegb", - "expsegba", - "expsegr", - "fareylen", - "fareyleni", - "faustaudio", - "faustcompile", - "faustctl", - "faustdsp", - "faustgen", - "faustplay", - "fft", - "fftinv", - "ficlose", - "filebit", - "filelen", - "filenchnls", - "filepeak", - "filescal", - "filesr", - "filevalid", - "fillarray", - "filter2", - "fin", - "fini", - "fink", - "fiopen", - "flanger", - "flashtxt", - "flooper", - "flooper2", - "floor", - "fluidAllOut", - "fluidCCi", - "fluidCCk", - "fluidControl", - "fluidEngine", - "fluidInfo", - "fluidLoad", - "fluidNote", - "fluidOut", - "fluidProgramSelect", - "fluidSetInterpMethod", - "fmanal", - "fmax", - "fmb3", - "fmbell", - "fmin", - "fmmetal", - "fmod", - "fmpercfl", - "fmrhode", - "fmvoice", - "fmwurlie", - "fof", - "fof2", - "fofilter", - "fog", - "fold", - "follow", - "follow2", - "foscil", - "foscili", - "fout", - "fouti", - "foutir", - "foutk", - "fprintks", - "fprints", - "frac", - "fractalnoise", - "framebuffer", - "freeverb", - "ftaudio", - "ftchnls", - "ftconv", - "ftcps", - "ftexists", - "ftfree", - "ftgen", - "ftgenonce", - "ftgentmp", - "ftlen", - "ftload", - "ftloadk", - "ftlptim", - "ftmorf", - "ftom", - "ftprint", - "ftresize", - "ftresizei", - "ftsamplebank", - "ftsave", - "ftsavek", - "ftset", - "ftslice", - "ftslicei", - "ftsr", - "gain", - "gainslider", - "gauss", - "gaussi", - "gausstrig", - "gbuzz", - "genarray", - "genarray_i", - "gendy", - "gendyc", - "gendyx", - "getcfg", - "getcol", - "getftargs", - "getrow", - "getseed", - "gogobel", - "grain", - "grain2", - "grain3", - "granule", - "gtf", - "guiro", - "harmon", - "harmon2", - "harmon3", - "harmon4", - "hdf5read", - "hdf5write", - "hilbert", - "hilbert2", - "hrtfearly", - "hrtfmove", - "hrtfmove2", - "hrtfreverb", - "hrtfstat", - "hsboscil", - "hvs1", - "hvs2", - "hvs3", - "hypot", - "i", - "ihold", - "imagecreate", - "imagefree", - "imagegetpixel", - "imageload", - "imagesave", - "imagesetpixel", - "imagesize", - "in", - "in32", - "inch", - "inh", - "init", - "initc14", - "initc21", - "initc7", - "inleta", - "inletf", - "inletk", - "inletkid", - "inletv", - "ino", - "inq", - "inrg", - "ins", - "insglobal", - "insremot", - "int", - "integ", - "interleave", - "interp", - "invalue", - "inx", - "inz", - "jacktransport", - "jitter", - "jitter2", - "joystick", - "jspline", - "k", - "la_i_add_mc", - "la_i_add_mr", - "la_i_add_vc", - "la_i_add_vr", - "la_i_assign_mc", - "la_i_assign_mr", - "la_i_assign_t", - "la_i_assign_vc", - "la_i_assign_vr", - "la_i_conjugate_mc", - "la_i_conjugate_mr", - "la_i_conjugate_vc", - "la_i_conjugate_vr", - "la_i_distance_vc", - "la_i_distance_vr", - "la_i_divide_mc", - "la_i_divide_mr", - "la_i_divide_vc", - "la_i_divide_vr", - "la_i_dot_mc", - "la_i_dot_mc_vc", - "la_i_dot_mr", - "la_i_dot_mr_vr", - "la_i_dot_vc", - "la_i_dot_vr", - "la_i_get_mc", - "la_i_get_mr", - "la_i_get_vc", - "la_i_get_vr", - "la_i_invert_mc", - "la_i_invert_mr", - "la_i_lower_solve_mc", - "la_i_lower_solve_mr", - "la_i_lu_det_mc", - "la_i_lu_det_mr", - "la_i_lu_factor_mc", - "la_i_lu_factor_mr", - "la_i_lu_solve_mc", - "la_i_lu_solve_mr", - "la_i_mc_create", - "la_i_mc_set", - "la_i_mr_create", - "la_i_mr_set", - "la_i_multiply_mc", - "la_i_multiply_mr", - "la_i_multiply_vc", - "la_i_multiply_vr", - "la_i_norm1_mc", - "la_i_norm1_mr", - "la_i_norm1_vc", - "la_i_norm1_vr", - "la_i_norm_euclid_mc", - "la_i_norm_euclid_mr", - "la_i_norm_euclid_vc", - "la_i_norm_euclid_vr", - "la_i_norm_inf_mc", - "la_i_norm_inf_mr", - "la_i_norm_inf_vc", - "la_i_norm_inf_vr", - "la_i_norm_max_mc", - "la_i_norm_max_mr", - "la_i_print_mc", - "la_i_print_mr", - "la_i_print_vc", - "la_i_print_vr", - "la_i_qr_eigen_mc", - "la_i_qr_eigen_mr", - "la_i_qr_factor_mc", - "la_i_qr_factor_mr", - "la_i_qr_sym_eigen_mc", - "la_i_qr_sym_eigen_mr", - "la_i_random_mc", - "la_i_random_mr", - "la_i_random_vc", - "la_i_random_vr", - "la_i_size_mc", - "la_i_size_mr", - "la_i_size_vc", - "la_i_size_vr", - "la_i_subtract_mc", - "la_i_subtract_mr", - "la_i_subtract_vc", - "la_i_subtract_vr", - "la_i_t_assign", - "la_i_trace_mc", - "la_i_trace_mr", - "la_i_transpose_mc", - "la_i_transpose_mr", - "la_i_upper_solve_mc", - "la_i_upper_solve_mr", - "la_i_vc_create", - "la_i_vc_set", - "la_i_vr_create", - "la_i_vr_set", - "la_k_a_assign", - "la_k_add_mc", - "la_k_add_mr", - "la_k_add_vc", - "la_k_add_vr", - "la_k_assign_a", - "la_k_assign_f", - "la_k_assign_mc", - "la_k_assign_mr", - "la_k_assign_t", - "la_k_assign_vc", - "la_k_assign_vr", - "la_k_conjugate_mc", - "la_k_conjugate_mr", - "la_k_conjugate_vc", - "la_k_conjugate_vr", - "la_k_current_f", - "la_k_current_vr", - "la_k_distance_vc", - "la_k_distance_vr", - "la_k_divide_mc", - "la_k_divide_mr", - "la_k_divide_vc", - "la_k_divide_vr", - "la_k_dot_mc", - "la_k_dot_mc_vc", - "la_k_dot_mr", - "la_k_dot_mr_vr", - "la_k_dot_vc", - "la_k_dot_vr", - "la_k_f_assign", - "la_k_get_mc", - "la_k_get_mr", - "la_k_get_vc", - "la_k_get_vr", - "la_k_invert_mc", - "la_k_invert_mr", - "la_k_lower_solve_mc", - "la_k_lower_solve_mr", - "la_k_lu_det_mc", - "la_k_lu_det_mr", - "la_k_lu_factor_mc", - "la_k_lu_factor_mr", - "la_k_lu_solve_mc", - "la_k_lu_solve_mr", - "la_k_mc_set", - "la_k_mr_set", - "la_k_multiply_mc", - "la_k_multiply_mr", - "la_k_multiply_vc", - "la_k_multiply_vr", - "la_k_norm1_mc", - "la_k_norm1_mr", - "la_k_norm1_vc", - "la_k_norm1_vr", - "la_k_norm_euclid_mc", - "la_k_norm_euclid_mr", - "la_k_norm_euclid_vc", - "la_k_norm_euclid_vr", - "la_k_norm_inf_mc", - "la_k_norm_inf_mr", - "la_k_norm_inf_vc", - "la_k_norm_inf_vr", - "la_k_norm_max_mc", - "la_k_norm_max_mr", - "la_k_qr_eigen_mc", - "la_k_qr_eigen_mr", - "la_k_qr_factor_mc", - "la_k_qr_factor_mr", - "la_k_qr_sym_eigen_mc", - "la_k_qr_sym_eigen_mr", - "la_k_random_mc", - "la_k_random_mr", - "la_k_random_vc", - "la_k_random_vr", - "la_k_subtract_mc", - "la_k_subtract_mr", - "la_k_subtract_vc", - "la_k_subtract_vr", - "la_k_t_assign", - "la_k_trace_mc", - "la_k_trace_mr", - "la_k_upper_solve_mc", - "la_k_upper_solve_mr", - "la_k_vc_set", - "la_k_vr_set", - "lag", - "lagud", - "lastcycle", - "lenarray", - "lfo", - "lfsr", - "limit", - "limit1", - "lincos", - "line", - "linen", - "linenr", - "lineto", - "link_beat_force", - "link_beat_get", - "link_beat_request", - "link_create", - "link_enable", - "link_is_enabled", - "link_metro", - "link_peers", - "link_tempo_get", - "link_tempo_set", - "linlin", - "linrand", - "linseg", - "linsegb", - "linsegr", - "liveconv", - "locsend", - "locsig", - "log", - "log10", - "log2", - "logbtwo", - "logcurve", - "loopseg", - "loopsegp", - "looptseg", - "loopxseg", - "lorenz", - "loscil", - "loscil3", - "loscil3phs", - "loscilphs", - "loscilx", - "lowpass2", - "lowres", - "lowresx", - "lpcanal", - "lpcfilter", - "lpf18", - "lpform", - "lpfreson", - "lphasor", - "lpinterp", - "lposcil", - "lposcil3", - "lposcila", - "lposcilsa", - "lposcilsa2", - "lpread", - "lpreson", - "lpshold", - "lpsholdp", - "lpslot", - "lufs", - "mac", - "maca", - "madsr", - "mags", - "mandel", - "mandol", - "maparray", - "maparray_i", - "marimba", - "massign", - "max", - "max_k", - "maxabs", - "maxabsaccum", - "maxaccum", - "maxalloc", - "maxarray", - "mclock", - "mdelay", - "median", - "mediank", - "metro", - "metro2", - "mfb", - "midglobal", - "midiarp", - "midic14", - "midic21", - "midic7", - "midichannelaftertouch", - "midichn", - "midicontrolchange", - "midictrl", - "mididefault", - "midifilestatus", - "midiin", - "midinoteoff", - "midinoteoncps", - "midinoteonkey", - "midinoteonoct", - "midinoteonpch", - "midion", - "midion2", - "midiout", - "midiout_i", - "midipgm", - "midipitchbend", - "midipolyaftertouch", - "midiprogramchange", - "miditempo", - "midremot", - "min", - "minabs", - "minabsaccum", - "minaccum", - "minarray", - "mincer", - "mirror", - "mode", - "modmatrix", - "monitor", - "moog", - "moogladder", - "moogladder2", - "moogvcf", - "moogvcf2", - "moscil", - "mp3bitrate", - "mp3in", - "mp3len", - "mp3nchnls", - "mp3scal", - "mp3sr", - "mpulse", - "mrtmsg", - "ms2st", - "mtof", - "mton", - "multitap", - "mute", - "mvchpf", - "mvclpf1", - "mvclpf2", - "mvclpf3", - "mvclpf4", - "mvmfilter", - "mxadsr", - "nchnls_hw", - "nestedap", - "nlalp", - "nlfilt", - "nlfilt2", - "noise", - "noteoff", - "noteon", - "noteondur", - "noteondur2", - "notnum", - "nreverb", - "nrpn", - "nsamp", - "nstance", - "nstrnum", - "nstrstr", - "ntof", - "ntom", - "ntrpol", - "nxtpow2", - "octave", - "octcps", - "octmidi", - "octmidib", - "octmidinn", - "octpch", - "olabuffer", - "oscbnk", - "oscil", - "oscil1", - "oscil1i", - "oscil3", - "oscili", - "oscilikt", - "osciliktp", - "oscilikts", - "osciln", - "oscils", - "oscilx", - "out", - "out32", - "outall", - "outc", - "outch", - "outh", - "outiat", - "outic", - "outic14", - "outipat", - "outipb", - "outipc", - "outkat", - "outkc", - "outkc14", - "outkpat", - "outkpb", - "outkpc", - "outleta", - "outletf", - "outletk", - "outletkid", - "outletv", - "outo", - "outq", - "outq1", - "outq2", - "outq3", - "outq4", - "outrg", - "outs", - "outs1", - "outs2", - "outvalue", - "outx", - "outz", - "p", - "p5gconnect", - "p5gdata", - "pan", - "pan2", - "pareq", - "part2txt", - "partials", - "partikkel", - "partikkelget", - "partikkelset", - "partikkelsync", - "passign", - "paulstretch", - "pcauchy", - "pchbend", - "pchmidi", - "pchmidib", - "pchmidinn", - "pchoct", - "pchtom", - "pconvolve", - "pcount", - "pdclip", - "pdhalf", - "pdhalfy", - "peak", - "pgmassign", - "pgmchn", - "phaser1", - "phaser2", - "phasor", - "phasorbnk", - "phs", - "pindex", - "pinker", - "pinkish", - "pitch", - "pitchac", - "pitchamdf", - "planet", - "platerev", - "plltrack", - "pluck", - "poisson", - "pol2rect", - "polyaft", - "polynomial", - "port", - "portk", - "poscil", - "poscil3", - "pow", - "powershape", - "powoftwo", - "pows", - "prealloc", - "prepiano", - "print", - "print_type", - "printarray", - "printf", - "printf_i", - "printk", - "printk2", - "printks", - "printks2", - "println", - "prints", - "printsk", - "product", - "pset", - "ptablew", - "ptrack", - "puts", - "pvadd", - "pvbufread", - "pvcross", - "pvinterp", - "pvoc", - "pvread", - "pvs2array", - "pvs2tab", - "pvsadsyn", - "pvsanal", - "pvsarp", - "pvsbandp", - "pvsbandr", - "pvsbandwidth", - "pvsbin", - "pvsblur", - "pvsbuffer", - "pvsbufread", - "pvsbufread2", - "pvscale", - "pvscent", - "pvsceps", - "pvscfs", - "pvscross", - "pvsdemix", - "pvsdiskin", - "pvsdisp", - "pvsenvftw", - "pvsfilter", - "pvsfread", - "pvsfreeze", - "pvsfromarray", - "pvsftr", - "pvsftw", - "pvsfwrite", - "pvsgain", - "pvshift", - "pvsifd", - "pvsin", - "pvsinfo", - "pvsinit", - "pvslock", - "pvslpc", - "pvsmaska", - "pvsmix", - "pvsmooth", - "pvsmorph", - "pvsosc", - "pvsout", - "pvspitch", - "pvstanal", - "pvstencil", - "pvstrace", - "pvsvoc", - "pvswarp", - "pvsynth", - "pwd", - "pyassign", - "pyassigni", - "pyassignt", - "pycall", - "pycall1", - "pycall1i", - "pycall1t", - "pycall2", - "pycall2i", - "pycall2t", - "pycall3", - "pycall3i", - "pycall3t", - "pycall4", - "pycall4i", - "pycall4t", - "pycall5", - "pycall5i", - "pycall5t", - "pycall6", - "pycall6i", - "pycall6t", - "pycall7", - "pycall7i", - "pycall7t", - "pycall8", - "pycall8i", - "pycall8t", - "pycalli", - "pycalln", - "pycallni", - "pycallt", - "pyeval", - "pyevali", - "pyevalt", - "pyexec", - "pyexeci", - "pyexect", - "pyinit", - "pylassign", - "pylassigni", - "pylassignt", - "pylcall", - "pylcall1", - "pylcall1i", - "pylcall1t", - "pylcall2", - "pylcall2i", - "pylcall2t", - "pylcall3", - "pylcall3i", - "pylcall3t", - "pylcall4", - "pylcall4i", - "pylcall4t", - "pylcall5", - "pylcall5i", - "pylcall5t", - "pylcall6", - "pylcall6i", - "pylcall6t", - "pylcall7", - "pylcall7i", - "pylcall7t", - "pylcall8", - "pylcall8i", - "pylcall8t", - "pylcalli", - "pylcalln", - "pylcallni", - "pylcallt", - "pyleval", - "pylevali", - "pylevalt", - "pylexec", - "pylexeci", - "pylexect", - "pylrun", - "pylruni", - "pylrunt", - "pyrun", - "pyruni", - "pyrunt", - "qinf", - "qnan", - "r2c", - "rand", - "randc", - "randh", - "randi", - "random", - "randomh", - "randomi", - "rbjeq", - "readclock", - "readf", - "readfi", - "readk", - "readk2", - "readk3", - "readk4", - "readks", - "readscore", - "readscratch", - "rect2pol", - "release", - "remoteport", - "remove", - "repluck", - "reshapearray", - "reson", - "resonbnk", - "resonk", - "resonr", - "resonx", - "resonxk", - "resony", - "resonz", - "resyn", - "reverb", - "reverb2", - "reverbsc", - "rewindscore", - "rezzy", - "rfft", - "rifft", - "rms", - "rnd", - "rnd31", - "rndseed", - "round", - "rspline", - "rtclock", - "s16b14", - "s32b14", - "samphold", - "sandpaper", - "sc_lag", - "sc_lagud", - "sc_phasor", - "sc_trig", - "scale", - "scale2", - "scalearray", - "scanhammer", - "scans", - "scantable", - "scanu", - "scanu2", - "schedkwhen", - "schedkwhennamed", - "schedule", - "schedulek", - "schedwhen", - "scoreline", - "scoreline_i", - "seed", - "sekere", - "select", - "semitone", - "sense", - "sensekey", - "seqtime", - "seqtime2", - "serialBegin", - "serialEnd", - "serialFlush", - "serialPrint", - "serialRead", - "serialWrite", - "serialWrite_i", - "setcol", - "setctrl", - "setksmps", - "setrow", - "setscorepos", - "sfilist", - "sfinstr", - "sfinstr3", - "sfinstr3m", - "sfinstrm", - "sfload", - "sflooper", - "sfpassign", - "sfplay", - "sfplay3", - "sfplay3m", - "sfplaym", - "sfplist", - "sfpreset", - "shaker", - "shiftin", - "shiftout", - "signum", - "sin", - "sinh", - "sininv", - "sinsyn", - "skf", - "sleighbells", - "slicearray", - "slicearray_i", - "slider16", - "slider16f", - "slider16table", - "slider16tablef", - "slider32", - "slider32f", - "slider32table", - "slider32tablef", - "slider64", - "slider64f", - "slider64table", - "slider64tablef", - "slider8", - "slider8f", - "slider8table", - "slider8tablef", - "sliderKawai", - "sndloop", - "sndwarp", - "sndwarpst", - "sockrecv", - "sockrecvs", - "socksend", - "socksends", - "sorta", - "sortd", - "soundin", - "space", - "spat3d", - "spat3di", - "spat3dt", - "spdist", - "spf", - "splitrig", - "sprintf", - "sprintfk", - "spsend", - "sqrt", - "squinewave", - "st2ms", - "statevar", - "sterrain", - "stix", - "strcat", - "strcatk", - "strchar", - "strchark", - "strcmp", - "strcmpk", - "strcpy", - "strcpyk", - "strecv", - "streson", - "strfromurl", - "strget", - "strindex", - "strindexk", - "string2array", - "strlen", - "strlenk", - "strlower", - "strlowerk", - "strrindex", - "strrindexk", - "strset", - "strstrip", - "strsub", - "strsubk", - "strtod", - "strtodk", - "strtol", - "strtolk", - "strupper", - "strupperk", - "stsend", - "subinstr", - "subinstrinit", - "sum", - "sumarray", - "svfilter", - "svn", - "syncgrain", - "syncloop", - "syncphasor", - "system", - "system_i", - "tab", - "tab2array", - "tab2pvs", - "tab_i", - "tabifd", - "table", - "table3", - "table3kt", - "tablecopy", - "tablefilter", - "tablefilteri", - "tablegpw", - "tablei", - "tableicopy", - "tableigpw", - "tableikt", - "tableimix", - "tablekt", - "tablemix", - "tableng", - "tablera", - "tableseg", - "tableshuffle", - "tableshufflei", - "tablew", - "tablewa", - "tablewkt", - "tablexkt", - "tablexseg", - "tabmorph", - "tabmorpha", - "tabmorphak", - "tabmorphi", - "tabplay", - "tabrec", - "tabsum", - "tabw", - "tabw_i", - "tambourine", - "tan", - "tanh", - "taninv", - "taninv2", - "tbvcf", - "tempest", - "tempo", - "temposcal", - "tempoval", - "timedseq", - "timeinstk", - "timeinsts", - "timek", - "times", - "tival", - "tlineto", - "tone", - "tonek", - "tonex", - "tradsyn", - "trandom", - "transeg", - "transegb", - "transegr", - "trcross", - "trfilter", - "trhighest", - "trigExpseg", - "trigLinseg", - "trigger", - "trighold", - "trigphasor", - "trigseq", - "trim", - "trim_i", - "trirand", - "trlowest", - "trmix", - "trscale", - "trshift", - "trsplit", - "turnoff", - "turnoff2", - "turnoff2_i", - "turnoff3", - "turnon", - "tvconv", - "unirand", - "unwrap", - "upsamp", - "urandom", - "urd", - "vactrol", - "vadd", - "vadd_i", - "vaddv", - "vaddv_i", - "vaget", - "valpass", - "vaset", - "vbap", - "vbapg", - "vbapgmove", - "vbaplsinit", - "vbapmove", - "vbapz", - "vbapzmove", - "vcella", - "vclpf", - "vco", - "vco2", - "vco2ft", - "vco2ift", - "vco2init", - "vcomb", - "vcopy", - "vcopy_i", - "vdel_k", - "vdelay", - "vdelay3", - "vdelayk", - "vdelayx", - "vdelayxq", - "vdelayxs", - "vdelayxw", - "vdelayxwq", - "vdelayxws", - "vdivv", - "vdivv_i", - "vecdelay", - "veloc", - "vexp", - "vexp_i", - "vexpseg", - "vexpv", - "vexpv_i", - "vibes", - "vibr", - "vibrato", - "vincr", - "vlimit", - "vlinseg", - "vlowres", - "vmap", - "vmirror", - "vmult", - "vmult_i", - "vmultv", - "vmultv_i", - "voice", - "vosim", - "vphaseseg", - "vport", - "vpow", - "vpow_i", - "vpowv", - "vpowv_i", - "vps", - "vpvoc", - "vrandh", - "vrandi", - "vsubv", - "vsubv_i", - "vtaba", - "vtabi", - "vtabk", - "vtable1k", - "vtablea", - "vtablei", - "vtablek", - "vtablewa", - "vtablewi", - "vtablewk", - "vtabwa", - "vtabwi", - "vtabwk", - "vwrap", - "waveset", - "websocket", - "weibull", - "wgbow", - "wgbowedbar", - "wgbrass", - "wgclar", - "wgflute", - "wgpluck", - "wgpluck2", - "wguide1", - "wguide2", - "wiiconnect", - "wiidata", - "wiirange", - "wiisend", - "window", - "wrap", - "writescratch", - "wterrain", - "wterrain2", - "xadsr", - "xin", - "xout", - "xscanmap", - "xscans", - "xscansmap", - "xscanu", - "xtratim", - "xyscale", - "zacl", - "zakinit", - "zamod", - "zar", - "zarg", - "zaw", - "zawm", - "zdf_1pole", - "zdf_1pole_mode", - "zdf_2pole", - "zdf_2pole_mode", - "zdf_ladder", - "zfilter2", - "zir", - "ziw", - "ziwm", - "zkcl", - "zkmod", - "zkr", - "zkw", - "zkwm" - ]; - var deprecatedOpcodes = [ - "OSCsendA", - "array", - "beadsynt", - "beosc", - "bformdec", - "bformenc", - "buchla", - "copy2ftab", - "copy2ttab", - "getrowlin", - "hrtfer", - "ktableseg", - "lentab", - "lua_exec", - "lua_iaopcall", - "lua_iaopcall_off", - "lua_ikopcall", - "lua_ikopcall_off", - "lua_iopcall", - "lua_iopcall_off", - "lua_opdef", - "maxtab", - "mintab", - "mp3scal_check", - "mp3scal_load", - "mp3scal_load2", - "mp3scal_play", - "mp3scal_play2", - "pop", - "pop_f", - "ptable", - "ptable3", - "ptablei", - "ptableiw", - "push", - "push_f", - "pvsgendy", - "scalet", - "signalflowgraph", - "sndload", - "socksend_k", - "soundout", - "soundouts", - "specaddm", - "specdiff", - "specdisp", - "specfilt", - "spechist", - "specptrk", - "specscal", - "specsum", - "spectrum", - "stack", - "sumTableFilter", - "sumtab", - "systime", - "tabgen", - "tableiw", - "tabmap", - "tabmap_i", - "tabrowlin", - "tabslice", - "tb0", - "tb0_init", - "tb1", - "tb10", - "tb10_init", - "tb11", - "tb11_init", - "tb12", - "tb12_init", - "tb13", - "tb13_init", - "tb14", - "tb14_init", - "tb15", - "tb15_init", - "tb1_init", - "tb2", - "tb2_init", - "tb3", - "tb3_init", - "tb4", - "tb4_init", - "tb5", - "tb5_init", - "tb6", - "tb6_init", - "tb7", - "tb7_init", - "tb8", - "tb8_init", - "tb9", - "tb9_init", - "vbap16", - "vbap1move", - "vbap4", - "vbap4move", - "vbap8", - "vbap8move", - "xyin" - ]; - - opcodes = lang.arrayToMap(opcodes); - deprecatedOpcodes = lang.arrayToMap(deprecatedOpcodes); - - this.lineContinuations = [ - { - token : "constant.character.escape.line-continuation.csound", - regex : /\\$/ - }, this.pushRule({ - token : "constant.character.escape.line-continuation.csound", - regex : /\\/, - next : "line continuation" - }) - ]; - - this.comments.push(this.lineContinuations); - - this.quotedStringContents.push( - this.lineContinuations, - { - token : "invalid.illegal", - regex : /[^"\\]*$/ - } - ); - - var start = this.$rules.start; - start.splice(1, 0, { - token : ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"], - regex : /^([ \t]*)(\w+)(:)([ \t]+|$)/ - }); - start.push( - this.pushRule({ - token : "keyword.function.csound", - regex : /\binstr\b/, - next : "instrument numbers and identifiers" - }), this.pushRule({ - token : "keyword.function.csound", - regex : /\bopcode\b/, - next : "after opcode keyword" - }), { - token : "keyword.other.csound", - regex : /\bend(?:in|op)\b/ - }, - - { - token : "variable.language.csound", - regex : /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/ - }, - - this.numbers, - - { - token : "keyword.operator.csound", - regex : "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~¬]|[=!+\\-*/^%&|<>#?:]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "quoted string" - }), this.pushRule({ - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "braced string" - }), - - { - token : "keyword.control.csound", - regex : /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/ - }, - - this.pushRule({ - token : "keyword.control.csound", - regex : /\b[ik]?goto\b/, - next : "goto before label" - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\b(?:r(?:einit|igoto)|tigoto)\b/, - next : "goto before label" - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\bc(?:g|in?|k|nk?)goto\b/, - next : ["goto before label", "goto before argument"] - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\btimout\b/, - next : ["goto before label", "goto before argument", "goto before argument"] - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\bloop_[gl][et]\b/, - next : ["goto before label", "goto before argument", "goto before argument", "goto before argument"] - }), - - this.pushRule({ - token : "support.function.csound", - regex : /\b(?:readscore|scoreline(?:_i)?)\b/, - next : "Csound score opcode" - }), this.pushRule({ - token : "support.function.csound", - regex : /\bpyl?run[it]?\b(?!$)/, - next : "Python opcode" - }), this.pushRule({ - token : "support.function.csound", - regex : /\blua_(?:exec|opdef)\b(?!$)/, - next : "Lua opcode" - }), - - { - token : "support.variable.csound", - regex : /\bp\d+\b/ - }, { - regex : /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/, onMatch: function(value, currentState, stack, line) { - var tokens = value.split(this.splitRegex); - var name = tokens[1]; - var type; - if (opcodes.hasOwnProperty(name)) - type = "support.function.csound"; - else if (deprecatedOpcodes.hasOwnProperty(name)) - type = "invalid.deprecated.csound"; - if (type) { - if (tokens[2]) { - return [ - {type: type, value: name}, - {type: "punctuation.type-annotation.csound", value: tokens[2]}, - {type: "type-annotation.storage.type.csound", value: tokens[3]} - ]; - } - return type; - } - return "text.csound"; - } - } - ); - - this.$rules["macro parameter value list"].splice(2, 0, { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "macro parameter value braced string" - }); - - var scoreHighlightRules = new CsoundScoreHighlightRules("csound-score-"); - - this.addRules({ - "macro parameter value braced string": [ - { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ - }, { - token : "invalid.illegal.csound.csound", - regex : /[#'()]/ - }, { - token : "punctuation.definition.string.end.csound", - regex : /}}/, - next : "macro parameter value list" - }, { - defaultToken: "string.braced.csound" - } - ], - - "instrument numbers and identifiers": [ - this.comments, - { - token : "entity.name.function.csound", - regex : /\d+|[A-Z_a-z]\w*/ - }, this.popRule({ - token : "empty", - regex : /$/ - }) - ], - - "after opcode keyword": [ - this.comments, - this.popRule({ - token : "empty", - regex : /$/ - }), this.popRule({ - token : "entity.name.function.opcode.csound", - regex : /[A-Z_a-z]\w*/, - next : "opcode type signatures" - }) - ], - "opcode type signatures": [ - this.comments, - this.popRule({ - token : "empty", - regex : /$/ - }), { - token : "storage.type.csound", - regex : /\b(?:0|[afijkKoOpPStV\[\]]+)/ - } - ], - - "quoted string": [ - this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /"/ - }), - this.quotedStringContents, - { - defaultToken: "string.quoted.csound" - } - ], - "braced string": [ - this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /}}/ - }), - this.bracedStringContents, - { - defaultToken: "string.braced.csound" - } - ], - - "goto before argument": [ - this.popRule({ - token : "text.csound", - regex : /,/ - }), - start - ], - "goto before label": [ - { - token : "text.csound", - regex : /\s+/ - }, - this.comments, - this.popRule({ - token : "entity.name.label.csound", - regex : /\w+/ - }), this.popRule({ - token : "empty", - regex : /(?!\w)/ - }) - ], - - "Csound score opcode": [ - this.comments, - { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : scoreHighlightRules.embeddedRulePrefix + "start" - }, this.popRule({ - token : "empty", - regex : /$/ - }) - ], - - "Python opcode": [ - this.comments, - { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "python-start" - }, this.popRule({ - token : "empty", - regex : /$/ - }) - ], - - "Lua opcode": [ - this.comments, - { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "lua-start" - }, this.popRule({ - token : "empty", - regex : /$/ - }) - ], - - "line continuation": [ - this.popRule({ - token : "empty", - regex : /$/ - }), - this.semicolonComments, - { - token : "invalid.illegal.csound", - regex : /\S.*/ - } - ] - }); - - var rules = [ - this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /}}/ - }) - ]; - this.embedRules(scoreHighlightRules.getRules(), scoreHighlightRules.embeddedRulePrefix, rules); - this.embedRules(PythonHighlightRules, "python-", rules); - this.embedRules(LuaHighlightRules, "lua-", rules); - - this.normalizeRules(); -}; - -oop.inherits(CsoundOrchestraHighlightRules, CsoundPreprocessorHighlightRules); - -exports.CsoundOrchestraHighlightRules = CsoundOrchestraHighlightRules; -}); - -ace.define("ace/mode/csound_orchestra",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_orchestra_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; - -var Mode = function() { - this.HighlightRules = CsoundOrchestraHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/csound_orchestra"; - this.snippetFileId = "ace/snippets/csound_orchestra"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/csound_orchestra"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-csound_score.js b/src-noconflict/mode-csound_score.js deleted file mode 100644 index d578ef5..0000000 --- a/src-noconflict/mode-csound_score.js +++ /dev/null @@ -1,462 +0,0 @@ -ace.define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundPreprocessorHighlightRules = function(embeddedRulePrefix) { - - this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix; - - this.semicolonComments = { - token : "comment.line.semicolon.csound", - regex : ";.*$" - }; - - this.comments = [ - { - token : "punctuation.definition.comment.begin.csound", - regex : "/\\*", - push : [ - { - token : "punctuation.definition.comment.end.csound", - regex : "\\*/", - next : "pop" - }, { - defaultToken: "comment.block.csound" - } - ] - }, { - token : "comment.line.double-slash.csound", - regex : "//.*$" - }, - this.semicolonComments - ]; - - this.macroUses = [ - { - token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], - regex : /(\$[A-Z_a-z]\w*\.?)(\()/, - next : "macro parameter value list" - }, { - token : "entity.name.function.preprocessor.csound", - regex : /\$[A-Z_a-z]\w*(?:\.|\b)/ - } - ]; - - this.numbers = [ - { - token : "constant.numeric.float.csound", - regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ - }, { - token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], - regex : /(0[Xx])([0-9A-Fa-f]+)/ - }, { - token : "constant.numeric.integer.decimal.csound", - regex : /\d+/ - } - ]; - - this.bracedStringContents = [ - { - token : "constant.character.escape.csound", - regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/ - }, - { - token : "constant.character.placeholder.csound", - regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ - }, { - token : "constant.character.escape.csound", - regex : /%%/ - } - ]; - - this.quotedStringContents = [ - this.macroUses, - this.bracedStringContents - ]; - - var start = [ - this.comments, - - { - token : "keyword.preprocessor.csound", - regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ - }, { - token : "keyword.preprocessor.csound", - regex : /#include/, - push : [ - this.comments, - { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" - } - ] - }, { - token : "keyword.preprocessor.csound", - regex : /#includestr/, - push : [ - this.comments, - { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" - } - ] - }, { - token : "keyword.preprocessor.csound", - regex : /#[ \t]*define/, - next : "define directive" - }, { - token : "keyword.preprocessor.csound", - regex : /#(?:ifn?def|undef)\b/, - next : "macro directive" - }, - - this.macroUses - ]; - - this.$rules = { - "start": start, - - "define directive": [ - this.comments, - { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ - }, { - token : "punctuation.definition.macro-parameter-name-list.begin.csound", - regex : /\(/, - next : "macro parameter name list" - }, { - token : "punctuation.definition.macro.begin.csound", - regex : /#/, - next : "macro body" - } - ], - "macro parameter name list": [ - { - token : "variable.parameter.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ - }, { - token : "punctuation.definition.macro-parameter-name-list.end.csound", - regex : /\)/, - next : "define directive" - } - ], - "macro body": [ - { - token : "constant.character.escape.csound", - regex : /\\#/ - }, { - token : "punctuation.definition.macro.end.csound", - regex : /#/, - next : "start" - }, - start - ], - - "macro directive": [ - this.comments, - { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/, - next : "start" - } - ], - - "macro parameter value list": [ - { - token : "punctuation.definition.macro-parameter-value-list.end.csound", - regex : /\)/, - next : "start" - }, { - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "macro parameter value quoted string" - }, this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" - }), { - token : "punctuation.macro-parameter-value-separator.csound", - regex : "[#']" - } - ], - "macro parameter value quoted string": [ - { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ - }, { - token : "invalid.illegal.csound", - regex : /[#'()]/ - }, { - token : "punctuation.definition.string.end.csound", - regex : /"/, - next : "macro parameter value list" - }, - this.quotedStringContents, - { - defaultToken: "string.quoted.csound" - } - ], - "macro parameter value parenthetical": [ - { - token : "constant.character.escape.csound", - regex : /\\\)/ - }, this.popRule({ - token : "punctuation.macro-parameter-value-parenthetical.end.csound", - regex : /\)/ - }), this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" - }), - start - ] - }; -}; - -oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); - -(function() { - - this.pushRule = function(params) { - if (Array.isArray(params.next)) { - for (var i = 0; i < params.next.length; i++) { - params.next[i] = this.embeddedRulePrefix + params.next[i]; - } - } - - return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { - if (stack.length === 0) - stack.push(currentState); - if (Array.isArray(params.next)) { - for (var i = 0; i < params.next.length; i++) { - stack.push(params.next[i]); - } - } else { - stack.push(params.next); - } - this.next = stack[stack.length - 1]; - return params.token; - }, - - get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, - set next(next) { - if (!Array.isArray(params.next)) { - params.next = next; - } - }, - - get token() { return params.token; } - }; - }; - - this.popRule = function(params) { - if (params.next) { - params.next = this.embeddedRulePrefix + params.next; - } - - return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { - stack.pop(); - if (params.next) { - stack.push(params.next); - this.next = stack[stack.length - 1]; - } else { - this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); - } - return params.token; - } - }; - }; - -}).call(CsoundPreprocessorHighlightRules.prototype); - -exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; -}); - -ace.define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; - -var CsoundScoreHighlightRules = function(embeddedRulePrefix) { - - CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); - - this.quotedStringContents.push({ - token : "invalid.illegal.csound-score", - regex : /[^"]*$/ - }); - - var start = this.$rules.start; - start.push( - { - token : "keyword.control.csound-score", - regex : /[aBbCdefiqstvxy]/ - }, { - token : "invalid.illegal.csound-score", - regex : /w/ - }, { - token : "constant.numeric.language.csound-score", - regex : /z/ - }, { - token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], - regex : /([nNpP][pP])(\d+)/ - }, { - token : "keyword.other.csound-score", - regex : /[mn]/, - push : [ - { - token : "empty", - regex : /$/, - next : "pop" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/ - } - ] - }, { - token : "keyword.preprocessor.csound-score", - regex : /r\b/, - next : "repeat section" - }, - - this.numbers, - - { - token : "keyword.operator.csound-score", - regex : "[!+\\-*/^%&|<>#~.]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound-score", - regex : /"/, - next : "quoted string" - }), - - this.pushRule({ - token : "punctuation.braced-loop.begin.csound-score", - regex : /{/, - next : "loop after left brace" - }) - ); - - this.addRules({ - "repeat section": [ - { - token : "empty", - regex : /$/, - next : "start" - }, - this.comments, - { - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "repeat section before label" - } - ], - "repeat section before label": [ - { - token : "empty", - regex : /$/, - next : "start" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/, - next : "start" - } - ], - - "quoted string": [ - this.popRule({ - token : "punctuation.definition.string.end.csound-score", - regex : /"/ - }), - this.quotedStringContents, - { - defaultToken: "string.quoted.csound-score" - } - ], - - "loop after left brace": [ - this.popRule({ - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "loop after repeat count" - }), - this.comments, - { - token : "invalid.illegal.csound", - regex : /\S.*/ - } - ], - "loop after repeat count": [ - this.popRule({ - token : "entity.name.function.preprocessor.csound-score", - regex : /[A-Z_a-z]\w*\b/, - next : "loop after macro name" - }), - this.comments, - { - token : "invalid.illegal.csound", - regex : /\S.*/ - } - ], - "loop after macro name": [ - start, - this.popRule({ - token : "punctuation.braced-loop.end.csound-score", - regex : /}/ - }) - ] - }); - - this.normalizeRules(); -}; - -oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); - -exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; -}); - -ace.define("ace/mode/csound_score",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_score_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; - -var Mode = function() { - this.HighlightRules = CsoundScoreHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/csound_score"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/csound_score"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-csp.js b/src-noconflict/mode-csp.js deleted file mode 100644 index fba305e..0000000 --- a/src-noconflict/mode-csp.js +++ /dev/null @@ -1,59 +0,0 @@ -ace.define("ace/mode/csp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var CspHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "constant.language": "child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src" - + "|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri" - + "|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri", - "variable": "'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'" - }, "identifier", true); - - this.$rules = { - start: [{ - token: "string.link", - regex: /https?:[^;\s]*/ - }, { - token: "operator.punctuation", - regex: /;/ - }, { - token: keywordMapper, - regex: /[^\s;]+/ - }] - }; - }; - - oop.inherits(CspHighlightRules, TextHighlightRules); - - exports.CspHighlightRules = CspHighlightRules; -}); - -ace.define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"], function(require, exports, module) { - "use strict"; - - var TextMode = require("./text").Mode; - var CspHighlightRules = require("./csp_highlight_rules").CspHighlightRules; - var oop = require("../lib/oop"); - - var Mode = function() { - this.HighlightRules = CspHighlightRules; - }; - - oop.inherits(Mode, TextMode); - - (function() { - this.$id = "ace/mode/csp"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/csp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-css.js b/src-noconflict/mode-css.js deleted file mode 100644 index d8f208b..0000000 --- a/src-noconflict/mode-css.js +++ /dev/null @@ -1,720 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/css"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-curly.js b/src-noconflict/mode-curly.js deleted file mode 100644 index da3bcaf..0000000 --- a/src-noconflict/mode-curly.js +++ /dev/null @@ -1,2564 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - - -var CurlyHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token: "variable", - regex: "{{", - push: "curly-start" - }); - - this.$rules["curly-start"] = [{ - token: "variable", - regex: "}}", - next: "pop" - }]; - - this.normalizeRules(); -}; - -oop.inherits(CurlyHighlightRules, HtmlHighlightRules); - -exports.CurlyHighlightRules = CurlyHighlightRules; - -}); - -ace.define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/folding/html","ace/mode/curly_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var HtmlFoldMode = require("./folding/html").FoldMode; -var CurlyHighlightRules = require("./curly_highlight_rules").CurlyHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = CurlyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.$id = "ace/mode/curly"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/curly"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-d.js b/src-noconflict/mode-d.js deleted file mode 100644 index b4a3f7d..0000000 --- a/src-noconflict/mode-d.js +++ /dev/null @@ -1,520 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DHighlightRules = function() { - - var keywords = ( - "this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|"+ - "typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters" - ); - - var keywordControls = ( - "break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|" + - "return|switch|while|catch|try|throw|finally|version|assert|unittest|with" - ); - - var types = ( - "auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|" + - "cfloat|creal|cdouble|cent|ifloat|ireal|idouble|" + - "int|long|short|void|uint|ulong|ushort|ucent|" + - "function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object" - ); - - var modifiers = ( - "abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|" + - "ref|immutable|lazy|nothrow|override|package|pragma|private|protected|" + - "public|pure|scope|shared|__gshared|synchronized|static|volatile" - ); - - var storages = ( - "class|struct|union|template|interface|enum|macro" - ); - - var stringEscapesSeq = { - token: "constant.language.escape", - regex: "\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|" + - "(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))" - }; - - var builtinConstants = ( - "null|true|false|"+ - "__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|"+ - "__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__" - ); - - var operators = ( - "/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|" + - "\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|" + - "\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|" + - "\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|" + - "\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.modifier" : modifiers, - "keyword.control" : keywordControls, - "keyword.type" : types, - "keyword": keywords, - "keyword.storage": storages, - "punctation": "\\.|\\,|;|\\.\\.|\\.\\.\\.", - "keyword.operator" : operators, - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { //-------------------------------------------------------- COMMENTS - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "star-comment" - }, { - token: "comment.shebang", - regex: "^\\s*#!.*" - }, { - token : "comment", - regex : "\\/\\+", - next: "plus-comment" - }, { //-------------------------------------------------------- STRINGS - onMatch: function(value, currentState, state) { - state.unshift(this.next, value.substr(2)); - return "string"; - }, - regex: 'q"(?:[\\[\\(\\{\\<]+)', - next: 'operator-heredoc-string' - }, { - onMatch: function(value, currentState, state) { - state.unshift(this.next, value.substr(2)); - return "string"; - }, - regex: 'q"(?:[a-zA-Z_]+)$', - next: 'identifier-heredoc-string' - }, { - token : "string", // multi line string start - regex : '[xr]?"', - next : "quote-string" - }, { - token : "string", // multi line string start - regex : '[xr]?`', - next : "backtick-string" - }, { - token : "string", // single line - regex : "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?" - }, { //-------------------------------------------------------- RULES - token: ["keyword", "text", "paren.lparen"], - regex: /(asm)(\s*)({)/, - next: "d-asm" - }, { - token: ["keyword", "text", "paren.lparen", "constant.language"], - regex: "(__traits)(\\s*)(\\()("+identifierRe+")" - }, { // import|module abc - token: ["keyword", "text", "variable.module"], - regex: "(import|module)(\\s+)((?:"+identifierRe+"\\.?)*)" - }, { // storage Name - token: ["keyword.storage", "text", "entity.name.type"], - regex: "("+storages+")(\\s*)("+identifierRe+")" - }, { // alias|typedef foo bar; - token: ["keyword", "text", "variable.storage", "text"], - regex: "(alias|typedef)(\\s*)("+identifierRe+")(\\s*)" - }, { //-------------------------------------------------------- OTHERS - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b" - }, { - token: "entity.other.attribute-name", - regex: "@"+identifierRe - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : operators - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\.|\\:" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "star-comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken: 'comment' - } - ], - "plus-comment" : [ - { - token : "comment", // closing comment - regex : "\\+\\/", - next : "start" - }, { - defaultToken: 'comment' - } - ], - - "quote-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '"[cdw]?', - next : "start" - }, { - defaultToken: 'string' - } - ], - - "backtick-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '`[cdw]?', - next : "start" - }, { - defaultToken: 'string' - } - ], - - "operator-heredoc-string": [ - { - onMatch: function(value, currentState, state) { - value = value.substring(value.length-2, value.length-1); - var map = {'>':'<',']':'[',')':'(','}':'{'}; - if(Object.keys(map).indexOf(value) != -1) - value = map[value]; - if(value != state[1]) return "string"; - state.shift(); - state.shift(); - - return "string"; - }, - regex: '(?:[\\]\\)}>]+)"', - next: 'start' - }, { - token: 'string', - regex: '[^\\]\\)}>]+' - } - ], - - "identifier-heredoc-string": [ - { - onMatch: function(value, currentState, state) { - value = value.substring(0, value.length-1); - if(value != state[1]) return "string"; - state.shift(); - state.shift(); - - return "string"; - }, - regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)"', - next: 'start' - }, { - token: 'string', - regex: '[^\\]\\)}>]+' - } - ], - - "d-asm": [ - { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: 'keyword.instruction', - regex: '[a-zA-Z]+', - next: 'd-asm-instruction' - }, { - token: "text", - regex: "\\s+" - } - ], - 'd-asm-instruction': [ - { - token: 'constant.language', - regex: /AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i - }, { - token: 'identifier', - regex: '[a-zA-Z]+' - }, { - token: 'string', - regex: '"[^"]*"' - }, { - token: 'comment', - regex: '//.*$' - }, { - token: 'constant.numeric', - regex: '[0-9.xA-F]+' - }, { - token: 'punctuation.operator', - regex: '\\,' - }, { - token: 'punctuation.operator', - regex: ';', - next: 'd-asm' - }, { - token: 'text', - regex: '\\s+' - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -DHighlightRules.metaData = { - comment: 'D language', - fileTypes: [ 'd', 'di' ], - firstLineMatch: '^#!.*\\b[glr]?dmd\\b.', - foldingStartMarker: '(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '(? indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var DHighlightRules = require("./d_highlight_rules").DHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = DHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/d"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/d"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-dart.js b/src-noconflict/mode-dart.js deleted file mode 100644 index dfb31ba..0000000 --- a/src-noconflict/mode-dart.js +++ /dev/null @@ -1,715 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + - "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "//$", - next : "start" - }, { - token : "comment", - regex : "//", - next : "singleLineComment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "constant.language.escape", regex: formatRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : 'R"\\(', - stateName: "rawString", - next: [ - { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; - this.snippetFileId = "ace/snippets/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DartHighlightRules = function() { - - var constantLanguage = "true|false|null"; - var variableLanguage = "this|super"; - var keywordControl = "try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await"; - var keywordDeclaration = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum"; - var storageModifier = "static|final|const"; - var storageType = "void|bool|num|int|double|dynamic|var|String"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language.dart": constantLanguage, - "variable.language.dart": variableLanguage, - "keyword.control.dart": keywordControl, - "keyword.declaration.dart": keywordDeclaration, - "storage.modifier.dart": storageModifier, - "storage.type.primitive.dart": storageType - }, "identifier"); - - var stringfill = [{ - token : "constant.language.escape", - regex : /\\./ - }, { - token : "text", - regex : /\$(?:\w+|{[^"'}]+})?/ - }, { - defaultToken : "string" - }]; - - this.$rules = { - "start": [ - { - token : "comment", - regex : /\/\/.*$/ - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["meta.preprocessor.script.dart"], - regex: "^(#!.*)$" - }, - { - token: "keyword.other.import.dart", - regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)" - }, - { - token : ["keyword.other.import.dart", "text"], - regex : "(?:\\b)(prefix)(\\s*:)" - }, - { - regex: "\\bas\\b", - token: "keyword.cast.dart" - }, - { - regex: "\\?|:", - token: "keyword.control.ternary.dart" - }, - { - regex: "(?:\\b)(is\\!?)(?:\\b)", - token: ["keyword.operator.dart"] - }, - { - regex: "(<<|>>>?|~|\\^|\\||&)", - token: ["keyword.operator.bitwise.dart"] - }, - { - regex: "((?:&|\\^|\\||<<|>>>?)=)", - token: ["keyword.operator.assignment.bitwise.dart"] - }, - { - regex: "(===?|!==?|<=?|>=?)", - token: ["keyword.operator.comparison.dart"] - }, - { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.dart"] - }, - { - regex: "=", - token: "keyword.operator.assignment.dart" - }, - { - token : "string", - regex : "'''", - next : "qdoc" - }, - { - token : "string", - regex : '"""', - next : "qqdoc" - }, - { - token : "string", - regex : "'", - next : "qstring" - }, - { - token : "string", - regex : '"', - next : "qqstring" - }, - { - regex: "(\\-\\-|\\+\\+)", - token: ["keyword.operator.increment-decrement.dart"] - }, - { - regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)", - token: ["keyword.operator.arithmetic.dart"] - }, - { - regex: "(!|&&|\\|\\|)", - token: ["keyword.operator.logical.dart"] - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qdoc" : [ - { - token : "string", - regex : "'''", - next : "start" - } - ].concat(stringfill), - - "qqdoc" : [ - { - token : "string", - regex : '"""', - next : "start" - } - ].concat(stringfill), - - "qstring" : [ - { - token : "string", - regex : "'|$", - next : "start" - } - ].concat(stringfill), - - "qqstring" : [ - { - token : "string", - regex : '"|$', - next : "start" - } - ].concat(stringfill) -}; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(DartHighlightRules, TextHighlightRules); - -exports.DartHighlightRules = DartHighlightRules; -}); - -ace.define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var DartHighlightRules = require("./dart_highlight_rules").DartHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - this.HighlightRules = DartHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/dart"; - this.snippetFileId = "ace/snippets/dart"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/dart"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-diff.js b/src-noconflict/mode-diff.js deleted file mode 100644 index ec04a9c..0000000 --- a/src-noconflict/mode-diff.js +++ /dev/null @@ -1,147 +0,0 @@ -ace.define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DiffHighlightRules = function() { - - this.$rules = { - "start" : [{ - regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$", - token: "punctuation.definition.separator.diff", - "name": "keyword" - }, { //diff.range.unified - regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$", - token: [ - "constant", - "constant.numeric", - "constant", - "comment.doc.tag" - ] - }, { //diff.range.normal - regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$", - token: [ - "constant.numeric", - "punctuation.definition.range.diff", - "constant.function", - "constant.numeric", - "punctuation.definition.range.diff", - "invalid" - ], - "name": "meta." - }, { - regex: "^(\\-{3}|\\+{3}|\\*{3})( .+)$", - token: [ - "constant.numeric", - "meta.tag" - ] - }, { // added - regex: "^([!+>])(.*?)(\\s*)$", - token: [ - "support.constant", - "text", - "invalid" - ] - }, { // removed - regex: "^([<\\-])(.*?)(\\s*)$", - token: [ - "support.function", - "string", - "invalid" - ] - }, { - regex: "^(diff)(\\s+--\\w+)?(.+?)( .+)?$", - token: ["variable", "variable", "keyword", "variable"] - }, { - regex: "^Index.+$", - token: "variable" - }, { - regex: "^\\s+$", - token: "text" - }, { - regex: "\\s*$", - token: "invalid" - }, { - defaultToken: "invisible", - caseInsensitive: true - } - ] - }; -}; - -oop.inherits(DiffHighlightRules, TextHighlightRules); - -exports.DiffHighlightRules = DiffHighlightRules; -}); - -ace.define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function(levels, flag) { - this.regExpList = levels; - this.flag = flag; - this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var start = {row: row, column: line.length}; - - var regList = this.regExpList; - for (var i = 1; i <= regList.length; i++) { - var re = RegExp("^(" + regList.slice(0, i).join("|") + ")", this.flag); - if (re.test(line)) - break; - } - - for (var l = session.getLength(); ++row < l; ) { - line = session.getLine(row); - if (re.test(line)) - break; - } - if (row == start.row + 1) - return; - return new Range(start.row, start.column, row - 1, line.length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./diff_highlight_rules").DiffHighlightRules; -var FoldMode = require("./folding/diff").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(["diff", "@@|\\*{5}"], "i"); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/diff"; - this.snippetFileId = "ace/snippets/diff"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/diff"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-django.js b/src-noconflict/mode-django.js deleted file mode 100644 index 4a815af..0000000 --- a/src-noconflict/mode-django.js +++ /dev/null @@ -1,2595 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DjangoHighlightRules = function(){ - this.$rules = { - 'start': [{ - token: "string", - regex: '".*?"' - }, { - token: "string", - regex: "'.*?'" - }, { - token: "constant", - regex: '[0-9]+' - }, { - token: "variable", - regex: "[-_a-zA-Z0-9:]+" - }], - 'tag': [{ - token: "entity.name.function", - regex: "[a-zA-Z][_a-zA-Z0-9]*", - next: "start" - }] - }; -}; - -oop.inherits(DjangoHighlightRules, TextHighlightRules); - -var DjangoHtmlHighlightRules = function() { - this.$rules = new HtmlHighlightRules().getRules(); - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token: "comment.line", - regex: "\\{#.*?#\\}" - }, { - token: "comment.block", - regex: "\\{\\%\\s*comment\\s*\\%\\}", - merge: true, - next: "django-comment" - }, { - token: "constant.language", - regex: "\\{\\{", - next: "django-start" - }, { - token: "constant.language", - regex: "\\{\\%", - next: "django-tag" - }); - this.embedRules(DjangoHighlightRules, "django-", [{ - token: "comment.block", - regex: "\\{\\%\\s*endcomment\\s*\\%\\}", - merge: true, - next: "start" - }, { - token: "constant.language", - regex: "\\%\\}", - next: "start" - }, { - token: "constant.language", - regex: "\\}\\}", - next: "start" - }]); - } -}; - -oop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules); - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = DjangoHtmlHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.$id = "ace/mode/django"; - this.snippetFileId = "ace/snippets/django"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/django"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-dockerfile.js b/src-noconflict/mode-dockerfile.js deleted file mode 100644 index d0af6d7..0000000 --- a/src-noconflict/mode-dockerfile.js +++ /dev/null @@ -1,500 +0,0 @@ -ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; - var variable = "(?:" + variableName + "(?==))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ - }, { - include : "variables" - }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` - }, { - token : "string.end", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], - variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { - this.HighlightRules = ShHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/sh"; - this.snippetFileId = "ace/snippets/sh"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; - -var DockerfileHighlightRules = function() { - ShHighlightRules.call(this); - - var startRules = this.$rules.start; - for (var i = 0; i < startRules.length; i++) { - if (startRules[i].token == "variable.language") { - startRules.splice(i, 0, { - token: "constant.language", - regex: "(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY|LABEL)\\b)", - caseInsensitive: true - }); - break; - } - } - -}; - -oop.inherits(DockerfileHighlightRules, ShHighlightRules); - -exports.DockerfileHighlightRules = DockerfileHighlightRules; -}); - -ace.define("ace/mode/dockerfile",["require","exports","module","ace/lib/oop","ace/mode/sh","ace/mode/dockerfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var ShMode = require("./sh").Mode; -var DockerfileHighlightRules = require("./dockerfile_highlight_rules").DockerfileHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - ShMode.call(this); - - this.HighlightRules = DockerfileHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, ShMode); - -(function() { - this.$id = "ace/mode/dockerfile"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/dockerfile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-dot.js b/src-noconflict/mode-dot.js deleted file mode 100644 index 5500c45..0000000 --- a/src-noconflict/mode-dot.js +++ /dev/null @@ -1,417 +0,0 @@ -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/dot_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - -var DotHighlightRules = function() { - - var keywords = lang.arrayToMap( - ("strict|node|edge|graph|digraph|subgraph").split("|") - ); - - var attributes = lang.arrayToMap( - ("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /\/\/.*$/ - }, { - token : "comment", - regex : /#.*$/ - }, { - token : "comment", // multi line comment - merge : true, - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", - regex : /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/ - }, { - token : "keyword.operator", - regex : /\+|=|\->/ - }, { - token : "punctuation.operator", - regex : /,|;/ - }, { - token : "paren.lparen", - regex : /[\[{]/ - }, { - token : "paren.rparen", - regex : /[\]}]/ - }, { - token: "comment", - regex: /^#!.*$/ - }, { - token: function(value) { - if (keywords.hasOwnProperty(value.toLowerCase())) { - return "keyword"; - } - else if (attributes.hasOwnProperty(value.toLowerCase())) { - return "variable"; - } - else { - return "text"; - } - }, - regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '[^"\\\\]+', - merge : true - }, { - token : "string", - regex : "\\\\$", - next : "qqstring", - merge : true - }, { - token : "string", - regex : '"|$', - next : "start", - merge : true - } - ], - "qstring" : [ - { - token : "string", - regex : "[^'\\\\]+", - merge : true - }, { - token : "string", - regex : "\\\\$", - next : "qstring", - merge : true - }, { - token : "string", - regex : "'|$", - next : "start", - merge : true - } - ] - }; -}; - -oop.inherits(DotHighlightRules, TextHighlightRules); - -exports.DotHighlightRules = DotHighlightRules; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var DotHighlightRules = require("./dot_highlight_rules").DotHighlightRules; -var DotFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = DotHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new DotFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/dot"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/dot"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-drools.js b/src-noconflict/mode-drools.js deleted file mode 100644 index abbb333..0000000 --- a/src-noconflict/mode-drools.js +++ /dev/null @@ -1,498 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while|" + - "var" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - regex: "(open(?:\\s+))?module(?=\\s*\\w)", - token: "keyword", - next: [{ - regex: "{", - token: "paren.lparen", - next: [{ - regex: "}", - token: "paren.rparen", - next: "start" - }, { - regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", - token: "keyword" - }] - }, { - token : "text", - regex : "\\s+" - }, { - token : "identifier", - regex : "\\w+" - }, { - token : "punctuation.operator", - regex : "." - }, { - token : "text", - regex : "\\s+" - }, { - regex: "", // exit if there is anything else - next: "start" - }] - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; -}); - -ace.define("ace/mode/drools_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/java_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; -var packageIdentifierRe = "[a-zA-Z\\$_\u00a1-\uffff][\\.a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var DroolsHighlightRules = function() { - - var keywords = ("date|effective|expires|lock|on|active|no|loop|auto|focus" + - "|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct" + - "|dialect|salience|enabled|attributes|extends|template" + - "|function|contains|matches|eval|excludes|soundslike" + - "|memberof|not|in|or|and|exists|forall|over|from|entry|point|accumulate|acc|collect" + - "|action|reverse|result|end|init|instanceof|extends|super|boolean|char|byte|short" + - "|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do" + - "|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert" + - "|modify|static|public|protected|private|abstract|native|transient|volatile" + - "|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str" - ); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": "null", - "support.class" : langClasses, - "support.function" : "retract|update|modify|insert" - }, "identifier"); - - var stringRules = function() { - return [{ - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }]; - }; - - - var basicPreRules = function(blockCommentRules) { - return [{ - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : blockCommentRules - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }]; - }; - - var blockCommentRules = function(returnRule) { - return [ - { - token : "comment.block", // closing comment - regex : "\\*\\/", - next : returnRule - }, { - defaultToken : "comment.block" - } - ]; - }; - - var basicPostRules = function() { - return [{ - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }]; - }; - - - this.$rules = { - "start" : [].concat(basicPreRules("block.comment"), [ - { - token : "entity.name.type", - regex : "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(package)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","keyword","text","entity.name.type"], - regex : "(import)(\\s+)(function)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(import)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","entity.name.type","text","variable"], - regex : "(global)(\\s+)(" + packageIdentifierRe +")(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","keyword","text","entity.name.type"], - regex : "(declare)(\\s+)(trait)(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(declare)(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(extends)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text"], - regex : "(rule)(\\s+)", - next : "asset.name" - }], - stringRules(), - [{ - token : ["variable.other","text","text"], - regex : "(" + identifierRe + ")(\\s*)(:)" - }, { - token : ["keyword","text"], - regex : "(query)(\\s+)", - next : "asset.name" - }, { - token : ["keyword","text"], - regex : "(when)(\\s*)" - }, { - token : ["keyword","text"], - regex : "(then)(\\s*)", - next : "java-start" - }, { - token : "paren.lparen", - regex : /[\[({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }], basicPostRules()), - "block.comment" : blockCommentRules("start"), - "asset.name" : [ - { - token : "entity.name", - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "entity.name", - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "entity.name", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "start" - }] - }; - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - - this.embedRules(JavaHighlightRules, "java-", [ - { - token : "support.function", - regex: "\\b(insert|modify|retract|update)\\b" - }, { - token : "keyword", - regex: "\\bend\\b", - next : "start" - }]); - -}; - -oop.inherits(DroolsHighlightRules, TextHighlightRules); - -exports.DroolsHighlightRules = DroolsHighlightRules; -}); - -ace.define("ace/mode/folding/drools",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/; - this.foldingStopMarker = /\bend\b/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) { - var position = {row: row, column: line.length}; - var iterator = new TokenIterator(session, position.row, position.column); - var seek = "end"; - var token = iterator.getCurrentToken(); - if (token.value == "when") { - seek = "then"; - } - while (token) { - if (token.value == seek) { - return Range.fromPoints(position ,{ - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }); - } - token = iterator.stepForward(); - } - } - - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var DroolsHighlightRules = require("./drools_highlight_rules").DroolsHighlightRules; -var DroolsFoldMode = require("./folding/drools").FoldMode; - -var Mode = function() { - this.HighlightRules = DroolsHighlightRules; - this.foldingRules = new DroolsFoldMode(); - this.$behaviour = this.$defaultBehaviour; - -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/drools"; - this.snippetFileId = "ace/snippets/drools"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/drools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-edifact.js b/src-noconflict/mode-edifact.js deleted file mode 100644 index 6d8319d..0000000 --- a/src-noconflict/mode-edifact.js +++ /dev/null @@ -1,166 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/edifact_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var EdifactHighlightRules = function() { - - var header = ( - "UNH" - ); - var segment = ( - "ADR|AGR|AJT|ALC|ALI|APP|APR|ARD|ARR|ASI|ATT|AUT|"+ - "BAS|BGM|BII|BUS|"+ - "CAV|CCD|CCI|CDI|CDS|CDV|CED|CIN|CLA|CLI|CMP|CNI|CNT|COD|COM|COT|CPI|CPS|CPT|CST|CTA|CUX|"+ - "DAM|DFN|DGS|DII|DIM|DLI|DLM|DMS|DOC|DRD|DSG|DSI|DTM|"+ - "EDT|EFI|ELM|ELU|ELV|EMP|EQA|EQD|EQN|ERC|ERP|EVE|FCA|FII|FNS|FNT|FOR|FSQ|FTX|"+ - "GDS|GEI|GID|GIN|GIR|GOR|GPO|GRU|HAN|HYN|ICD|IDE|IFD|IHC|IMD|IND|INP|INV|IRQ|"+ - "LAN|LIN|LOC|MEA|MEM|MKS|MOA|MSG|MTD|NAD|NAT|"+ - "PAC|PAI|PAS|PCC|PCD|PCI|PDI|PER|PGI|PIA|PNA|POC|PRC|PRI|PRV|PSD|PTY|PYT|"+ - "QRS|QTY|QUA|QVR|"+ - "RCS|REL|RFF|RJL|RNG|ROD|RSL|RTE|"+ - "SAL|SCC|SCD|SEG|SEL|SEQ|SFI|SGP|SGU|SPR|SPS|STA|STC|STG|STS|"+ - "TAX|TCC|TDT|TEM|TMD|TMP|TOD|TPL|TRU|TSR|"+ - "UNB|UNZ|UNT|UGH|UGT|UNS|"+ - "VLI" - ); - - var header = ( - "UNH" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - var langClasses = ( - "" - ); - - var keywords = ( - "BY|SE|ON|INV|JP|UNOA" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "entity.name.segment":segment, - "entity.name.header":header, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "punctuation.operator", - regex : "\\+.\\+" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+" - }, { - token : "punctuation.operator", - regex : "\\:|'" - },{ - token : "identifier", - regex : "\\:D\\:" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - }; - - EdifactHighlightRules.metaData = { fileTypes: [ 'edi' ], - keyEquivalent: '^~E', - name: 'Edifact', - scopeName: 'source.edifact' }; - - oop.inherits(EdifactHighlightRules, TextHighlightRules); - - exports.EdifactHighlightRules = EdifactHighlightRules; - }); - -ace.define("ace/mode/edifact",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/edifact_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var EdifactHighlightRules = require("./edifact_highlight_rules").EdifactHighlightRules; - -var Mode = function() { - - this.HighlightRules = EdifactHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/edifact"; - this.snippetFileId = "ace/snippets/edifact"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/edifact"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-eiffel.js b/src-noconflict/mode-eiffel.js deleted file mode 100644 index 79df404..0000000 --- a/src-noconflict/mode-eiffel.js +++ /dev/null @@ -1,135 +0,0 @@ -ace.define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var EiffelHighlightRules = function() { - var keywords = "across|agent|alias|all|attached|as|assign|attribute|check|" + - "class|convert|create|debug|deferred|detachable|do|else|elseif|end|" + - "ensure|expanded|export|external|feature|from|frozen|if|inherit|" + - "inspect|invariant|like|local|loop|not|note|obsolete|old|once|" + - "Precursor|redefine|rename|require|rescue|retry|select|separate|" + - "some|then|undefine|until|variant|when"; - - var operatorKeywords = "and|implies|or|xor"; - - var languageConstants = "Void"; - - var booleanConstants = "True|False"; - - var languageVariables = "Current|Result"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language": languageConstants, - "constant.language.boolean": booleanConstants, - "variable.language": languageVariables, - "keyword.operator": operatorKeywords, - "keyword": keywords - }, "identifier", true); - - var simpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/; - - this.$rules = { - "start": [{ - token : "string.quoted.other", // Aligned-verbatim-strings (verbatim option not supported) - regex : /"\[/, - next: "aligned_verbatim_string" - }, { - token : "string.quoted.other", // Non-aligned-verbatim-strings (verbatim option not supported) - regex : /"\{/, - next: "non-aligned_verbatim_string" - }, { - token : "string.quoted.double", - regex : /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/ - }, { - token : "comment.line.double-dash", - regex : /--.*/ - }, { - token : "constant.character", - regex : /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/ - }, { - token : "constant.numeric", // hexa | octal | bin - regex : /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/ - }, { - token : "constant.numeric", - regex : /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/ - }, { - token : "paren.lparen", - regex : /[\[({]|<<|\|\(/ - }, { - token : "paren.rparen", - regex : /[\])}]|>>|\|\)/ - }, { - token : "keyword.operator", // punctuation - regex : /:=|->|\.(?=\w)|[;,:?]/ - }, { - token : "keyword.operator", - regex : /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/ - }, { - token : function (v) { - var result = keywordMapper(v); - if (result === "identifier" && v === v.toUpperCase()) { - result = "entity.name.type"; - } - return result; - }, - regex : /[a-zA-Z][a-zA-Z\d_]*\b/ - }, { - token : "text", - regex : /\s+/ - } - ], - "aligned_verbatim_string" : [{ - token : "string", - regex : /]"/, - next : "start" - }, { - token : "string", - regex : simpleString - } - ], - "non-aligned_verbatim_string" : [{ - token : "string.quoted.other", - regex : /}"/, - next : "start" - }, { - token : "string.quoted.other", - regex : simpleString - } - ]}; -}; - -oop.inherits(EiffelHighlightRules, TextHighlightRules); - -exports.EiffelHighlightRules = EiffelHighlightRules; -}); - -ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var EiffelHighlightRules = require("./eiffel_highlight_rules").EiffelHighlightRules; - -var Mode = function() { - this.HighlightRules = EiffelHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.$id = "ace/mode/eiffel"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/eiffel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ejs.js b/src-noconflict/mode-ejs.js deleted file mode 100644 index a907f83..0000000 --- a/src-noconflict/mode-ejs.js +++ /dev/null @@ -1,3533 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericBinary = exports.constantNumericBinary = { - token: "constant.numeric", - regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ -}; - -var constantNumericDecimal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ -}; - -var constantNumericOctal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ -}; - -var constantNumericRational = exports.constantNumericRational = { - token: "constant.numeric", //rational + complex - regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ -}; - -var constantNumericComplex = exports.constantNumericComplex = { - token: "constant.numeric", //simple complex numbers - regex: /\b([\d]i)\b/ -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float + complex - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" -}; - -var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + - "private_class_method|remove_method|undef_method" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; - - var closeParen = { - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "^": "^", - "|": "|", - "%": "%" - }; - - this.$rules = { - "start": [ - { - token: "comment", - regex: "#.*$" - }, { - token: "comment.multiline", // multi line comment - regex: "^=begin(?=$|\\s.*$)", - next: "comment" - }, { - token: "string.regexp", - regex: /[/](?=.*\/)/, - next: "regex" - }, - - [{ - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(")/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /"/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(')/, - push: [{ - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "string.end", - regex: /'/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start",//doesn't see any differences between strings and array of strings in highlighting - regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithoutInterpolation"; - return this.token; - } - }, { - token: "string.start", //doesn't see any differences between strings and array of strings in highlighting - regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithoutInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithInterpolation"; - return this.token; - } - }, { - token: "string.regexp", - regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "rState"; - return this.token; - } - }], - - { - token: "punctuation", // namespaces aren't symbols - regex: "::" - }, - instanceVariable, - { - token: "variable.global", // global variable - regex: "[$][a-zA-Z_\\d]+" - }, { - token: "support.class", // class name - regex: "[A-Z][a-zA-Z_\\d]*" - }, { - token: ["punctuation.operator", "support.function"], - regex: /(\.)([a-zA-Z_\d]+)(?=\()/ - }, { - token: ["punctuation.operator", "identifier"], - regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ - }, { - token: "string.character", - regex: "\\B\\?(?:" + escapedChars + "|\\S)" - }, { - token: "punctuation.operator", - regex: /\?(?=.+:)/ - }, - - constantNumericRational, - constantNumericComplex, - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - constantNumericBinary, - constantNumericDecimal, - constantNumericOctal, - { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "punctuation.separator.key-value", - regex: "=>" - }, { - stateName: "heredoc", - onMatch: function (value, currentState, stack) { - var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type: "constant", value: tokens[1]}, - {type: "string", value: tokens[2]}, - {type: "support.class", value: tokens[3]}, - {type: "string", value: tokens[4]} - ]; - }, - regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex: "$", - token: "empty", - next: function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]", - onMatch: function(value, currentState, stack) { - this.next = ''; - if (value == "}" && stack.length > 1 && stack[1] != "start") { - stack.shift(); - this.next = stack.shift(); - } - return this.token; - } - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/ - } - ], - "comment": [ - { - token: "comment.multiline", // closing comment - regex: "^=end(?=$|\\s.*$)", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - } - ], - "qStateWithInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "qStateWithoutInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "sStateWithoutInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "sStateWithInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "rState": [{ - token: "string.regexp",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.language.escape"; - } - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.regexp", - regex: /\// - }, { - token: "string.regexp", - regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { - if (stack.length && val[0] === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.language.escape"; - } - }, - {include: "regex"}, - { - defaultToken: "string.regexp" - }], - "regex": [ - {// character classes - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "constant.language.escape", - regex: /\\[AGbBzZ]/ - }, { - token: "constant.language.escape", - regex: /\\g<[a-zA-Z0-9]*>/ - }, { - token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], - regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ - }, { - token: ["constant.language.escape", "invalid", "constant.language.escape"], - regex: /(\\p{\^?)([^/]*)(})/ - }, {// escapes - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, {// flag - token: "string.regexp", - regex: /[/][imxouesn]*/, - next: "start" - }, {// invalid operators - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, {// operators - token: "constant.language.escape", - regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "regexp.keyword", - regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - push: "regex_character_class" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: /&?&?\[\^?/, - push: "regex_character_class" - }, { - token: "constant.language.escape", - regex: "]", - next: "pop" - }, { - token: "constant.language.escape", - regex: "-" - }, { - defaultToken: "string.regexp.characterclass" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function () { -}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function () { - this.indentKeywords = { - "class": 1, - "def": 1, - "module": 1, - "do": 1, - "unless": 1, - "if": 1, - "while": 1, - "for": 1, - "until": 1, - "begin": 1, - "else": 0, - "elsif": 0, - "rescue": 0, - "ensure": 0, - "when": 0, - "end": -1, - "case": 1, - "=begin": 1, - "=end": -1 - }; - - this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; - this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; - - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1]) { - if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { - if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { - return; - } - if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { - return; - } - } - - if (match[1] == "when") { - if (/\sthen\s/.test(line) === true) { - return; - } - } - if (session.getTokenAt(row, match.index + 2).type === "keyword") - return "start"; - } else if (match[3]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1] || match[3]) - return this.rubyBlock(session, row, match.index + 2); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.rubyBlock(session, row, match.index + 1); - } - - if (match[1] === "=end") { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return this.rubyBlock(session, row, match.index + 1); - } - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.rubyBlock = function (session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - - var token = stream.getCurrentToken(); - if (!token || (token.type != "keyword" && token.type != "comment.multiline")) - return; - - var val = token.value; - var line = session.getLine(row); - switch (token.value) { - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - return; - } - var dir = this.indentKeywords[val]; - break; - case "when": - if (/\sthen\s/.test(line)) { - return; - } - case "elsif": - case "rescue": - case "ensure": - var dir = 1; - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line)) { - return; - } - var dir = 1; - break; - default: - var dir = this.indentKeywords[val]; - break; - } - - var stack = [val]; - if (!dir) - return; - - var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; - var startRow = row; - var ranges = []; - ranges.push(stream.getCurrentTokenRange()); - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - if (token.type == "comment.multiline") { - while (token = stream.step()) { - if (token.type !== "comment.multiline") - continue; - if (dir == 1) { - startColumn = 6; - if (token.value == "=end") { - break; - } - } else { - if (token.value == "=begin") { - break; - } - } - } - } else { - while (token = stream.step()) { - var ignore = false; - if (token.type !== "keyword") - continue; - var level = dir * this.indentKeywords[token.value]; - line = session.getLine(stream.getCurrentTokenRow()); - switch (token.value) { - case "do": - for (var i = stream.$tokenIndex - 1; i >= 0; i--) { - var prevToken = stream.$rowTokens[i]; - if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { - level = 0; - break; - } - } - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - level = 0; - ignore = true; - } - break; - case "when": - if (/\sthen\s/.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - } - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0 && ignore === false) { - stack.shift(); - if (!stack.length) { - if ((val == "while" || val == "until" || val == "for") && token.value != "do") { - break; - } - if (token.value == "do" && dir == -1 && level != 0) - break; - if (token.value != "do") - break; - } - - if (level === 0) { - stack.unshift(token.value); - } - } - } - } - - if (!token) - return null; - - if (tokenRange) { - ranges.push(stream.getCurrentTokenRange()); - return ranges; - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) { - if (token.type === "comment.multiline") { - var endColumn = 6; - } else { - var endColumn = session.getLine(row).length; - } - return new Range(row, endColumn, startRow - 1, startColumn); - } else - return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/ruby").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new FoldMode(); - this.indentKeywords = this.foldingRules.indentKeywords; -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - if (/}/.test(line)) - return this.$outdent.autoOutdent(session, row); - var indent = this.$getIndent(line); - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine); - var tab = session.getTabString(); - if (prevIndent.length <= indent.length) { - if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length - tab.length, row, indent.length)); - } - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in this.indentKeywords) - return this.foldingRules.rubyBlock(session, row, column, true); - }; - - this.$id = "ace/mode/ruby"; - this.snippetFileId = "ace/snippets/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var EjsHighlightRules = function(start, end) { - HtmlHighlightRules.call(this); - - if (!start) - start = "(?:<%|<\\?|{{)"; - if (!end) - end = "(?:%>|\\?>|}})"; - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token : "markup.list.meta.tag", - regex : start + "(?![>}])[-=]?", - push : "ejs-start" - }); - } - - this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "ejs-", [{ - token : "markup.list.meta.tag", - regex : "-?" + end, - next : "pop" - }, { - token: "comment", - regex: "//.*?" + end, - next: "pop" - }]); - - this.normalizeRules(); -}; - - -oop.inherits(EjsHighlightRules, HtmlHighlightRules); - -exports.EjsHighlightRules = EjsHighlightRules; - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var RubyMode = require("./ruby").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = EjsHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "ejs-": JavaScriptMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/ejs"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/ejs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-elixir.js b/src-noconflict/mode-elixir.js deleted file mode 100644 index 7f46afb..0000000 --- a/src-noconflict/mode-elixir.js +++ /dev/null @@ -1,501 +0,0 @@ -ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElixirHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.module.elixir', - 'keyword.control.module.elixir', - 'meta.module.elixir', - 'entity.name.type.module.elixir' ], - regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.false', - regex: '@(?:module|type)?doc false', - comment: '@doc false is treated as documentation' }, - { token: 'comment.documentation.string', - regex: '@(?:module|type)?doc "', - push: - [ { token: 'comment.documentation.string', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.string' } ], - comment: '@doc with string is treated as documentation' }, - { token: 'keyword.control.elixir', - regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, - { token: 'punctuation.definition.constant.elixir', - regex: ':\'', - push: - [ { token: 'punctuation.definition.constant.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] }, - { token: 'punctuation.definition.constant.elixir', - regex: ':"', - push: - [ { token: 'punctuation.definition.constant.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:\'\'\')', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>\'\'\')', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ], - comment: 'Single-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.elixir' } ], - comment: 'single quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.elixir' } ], - comment: 'double quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[a-z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[A-Z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], - regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', - comment: 'symbols' }, - { token: 'punctuation.definition.constant.elixir', - regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', - comment: 'symbols' }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(#)(.*)' }, - { token: 'constant.numeric.elixir', - regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?=?' }, - { token: 'keyword.operator.bitwise.elixir', - regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, - { token: 'keyword.operator.logical.elixir', - regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', - originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, - { token: 'keyword.operator.arithmetic.elixir', - regex: '\\*|\\+|\\-|/' }, - { token: 'keyword.operator.other.elixir', - regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, - { token: 'keyword.operator.assignment.elixir', regex: '=' }, - { token: 'punctuation.separator.other.elixir', regex: ':' }, - { token: 'punctuation.separator.statement.elixir', - regex: '\\;' }, - { token: 'punctuation.separator.object.elixir', regex: ',' }, - { token: 'punctuation.separator.method.elixir', regex: '\\.' }, - { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, - { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, - { token: 'punctuation.section.function.elixir', - regex: '\\(|\\)' } ], - '#escaped_char': - [ { token: 'constant.character.escape.elixir', - regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ], - '#interpolated_elixir': - [ { token: - [ 'source.elixir.embedded.source', - 'source.elixir.embedded.source.empty' ], - regex: '(#\\{)(\\})' }, - { todo: - { token: 'punctuation.section.embedded.elixir', - regex: '#\\{', - push: - [ { token: 'punctuation.section.embedded.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' }, - { include: '$self' }, - { defaultToken: 'source.elixir.embedded.source' } ] } } ], - '#nest_curly_and_self': - [ { token: 'punctuation.section.scope.elixir', - regex: '\\{', - push: - [ { token: 'punctuation.section.scope.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' } ] }, - { include: '$self' } ], - '#regex_sub': - [ { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { token: - [ 'punctuation.definition.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'punctuation.definition.arbitrary-repitition.elixir' ], - regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, - { token: 'punctuation.definition.character-class.elixir', - regex: '\\[(?:\\^?\\])?', - push: - [ { token: 'punctuation.definition.character-class.elixir', - regex: '\\]', - next: 'pop' }, - { include: '#escaped_char' }, - { defaultToken: 'string.regexp.character-class.elixir' } ] }, - { token: 'punctuation.definition.group.elixir', - regex: '\\(', - push: - [ { token: 'punctuation.definition.group.elixir', - regex: '\\)', - next: 'pop' }, - { include: '#regex_sub' }, - { defaultToken: 'string.regexp.group.elixir' } ] }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', - originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', - comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }; - - this.normalizeRules(); -}; - -ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.', - fileTypes: [ 'ex', 'exs' ], - firstLineMatch: '^#!/.*\\belixir', - foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', - foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', - keyEquivalent: '^~E', - name: 'Elixir', - scopeName: 'source.elixir' }; - - -oop.inherits(ElixirHighlightRules, TextHighlightRules); - -exports.ElixirHighlightRules = ElixirHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = ElixirHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/elixir"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/elixir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-elm.js b/src-noconflict/mode-elm.js deleted file mode 100644 index a56a188..0000000 --- a/src-noconflict/mode-elm.js +++ /dev/null @@ -1,306 +0,0 @@ -ace.define("ace/mode/elm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElmHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": "as|case|class|data|default|deriving|do|else|export|foreign|" + - "hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|" + - "module|newtype|of|open|then|type|where|_|port|\u03BB" - }, "identifier"); - - var escapeRe = /\\(\d+|['"\\&trnbvf])/; - - var smallRe = /[a-z_]/.source; - var largeRe = /[A-Z]/.source; - var idRe = /[a-z_A-Z0-9']/.source; - - this.$rules = { - start: [{ - token: "string.start", - regex: '"', - next: "string" - }, { - token: "string.character", - regex: "'(?:" + escapeRe.source + "|.)'?" - }, { - regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/, - token: "constant.numeric" - }, { - token: "comment", - regex: "--.*" - }, { - token : "keyword", - regex : /\.\.|\||:|=|\\|"|->|<-|\u2192/ - }, { - token : "keyword.operator", - regex : /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/ - }, { - token : "operator.punctuation", - regex : /[,;`]/ - }, { - regex : largeRe + idRe + "+\\.?", - token : function(value) { - if (value[value.length - 1] == ".") - return "entity.name.function"; - return "constant.language"; - } - }, { - regex : "^" + smallRe + idRe + "+", - token : function(value) { - return "constant.language"; - } - }, { - token : keywordMapper, - regex : "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b" - }, { - regex: "{-#?", - token: "comment.start", - onMatch: function(value, currentState, stack) { - this.next = value.length == 2 ? "blockComment" : "docComment"; - return this.token; - } - }, { - token: "variable.language", - regex: /\[markdown\|/, - next: "markdown" - }, { - token: "paren.lparen", - regex: /[\[({]/ - }, { - token: "paren.rparen", - regex: /[\])}]/ - } ], - markdown: [{ - regex: /\|\]/, - next: "start" - }, { - defaultToken : "string" - }], - blockComment: [{ - regex: "{-", - token: "comment.start", - push: "blockComment" - }, { - regex: "-}", - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }], - docComment: [{ - regex: "{-", - token: "comment.start", - push: "docComment" - }, { - regex: "-}", - token: "comment.end", - next: "pop" - }, { - defaultToken: "doc.comment" - }], - string: [{ - token: "constant.language.escape", - regex: escapeRe - }, { - token: "text", - regex: /\\(\s|$)/, - next: "stringGap" - }, { - token: "string.end", - regex: '"', - next: "start" - }, { - defaultToken: "string" - }], - stringGap: [{ - token: "text", - regex: /\\/, - next: "string" - }, { - token: "error", - regex: "", - next: "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ElmHighlightRules, TextHighlightRules); - -exports.ElmHighlightRules = ElmHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./elm_highlight_rules").ElmHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "{-", end: "-}", nestable: true}; - this.$id = "ace/mode/elm"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/elm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-erlang.js b/src-noconflict/mode-erlang.js deleted file mode 100644 index ebdeb9f..0000000 --- a/src-noconflict/mode-erlang.js +++ /dev/null @@ -1,1010 +0,0 @@ -ace.define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ErlangHighlightRules = function() { - - this.$rules = { start: - [ { include: '#module-directive' }, - { include: '#import-export-directive' }, - { include: '#behaviour-directive' }, - { include: '#record-directive' }, - { include: '#define-directive' }, - { include: '#macro-directive' }, - { include: '#directive' }, - { include: '#function' }, - { include: '#everything-else' } ], - '#atom': - [ { token: 'punctuation.definition.symbol.begin.erlang', - regex: '\'', - push: - [ { token: 'punctuation.definition.symbol.end.erlang', - regex: '\'', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'constant.other.symbol.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\^?.?' }, - { defaultToken: 'constant.other.symbol.quoted.single.erlang' } ] }, - { token: 'constant.other.symbol.unquoted.erlang', - regex: '[a-z][a-zA-Z\\d@_]*' } ], - '#behaviour-directive': - [ { token: - [ 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.behaviour.erlang', - 'keyword.control.directive.behaviour.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.behaviour.erlang', - 'entity.name.type.class.behaviour.definition.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#binary': - [ { token: 'punctuation.definition.binary.begin.erlang', - regex: '<<', - push: - [ { token: 'punctuation.definition.binary.end.erlang', - regex: '>>', - next: 'pop' }, - { token: - [ 'punctuation.separator.binary.erlang', - 'punctuation.separator.value-size.erlang' ], - regex: '(,)|(:)' }, - { include: '#internal-type-specifiers' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.binary.erlang' } ] } ], - '#character': - [ { token: - [ 'punctuation.definition.character.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\$)(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.character.erlang', - regex: '\\$\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.character.erlang', - 'constant.character.erlang' ], - regex: '(\\$)(\\S)' }, - { token: 'invalid.illegal.character.erlang', regex: '\\$.?' } ], - '#comment': - [ { token: 'punctuation.definition.comment.erlang', - regex: '%.*$', - push_: - [ { token: 'comment.line.percentage.erlang', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.percentage.erlang' } ] } ], - '#define-directive': - [ { token: - [ 'meta.directive.define.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.define.erlang', - 'keyword.control.directive.define.erlang', - 'meta.directive.define.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.define.erlang', - 'entity.name.function.macro.definition.erlang', - 'meta.directive.define.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] }, - { token: 'meta.directive.define.erlang', - regex: '(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { token: - [ 'text', - 'punctuation.section.directive.begin.erlang', - 'text', - 'keyword.control.directive.define.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang', - 'text', - 'entity.name.function.macro.definition.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'text', - 'punctuation.separator.parameters.erlang' ], - regex: '(\\))(\\s*)(,)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.define.erlang', - regex: '\\|\\||\\||:|;|,|\\.|->' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] } ], - '#directive': - [ { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\)?)(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.erlang' } ] }, - { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)' } ], - '#everything-else': - [ { include: '#comment' }, - { include: '#record-usage' }, - { include: '#macro-usage' }, - { include: '#expression' }, - { include: '#keyword' }, - { include: '#textual-operator' }, - { include: '#function-call' }, - { include: '#tuple' }, - { include: '#list' }, - { include: '#binary' }, - { include: '#parenthesized-expression' }, - { include: '#character' }, - { include: '#number' }, - { include: '#atom' }, - { include: '#string' }, - { include: '#symbolic-operator' }, - { include: '#variable' } ], - '#expression': - [ { token: 'keyword.control.if.erlang', - regex: '\\bif\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.if.erlang' } ] }, - { token: 'keyword.control.case.erlang', - regex: '\\bcase\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.case.erlang' } ] }, - { token: 'keyword.control.receive.erlang', - regex: '\\breceive\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.receive.erlang' } ] }, - { token: - [ 'keyword.control.fun.erlang', - 'text', - 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)' }, - { token: 'keyword.control.fun.erlang', - regex: '\\bfun\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\bend\\b)', - next: 'pop' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.fun.erlang' } ] }, - { token: 'keyword.control.try.erlang', - regex: '\\btry\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.try.erlang' } ] }, - { token: 'keyword.control.begin.erlang', - regex: '\\bbegin\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.begin.erlang' } ] }, - { token: 'keyword.control.query.erlang', - regex: '\\bquery\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.query.erlang' } ] } ], - '#function': - [ { token: - [ 'meta.function.erlang', - 'entity.name.function.definition.erlang', - 'meta.function.erlang' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()', - push: - [ { token: 'punctuation.terminator.function.erlang', - regex: '\\.', - next: 'pop' }, - { token: [ 'text', 'entity.name.function.erlang', 'text' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()' }, - { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\.)', - next: 'pop' }, - { include: '#parenthesized-expression' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.function.erlang' } ] } ], - '#function-call': - [ { token: 'meta.function-call.erlang', - regex: '(?=(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*\\())', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.guard.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { defaultToken: 'meta.function-call.erlang' } ] } ], - '#import-export-directive': - [ { token: - [ 'meta.directive.import.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.import.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.import.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.import.erlang', - 'entity.name.type.class.module.erlang', - 'meta.directive.import.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.import.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.import.erlang' } ] }, - { token: - [ 'meta.directive.export.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.export.erlang', - 'keyword.control.directive.export.erlang', - 'meta.directive.export.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(export)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.export.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.export.erlang' } ] } ], - '#internal-expression-punctuation': - [ { token: - [ 'punctuation.separator.clause-head-body.erlang', - 'punctuation.separator.clauses.erlang', - 'punctuation.separator.expressions.erlang' ], - regex: '(->)|(;)|(,)' } ], - '#internal-function-list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: - [ 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(/)', - push: - [ { token: 'punctuation.separator.list.erlang', - regex: ',|(?=\\])', - next: 'pop' }, - { include: '#everything-else' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.function.erlang' } ] } ], - '#internal-function-parts': - [ { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clause-head-body.erlang', - regex: '->', - next: 'pop' }, - { token: 'punctuation.definition.parameters.begin.erlang', - regex: '\\(', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.guards.erlang', regex: ',|;' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.expressions.erlang', - regex: ',' }, - { include: '#everything-else' } ], - '#internal-record-body': - [ { token: 'punctuation.definition.class.record.begin.erlang', - regex: '\\{', - push: - [ { token: 'meta.structure.record.erlang', - regex: '(?=\\})', - next: 'pop' }, - { token: - [ 'variable.other.field.erlang', - 'variable.language.omitted.field.erlang', - 'text', - 'keyword.operator.assignment.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')|(_))(\\s*)(=|::)', - push: - [ { token: 'punctuation.separator.class.record.erlang', - regex: ',|(?=\\})', - next: 'pop' }, - { include: '#everything-else' } ] }, - { token: - [ 'variable.other.field.erlang', - 'text', - 'punctuation.separator.class.record.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)((?:,)?)' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.record.erlang' } ] } ], - '#internal-type-specifiers': - [ { token: 'punctuation.separator.value-type.erlang', - regex: '/', - push: - [ { token: 'text', regex: '(?=,|:|>>)', next: 'pop' }, - { token: - [ 'storage.type.erlang', - 'storage.modifier.signedness.erlang', - 'storage.modifier.endianness.erlang', - 'storage.modifier.unit.erlang', - 'punctuation.separator.type-specifiers.erlang' ], - regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] } ], - '#keyword': - [ { token: 'keyword.control.erlang', - regex: '\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' } ], - '#list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: 'punctuation.separator.list.erlang', - regex: '\\||\\|\\||,' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.erlang' } ] } ], - '#macro-directive': - [ { token: - [ 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifdef.erlang', - 'keyword.control.directive.ifdef.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifdef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifndef.erlang', - 'keyword.control.directive.ifndef.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifndef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.undef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.undef.erlang', - 'keyword.control.directive.undef.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.undef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.undef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], - '#macro-usage': - [ { token: - [ 'keyword.operator.macro.erlang', - 'meta.macro-usage.erlang', - 'entity.name.function.macro.erlang' ], - regex: '(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)' } ], - '#module-directive': - [ { token: - [ 'meta.directive.module.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.module.erlang', - 'keyword.control.directive.module.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.module.erlang', - 'entity.name.type.class.module.definition.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.module.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#number': - [ { token: 'text', - regex: '(?=\\d)', - push: - [ { token: 'text', regex: '(?!\\d)', next: 'pop' }, - { token: - [ 'constant.numeric.float.erlang', - 'punctuation.separator.integer-float.erlang', - 'constant.numeric.float.erlang', - 'punctuation.separator.float-exponent.erlang' ], - regex: '(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)' }, - { token: - [ 'constant.numeric.integer.binary.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.binary.erlang' ], - regex: '(2)(#)([0-1]+)' }, - { token: - [ 'constant.numeric.integer.base-3.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-3.erlang' ], - regex: '(3)(#)([0-2]+)' }, - { token: - [ 'constant.numeric.integer.base-4.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-4.erlang' ], - regex: '(4)(#)([0-3]+)' }, - { token: - [ 'constant.numeric.integer.base-5.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-5.erlang' ], - regex: '(5)(#)([0-4]+)' }, - { token: - [ 'constant.numeric.integer.base-6.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-6.erlang' ], - regex: '(6)(#)([0-5]+)' }, - { token: - [ 'constant.numeric.integer.base-7.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-7.erlang' ], - regex: '(7)(#)([0-6]+)' }, - { token: - [ 'constant.numeric.integer.octal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.octal.erlang' ], - regex: '(8)(#)([0-7]+)' }, - { token: - [ 'constant.numeric.integer.base-9.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-9.erlang' ], - regex: '(9)(#)([0-8]+)' }, - { token: - [ 'constant.numeric.integer.decimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.decimal.erlang' ], - regex: '(10)(#)(\\d+)' }, - { token: - [ 'constant.numeric.integer.base-11.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-11.erlang' ], - regex: '(11)(#)([\\daA]+)' }, - { token: - [ 'constant.numeric.integer.base-12.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-12.erlang' ], - regex: '(12)(#)([\\da-bA-B]+)' }, - { token: - [ 'constant.numeric.integer.base-13.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-13.erlang' ], - regex: '(13)(#)([\\da-cA-C]+)' }, - { token: - [ 'constant.numeric.integer.base-14.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-14.erlang' ], - regex: '(14)(#)([\\da-dA-D]+)' }, - { token: - [ 'constant.numeric.integer.base-15.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-15.erlang' ], - regex: '(15)(#)([\\da-eA-E]+)' }, - { token: - [ 'constant.numeric.integer.hexadecimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.hexadecimal.erlang' ], - regex: '(16)(#)([\\da-fA-F]+)' }, - { token: - [ 'constant.numeric.integer.base-17.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-17.erlang' ], - regex: '(17)(#)([\\da-gA-G]+)' }, - { token: - [ 'constant.numeric.integer.base-18.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-18.erlang' ], - regex: '(18)(#)([\\da-hA-H]+)' }, - { token: - [ 'constant.numeric.integer.base-19.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-19.erlang' ], - regex: '(19)(#)([\\da-iA-I]+)' }, - { token: - [ 'constant.numeric.integer.base-20.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-20.erlang' ], - regex: '(20)(#)([\\da-jA-J]+)' }, - { token: - [ 'constant.numeric.integer.base-21.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-21.erlang' ], - regex: '(21)(#)([\\da-kA-K]+)' }, - { token: - [ 'constant.numeric.integer.base-22.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-22.erlang' ], - regex: '(22)(#)([\\da-lA-L]+)' }, - { token: - [ 'constant.numeric.integer.base-23.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-23.erlang' ], - regex: '(23)(#)([\\da-mA-M]+)' }, - { token: - [ 'constant.numeric.integer.base-24.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-24.erlang' ], - regex: '(24)(#)([\\da-nA-N]+)' }, - { token: - [ 'constant.numeric.integer.base-25.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-25.erlang' ], - regex: '(25)(#)([\\da-oA-O]+)' }, - { token: - [ 'constant.numeric.integer.base-26.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-26.erlang' ], - regex: '(26)(#)([\\da-pA-P]+)' }, - { token: - [ 'constant.numeric.integer.base-27.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-27.erlang' ], - regex: '(27)(#)([\\da-qA-Q]+)' }, - { token: - [ 'constant.numeric.integer.base-28.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-28.erlang' ], - regex: '(28)(#)([\\da-rA-R]+)' }, - { token: - [ 'constant.numeric.integer.base-29.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-29.erlang' ], - regex: '(29)(#)([\\da-sA-S]+)' }, - { token: - [ 'constant.numeric.integer.base-30.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-30.erlang' ], - regex: '(30)(#)([\\da-tA-T]+)' }, - { token: - [ 'constant.numeric.integer.base-31.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-31.erlang' ], - regex: '(31)(#)([\\da-uA-U]+)' }, - { token: - [ 'constant.numeric.integer.base-32.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-32.erlang' ], - regex: '(32)(#)([\\da-vA-V]+)' }, - { token: - [ 'constant.numeric.integer.base-33.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-33.erlang' ], - regex: '(33)(#)([\\da-wA-W]+)' }, - { token: - [ 'constant.numeric.integer.base-34.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-34.erlang' ], - regex: '(34)(#)([\\da-xA-X]+)' }, - { token: - [ 'constant.numeric.integer.base-35.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-35.erlang' ], - regex: '(35)(#)([\\da-yA-Y]+)' }, - { token: - [ 'constant.numeric.integer.base-36.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-36.erlang' ], - regex: '(36)(#)([\\da-zA-Z]+)' }, - { token: 'invalid.illegal.integer.erlang', - regex: '\\d+#[\\da-zA-Z]+' }, - { token: 'constant.numeric.integer.decimal.erlang', - regex: '\\d+' } ] } ], - '#parenthesized-expression': - [ { token: 'punctuation.section.expression.begin.erlang', - regex: '\\(', - push: - [ { token: 'punctuation.section.expression.end.erlang', - regex: '\\)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.parenthesized' } ] } ], - '#record-directive': - [ { token: - [ 'meta.directive.record.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.record.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.record.erlang', - 'entity.name.type.class.record.definition.erlang', - 'meta.directive.record.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.class.record.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\})(\\s*)(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.directive.record.erlang' } ] } ], - '#record-usage': - [ { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang', - 'meta.record-usage.erlang', - 'punctuation.separator.record-field.erlang', - 'meta.record-usage.erlang', - 'variable.other.field.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')' }, - { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')', - push: - [ { token: 'punctuation.definition.class.record.end.erlang', - regex: '\\}', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.record-usage.erlang' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.erlang', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.erlang', - regex: '"', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.string.erlang', regex: '\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])' }, - { token: 'invalid.illegal.string.erlang', regex: '~.?' }, - { defaultToken: 'string.quoted.double.erlang' } ] } ], - '#symbolic-operator': - [ { token: 'keyword.operator.symbolic.erlang', - regex: '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' } ], - '#textual-operator': - [ { token: 'keyword.operator.textual.erlang', - regex: '\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' } ], - '#tuple': - [ { token: 'punctuation.definition.tuple.begin.erlang', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tuple.end.erlang', - regex: '\\}', - next: 'pop' }, - { token: 'punctuation.separator.tuple.erlang', regex: ',' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.tuple.erlang' } ] } ], - '#variable': - [ { token: [ 'variable.other.erlang', 'variable.language.omitted.erlang' ], - regex: '(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)' } ] }; - - this.normalizeRules(); -}; - -ErlangHighlightRules.metaData = { comment: 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp', - fileTypes: [ 'erl', 'hrl' ], - keyEquivalent: '^~E', - name: 'Erlang', - scopeName: 'source.erlang' }; - - -oop.inherits(ErlangHighlightRules, TextHighlightRules); - -exports.ErlangHighlightRules = ErlangHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ErlangHighlightRules = require("./erlang_highlight_rules").ErlangHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ErlangHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.blockComment = null; - this.$id = "ace/mode/erlang"; - this.snippetFileId = "ace/snippets/erlang"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/erlang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-forth.js b/src-noconflict/mode-forth.js deleted file mode 100644 index ae88c58..0000000 --- a/src-noconflict/mode-forth.js +++ /dev/null @@ -1,297 +0,0 @@ -ace.define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ForthHighlightRules = function() { - - this.$rules = { start: [ { include: '#forth' } ], - '#comment': - [ { token: 'comment.line.double-dash.forth', - regex: '(?:^|\\s)--\\s.*$', - comment: 'line comments for iForth' }, - { token: 'comment.line.backslash.forth', - regex: '(?:^|\\s)\\\\[\\s\\S]*$', - comment: 'ANSI line comment' }, - { token: 'comment.line.backslash-g.forth', - regex: '(?:^|\\s)\\\\[Gg] .*$', - comment: 'gForth line comment' }, - { token: 'comment.block.forth', - regex: '(?:^|\\s)\\(\\*(?=\\s|$)', - push: - [ { token: 'comment.block.forth', - regex: '(?:^|\\s)\\*\\)(?=\\s|$)', - next: 'pop' }, - { defaultToken: 'comment.block.forth' } ], - comment: 'multiline comments for iForth' }, - { token: 'comment.block.documentation.forth', - regex: '\\bDOC\\b', - caseInsensitive: true, - push: - [ { token: 'comment.block.documentation.forth', - regex: '\\bENDDOC\\b', - caseInsensitive: true, - next: 'pop' }, - { defaultToken: 'comment.block.documentation.forth' } ], - comment: 'documentation comments for iForth' }, - { token: 'comment.line.parentheses.forth', - regex: '(?:^|\\s)\\.?\\( [^)]*\\)', - comment: 'ANSI line comment' } ], - '#constant': - [ { token: 'constant.language.forth', - regex: '(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)', - caseInsensitive: true}, - { token: 'constant.numeric.forth', - regex: '(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)'}, - { token: 'constant.character.forth', - regex: '(?:^|\\s)(?:[&^]\\S|(?:"|\')\\S(?:"|\'))(?=\\s|$)'}], - '#forth': - [ { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { include: '#word-def' } ], - '#storage': - [ { token: 'storage.type.forth', - regex: '(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)', - caseInsensitive: true}], - '#string': - [ { token: 'string.quoted.double.forth', - regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")', - caseInsensitive: true}, - { token: 'string.unquoted.forth', - regex: '(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)', - caseInsensitive: true}], - '#variable': - [ { token: 'variable.language.forth', - regex: '\\b(?:I|J)\\b', - caseInsensitive: true } ], - '#word': - [ { token: 'keyword.control.immediate.forth', - regex: '(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.immediate.forth', - regex: '(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT\'S|])(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.control.compile-only.forth', - regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.compile-only.forth', - regex: '(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\[\'\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]||DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.non-immediate.forth', - regex: '(?:^|\\s)(?:\'|||CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.warning.forth', - regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)', - caseInsensitive: true}], - '#word-def': - [ { token: - [ 'keyword.other.compile-only.forth', - 'keyword.other.compile-only.forth', - 'meta.block.forth', - 'entity.name.function.forth' ], - regex: '(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)', - caseInsensitive: true, - push: - [ { token: 'keyword.other.compile-only.forth', - regex: ';(?:CODE)?', - caseInsensitive: true, - next: 'pop' }, - { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { defaultToken: 'meta.block.forth' } ] } ] }; - - this.normalizeRules(); -}; - -ForthHighlightRules.metaData = { fileTypes: [ 'frt', 'fs', 'ldr', 'fth', '4th' ], - foldingStartMarker: '/\\*\\*|\\{\\s*$', - foldingStopMarker: '\\*\\*/|^\\s*\\}', - keyEquivalent: '^~F', - name: 'Forth', - scopeName: 'source.forth' }; - - -oop.inherits(ForthHighlightRules, TextHighlightRules); - -exports.ForthHighlightRules = ForthHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ForthHighlightRules = require("./forth_highlight_rules").ForthHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ForthHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = null; - this.$id = "ace/mode/forth"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/forth"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-fortran.js b/src-noconflict/mode-fortran.js deleted file mode 100644 index 1fb245f..0000000 --- a/src-noconflict/mode-fortran.js +++ /dev/null @@ -1,430 +0,0 @@ -ace.define("ace/mode/fortran_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var FortranHighlightRules = function() { - - var keywords = ( - "call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|"+ - "if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|"+ - "select|status|stop|subroutine|" + - "return|then|use|while|write|"+ - "CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|"+ - "IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|"+ - "SELECT|STATUS|STOP|SUBROUTINE|" + - "RETURN|THEN|USE|WHILE|WRITE" - ); - - var keywordOperators = ( - "and|or|not|eq|ne|gt|ge|lt|le|" + - "AND|OR|NOT|EQ|NE|GT|GE|LT|LE" - ); - - var builtinConstants = ( - "true|false|TRUE|FALSE" - ); - - var builtinFunctions = ( - "abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|"+ - "anint|any|asin|asinh|associated|atan|atan2|atanh|"+ - "bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|"+ - "bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|"+ - "count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|"+ - "dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|"+ - "format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|"+ - "merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|"+ - "precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|"+ - "rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|"+ - "set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|"+ - "sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|" + - "ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|"+ - "ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|"+ - "BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|"+ - "BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|"+ - "COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|"+ - "DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|"+ - "FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|"+ - "MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|"+ - "PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|"+ - "RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|"+ - "SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|"+ - "SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY" - ); - - var storageType = ( - "logical|character|integer|real|type|" + - "LOGICAL|CHARACTER|INTEGER|REAL|TYPE" - ); - - var storageModifiers = ( - "allocatable|dimension|intent|parameter|pointer|target|private|public|" + - "ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC" - ); - - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords, - "keyword.operator": keywordOperators, - "storage.type": storageType, - "storage.modifier" : storageModifiers - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "!.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] - }; -}; - -oop.inherits(FortranHighlightRules, TextHighlightRules); - -exports.FortranHighlightRules = FortranHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/fortran",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fortran_highlight_rules","ace/mode/folding/cstyle","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var FortranHighlightRules = require("./fortran_highlight_rules").FortranHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = FortranHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "!"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "return": 1, - "break": 1, - "continue": 1, - "RETURN": 1, - "BREAK": 1, - "CONTINUE": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/fortran"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/fortran"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-fsharp.js b/src-noconflict/mode-fsharp.js deleted file mode 100644 index 590a9b4..0000000 --- a/src-noconflict/mode-fsharp.js +++ /dev/null @@ -1,316 +0,0 @@ -ace.define("ace/mode/fsharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var FSharpHighlightRules = function () { - - var keywordMapper = this.createKeywordMapper({ - "variable": "this", - "keyword": 'abstract|assert|base|begin|class|default|delegate|done|downcast|downto|elif\ -|else|exception|extern|false|finally|function|global|inherit|inline|interface|internal|lazy|match\ -|member|module|mutable|namespace|open|or|override|private|public|rec|return|return!|select|static\ -|struct|then|to|true|try|typeof|upcast|use|use!|val|void|when|while|with|yield|yield!|__SOURCE_DIRECTORY__\ -|as|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue\ -|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall\ -|trait|virtual|volatile|and|do|end|for|fun|if|in|let|let!|new|not|null|of|endif', - "constant": "true|false" - }, "identifier"); - - var floatNumber = "(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"; - - this.$rules = { - "start": [ - { - token: "variable.classes", - regex: '\\[\\<[.]*\\>\\]' - }, - { - token: "comment", - regex: '//.*$' - }, - { - token: "comment.start", - regex: /\(\*(?!\))/, - push: "blockComment" - }, - { - token: "string", - regex: "'.'" - }, - { - token: "string", - regex: '"""', - next : [{ - token : "constant.language.escape", - regex : /\\./, - next : "qqstring" - }, { - token : "string", - regex : '"""', - next : "start" - }, { - defaultToken: "string" - }] - }, - { - token: "string", - regex: '"', - next : [{ - token : "constant.language.escape", - regex : /\\./, - next : "qqstring" - }, { - token : "string", - regex : '"', - next : "start" - }, { - defaultToken: "string" - }] - }, - { - token: ["verbatim.string", "string"], - regex: '(@?)(")', - stateName : "qqstring", - next : [{ - token : "constant.language.escape", - regex : '""' - }, { - token : "string", - regex : '"', - next : "start" - }, { - defaultToken: "string" - }] - }, - { - token: "constant.float", - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, - { - token: "constant.float", - regex: floatNumber - }, - { - token: "constant.integer", - regex: "(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b" - }, - { - token: ["keyword.type", "variable"], - regex: "(type\\s)([a-zA-Z0-9_$\-]*\\b)" - }, - { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "keyword.operator", - regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|\\(\\*\\)" - }, - { - token: "paren.lparen", - regex: "[[({]" - }, - { - token: "paren.rparen", - regex: "[\\])}]" - } - ], - blockComment: [{ - regex: /\(\*\)/, - token: "comment" - }, { - regex: /\(\*(?!\))/, - token: "comment.start", - push: "blockComment" - }, { - regex: /\*\)/, - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }] - }; - this.normalizeRules(); -}; - - -oop.inherits(FSharpHighlightRules, TextHighlightRules); - -exports.FSharpHighlightRules = FSharpHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/fsharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsharp_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var FSharpHighlightRules = require("./fsharp_highlight_rules").FSharpHighlightRules; - var CStyleFoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function () { - TextMode.call(this); - this.HighlightRules = FSharpHighlightRules; - this.foldingRules = new CStyleFoldMode(); - }; - - oop.inherits(Mode, TextMode); - - - (function () { - this.lineCommentStart = "//"; - this.blockComment = {start: "(*", end: "*)", nestable: true}; - - - this.$id = "ace/mode/fsharp"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/fsharp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-fsl.js b/src-noconflict/mode-fsl.js deleted file mode 100644 index 01e02fb..0000000 --- a/src-noconflict/mode-fsl.js +++ /dev/null @@ -1,259 +0,0 @@ -ace.define("ace/mode/fsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var FSLHighlightRules = function() { - - this.$rules = { - start: [{ - token: "punctuation.definition.comment.mn", - regex: /\/\*/, - push: [{ - token: "punctuation.definition.comment.mn", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.fsl" - }] - }, { - token: "comment.line.fsl", - regex: /\/\//, - push: [{ - token: "comment.line.fsl", - regex: /$/, - next: "pop" - }, { - defaultToken: "comment.line.fsl" - }] - }, { - token: "entity.name.function", - regex: /\${/, - push: [{ - token: "entity.name.function", - regex: /}/, - next: "pop" - }, { - defaultToken: "keyword.other" - }], - comment: "js outcalls" - }, { - token: "constant.numeric", - regex: /[0-9]*\.[0-9]*\.[0-9]*/, - comment: "semver" - }, { - token: "constant.language.fslLanguage", - regex: "(?:" - + "graph_layout|machine_name|machine_author|machine_license|machine_comment|machine_language" - + "|machine_version|machine_reference|npm_name|graph_layout|on_init|on_halt|on_end|on_terminate|on_finalize|on_transition" - + "|on_action|on_stochastic_action|on_legal|on_main|on_forced|on_validation|on_validation_failure|on_transition_refused|on_forced_transition_refused" - + "|on_action_refused|on_enter|on_exit|start_states|end_states|terminal_states|final_states|fsl_version" - + ")\\s*:" - }, { - token: "keyword.control.transition.fslArrow", - regex: /<->|<-|->|<=>|=>|<=|<~>|~>|<~|<-=>|<=->|<-~>|<~->|<=~>|<~=>/ - }, { - token: "constant.numeric.fslProbability", - regex: /[0-9]+%/, - comment: "edge probability annotation" - }, { - token: "constant.character.fslAction", - regex: /\'[^']*\'/, - comment: "action annotation" - }, { - token: "string.quoted.double.fslLabel.doublequoted", - regex: /\"[^"]*\"/, - comment: "fsl label annotation" - }, { - token: "entity.name.tag.fslLabel.atom", - regex: /[a-zA-Z0-9_.+&()#@!?,]/, - comment: "fsl label annotation" - }] - }; - - this.normalizeRules(); -}; - -FSLHighlightRules.metaData = { - fileTypes: ["fsl", "fsl_state"], - name: "FSL", - scopeName: "source.fsl" -}; - - -oop.inherits(FSLHighlightRules, TextHighlightRules); - -exports.FSLHighlightRules = FSLHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/fsl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsl_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var FSLHighlightRules = require("./fsl_highlight_rules").FSLHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = FSLHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/fsl"; - this.snippetFileId = "ace/snippets/fsl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/fsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ftl.js b/src-noconflict/mode-ftl.js deleted file mode 100644 index 49057f5..0000000 --- a/src-noconflict/mode-ftl.js +++ /dev/null @@ -1,1193 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var FtlLangHighlightRules = function () { - - var stringBuiltIns = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|" - + "ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|" - + "left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|" - + "upper_case|word_list|xhtml|xml"; - var numberBuiltIns = "c|round|floor|ceiling"; - var dateBuiltIns = "iso_[a-z_]+"; - var seqBuiltIns = "first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk"; - var hashBuiltIns = "keys|values"; - var xmlBuiltIns = "children|parent|root|ancestors|node_name|node_type|node_namespace"; - var expertBuiltIns = "byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|" - + "eval|has_content|interpret|is_[a-z_]+|namespacenew"; - var allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns - + xmlBuiltIns + expertBuiltIns; - - var deprecatedBuiltIns = "default|exists|if_exists|web_safe"; - - var variables = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|" - + "now|output_encoding|template_name|url_escaping_charset|vars|version"; - - var operators = "gt|gte|lt|lte|as|in|using"; - - var reserved = "true|false"; - - var attributes = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|" - + "url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|" - + "attributes"; - - this.$rules = { - "start" : [{ - token : "constant.character.entity", - regex : /&[^;]+;/ - }, { - token : "support.function", - regex : "\\?("+allBuiltIns+")" - }, { - token : "support.function.deprecated", - regex : "\\?("+deprecatedBuiltIns+")" - }, { - token : "language.variable", - regex : "\\.(?:"+variables+")" - }, { - token : "constant.language", - regex : "\\b("+reserved+")\\b" - }, { - token : "keyword.operator", - regex : "\\b(?:"+operators+")\\b" - }, { - token : "entity.other.attribute-name", - regex : attributes - }, { - token : "string", // - regex : /['"]/, - next : "qstring" - }, { - token : function(value) { - if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { - return "constant.numeric"; - } else { - return "variable"; - } - }, - regex : /[\w.+\-]+/ - }, { - token : "keyword.operator", - regex : "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }], - - "qstring" : [{ - token : "constant.character.escape", - regex : '\\\\[nrtvef\\\\"$]' - }, { - token : "string", - regex : /['"]/, - next : "start" - }, { - defaultToken : "string" - }] - }; -}; - -oop.inherits(FtlLangHighlightRules, TextHighlightRules); - -var FtlHighlightRules = function() { - HtmlHighlightRules.call(this); - - var directives = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|" - + "ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|" - + "setting|stop|switch|t|visit"; - - var startRules = [ - { - token : "comment", - regex : "<#--", - next : "ftl-dcomment" - }, { - token : "string.interpolated", - regex : "\\${", - push : "ftl-start" - }, { - token : "keyword.function", - regex : "", - next : "pop" - }, { - token : "string.interpolated", - regex : "}", - next : "pop" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(FtlLangHighlightRules, "ftl-", endRules, ["start"]); - - this.addRules({ - "ftl-dcomment" : [{ - token : "comment", - regex : "-->", - next : "pop" - }, { - defaultToken : "comment" - }] - }); - - this.normalizeRules(); -}; - -oop.inherits(FtlHighlightRules, HtmlHighlightRules); - -exports.FtlHighlightRules = FtlHighlightRules; -}); - -ace.define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; - -var Mode = function() { - this.HighlightRules = FtlHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/ftl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/ftl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-gcode.js b/src-noconflict/mode-gcode.js deleted file mode 100644 index 94a759b..0000000 --- a/src-noconflict/mode-gcode.js +++ /dev/null @@ -1,93 +0,0 @@ -ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var GcodeHighlightRules = function() { - - var keywords = ( - "IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL" - ); - - var builtinConstants = ( - "PI" - ); - - var builtinFunctions = ( - "ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN" - ); - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "\\(.*\\)" - }, { - token : "comment", // block number - regex : "([N])([0-9]+)" - }, { - token : "string", // " string - regex : "([G])([0-9]+\\.?[0-9]?)" - }, { - token : "string", // ' string - regex : "([M])([0-9]+\\.?[0-9]?)" - }, { - token : "constant.numeric", // float - regex : "([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" - }, { - token : keywordMapper, - regex : "[A-Z]" - }, { - token : "keyword.operator", - regex : "EQ|LT|GT|NE|GE|LE|OR|XOR" - }, { - token : "paren.lparen", - regex : "[\\[]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "text", - regex : "\\s+" - } ] - }; - }; - - oop.inherits(GcodeHighlightRules, TextHighlightRules); - - exports.GcodeHighlightRules = GcodeHighlightRules; -}); - -ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var GcodeHighlightRules = require("./gcode_highlight_rules").GcodeHighlightRules; - var Range = require("../range").Range; - - var Mode = function() { - this.HighlightRules = GcodeHighlightRules; - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() { - this.$id = "ace/mode/gcode"; - }).call(Mode.prototype); - - exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/gcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-gherkin.js b/src-noconflict/mode-gherkin.js deleted file mode 100644 index 16eccea..0000000 --- a/src-noconflict/mode-gherkin.js +++ /dev/null @@ -1,168 +0,0 @@ -ace.define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - -var GherkinHighlightRules = function() { - var languages = [{ - name: "en", - labels: "Feature|Background|Scenario(?: Outline)?|Examples", - keywords: "Given|When|Then|And|But" - }]; - - var labels = languages.map(function(l) { - return l.labels; - }).join("|"); - var keywords = languages.map(function(l) { - return l.keywords; - }).join("|"); - this.$rules = { - start : [{ - token: "constant.numeric", - regex: "(?:(?:[1-9]\\d*)|(?:0))" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "keyword", - regex : "(?:" + labels + "):|(?:" + keywords + ")\\b" - }, { - token : "keyword", - regex : "\\*" - }, { - token : "string", // multi line """ string start - regex : '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : '"', - next : "qqstring" - }, { - token : "text", - regex : "^\\s*(?=@[\\w])", - next : [{ - token : "text", - regex : "\\s+" - }, { - token : "variable.parameter", - regex : "@[\\w]+" - }, { - token : "empty", - regex : "", - next : "start" - }] - }, { - token : "comment", - regex : "<[^>]+>" - }, { - token : "comment", - regex : "\\|(?=.)", - next : "table-item" - }, { - token : "comment", - regex : "\\|$", - next : "start" - }], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - }], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "table-item" : [{ - token : "comment", - regex : /$/, - next : "start" - }, { - token : "comment", - regex : /\|/ - }, { - token : "string", - regex : /\\./ - }, { - defaultToken : "string" - }] - }; - this.normalizeRules(); -}; - -oop.inherits(GherkinHighlightRules, TextHighlightRules); - -exports.GherkinHighlightRules = GherkinHighlightRules; -}); - -ace.define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GherkinHighlightRules = require("./gherkin_highlight_rules").GherkinHighlightRules; - -var Mode = function() { - this.HighlightRules = GherkinHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/gherkin"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var space2 = " "; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if(line.match("[ ]*\\|")) { - indent += "| "; - } - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - - if (state == "start") { - if (line.match("Scenario:|Feature:|Scenario Outline:|Background:")) { - indent += space2; - } else if(line.match("(Given|Then).+(:)$|Examples:")) { - indent += space2; - } else if(line.match("\\*.+")) { - indent += "* "; - } - } - - - return indent; - }; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/gherkin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-gitignore.js b/src-noconflict/mode-gitignore.js deleted file mode 100644 index 434cd5b..0000000 --- a/src-noconflict/mode-gitignore.js +++ /dev/null @@ -1,59 +0,0 @@ -ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GitignoreHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "comment", - regex : /^\s*#.*$/ - }, { - token : "keyword", // negated patterns - regex : /^\s*!.*$/ - } - ] - }; - - this.normalizeRules(); -}; - -GitignoreHighlightRules.metaData = { - fileTypes: ['gitignore'], - name: 'Gitignore' -}; - -oop.inherits(GitignoreHighlightRules, TextHighlightRules); - -exports.GitignoreHighlightRules = GitignoreHighlightRules; -}); - -ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GitignoreHighlightRules = require("./gitignore_highlight_rules").GitignoreHighlightRules; - -var Mode = function() { - this.HighlightRules = GitignoreHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/gitignore"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/gitignore"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-glsl.js b/src-noconflict/mode-glsl.js deleted file mode 100644 index 9451bbb..0000000 --- a/src-noconflict/mode-glsl.js +++ /dev/null @@ -1,580 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + - "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "//$", - next : "start" - }, { - token : "comment", - regex : "//", - next : "singleLineComment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "constant.language.escape", regex: formatRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : 'R"\\(', - stateName: "rawString", - next: [ - { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; - this.snippetFileId = "ace/snippets/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; - -var glslHighlightRules = function() { - - var keywords = ( - "attribute|const|uniform|varying|break|continue|do|for|while|" + - "if|else|in|out|inout|float|int|void|bool|true|false|" + - "lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|" + - "mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|" + - "samplerCube|struct" - ); - - var buildinConstants = ( - "radians|degrees|sin|cos|tan|asin|acos|atan|pow|" + - "exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|" + - "min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|" + - "normalize|faceforward|reflect|refract|matrixCompMult|lessThan|" + - "lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|" + - "not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|" + - "texture2DProjLod|textureCube|textureCubeLod|" + - "gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|" + - "gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|" + - "gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|" + - "gl_DepthRangeParameters|gl_DepthRange|" + - "gl_Position|gl_PointSize|" + - "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = new c_cppHighlightRules().$rules; - this.$rules.start.forEach(function(rule) { - if (typeof rule.token == "function") - rule.token = keywordMapper; - }); -}; - -oop.inherits(glslHighlightRules, c_cppHighlightRules); - -exports.glslHighlightRules = glslHighlightRules; -}); - -ace.define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var glslHighlightRules = require("./glsl_highlight_rules").glslHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = glslHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, CMode); - -(function() { - this.$id = "ace/mode/glsl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/glsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-gobstones.js b/src-noconflict/mode-gobstones.js deleted file mode 100644 index a5bf5cb..0000000 --- a/src-noconflict/mode-gobstones.js +++ /dev/null @@ -1,1090 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GobstonesHighlightRules = function() { - - var definitions = { - standard: "program|procedure|function|interactive|return|let", - type: "type|is|variant|record|field|case" - }; - - var control = { - commands: { - repetitions: "repeat|while|foreach|in", - alternatives: "if|elseif|else|switch" - }, - expressions: { - alternatives: "choose|when|otherwise|matching|select|on" - } - }; - - var values = { - colors: "Verde|Rojo|Azul|Negro", - cardinals: "Norte|Sur|Este|Oeste", - booleans: "True|False", - numbers: /([-]?)([0-9]+)\b/, - strings: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }; - - var primitives = { - commands: "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|BOOM", - expressions: "nroBolitas|hayBolitas|puedeMover|"+ - "siguiente|previo|opuesto|"+ - "minBool|maxBool|minDir|maxDir|minColor|maxColor|"+ - "primero|sinElPrimero|esVacía|"+ - "boom", - keys: "K_A|K_B|K_C|K_D|K_E|K_F|K_G|K_G|K_H|K_I|K_J|K_K|K_L|K_M|K_N|K_Ñ|"+ - "K_O|K_P|K_Q|K_R|K_S|K_T|K_U|K_V|K_W|K_X|K_Y|K_Z|"+ - "K_0|K_1|K_2|K_3|K_4|K_5|K_6|K_7|K_8|K_9|"+ - "K_F1|K_F2|K_F3|K_F4|K_F5|K_F6|K_F7|K_F8|K_F9|K_F10|K_F11|K_12|"+ - "K_UP|K_DOWN|K_LEFT|K_RIGHT|K_RETURN|K_BACKSPACE|K_TAB|K_SPACE|K_ESCAPE"+ - - "K_CTRL_A|K_CTRL_B|K_CTRL_C|K_CTRL_D|K_CTRL_E|K_CTRL_F|K_CTRL_G|K_CTRL_G|"+ - "K_CTRL_H|K_CTRL_I|K_CTRL_J|K_CTRL_K|K_CTRL_L|K_CTRL_M|K_CTRL_N|K_CTRL_Ñ|"+ - "K_CTRL_O|K_CTRL_P|K_CTRL_Q|K_CTRL_R|K_CTRL_S|K_CTRL_T|K_CTRL_U|K_CTRL_V|"+ - "K_CTRL_W|K_CTRL_X|K_CTRL_Y|K_CTRL_Z|"+ - "K_CTRL_0|K_CTRL_1|K_CTRL_2|K_CTRL_3|K_CTRL_4|K_CTRL_5|K_CTRL_6|K_CTRL_7|K_CTRL_8|K_CTRL_9|"+ - "K_CTRL_F1|K_CTRL_F2|K_CTRL_F3|K_CTRL_F4|K_CTRL_F5|K_CTRL_F6|K_CTRL_F7|"+ - "K_CTRL_F8|K_CTRL_F9|K_CTRL_F10|K_CTRL_F11|K_CTRL_F12|"+ - "K_CTRL_UP|K_CTRL_DOWN|K_CTRL_LEFT|K_CTRL_RIGHT|K_CTRL_RETURN|"+ - "K_CTRL_BACKSPACE|K_CTRL_TAB|K_CTRL_SPACE|K_CTRL_ESCAPE"+ - - "K_ALT_A|K_ALT_B|K_ALT_C|K_ALT_D|K_ALT_E|K_ALT_F|K_ALT_G|K_ALT_G|K_ALT_H|"+ - "K_ALT_I|K_ALT_J|K_ALT_K|K_ALT_L|K_ALT_M|K_ALT_N|K_ALT_Ñ|K_ALT_O|K_ALT_P|"+ - "K_ALT_Q|K_ALT_R|K_ALT_S|K_ALT_T|K_ALT_U|K_ALT_V|K_ALT_W|K_ALT_X|K_ALT_Y|K_ALT_Z|"+ - "K_ALT_0|K_ALT_1|K_ALT_2|K_ALT_3|K_ALT_4|K_ALT_5|K_ALT_6|K_ALT_7|K_ALT_8|K_ALT_9|"+ - "K_ALT_F1|K_ALT_F2|K_ALT_F3|K_ALT_F4|K_ALT_F5|K_ALT_F6|K_ALT_F7|K_ALT_F8|"+ - "K_ALT_F9|K_ALT_F10|K_ALT_F11|K_ALT_F12|"+ - "K_ALT_UP|K_ALT_DOWN|K_ALT_LEFT|K_ALT_RIGHT|K_ALT_RETURN|K_ALT_BACKSPACE|"+ - "K_ALT_TAB|K_ALT_SPACE|K_ALT_ESCAPE"+ - - "K_SHIFT_A|K_SHIFT_B|K_SHIFT_C|K_SHIFT_D|K_SHIFT_E|K_SHIFT_F|K_SHIFT_G|"+ - "K_SHIFT_G|K_SHIFT_H|K_SHIFT_I|K_SHIFT_J|K_SHIFT_K|K_SHIFT_L|K_SHIFT_M|"+ - "K_SHIFT_N|K_SHIFT_Ñ|K_SHIFT_O|K_SHIFT_P|K_SHIFT_Q|K_SHIFT_R|K_SHIFT_S|"+ - "K_SHIFT_T|K_SHIFT_U|K_SHIFT_V|K_SHIFT_W|K_SHIFT_X|K_SHIFT_Y|K_SHIFT_Z|"+ - "K_SHIFT_0|K_SHIFT_1|K_SHIFT_2|K_SHIFT_3|K_SHIFT_4|K_SHIFT_5|K_SHIFT_6|"+ - "K_SHIFT_7|K_SHIFT_8|K_SHIFT_9|"+ - "K_SHIFT_F1|K_SHIFT_F2|K_SHIFT_F3|K_SHIFT_F4|K_SHIFT_F5|K_SHIFT_F6|"+ - "K_SHIFT_F7|K_SHIFT_F8|K_SHIFT_F9|K_SHIFT_F10|K_SHIFT_F11|K_SHIFT_F12|"+ - "K_SHIFT_UP|K_SHIFT_DOWN|K_SHIFT_LEFT|K_SHIFT_RIGHT|K_SHIFT_RETURN|"+ - "K_SHIFT_BACKSPACE|K_SHIFT_TAB|K_SHIFT_SPACE|K_SHIFT_ESCAPE"+ - - "K_CTRL_ALT_A|K_CTRL_ALT_B|K_CTRL_ALT_C|K_CTRL_ALT_D|K_CTRL_ALT_E|"+ - "K_CTRL_ALT_F|K_CTRL_ALT_G|K_CTRL_ALT_G|K_CTRL_ALT_H|K_CTRL_ALT_I|"+ - "K_CTRL_ALT_J|K_CTRL_ALT_K|K_CTRL_ALT_L|K_CTRL_ALT_M|K_CTRL_ALT_N|"+ - "K_CTRL_ALT_Ñ|K_CTRL_ALT_O|K_CTRL_ALT_P|K_CTRL_ALT_Q|K_CTRL_ALT_R|"+ - "K_CTRL_ALT_S|K_CTRL_ALT_T|K_CTRL_ALT_U|K_CTRL_ALT_V|K_CTRL_ALT_W|"+ - "K_CTRL_ALT_X|K_CTRL_ALT_Y|K_CTRL_ALT_Z|"+ - "K_CTRL_ALT_0|K_CTRL_ALT_1|K_CTRL_ALT_2|K_CTRL_ALT_3|K_CTRL_ALT_4|"+ - "K_CTRL_ALT_5|K_CTRL_ALT_6|K_CTRL_ALT_7|K_CTRL_ALT_8|K_CTRL_ALT_9|"+ - "K_CTRL_ALT_F1|K_CTRL_ALT_F2|K_CTRL_ALT_F3|K_CTRL_ALT_F4|K_CTRL_ALT_F5|"+ - "K_CTRL_ALT_F6|K_CTRL_ALT_F7|K_CTRL_ALT_F8|K_CTRL_ALT_F9|K_CTRL_ALT_F10|"+ - "K_CTRL_ALT_F11|K_CTRL_ALT_F12|"+ - "K_CTRL_ALT_UP|K_CTRL_ALT_DOWN|K_CTRL_ALT_LEFT|K_CTRL_ALT_RIGHT|"+ - "K_CTRL_ALT_RETURN|K_CTRL_ALT_BACKSPACE|K_CTRL_ALT_TAB|K_CTRL_ALT_SPACE|K_CTRL_ALT_ESCAPE"+ - - "K_CTRL_SHIFT_A|K_CTRL_SHIFT_B|K_CTRL_SHIFT_C|K_CTRL_SHIFT_D|K_CTRL_SHIFT_E|"+ - "K_CTRL_SHIFT_F|K_CTRL_SHIFT_G|K_CTRL_SHIFT_G|K_CTRL_SHIFT_H|K_CTRL_SHIFT_I|"+ - "K_CTRL_SHIFT_J|K_CTRL_SHIFT_K|K_CTRL_SHIFT_L|K_CTRL_SHIFT_M|K_CTRL_SHIFT_N|"+ - "K_CTRL_SHIFT_Ñ|K_CTRL_SHIFT_O|K_CTRL_SHIFT_P|K_CTRL_SHIFT_Q|K_CTRL_SHIFT_R|"+ - "K_CTRL_SHIFT_S|K_CTRL_SHIFT_T|K_CTRL_SHIFT_U|K_CTRL_SHIFT_V|K_CTRL_SHIFT_W|"+ - "K_CTRL_SHIFT_X|K_CTRL_SHIFT_Y|K_CTRL_SHIFT_Z|"+ - "K_CTRL_SHIFT_0|K_CTRL_SHIFT_1|K_CTRL_SHIFT_2|K_CTRL_SHIFT_3|K_CTRL_SHIFT_4|"+ - "K_CTRL_SHIFT_5|K_CTRL_SHIFT_6|K_CTRL_SHIFT_7|K_CTRL_SHIFT_8|K_CTRL_SHIFT_9|"+ - "K_CTRL_SHIFT_F1|K_CTRL_SHIFT_F2|K_CTRL_SHIFT_F3|K_CTRL_SHIFT_F4|"+ - "K_CTRL_SHIFT_F5|K_CTRL_SHIFT_F6|K_CTRL_SHIFT_F7|K_CTRL_SHIFT_F8|"+ - "K_CTRL_SHIFT_9|K_CTRL_SHIFT_10|K_CTRL_SHIFT_11|K_CTRL_SHIFT_12|"+ - "K_CTRL_SHIFT_UP|K_CTRL_SHIFT_DOWN|K_CTRL_SHIFT_LEFT|K_CTRL_SHIFT_RIGHT|"+ - "K_CTRL_SHIFT_RETURN|K_CTRL_SHIFT_BACKSPACE|K_CTRL_SHIFT_TAB|"+ - "K_CTRL_SHIFT_SPACE|K_CTRL_SHIFT_ESCAPE"+ - - "K_ALT_SHIFT_A|K_ALT_SHIFT_B|K_ALT_SHIFT_C|K_ALT_SHIFT_D|K_ALT_SHIFT_E|"+ - "K_ALT_SHIFT_F|K_ALT_SHIFT_G|K_ALT_SHIFT_G|K_ALT_SHIFT_H|K_ALT_SHIFT_I|"+ - "K_ALT_SHIFT_J|K_ALT_SHIFT_K|K_ALT_SHIFT_L|K_ALT_SHIFT_M|K_ALT_SHIFT_N|"+ - "K_ALT_SHIFT_Ñ|K_ALT_SHIFT_O|K_ALT_SHIFT_P|K_ALT_SHIFT_Q|K_ALT_SHIFT_R|"+ - "K_ALT_SHIFT_S|K_ALT_SHIFT_T|K_ALT_SHIFT_U|K_ALT_SHIFT_V|K_ALT_SHIFT_W|"+ - "K_ALT_SHIFT_X|K_ALT_SHIFT_Y|K_ALT_SHIFT_Z|"+ - "K_ALT_SHIFT_0|K_ALT_SHIFT_1|K_ALT_SHIFT_2|K_ALT_SHIFT_3|K_ALT_SHIFT_4|"+ - "K_ALT_SHIFT_5|K_ALT_SHIFT_6|K_ALT_SHIFT_7|K_ALT_SHIFT_8|K_ALT_SHIFT_9|"+ - "K_ALT_SHIFT_F1|K_ALT_SHIFT_F2|K_ALT_SHIFT_F3|K_ALT_SHIFT_F4|"+ - "K_ALT_SHIFT_F5|K_ALT_SHIFT_F6|K_ALT_SHIFT_F7|K_ALT_SHIFT_F8|"+ - "K_ALT_SHIFT_9|K_ALT_SHIFT_10|K_ALT_SHIFT_11|K_ALT_SHIFT_12|"+ - "K_ALT_SHIFT_UP|K_ALT_SHIFT_DOWN|K_ALT_SHIFT_LEFT|K_ALT_SHIFT_RIGHT|"+ - "K_ALT_SHIFT_RETURN|K_ALT_SHIFT_BACKSPACE|K_ALT_SHIFT_TAB|K_ALT_SHIFT_SPACE|"+ - "K_ALT_SHIFT_ESCAPE"+ - - "K_CTRL_ALT_SHIFT_A|K_CTRL_ALT_SHIFT_B|K_CTRL_ALT_SHIFT_C|K_CTRL_ALT_SHIFT_D|"+ - "K_CTRL_ALT_SHIFT_E|K_CTRL_ALT_SHIFT_F|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_G|"+ - "K_CTRL_ALT_SHIFT_H|K_CTRL_ALT_SHIFT_I|K_CTRL_ALT_SHIFT_J|K_CTRL_ALT_SHIFT_K|"+ - "K_CTRL_ALT_SHIFT_L|K_CTRL_ALT_SHIFT_M|K_CTRL_ALT_SHIFT_N|K_CTRL_ALT_SHIFT_Ñ|"+ - "K_CTRL_ALT_SHIFT_O|K_CTRL_ALT_SHIFT_P|K_CTRL_ALT_SHIFT_Q|K_CTRL_ALT_SHIFT_R|"+ - "K_CTRL_ALT_SHIFT_S|K_CTRL_ALT_SHIFT_T|K_CTRL_ALT_SHIFT_U|K_CTRL_ALT_SHIFT_V|"+ - "K_CTRL_ALT_SHIFT_W|K_CTRL_ALT_SHIFT_X|K_CTRL_ALT_SHIFT_Y|K_CTRL_ALT_SHIFT_Z|"+ - "K_CTRL_ALT_SHIFT_0|K_CTRL_ALT_SHIFT_1|K_CTRL_ALT_SHIFT_2|K_CTRL_ALT_SHIFT_3|"+ - "K_CTRL_ALT_SHIFT_4|K_CTRL_ALT_SHIFT_5|K_CTRL_ALT_SHIFT_6|K_CTRL_ALT_SHIFT_7|"+ - "K_CTRL_ALT_SHIFT_8|K_CTRL_ALT_SHIFT_9|"+ - "K_CTRL_ALT_SHIFT_F1|K_CTRL_ALT_SHIFT_F2|K_CTRL_ALT_SHIFT_F3|K_CTRL_ALT_SHIFT_F4|"+ - "K_CTRL_ALT_SHIFT_F5|K_CTRL_ALT_SHIFT_F6|K_CTRL_ALT_SHIFT_F7|K_CTRL_ALT_SHIFT_F8|"+ - "K_CTRL_ALT_SHIFT_F9|K_CTRL_ALT_SHIFT_F10|K_CTRL_ALT_SHIFT_F11|K_CTRL_ALT_SHIFT_F12|"+ - "K_CTRL_ALT_SHIFT_UP|K_CTRL_ALT_SHIFT_DOWN|K_CTRL_ALT_SHIFT_LEFT|K_CTRL_ALT_SHIFT_RIGHT|"+ - "K_CTRL_ALT_SHIFT_RETURN|K_CTRL_ALT_SHIFT_BACKSPACE|K_CTRL_ALT_SHIFT_TAB|"+ - "K_CTRL_ALT_SHIFT_SPACE|K_CTRL_ALT_SHIFT_ESCAPE" - }; - - var operations = { - commands: ":=", - expressions: { - numeric: "\\+|\\-|\\*|\\^|div|mod", - comparison: ">=|<=|==|\\/=|>|<", - boolean: "\\|\\||&&|not", - other: "\\+\\+|<\\-|\\[|\\]|\\_|\\->" - } - }; - - var comments = { - line: { - double_slash: "\\/\\/.*$", - double_dash: "\\-\\-.*$", - number_sign: "#.*$" - }, - block: { start: "\\/\\*", end: "\\*\\/" }, - block_alt: { start: "\\{\\-", end: "\\-\\}" } - }; - - this.$rules = { - "start" : [ - { - token : "comment.line.double-slash.gobstones", - regex : comments.line.double_slash - }, - { - token : "comment.line.double-dash.gobstones", - regex : comments.line.double_dash - }, - { - token : "comment.line.number-sign.gobstones", - regex : comments.line.number_sign - }, - { - token : "comment.block.dash-asterisc.gobstones", - regex : comments.block.start, - next : "block_comment_end" - }, - { - token : "comment.block.brace-dash.gobstones", - regex : comments.block_alt.start, - next : "block_comment_alt_end" - }, - { - token : "constant.numeric.gobstones", - regex : values.numbers - }, - { - token : "string.quoted.double.gobstones", - regex : values.strings - }, - { - token : "keyword.operator.other.gobstones", - regex : operations.expressions.other - }, - { - token : "keyword.operator.numeric.gobstones", - regex : operations.expressions.numeric - }, - { - token : "keyword.operator.compare.gobstones", - regex : operations.expressions.comparison - }, - { - token : "keyword.operator.boolean.gobstones", - regex : operations.expressions.boolean - }, - { - token : this.createKeywordMapper({ - "storage.type.definitions.gobstones": definitions.standard, - "storage.type.types.gobstones": definitions.type, - "keyword.control.commands.repetitions.gobstones": control.commands.repetitions, - "keyword.control.commands.alternatives.gobstones": control.commands.alternatives, - "keyword.control.expressions.alternatives.gobstones": control.expressions.alternatives, - "constant.language.colors.gobstones":values.colors, - "constant.language.cardinals.gobstones": values.cardinals, - "constant.language.boolean.gobstones": values.booleans, - "support.function.gobstones": primitives.commands, - "support.variable.gobstones": primitives.expressions, - "variable.language.gobstones": primitives.keys - }, "identifier.gobstones"), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "comma.gobstones", - regex : "," - }, - { - token : "semicolon.gobstones", - regex : ";" - }, - { - token : "lparen", - regex : "[[({]" - }, - { - token : "rparen", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "block_comment_end": [{ - token : "comment.block.dash-asterisc.gobstones", - regex : comments.block.end, - next : "start" - }, { - defaultToken : "comment.block.dash-asterisc.gobstones" - } - ], - "block_comment_alt_end": [{ - token : "comment.block.brace-dash.gobstones", - regex : comments.block_alt.end, - next : "start" - }, { - defaultToken : "comment.block.brace-dash.gobstones" - } - ] - }; -}; - -oop.inherits(GobstonesHighlightRules, TextHighlightRules); - -exports.GobstonesHighlightRules = GobstonesHighlightRules; -}); - -ace.define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"], function(require, exports) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var GobstonesHighlightRules = require("./gobstones_highlight_rules").GobstonesHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = GobstonesHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function() { - return null; - }; - - this.$id = "ace/mode/gobstones"; - this.snippetFileId = "ace/snippets/gobstones"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/gobstones"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-golang.js b/src-noconflict/mode-golang.js deleted file mode 100644 index 1a8e605..0000000 --- a/src-noconflict/mode-golang.js +++ /dev/null @@ -1,413 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var GolangHighlightRules = function() { - var keywords = ( - "else|break|case|return|goto|if|const|select|" + - "continue|struct|default|switch|for|range|" + - "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + - "select|type|var" - ); - var builtinTypes = ( - "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + - "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error" - ); - var builtinFunctions = ( - "new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append" - ); - var builtinConstants = ("nil|true|false|iota"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions, - "support.type": builtinTypes - }, ""); - - var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment.start", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : /"(?:[^"\\]|\\.)*?"/ - }, { - token : "string", // raw - regex : '`', - next : "bqstring" - }, { - token : "constant.numeric", // rune - regex : "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : ["keyword", "text", "entity.name.function"], - regex : "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" - }, { - token : function(val) { - if (val[val.length - 1] == "(") { - return [{ - type: keywordMapper(val.slice(0, -1)) || "support.function", - value: val.slice(0, -1) - }, { - type: "paren.lparen", - value: val.slice(-1) - }]; - } - - return keywordMapper(val) || "identifier"; - }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.end", - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "bqstring" : [ - { - token : "string", - regex : '`', - next : "start" - }, { - defaultToken : "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - }; - oop.inherits(GolangHighlightRules, TextHighlightRules); - - exports.GolangHighlightRules = GolangHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = GolangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - };//end getNextLineIndent - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/golang"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/golang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-graphqlschema.js b/src-noconflict/mode-graphqlschema.js deleted file mode 100644 index 17b80ae..0000000 --- a/src-noconflict/mode-graphqlschema.js +++ /dev/null @@ -1,214 +0,0 @@ -ace.define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GraphQLSchemaHighlightRules = function() { - - var keywords = ( - "type|interface|union|enum|schema|input|implements|extends|scalar" - ); - - var dataTypes = ( - "Int|Float|String|ID|Boolean" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "storage.type": dataTypes - }, "identifier"); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - } ] - }; - this.normalizeRules(); -}; - -oop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules); - -exports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GraphQLSchemaHighlightRules = require("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = GraphQLSchemaHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/graphqlschema"; - this.snippetFileId = "ace/snippets/graphqlschema"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/graphqlschema"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-groovy.js b/src-noconflict/mode-groovy.js deleted file mode 100644 index 3054ac1..0000000 --- a/src-noconflict/mode-groovy.js +++ /dev/null @@ -1,989 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GroovyHighlightRules = function() { - - var keywords = ( - "assert|with|abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "def|float|native|super|while" - ); - - var buildinConstants = ( - "null|Infinity|NaN|undefined" - ); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "support.function": langClasses, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", - regex : '"""', - next : "qqstring" - }, { - token : "string", - regex : "'''", - next : "qstring" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ - }, { - token : "constant.language.escape", - regex : /\$[\w\d]+/ - }, { - token : "constant.language.escape", - regex : /\$\{[^"\}]+\}?/ - }, { - token : "string", - regex : '"{3,5}', - next : "start" - }, { - token : "string", - regex : '.+?' - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ - }, { - token : "string", - regex : "'{3,5}", - next : "start" - }, { - token : "string", - regex : ".+?" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(GroovyHighlightRules, TextHighlightRules); - -exports.GroovyHighlightRules = GroovyHighlightRules; -}); - -ace.define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = GroovyHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/groovy"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/groovy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-haml.js b/src-noconflict/mode-haml.js deleted file mode 100644 index 684b759..0000000 --- a/src-noconflict/mode-haml.js +++ /dev/null @@ -1,1873 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericBinary = exports.constantNumericBinary = { - token: "constant.numeric", - regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ -}; - -var constantNumericDecimal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ -}; - -var constantNumericOctal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ -}; - -var constantNumericRational = exports.constantNumericRational = { - token: "constant.numeric", //rational + complex - regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ -}; - -var constantNumericComplex = exports.constantNumericComplex = { - token: "constant.numeric", //simple complex numbers - regex: /\b([\d]i)\b/ -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float + complex - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" -}; - -var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + - "private_class_method|remove_method|undef_method" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; - - var closeParen = { - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "^": "^", - "|": "|", - "%": "%" - }; - - this.$rules = { - "start": [ - { - token: "comment", - regex: "#.*$" - }, { - token: "comment.multiline", // multi line comment - regex: "^=begin(?=$|\\s.*$)", - next: "comment" - }, { - token: "string.regexp", - regex: /[/](?=.*\/)/, - next: "regex" - }, - - [{ - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(")/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /"/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(')/, - push: [{ - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "string.end", - regex: /'/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start",//doesn't see any differences between strings and array of strings in highlighting - regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithoutInterpolation"; - return this.token; - } - }, { - token: "string.start", //doesn't see any differences between strings and array of strings in highlighting - regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithoutInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithInterpolation"; - return this.token; - } - }, { - token: "string.regexp", - regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "rState"; - return this.token; - } - }], - - { - token: "punctuation", // namespaces aren't symbols - regex: "::" - }, - instanceVariable, - { - token: "variable.global", // global variable - regex: "[$][a-zA-Z_\\d]+" - }, { - token: "support.class", // class name - regex: "[A-Z][a-zA-Z_\\d]*" - }, { - token: ["punctuation.operator", "support.function"], - regex: /(\.)([a-zA-Z_\d]+)(?=\()/ - }, { - token: ["punctuation.operator", "identifier"], - regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ - }, { - token: "string.character", - regex: "\\B\\?(?:" + escapedChars + "|\\S)" - }, { - token: "punctuation.operator", - regex: /\?(?=.+:)/ - }, - - constantNumericRational, - constantNumericComplex, - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - constantNumericBinary, - constantNumericDecimal, - constantNumericOctal, - { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "punctuation.separator.key-value", - regex: "=>" - }, { - stateName: "heredoc", - onMatch: function (value, currentState, stack) { - var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type: "constant", value: tokens[1]}, - {type: "string", value: tokens[2]}, - {type: "support.class", value: tokens[3]}, - {type: "string", value: tokens[4]} - ]; - }, - regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex: "$", - token: "empty", - next: function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]", - onMatch: function(value, currentState, stack) { - this.next = ''; - if (value == "}" && stack.length > 1 && stack[1] != "start") { - stack.shift(); - this.next = stack.shift(); - } - return this.token; - } - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/ - } - ], - "comment": [ - { - token: "comment.multiline", // closing comment - regex: "^=end(?=$|\\s.*$)", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - } - ], - "qStateWithInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "qStateWithoutInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "sStateWithoutInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "sStateWithInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "rState": [{ - token: "string.regexp",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.language.escape"; - } - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.regexp", - regex: /\// - }, { - token: "string.regexp", - regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { - if (stack.length && val[0] === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.language.escape"; - } - }, - {include: "regex"}, - { - defaultToken: "string.regexp" - }], - "regex": [ - {// character classes - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "constant.language.escape", - regex: /\\[AGbBzZ]/ - }, { - token: "constant.language.escape", - regex: /\\g<[a-zA-Z0-9]*>/ - }, { - token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], - regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ - }, { - token: ["constant.language.escape", "invalid", "constant.language.escape"], - regex: /(\\p{\^?)([^/]*)(})/ - }, {// escapes - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, {// flag - token: "string.regexp", - regex: /[/][imxouesn]*/, - next: "start" - }, {// invalid operators - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, {// operators - token: "constant.language.escape", - regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "regexp.keyword", - regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - push: "regex_character_class" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: /&?&?\[\^?/, - push: "regex_character_class" - }, { - token: "constant.language.escape", - regex: "]", - next: "pop" - }, { - token: "constant.language.escape", - regex: "-" - }, { - defaultToken: "string.regexp.characterclass" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var RubyExports = require("./ruby_highlight_rules"); -var RubyHighlightRules = RubyExports.RubyHighlightRules; - -var HamlHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules = { - "start": [ - { - token: "comment.block", // multiline HTML comment - regex: /^\/$/, - next: "comment" - }, - { - token: "comment.block", // multiline HAML comment - regex: /^\-#$/, - next: "comment" - }, - { - token: "comment.line", // HTML comment - regex: /\/\s*.*/ - }, - { - token: "comment.line", // HAML comment - regex: /-#\s*.*/ - }, - { - token: "keyword.other.doctype", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - { - token: "meta.tag.haml", - regex: /(%[\w:\-]+)/ - }, - { - token: "keyword.attribute-name.class.haml", - regex: /\.[\w-]+/ - }, - { - token: "keyword.attribute-name.id.haml", - regex: /#[\w-]+/, - next: "element_class" - }, - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - RubyExports.constantOtherSymbol, - { - token: "text", - regex: /=|-|~/, - next: "embedded_ruby" - } - ], - "element_class": [ - { - token: "keyword.attribute-name.class.haml", - regex: /\.[\w-]+/ - }, - { - token: "punctuation.section", - regex: /\{/, - next: "element_attributes" - }, - RubyExports.constantOtherSymbol, - { - token: "empty", - regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/])", - next: "start" - } - ], - "element_attributes": [ - RubyExports.constantOtherSymbol, - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - { - token: "punctuation.section", - regex: /$|\}/, - next: "start" - } - ], - "embedded_ruby": [ - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - RubyExports.instanceVariable, - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - { - token : new RubyHighlightRules().getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : ["keyword", "text", "text"], - regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", - next : "start" - }, - { - token : ["text"], - regex : "^$", - next : "start" - }, - { - token : ["text"], - regex : "^(?!.*\\|\\s*$)", - next : "start" - } - ], - "comment": [ - { - token: "comment.block", - regex: /^$/, - next: "start" - }, - { - token: "comment.block", // comment spanning the whole line - regex: /\s+.*/ - } - ] - - }; - - this.normalizeRules(); -}; - -oop.inherits(HamlHighlightRules, HtmlHighlightRules); - -exports.HamlHighlightRules = HamlHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HamlHighlightRules = require("./haml_highlight_rules").HamlHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = HamlHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - - this.$id = "ace/mode/haml"; - this.snippetFileId = "ace/snippets/haml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/haml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-handlebars.js b/src-noconflict/mode-handlebars.js deleted file mode 100644 index 884e07a..0000000 --- a/src-noconflict/mode-handlebars.js +++ /dev/null @@ -1,2622 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -function pop2(currentState, stack) { - stack.splice(0, 3); - return stack.shift() || "start"; -} -var HandlebarsHighlightRules = function() { - HtmlHighlightRules.call(this); - var hbs = { - regex : "(?={{)", - push : "handlebars" - }; - for (var key in this.$rules) { - this.$rules[key].unshift(hbs); - } - this.$rules.handlebars = [{ - token : "comment.start", - regex : "{{!--", - push : [{ - token : "comment.end", - regex : "--}}", - next : pop2 - }, { - defaultToken : "comment" - }] - }, { - token : "comment.start", - regex : "{{!", - push : [{ - token : "comment.end", - regex : "}}", - next : pop2 - }, { - defaultToken : "comment" - }] - }, { - token : "support.function", // unescaped variable - regex : "{{{", - push : [{ - token : "support.function", - regex : "}}}", - next : pop2 - }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }, { - token : "storage.type.start", // begin section - regex : "{{[#\\^/&]?", - push : [{ - token : "storage.type.end", - regex : "}}", - next : pop2 - }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }]; - - this.normalizeRules(); -}; - -oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules); - -exports.HandlebarsHighlightRules = HandlebarsHighlightRules; -}); - -ace.define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; - -var HtmlBehaviour = function () { - - XmlBehaviour.call(this); - -}; - -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"], function(require, exports, module) { - "use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HandlebarsHighlightRules; - this.$behaviour = new HtmlBehaviour(); -}; - -oop.inherits(Mode, HtmlMode); - -(function() { - this.blockComment = {start: "{{!--", end: "--}}"}; - this.$id = "ace/mode/handlebars"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/handlebars"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-haskell.js b/src-noconflict/mode-haskell.js deleted file mode 100644 index 07d970f..0000000 --- a/src-noconflict/mode-haskell.js +++ /dev/null @@ -1,380 +0,0 @@ -ace.define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaskellHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.entity.haskell', - 'keyword.operator.function.infix.haskell', - 'punctuation.definition.entity.haskell' ], - regex: '(`)([a-zA-Z_\']*?)(`)', - comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, - { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, - { token: 'constant.language.empty-list.haskell', - regex: '\\[\\]' }, - { token: 'keyword.other.haskell', - regex: '\\b(module|signature)\\b', - push: - [ { token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { token: 'invalid', regex: '[a-z]+' }, - { defaultToken: 'meta.declaration.module.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\bclass\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b', - next: 'pop' }, - { token: 'support.class.prelude.haskell', - regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, - { token: 'entity.other.inherited-class.haskell', - regex: '[A-Z][A-Za-z_\']*' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { defaultToken: 'meta.declaration.class.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\binstance\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b|$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.declaration.instance.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: 'import', - push: - [ { token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' }, - { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { defaultToken: 'meta.import.haskell' } ] }, - { token: [ 'keyword.other.haskell', 'meta.deriving.haskell' ], - regex: '(deriving)(\\s*\\()', - push: - [ { token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, - { token: 'entity.other.inherited-class.haskell', - regex: '\\b[A-Z][a-zA-Z_\']*' }, - { defaultToken: 'meta.deriving.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, - { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, - { token: 'keyword.control.haskell', - regex: '\\b(?:do|if|then|else)\\b' }, - { token: 'constant.numeric.float.haskell', - regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', - comment: 'Floats are always decimal' }, - { token: 'constant.numeric.haskell', - regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, - { token: - [ 'meta.preprocessor.c', - 'punctuation.definition.preprocessor.c', - 'meta.preprocessor.c' ], - regex: '^(\\s*)(#)(\\s*\\w+)', - comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, - { include: '#pragma' }, - { token: 'punctuation.definition.string.begin.haskell', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.haskell', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.haskell', - regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, - { token: 'constant.character.escape.octal.haskell', - regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, - { token: 'constant.character.escape.control.haskell', - regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, - { defaultToken: 'string.quoted.double.haskell' } ] }, - { token: - [ 'punctuation.definition.string.begin.haskell', - 'string.quoted.single.haskell', - 'constant.character.escape.haskell', - 'constant.character.escape.octal.haskell', - 'constant.character.escape.hexadecimal.haskell', - 'constant.character.escape.control.haskell', - 'punctuation.definition.string.end.haskell' ], - regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, - { token: - [ 'meta.function.type-declaration.haskell', - 'entity.name.function.haskell', - 'meta.function.type-declaration.haskell', - 'keyword.other.double-colon.haskell' ], - regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)', - push: - [ { token: 'meta.function.type-declaration.haskell', - regex: '$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.function.type-declaration.haskell' } ] }, - { token: 'support.constant.haskell', - regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, - { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, - { include: '#comments' }, - { token: 'support.function.prelude.haskell', - regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, - { include: '#infix_op' }, - { token: 'keyword.operator.haskell', - regex: '[|!%$?~+:\\-.=\\\\]+', - comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' } ], - '#block_comment': - [ { token: 'punctuation.definition.comment.haskell', - regex: '\\{-(?!#)', - push: - [ { include: '#block_comment' }, - { token: 'punctuation.definition.comment.haskell', - regex: '-\\}', - next: 'pop' }, - { defaultToken: 'comment.block.haskell' } ] } ], - '#comments': - [ { token: 'punctuation.definition.comment.haskell', - regex: '--.*', - push_: - [ { token: 'comment.line.double-dash.haskell', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.haskell' } ] }, - { include: '#block_comment' } ], - '#infix_op': - [ { token: 'entity.name.function.infix.haskell', - regex: '\\([|!%$+:\\-.=]+\\)|\\(,+\\)' } ], - '#module_exports': - [ { token: 'meta.declaration.exports.haskell', - regex: '\\(', - push: - [ { token: 'meta.declaration.exports.haskell.end', - regex: '\\)', - next: 'pop' }, - { token: 'entity.name.function.haskell', - regex: '\\b[a-z][a-zA-Z_\']*' }, - { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' }, - { include: '#infix_op' }, - { token: 'meta.other.unknown.haskell', - regex: '\\(.*?\\)', - comment: 'So named because I don\'t know what to call this.' }, - { defaultToken: 'meta.declaration.exports.haskell.end' } ] } ], - '#module_name': - [ { token: 'support.other.module.haskell', - regex: '[A-Z][A-Za-z._\']*' } ], - '#pragma': - [ { token: 'meta.preprocessor.haskell', - regex: '\\{-#', - push: - [ { token: 'meta.preprocessor.haskell', - regex: '#-\\}', - next: 'pop' }, - { token: 'keyword.other.preprocessor.haskell', - regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, - { defaultToken: 'meta.preprocessor.haskell' } ] } ], - '#type_signature': - [ { token: - [ 'meta.class-constraint.haskell', - 'entity.other.inherited-class.haskell', - 'meta.class-constraint.haskell', - 'variable.other.generic-type.haskell', - 'meta.class-constraint.haskell', - 'keyword.other.big-arrow.haskell' ], - regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, - { include: '#pragma' }, - { token: 'keyword.other.arrow.haskell', regex: '->' }, - { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, - { token: 'support.type.prelude.haskell', - regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { token: 'storage.type.haskell', - regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, - { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, - { include: '#comments' } ] }; - - this.normalizeRules(); -}; - -HaskellHighlightRules.metaData = { fileTypes: [ 'hs' ], - keyEquivalent: '^~H', - name: 'Haskell', - scopeName: 'source.haskell' }; - - -oop.inherits(HaskellHighlightRules, TextHighlightRules); - -exports.HaskellHighlightRules = HaskellHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HaskellHighlightRules = require("./haskell_highlight_rules").HaskellHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HaskellHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = null; - this.$id = "ace/mode/haskell"; - this.snippetFileId = "ace/snippets/haskell"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/haskell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-haskell_cabal.js b/src-noconflict/mode-haskell_cabal.js deleted file mode 100644 index 64319b4..0000000 --- a/src-noconflict/mode-haskell_cabal.js +++ /dev/null @@ -1,141 +0,0 @@ -ace.define("ace/mode/haskell_cabal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CabalHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "comment", - regex : "^\\s*--.*$" - }, { - token: ["keyword"], - regex: /^(\s*\w.*?)(:(?:\s+|$))/ - }, { - token : "constant.numeric", // float - regex : /[\d_]+(?:(?:[\.\d_]*)?)/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" - }, { - token : "markup.heading", - regex : /^(\w.*)$/ - } - ]}; - -}; - -oop.inherits(CabalHighlightRules, TextHighlightRules); - -exports.CabalHighlightRules = CabalHighlightRules; -}); - -ace.define("ace/mode/folding/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.isHeading = function (session,row) { - var heading = "markup.heading"; - var token = session.getTokens(row)[0]; - return row==0 || (token && token.type.lastIndexOf(heading, 0) === 0); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - if (this.isHeading(session,row)){ - return "start"; - } else if (foldStyle === "markbeginend" && !(/^\s*$/.test(session.getLine(row)))){ - var maxRow = session.getLength(); - while (++row < maxRow) { - if (!(/^\s*$/.test(session.getLine(row)))){ - break; - } - } - if (row==maxRow || this.isHeading(session,row)){ - return "end"; - } - } - return ""; - }; - - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (this.isHeading(session,row)) { - while (++row < maxRow) { - if (this.isHeading(session,row)){ - row--; - break; - } - } - - endRow = row; - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } else if (this.getFoldWidget(session, foldStyle, row)==="end"){ - var endRow = row; - var endColumn = session.getLine(endRow).length; - while (--row>=0){ - if (this.isHeading(session,row)){ - break; - } - } - var line = session.getLine(row); - var startColumn = line.length; - return new Range(row, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_cabal_highlight_rules","ace/mode/folding/haskell_cabal"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CabalHighlightRules = require("./haskell_cabal_highlight_rules").CabalHighlightRules; -var FoldMode = require("./folding/haskell_cabal").FoldMode; - -var Mode = function() { - this.HighlightRules = CabalHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = null; - this.$id = "ace/mode/haskell_cabal"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/haskell_cabal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-haxe.js b/src-noconflict/mode-haxe.js deleted file mode 100644 index f19428f..0000000 --- a/src-noconflict/mode-haxe.js +++ /dev/null @@ -1,386 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); - -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaxeHighlightRules = function() { - - var keywords = ( - "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std" - ); - - var buildinConstants = ( - "null|true|false" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({<]" - }, { - token : "paren.rparen", - regex : "[\\])}>]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(HaxeHighlightRules, TextHighlightRules); - -exports.HaxeHighlightRules = HaxeHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HaxeHighlightRules = require("./haxe_highlight_rules").HaxeHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HaxeHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/haxe"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/haxe"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-hjson.js b/src-noconflict/mode-hjson.js deleted file mode 100644 index fd61784..0000000 --- a/src-noconflict/mode-hjson.js +++ /dev/null @@ -1,353 +0,0 @@ -ace.define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HjsonHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#comments" - }, { - include: "#rootObject" - }, { - include: "#value" - }], - "#array": [{ - token: "paren.lparen", - regex: /\[/, - push: [{ - token: "paren.rparen", - regex: /\]/, - next: "pop" - }, { - include: "#value" - }, { - include: "#comments" - }, { - token: "text", - regex: /,|$/ - }, { - token: "invalid.illegal", - regex: /[^\s\]]/ - }, { - defaultToken: "array" - }] - }], - "#comments": [{ - token: [ - "comment.punctuation", - "comment.line" - ], - regex: /(#)(.*$)/ - }, { - token: "comment.punctuation", - regex: /\/\*/, - push: [{ - token: "comment.punctuation", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block" - }] - }, { - token: [ - "comment.punctuation", - "comment.line" - ], - regex: /(\/\/)(.*$)/ - }], - "#constant": [{ - token: "constant", - regex: /\b(?:true|false|null)\b/ - }], - "#keyname": [{ - token: "keyword", - regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ - }], - "#mstring": [{ - token: "string", - regex: /'''/, - push: [{ - token: "string", - regex: /'''/, - next: "pop" - }, { - defaultToken: "string" - }] - }], - "#number": [{ - token: "constant.numeric", - regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, - comment: "handles integer and decimal numbers" - }], - "#object": [{ - token: "paren.lparen", - regex: /\{/, - push: [{ - token: "paren.rparen", - regex: /\}/, - next: "pop" - }, { - include: "#keyname" - }, { - include: "#value" - }, { - token: "text", - regex: /:/ - }, { - token: "text", - regex: /,/ - }, { - defaultToken: "paren" - }] - }], - "#rootObject": [{ - token: "paren", - regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, - push: [{ - token: "paren.rparen", - regex: /---none---/, - next: "pop" - }, { - include: "#keyname" - }, { - include: "#value" - }, { - token: "text", - regex: /:/ - }, { - token: "text", - regex: /,/ - }, { - defaultToken: "paren" - }] - }], - "#string": [{ - token: "string", - regex: /"/, - push: [{ - token: "string", - regex: /"/, - next: "pop" - }, { - token: "constant.language.escape", - regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ - }, { - token: "invalid.illegal", - regex: /\\./ - }, { - defaultToken: "string" - }] - }], - "#ustring": [{ - token: "string", - regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ - }], - "#value": [{ - include: "#constant" - }, { - include: "#number" - }, { - include: "#string" - }, { - include: "#array" - }, { - include: "#object" - }, { - include: "#comments" - }, { - include: "#mstring" - }, { - include: "#ustring" - }] - }; - - this.normalizeRules(); -}; - -HjsonHighlightRules.metaData = { - fileTypes: ["hjson"], - foldingStartMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", - foldingStopMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )", - keyEquivalent: "^~J", - name: "Hjson", - scopeName: "source.hjson" -}; - - -oop.inherits(HjsonHighlightRules, TextHighlightRules); - -exports.HjsonHighlightRules = HjsonHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HjsonHighlightRules = require("./hjson_highlight_rules").HjsonHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HjsonHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.$id = "ace/mode/hjson"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/hjson"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-html.js b/src-noconflict/mode-html.js deleted file mode 100644 index f628b2c..0000000 --- a/src-noconflict/mode-html.js +++ /dev/null @@ -1,2509 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/html"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-html_elixir.js b/src-noconflict/mode-html_elixir.js deleted file mode 100644 index fe57a48..0000000 --- a/src-noconflict/mode-html_elixir.js +++ /dev/null @@ -1,3088 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElixirHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.module.elixir', - 'keyword.control.module.elixir', - 'meta.module.elixir', - 'entity.name.type.module.elixir' ], - regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.false', - regex: '@(?:module|type)?doc false', - comment: '@doc false is treated as documentation' }, - { token: 'comment.documentation.string', - regex: '@(?:module|type)?doc "', - push: - [ { token: 'comment.documentation.string', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.string' } ], - comment: '@doc with string is treated as documentation' }, - { token: 'keyword.control.elixir', - regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, - { token: 'punctuation.definition.constant.elixir', - regex: ':\'', - push: - [ { token: 'punctuation.definition.constant.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] }, - { token: 'punctuation.definition.constant.elixir', - regex: ':"', - push: - [ { token: 'punctuation.definition.constant.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:\'\'\')', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>\'\'\')', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ], - comment: 'Single-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.elixir' } ], - comment: 'single quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.elixir' } ], - comment: 'double quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[a-z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[A-Z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], - regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', - comment: 'symbols' }, - { token: 'punctuation.definition.constant.elixir', - regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', - comment: 'symbols' }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(#)(.*)' }, - { token: 'constant.numeric.elixir', - regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?=?' }, - { token: 'keyword.operator.bitwise.elixir', - regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, - { token: 'keyword.operator.logical.elixir', - regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', - originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, - { token: 'keyword.operator.arithmetic.elixir', - regex: '\\*|\\+|\\-|/' }, - { token: 'keyword.operator.other.elixir', - regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, - { token: 'keyword.operator.assignment.elixir', regex: '=' }, - { token: 'punctuation.separator.other.elixir', regex: ':' }, - { token: 'punctuation.separator.statement.elixir', - regex: '\\;' }, - { token: 'punctuation.separator.object.elixir', regex: ',' }, - { token: 'punctuation.separator.method.elixir', regex: '\\.' }, - { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, - { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, - { token: 'punctuation.section.function.elixir', - regex: '\\(|\\)' } ], - '#escaped_char': - [ { token: 'constant.character.escape.elixir', - regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ], - '#interpolated_elixir': - [ { token: - [ 'source.elixir.embedded.source', - 'source.elixir.embedded.source.empty' ], - regex: '(#\\{)(\\})' }, - { todo: - { token: 'punctuation.section.embedded.elixir', - regex: '#\\{', - push: - [ { token: 'punctuation.section.embedded.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' }, - { include: '$self' }, - { defaultToken: 'source.elixir.embedded.source' } ] } } ], - '#nest_curly_and_self': - [ { token: 'punctuation.section.scope.elixir', - regex: '\\{', - push: - [ { token: 'punctuation.section.scope.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' } ] }, - { include: '$self' } ], - '#regex_sub': - [ { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { token: - [ 'punctuation.definition.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'punctuation.definition.arbitrary-repitition.elixir' ], - regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, - { token: 'punctuation.definition.character-class.elixir', - regex: '\\[(?:\\^?\\])?', - push: - [ { token: 'punctuation.definition.character-class.elixir', - regex: '\\]', - next: 'pop' }, - { include: '#escaped_char' }, - { defaultToken: 'string.regexp.character-class.elixir' } ] }, - { token: 'punctuation.definition.group.elixir', - regex: '\\(', - push: - [ { token: 'punctuation.definition.group.elixir', - regex: '\\)', - next: 'pop' }, - { include: '#regex_sub' }, - { defaultToken: 'string.regexp.group.elixir' } ] }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', - originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', - comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }; - - this.normalizeRules(); -}; - -ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.', - fileTypes: [ 'ex', 'exs' ], - firstLineMatch: '^#!/.*\\belixir', - foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', - foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', - keyEquivalent: '^~E', - name: 'Elixir', - scopeName: 'source.elixir' }; - - -oop.inherits(ElixirHighlightRules, TextHighlightRules); - -exports.ElixirHighlightRules = ElixirHighlightRules; -}); - -ace.define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; - - var HtmlElixirHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - regex: "<%%|%%>", - token: "constant.language.escape" - }, { - token : "comment.start.eex", - regex : "<%#", - push : [{ - token : "comment.end.eex", - regex: "%>", - next: "pop", - defaultToken:"comment" - }] - }, { - token : "support.elixir_tag", - regex : "<%+(?!>)[-=]?", - push : "elixir-start" - } - ]; - - var endRules = [ - { - token : "support.elixir_tag", - regex : "%>", - next : "pop" - }, { - token: "comment", - regex: "#(?:[^%]|%[^>])*" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]); - - this.normalizeRules(); - }; - - - oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules); - - exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = ElixirHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/elixir"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlElixirHighlightRules = require("./html_elixir_highlight_rules").HtmlElixirHighlightRules; -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var ElixirMode = require("./elixir").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HtmlElixirHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "elixir-": ElixirMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/html_elixir"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/html_elixir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-html_ruby.js b/src-noconflict/mode-html_ruby.js deleted file mode 100644 index 91f1e8a..0000000 --- a/src-noconflict/mode-html_ruby.js +++ /dev/null @@ -1,3550 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericBinary = exports.constantNumericBinary = { - token: "constant.numeric", - regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ -}; - -var constantNumericDecimal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ -}; - -var constantNumericOctal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ -}; - -var constantNumericRational = exports.constantNumericRational = { - token: "constant.numeric", //rational + complex - regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ -}; - -var constantNumericComplex = exports.constantNumericComplex = { - token: "constant.numeric", //simple complex numbers - regex: /\b([\d]i)\b/ -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float + complex - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" -}; - -var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + - "private_class_method|remove_method|undef_method" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; - - var closeParen = { - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "^": "^", - "|": "|", - "%": "%" - }; - - this.$rules = { - "start": [ - { - token: "comment", - regex: "#.*$" - }, { - token: "comment.multiline", // multi line comment - regex: "^=begin(?=$|\\s.*$)", - next: "comment" - }, { - token: "string.regexp", - regex: /[/](?=.*\/)/, - next: "regex" - }, - - [{ - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(")/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /"/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(')/, - push: [{ - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "string.end", - regex: /'/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start",//doesn't see any differences between strings and array of strings in highlighting - regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithoutInterpolation"; - return this.token; - } - }, { - token: "string.start", //doesn't see any differences between strings and array of strings in highlighting - regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithoutInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithInterpolation"; - return this.token; - } - }, { - token: "string.regexp", - regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "rState"; - return this.token; - } - }], - - { - token: "punctuation", // namespaces aren't symbols - regex: "::" - }, - instanceVariable, - { - token: "variable.global", // global variable - regex: "[$][a-zA-Z_\\d]+" - }, { - token: "support.class", // class name - regex: "[A-Z][a-zA-Z_\\d]*" - }, { - token: ["punctuation.operator", "support.function"], - regex: /(\.)([a-zA-Z_\d]+)(?=\()/ - }, { - token: ["punctuation.operator", "identifier"], - regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ - }, { - token: "string.character", - regex: "\\B\\?(?:" + escapedChars + "|\\S)" - }, { - token: "punctuation.operator", - regex: /\?(?=.+:)/ - }, - - constantNumericRational, - constantNumericComplex, - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - constantNumericBinary, - constantNumericDecimal, - constantNumericOctal, - { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "punctuation.separator.key-value", - regex: "=>" - }, { - stateName: "heredoc", - onMatch: function (value, currentState, stack) { - var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type: "constant", value: tokens[1]}, - {type: "string", value: tokens[2]}, - {type: "support.class", value: tokens[3]}, - {type: "string", value: tokens[4]} - ]; - }, - regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex: "$", - token: "empty", - next: function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]", - onMatch: function(value, currentState, stack) { - this.next = ''; - if (value == "}" && stack.length > 1 && stack[1] != "start") { - stack.shift(); - this.next = stack.shift(); - } - return this.token; - } - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/ - } - ], - "comment": [ - { - token: "comment.multiline", // closing comment - regex: "^=end(?=$|\\s.*$)", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - } - ], - "qStateWithInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "qStateWithoutInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "sStateWithoutInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "sStateWithInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "rState": [{ - token: "string.regexp",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.language.escape"; - } - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.regexp", - regex: /\// - }, { - token: "string.regexp", - regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { - if (stack.length && val[0] === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.language.escape"; - } - }, - {include: "regex"}, - { - defaultToken: "string.regexp" - }], - "regex": [ - {// character classes - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "constant.language.escape", - regex: /\\[AGbBzZ]/ - }, { - token: "constant.language.escape", - regex: /\\g<[a-zA-Z0-9]*>/ - }, { - token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], - regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ - }, { - token: ["constant.language.escape", "invalid", "constant.language.escape"], - regex: /(\\p{\^?)([^/]*)(})/ - }, {// escapes - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, {// flag - token: "string.regexp", - regex: /[/][imxouesn]*/, - next: "start" - }, {// invalid operators - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, {// operators - token: "constant.language.escape", - regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "regexp.keyword", - regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - push: "regex_character_class" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: /&?&?\[\^?/, - push: "regex_character_class" - }, { - token: "constant.language.escape", - regex: "]", - next: "pop" - }, { - token: "constant.language.escape", - regex: "-" - }, { - defaultToken: "string.regexp.characterclass" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; - - var HtmlRubyHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - regex: "<%%|%%>", - token: "constant.language.escape" - }, { - token : "comment.start.erb", - regex : "<%#", - push : [{ - token : "comment.end.erb", - regex: "%>", - next: "pop", - defaultToken:"comment" - }] - }, { - token : "support.ruby_tag", - regex : "<%+(?!>)[-=]?", - push : "ruby-start" - } - ]; - - var endRules = [ - { - token : "support.ruby_tag", - regex : "%>", - next : "pop" - }, { - token: "comment", - regex: "#(?:[^%]|%[^>])*" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(RubyHighlightRules, "ruby-", endRules, ["start"]); - - this.normalizeRules(); - }; - - - oop.inherits(HtmlRubyHighlightRules, HtmlHighlightRules); - - exports.HtmlRubyHighlightRules = HtmlRubyHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function () { -}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function () { - this.indentKeywords = { - "class": 1, - "def": 1, - "module": 1, - "do": 1, - "unless": 1, - "if": 1, - "while": 1, - "for": 1, - "until": 1, - "begin": 1, - "else": 0, - "elsif": 0, - "rescue": 0, - "ensure": 0, - "when": 0, - "end": -1, - "case": 1, - "=begin": 1, - "=end": -1 - }; - - this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; - this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; - - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1]) { - if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { - if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { - return; - } - if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { - return; - } - } - - if (match[1] == "when") { - if (/\sthen\s/.test(line) === true) { - return; - } - } - if (session.getTokenAt(row, match.index + 2).type === "keyword") - return "start"; - } else if (match[3]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1] || match[3]) - return this.rubyBlock(session, row, match.index + 2); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.rubyBlock(session, row, match.index + 1); - } - - if (match[1] === "=end") { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return this.rubyBlock(session, row, match.index + 1); - } - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.rubyBlock = function (session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - - var token = stream.getCurrentToken(); - if (!token || (token.type != "keyword" && token.type != "comment.multiline")) - return; - - var val = token.value; - var line = session.getLine(row); - switch (token.value) { - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - return; - } - var dir = this.indentKeywords[val]; - break; - case "when": - if (/\sthen\s/.test(line)) { - return; - } - case "elsif": - case "rescue": - case "ensure": - var dir = 1; - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line)) { - return; - } - var dir = 1; - break; - default: - var dir = this.indentKeywords[val]; - break; - } - - var stack = [val]; - if (!dir) - return; - - var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; - var startRow = row; - var ranges = []; - ranges.push(stream.getCurrentTokenRange()); - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - if (token.type == "comment.multiline") { - while (token = stream.step()) { - if (token.type !== "comment.multiline") - continue; - if (dir == 1) { - startColumn = 6; - if (token.value == "=end") { - break; - } - } else { - if (token.value == "=begin") { - break; - } - } - } - } else { - while (token = stream.step()) { - var ignore = false; - if (token.type !== "keyword") - continue; - var level = dir * this.indentKeywords[token.value]; - line = session.getLine(stream.getCurrentTokenRow()); - switch (token.value) { - case "do": - for (var i = stream.$tokenIndex - 1; i >= 0; i--) { - var prevToken = stream.$rowTokens[i]; - if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { - level = 0; - break; - } - } - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - level = 0; - ignore = true; - } - break; - case "when": - if (/\sthen\s/.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - } - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0 && ignore === false) { - stack.shift(); - if (!stack.length) { - if ((val == "while" || val == "until" || val == "for") && token.value != "do") { - break; - } - if (token.value == "do" && dir == -1 && level != 0) - break; - if (token.value != "do") - break; - } - - if (level === 0) { - stack.unshift(token.value); - } - } - } - } - - if (!token) - return null; - - if (tokenRange) { - ranges.push(stream.getCurrentTokenRange()); - return ranges; - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) { - if (token.type === "comment.multiline") { - var endColumn = 6; - } else { - var endColumn = session.getLine(row).length; - } - return new Range(row, endColumn, startRow - 1, startColumn); - } else - return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/ruby").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new FoldMode(); - this.indentKeywords = this.foldingRules.indentKeywords; -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - if (/}/.test(line)) - return this.$outdent.autoOutdent(session, row); - var indent = this.$getIndent(line); - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine); - var tab = session.getTabString(); - if (prevIndent.length <= indent.length) { - if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length - tab.length, row, indent.length)); - } - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in this.indentKeywords) - return this.foldingRules.rubyBlock(session, row, column, true); - }; - - this.$id = "ace/mode/ruby"; - this.snippetFileId = "ace/snippets/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlRubyHighlightRules = require("./html_ruby_highlight_rules").HtmlRubyHighlightRules; -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var RubyMode = require("./ruby").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HtmlRubyHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "ruby-": RubyMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/html_ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/html_ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ini.js b/src-noconflict/mode-ini.js deleted file mode 100644 index 5cf6e40..0000000 --- a/src-noconflict/mode-ini.js +++ /dev/null @@ -1,162 +0,0 @@ -ace.define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var escapeRe = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})"; - -var IniHighlightRules = function() { - this.$rules = { - start: [{ - token: 'punctuation.definition.comment.ini', - regex: '#.*', - push_: [{ - token: 'comment.line.number-sign.ini', - regex: '$|^', - next: 'pop' - }, { - defaultToken: 'comment.line.number-sign.ini' - }] - }, { - token: 'punctuation.definition.comment.ini', - regex: ';.*', - push_: [{ - token: 'comment.line.semicolon.ini', - regex: '$|^', - next: 'pop' - }, { - defaultToken: 'comment.line.semicolon.ini' - }] - }, { - token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'], - regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' - }, { - token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'], - regex: '^(\\[)(.*?)(\\])' - }, { - token: 'punctuation.definition.string.begin.ini', - regex: "'", - push: [{ - token: 'punctuation.definition.string.end.ini', - regex: "'", - next: 'pop' - }, { - token: "constant.language.escape", - regex: escapeRe - }, { - defaultToken: 'string.quoted.single.ini' - }] - }, { - token: 'punctuation.definition.string.begin.ini', - regex: '"', - push: [{ - token: "constant.language.escape", - regex: escapeRe - }, { - token: 'punctuation.definition.string.end.ini', - regex: '"', - next: 'pop' - }, { - defaultToken: 'string.quoted.double.ini' - }] - }] - }; - - this.normalizeRules(); -}; - -IniHighlightRules.metaData = { - fileTypes: ['ini', 'conf'], - keyEquivalent: '^~I', - name: 'Ini', - scopeName: 'source.ini' -}; - - -oop.inherits(IniHighlightRules, TextHighlightRules); - -exports.IniHighlightRules = IniHighlightRules; -}); - -ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var re = this.foldingStartMarker; - var line = session.getLine(row); - - var m = line.match(re); - - if (!m) return; - - var startName = m[1] + "."; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - if (/^\s*$/.test(line)) - continue; - m = line.match(re); - if (m && m[1].lastIndexOf(startName, 0) !== 0) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var IniHighlightRules = require("./ini_highlight_rules").IniHighlightRules; -var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { - this.HighlightRules = IniHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ";"; - this.blockComment = null; - this.$id = "ace/mode/ini"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/ini"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-io.js b/src-noconflict/mode-io.js deleted file mode 100644 index 25232b5..0000000 --- a/src-noconflict/mode-io.js +++ /dev/null @@ -1,248 +0,0 @@ -ace.define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var IoHighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.control.io', - regex: '\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b' }, - { token: 'punctuation.definition.comment.io', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.io', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.io' } ] }, - { token: 'punctuation.definition.comment.io', - regex: '//', - push: - [ { token: 'comment.line.double-slash.io', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.io' } ] }, - { token: 'punctuation.definition.comment.io', - regex: '#', - push: - [ { token: 'comment.line.number-sign.io', regex: '$', next: 'pop' }, - { defaultToken: 'comment.line.number-sign.io' } ] }, - { token: 'variable.language.io', - regex: '\\b(?:self|sender|target|proto|protos|parent)\\b', - comment: 'I wonder if some of this isn\'t variable.other.language? --Allan; scoping this as variable.language to match Objective-C\'s handling of \'self\', which is inconsistent with C++\'s handling of \'this\' but perhaps intentionally so -- Rob' }, - { token: 'keyword.operator.io', - regex: '<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b' }, - { token: 'constant.other.io', regex: '\\bGL[\\w_]+\\b' }, - { token: 'support.class.io', regex: '\\b[A-Z](?:\\w+)?\\b' }, - { token: 'support.function.io', - regex: '\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b' }, - { token: 'support.function.open-gl.io', - regex: '\\bgl(?:u|ut)?[A-Z]\\w+\\b' }, - { token: 'punctuation.definition.string.begin.io', - regex: '"""', - push: - [ { token: 'punctuation.definition.string.end.io', - regex: '"""', - next: 'pop' }, - { token: 'constant.character.escape.io', regex: '\\\\.' }, - { defaultToken: 'string.quoted.triple.io' } ] }, - { token: 'punctuation.definition.string.begin.io', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.io', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.io', regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.io' } ] }, - { token: 'constant.numeric.io', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'variable.other.global.io', regex: 'Lobby\\b' }, - { token: 'constant.language.io', - regex: '\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b' } ] }; - - this.normalizeRules(); -}; - -IoHighlightRules.metaData = { fileTypes: [ 'io' ], - keyEquivalent: '^~I', - name: 'Io', - scopeName: 'source.io' }; - - -oop.inherits(IoHighlightRules, TextHighlightRules); - -exports.IoHighlightRules = IoHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var IoHighlightRules = require("./io_highlight_rules").IoHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = IoHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/io"; - this.snippetFileId = "ace/snippets/io"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/io"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jack.js b/src-noconflict/mode-jack.js deleted file mode 100644 index 4e9a99a..0000000 --- a/src-noconflict/mode-jack.js +++ /dev/null @@ -1,346 +0,0 @@ -ace.define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JackHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "string", - regex : '"', - next : "string2" - }, { - token : "string", - regex : "'", - next : "string1" - }, { - token : "constant.numeric", // hex - regex: "-?0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "(?:0|[-+]?[1-9][0-9]*)\\b" - }, { - token : "constant.binary", - regex : "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "constant.language.null", - regex : "null\\b" - }, { - token : "storage.type", - regex: "(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b" - }, { - token : "keyword", - regex : "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b" - }, { - token : "language.builtin", - regex : "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b" - }, { - token : "comment", - regex : "--.*$" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "storage.form", - regex : "@[a-z]+" - }, { - token : "constant.other.symbol", - regex : ':+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' - }, { - token : "variable", - regex : '[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' - }, { - token : "keyword.operator", - regex : "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!" - }, { - token : "text", - regex : "\\s+" - } - ], - "string1" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ - }, { - token : "string", - regex : "[^'\\\\]+" - }, { - token : "string", - regex : "'", - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ], - "string2" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ] - }; - -}; - -oop.inherits(JackHighlightRules, TextHighlightRules); - -exports.JackHighlightRules = JackHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./jack_highlight_rules").JackHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.$id = "ace/mode/jack"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jack"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jade.js b/src-noconflict/mode-jade.js deleted file mode 100644 index 6603f05..0000000 --- a/src-noconflict/mode-jade.js +++ /dev/null @@ -1,2025 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var modes = require("../config").$modes; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -}; - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - var codeBlockStartRule = { - token : "support.function", - regex : /^\s*(```+[^`]*|~~~+[^~]*)$/, - onMatch: function(value, state, stack, line) { - var m = value.match(/^(\s*)([`~]+)(.*)/); - var language = /[\w-]+|$/.exec(m[3])[0]; - if (!modes[language]) - language = ""; - stack.unshift("githubblock", [], [m[1], m[2], language], state); - return this.token; - }, - next : "githubblock" - }; - var codeBlockRules = [{ - token : "support.function", - regex : ".*", - onMatch: function(value, state, stack, line) { - var embedState = stack[1]; - var indent = stack[2][0]; - var endMarker = stack[2][1]; - var language = stack[2][2]; - - var m = /^(\s*)(`+|~+)\s*$/.exec(value); - if ( - m && m[1].length < indent.length + 3 - && m[2].length >= endMarker.length && m[2][0] == endMarker[0] - ) { - stack.splice(0, 3); - this.next = stack.shift(); - return this.token; - } - this.next = ""; - if (language && modes[language]) { - var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); - stack[1] = data.state; - return data.tokens; - } - return this.token; - } - }]; - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s|$)/, - next : "header" - }, - codeBlockStartRule, - { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\!?\\[)(" + // [ - escaped("]") + // link text or alt text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, - codeBlockStartRule, - { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : codeBlockRules - }); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap(CssHighlightRules.supportType.split("|")); - - var functions = lang.arrayToMap( - ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + - "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + - "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + - "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") - ); - - var constants = lang.arrayToMap(CssHighlightRules.supportConstant.split("|")); - - var colors = lang.arrayToMap(CssHighlightRules.supportConstantColor.split("|")); - - var keywords = lang.arrayToMap( - ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") - ); - - var tags = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", - regex : numRe + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : function(value) { - if (properties.hasOwnProperty(value.toLowerCase())) - return "support.type"; - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (constants.hasOwnProperty(value)) - return "constant.language"; - else if (functions.hasOwnProperty(value)) - return "support.function"; - else if (colors.hasOwnProperty(value.toLowerCase())) - return "support.constant.color"; - else if (tags.hasOwnProperty(value.toLowerCase())) - return "variable.language"; - else - return "text"; - }, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token : "variable", - regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require('./css_highlight_rules'); - -var LessHighlightRules = function() { - - - var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + - "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + - "or|and|when|not"; - - var keywords = keywordList.split('|'); - - var properties = CssHighlightRules.supportType.split('|'); - - var keywordMapper = this.createKeywordMapper({ - "support.constant": CssHighlightRules.supportConstant, - "keyword": keywordList, - "support.constant.color": CssHighlightRules.supportConstantColor, - "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "identifier", true); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "paren.lparen", "string", "paren.rparen"], - regex : "(url)(\\()(.*)(\\))" - }, { - token : ["support.function", "paren.lparen"], - regex : "(:extend|[a-z0-9_\\-]+)(\\()" - }, { - token : function(value) { - if (keywords.indexOf(value.toLowerCase()) > -1) - return "keyword"; - else - return "variable"; - }, - regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" - }, { - token : "variable", - regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" - }, { - token : function(first, second) { - if(properties.indexOf(first.toLowerCase()) > -1) { - return ["support.type.property", "text"]; - } - else { - return ["support.type.unknownProperty", "text"]; - } - }, - regex : "([a-z0-9-_]+)(\\s*:)" - }, { - token : "keyword", - regex : "&" // special case - always treat as keyword - }, { - token : keywordMapper, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z_][a-z0-9-_]*" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - this.normalizeRules(); -}; - -oop.inherits(LessHighlightRules, TextHighlightRules); - -exports.LessHighlightRules = LessHighlightRules; - -}); - -ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes|yield|export|import|default" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|function|var|void|with|enum|implements|" + - "interface|let|package|private|protected|public|static" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift() || ""; - if (this.next.indexOf("string") != -1) - return "paren.string"; - } - return "paren"; - } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\.{1,3}" - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" - }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" - }, { - token : "string.regex", - regex : "\\S+" - }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" - }, { - defaultToken : "comment" - }] - }; - this.normalizeRules(); - } - - exports.CoffeeHighlightRules = CoffeeHighlightRules; -}); - -ace.define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var SassHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; -var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; -var CoffeeHighlightRules = require("./coffee_highlight_rules").CoffeeHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -function mixin_embed(tag, prefix) { - return { - token : "entity.name.function.jade", - regex : "^\\s*\\:" + tag, - next : prefix + "start" - }; -} - -var JadeHighlightRules = function() { - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = - { - "start": [ - { - token: "keyword.control.import.include.jade", - regex: "\\s*\\binclude\\b" - }, - { - token: "keyword.other.doctype.jade", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\//, - next: "comment_block" - }, - mixin_embed("markdown", "markdown-"), - mixin_embed("sass", "sass-"), - mixin_embed("less", "less-"), - mixin_embed("coffee", "coffee-"), - { - token: [ "storage.type.function.jade", - "entity.name.function.jade", - "punctuation.definition.parameters.begin.jade", - "variable.parameter.function.jade", - "punctuation.definition.parameters.end.jade" - ], - regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))" - }, - { - token: [ "storage.type.function.jade", "entity.name.function.jade"], - regex: "^(\\s*mixin)( [\\w\\-]+)" - }, - { - token: "source.js.embedded.jade", - regex: "^\\s*(?:-|=|!=)", - next: "js-start" - }, - { - token: "string.interpolated.jade", - regex: "[#!]\\{[^\\}]+\\}" - }, - { - token: "meta.tag.any.jade", - regex: /^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/, - next: "tag_single" - }, - { - token: "suport.type.attribute.id.jade", - regex: "#\\w+" - }, - { - token: "suport.type.attribute.class.jade", - regex: "\\.\\w+" - }, - { - token: "punctuation", - regex: "\\s*(?:\\()", - next: "tag_attributes" - } - ], - "comment_block": [ - {regex: /^\s*(?:\/\/)?/, onMatch: function(value, currentState, stack) { - if (value.length <= stack[1]) { - if (value.slice(-1) == "/") { - stack[1] = value.length - 2; - this.next = ""; - return "comment"; - } - stack.shift(); - stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ], - "tag_single": [ - { - token: "entity.other.attribute-name.class.jade", - regex: "\\.[\\w-]+" - }, - { - token: "entity.other.attribute-name.id.jade", - regex: "#[\\w-]+" - }, - { - token: ["text", "punctuation"], - regex: "($)|((?!\\.|#|=|-))", - next: "start" - } - ], - "tag_attributes": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: ["entity.other.attribute-name.jade", "punctuation"], - regex: "([a-zA-Z:\\.-]+)(=)?", - next: "attribute_strings" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "attribute_strings": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token : "string", - regex : '(?=\\S)', - next : "tag_attributes" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "tag_attributes" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "[^'\\\\]+" - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "tag_attributes" - } - ] -}; - - this.embedRules(JavaScriptHighlightRules, "js-", [{ - token: "text", - regex: ".$", - next: "start" - }]); -}; - -oop.inherits(JadeHighlightRules, TextHighlightRules); - -exports.JadeHighlightRules = JadeHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jade",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jade_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = JadeHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/jade"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jade"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-java.js b/src-noconflict/mode-java.js deleted file mode 100644 index 3aab9a9..0000000 --- a/src-noconflict/mode-java.js +++ /dev/null @@ -1,1038 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while|" + - "var" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - regex: "(open(?:\\s+))?module(?=\\s*\\w)", - token: "keyword", - next: [{ - regex: "{", - token: "paren.lparen", - next: [{ - regex: "}", - token: "paren.rparen", - next: "start" - }, { - regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", - token: "keyword" - }] - }, { - token : "text", - regex : "\\s+" - }, { - token : "identifier", - regex : "\\w+" - }, { - token : "punctuation.operator", - regex : "." - }, { - token : "text", - regex : "\\s+" - }, { - regex: "", // exit if there is anything else - next: "start" - }] - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; -}); - -ace.define("ace/mode/folding/java",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var CStyleFoldMode = require("./cstyle").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, CStyleFoldMode); - -(function() { - this.importRegex = /^import /; - this.getCStyleFoldWidget = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - if (foldStyle === "markbegin") { - var line = session.getLine(row); - if (this.importRegex.test(line)) { - if (row == 0 || !this.importRegex.test(session.getLine(row - 1))) - return "start"; - } - } - - return this.getCStyleFoldWidget(session, foldStyle, row); - }; - - this.getCstyleFoldWidgetRange = this.getFoldWidgetRange; - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.importRegex); - if (!match || foldStyle !== "markbegin") - return this.getCstyleFoldWidgetRange(session, foldStyle, row, forceMultiline); - - var startColumn = match[0].length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - var line = session.getLine(row); - if (line.match(/^\s*$/)) - continue; - - if (!line.match(this.importRegex)) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules","ace/mode/folding/java"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; -var JavaFoldMode = require("./folding/java").FoldMode; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = JavaHighlightRules; - this.foldingRules = new JavaFoldMode(); -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/java"; - this.snippetFileId = "ace/snippets/java"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/java"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-javascript.js b/src-noconflict/mode-javascript.js deleted file mode 100644 index a2d1574..0000000 --- a/src-noconflict/mode-javascript.js +++ /dev/null @@ -1,798 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/javascript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-json.js b/src-noconflict/mode-json.js deleted file mode 100644 index 21838ea..0000000 --- a/src-noconflict/mode-json.js +++ /dev/null @@ -1,329 +0,0 @@ -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" - }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken : "string" - } - ], - "comment" : [ - { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" - }, { - defaultToken: "comment" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - - this.$id = "ace/mode/json"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/json"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-json5.js b/src-noconflict/mode-json5.js deleted file mode 100644 index 595d97d..0000000 --- a/src-noconflict/mode-json5.js +++ /dev/null @@ -1,360 +0,0 @@ -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" - }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken : "string" - } - ], - "comment" : [ - { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" - }, { - defaultToken: "comment" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define("ace/mode/json5_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/json_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; - -var Json5HighlightRules = function() { - JsonHighlightRules.call(this); - - var startRules = [{ - token : "variable", - regex : /[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/ - }, { - token : "variable", - regex : /['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/ - }, { - token : "constant.language.boolean", - regex : /(?:null)\b/ - }, { - token : "string", - regex : /'/, - next : [{ - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/, - consumeLineEnd : true - }, { - token : "string", - regex : /'|$/, - next : "start" - }, { - defaultToken : "string" - }] - }, { - token : "string", - regex : /"(?![^"]*":)/, - next : [{ - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/, - consumeLineEnd : true - }, { - token : "string", - regex : /"|$/, - next : "start" - }, { - defaultToken : "string" - }] - }, { - token : "constant.numeric", - regex : /[+-]?(?:Infinity|NaN)\b/ - }]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.normalizeRules(); -}; - -oop.inherits(Json5HighlightRules, JsonHighlightRules); - -exports.Json5HighlightRules = Json5HighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/json5",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json5_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./json5_highlight_rules").Json5HighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/json5"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/json5"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jsoniq.js b/src-noconflict/mode-jsoniq.js deleted file mode 100644 index c055779..0000000 --- a/src-noconflict/mode-jsoniq.js +++ /dev/null @@ -1,2632 +0,0 @@ -ace.define("ace/mode/xquery/jsoniq_lexer",["require","exports","module"], function(require, exports, module) { -module.exports = (function outer (modules, cache, entry) { - var previousRequire = typeof require == "function" && require; - function newRequire(name, jumped){ - if(!cache[name]) { - if(!modules[name]) { - var currentRequire = typeof require == "function" && require; - if (!jumped && currentRequire) return currentRequire(name, true); - if (previousRequire) return previousRequire(name, true); - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - var m = cache[name] = {exports:{}}; - modules[name][0].call(m.exports, function(x){ - var id = modules[name][1][x]; - return newRequire(id ? id : x); - },m,m.exports,outer,modules,cache,entry); - } - return cache[name].exports; - } - for(var i=0;i= 0 ? JSONiqTokenizer.TOKEN[o] : null; - }; - - this.getExpectedTokenSet = function(e) - { - var expected; - if (e.getExpected() < 0) - { - expected = JSONiqTokenizer.getTokenSet(- e.getState()); - } - else - { - expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; - } - return expected; - }; - - this.getErrorMessage = function(e) - { - var tokenSet = this.getExpectedTokenSet(e); - var found = this.getOffendingToken(e); - var prefix = input.substring(0, e.getBegin()); - var lines = prefix.split("\n"); - var line = lines.length; - var column = lines[line - 1].length + 1; - var size = e.getEnd() - e.getBegin(); - return e.getMessage() - + (found == null ? "" : ", found " + found) - + "\nwhile expecting " - + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) - + "\n" - + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") - + "at line " + line + ", column " + column + ":\n..." - + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) - + "..."; - }; - - this.parse_start = function() - { - eventHandler.startNonterminal("start", e0); - lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | - switch (l1) - { - case 58: // '' | '=' | '>' - switch (l1) - { - case 61: // '>' - shift(61); // '>' - break; - case 53: // '/>' - shift(53); // '/>' - break; - case 29: // QName - shift(29); // QName - break; - case 60: // '=' - shift(60); // '=' - break; - case 37: // '"' - shift(37); // '"' - break; - case 41: // "'" - shift(41); // "'" - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("StartTag", e0); - }; - - this.parse_TagContent = function() - { - eventHandler.startNonterminal("TagContent", e0); - lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | - switch (l1) - { - case 25: // ElementContentChar - shift(25); // ElementContentChar - break; - case 9: // Tag - shift(9); // Tag - break; - case 10: // EndTag - shift(10); // EndTag - break; - case 58: // '' - switch (l1) - { - case 14: // CDataSectionContents - shift(14); // CDataSectionContents - break; - case 67: // ']]>' - shift(67); // ']]>' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("CData", e0); - }; - - this.parse_XMLComment = function() - { - eventHandler.startNonterminal("XMLComment", e0); - lookahead1(0); // DirCommentContents | EOF | '-->' - switch (l1) - { - case 12: // DirCommentContents - shift(12); // DirCommentContents - break; - case 50: // '-->' - shift(50); // '-->' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("XMLComment", e0); - }; - - this.parse_PI = function() - { - eventHandler.startNonterminal("PI", e0); - lookahead1(3); // DirPIContents | EOF | '?' | '?>' - switch (l1) - { - case 13: // DirPIContents - shift(13); // DirPIContents - break; - case 62: // '?' - shift(62); // '?' - break; - case 63: // '?>' - shift(63); // '?>' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("PI", e0); - }; - - this.parse_Pragma = function() - { - eventHandler.startNonterminal("Pragma", e0); - lookahead1(2); // PragmaContents | EOF | '#' | '#)' - switch (l1) - { - case 11: // PragmaContents - shift(11); // PragmaContents - break; - case 38: // '#' - shift(38); // '#' - break; - case 39: // '#)' - shift(39); // '#)' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("Pragma", e0); - }; - - this.parse_Comment = function() - { - eventHandler.startNonterminal("Comment", e0); - lookahead1(4); // CommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 55: // ':)' - shift(55); // ':)' - break; - case 44: // '(:' - shift(44); // '(:' - break; - case 32: // CommentContents - shift(32); // CommentContents - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("Comment", e0); - }; - - this.parse_CommentDoc = function() - { - eventHandler.startNonterminal("CommentDoc", e0); - lookahead1(6); // DocTag | DocCommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 33: // DocTag - shift(33); // DocTag - break; - case 34: // DocCommentContents - shift(34); // DocCommentContents - break; - case 55: // ':)' - shift(55); // ':)' - break; - case 44: // '(:' - shift(44); // '(:' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("CommentDoc", e0); - }; - - this.parse_QuotString = function() - { - eventHandler.startNonterminal("QuotString", e0); - lookahead1(5); // JSONChar | JSONCharRef | JSONPredefinedCharRef | EOF | '"' - switch (l1) - { - case 3: // JSONPredefinedCharRef - shift(3); // JSONPredefinedCharRef - break; - case 2: // JSONCharRef - shift(2); // JSONCharRef - break; - case 1: // JSONChar - shift(1); // JSONChar - break; - case 37: // '"' - shift(37); // '"' - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("QuotString", e0); - }; - - this.parse_AposString = function() - { - eventHandler.startNonterminal("AposString", e0); - lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" - switch (l1) - { - case 21: // PredefinedEntityRef - shift(21); // PredefinedEntityRef - break; - case 31: // CharRef - shift(31); // CharRef - break; - case 23: // EscapeApos - shift(23); // EscapeApos - break; - case 24: // AposChar - shift(24); // AposChar - break; - case 41: // "'" - shift(41); // "'" - break; - default: - shift(35); // EOF - } - eventHandler.endNonterminal("AposString", e0); - }; - - this.parse_Prefix = function() - { - eventHandler.startNonterminal("Prefix", e0); - lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_NCName(); - eventHandler.endNonterminal("Prefix", e0); - }; - - this.parse__EQName = function() - { - eventHandler.startNonterminal("_EQName", e0); - lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_EQName(); - eventHandler.endNonterminal("_EQName", e0); - }; - - function parse_EQName() - { - eventHandler.startNonterminal("EQName", e0); - switch (l1) - { - case 80: // 'attribute' - shift(80); // 'attribute' - break; - case 94: // 'comment' - shift(94); // 'comment' - break; - case 118: // 'document-node' - shift(118); // 'document-node' - break; - case 119: // 'element' - shift(119); // 'element' - break; - case 122: // 'empty-sequence' - shift(122); // 'empty-sequence' - break; - case 143: // 'function' - shift(143); // 'function' - break; - case 150: // 'if' - shift(150); // 'if' - break; - case 163: // 'item' - shift(163); // 'item' - break; - case 183: // 'namespace-node' - shift(183); // 'namespace-node' - break; - case 189: // 'node' - shift(189); // 'node' - break; - case 214: // 'processing-instruction' - shift(214); // 'processing-instruction' - break; - case 224: // 'schema-attribute' - shift(224); // 'schema-attribute' - break; - case 225: // 'schema-element' - shift(225); // 'schema-element' - break; - case 241: // 'switch' - shift(241); // 'switch' - break; - case 242: // 'text' - shift(242); // 'text' - break; - case 251: // 'typeswitch' - shift(251); // 'typeswitch' - break; - default: - parse_FunctionName(); - } - eventHandler.endNonterminal("EQName", e0); - } - - function parse_FunctionName() - { - eventHandler.startNonterminal("FunctionName", e0); - switch (l1) - { - case 17: // EQName^Token - shift(17); // EQName^Token - break; - case 68: // 'after' - shift(68); // 'after' - break; - case 71: // 'ancestor' - shift(71); // 'ancestor' - break; - case 72: // 'ancestor-or-self' - shift(72); // 'ancestor-or-self' - break; - case 73: // 'and' - shift(73); // 'and' - break; - case 77: // 'as' - shift(77); // 'as' - break; - case 78: // 'ascending' - shift(78); // 'ascending' - break; - case 82: // 'before' - shift(82); // 'before' - break; - case 86: // 'case' - shift(86); // 'case' - break; - case 87: // 'cast' - shift(87); // 'cast' - break; - case 88: // 'castable' - shift(88); // 'castable' - break; - case 91: // 'child' - shift(91); // 'child' - break; - case 92: // 'collation' - shift(92); // 'collation' - break; - case 101: // 'copy' - shift(101); // 'copy' - break; - case 103: // 'count' - shift(103); // 'count' - break; - case 106: // 'declare' - shift(106); // 'declare' - break; - case 107: // 'default' - shift(107); // 'default' - break; - case 108: // 'delete' - shift(108); // 'delete' - break; - case 109: // 'descendant' - shift(109); // 'descendant' - break; - case 110: // 'descendant-or-self' - shift(110); // 'descendant-or-self' - break; - case 111: // 'descending' - shift(111); // 'descending' - break; - case 116: // 'div' - shift(116); // 'div' - break; - case 117: // 'document' - shift(117); // 'document' - break; - case 120: // 'else' - shift(120); // 'else' - break; - case 121: // 'empty' - shift(121); // 'empty' - break; - case 124: // 'end' - shift(124); // 'end' - break; - case 126: // 'eq' - shift(126); // 'eq' - break; - case 127: // 'every' - shift(127); // 'every' - break; - case 129: // 'except' - shift(129); // 'except' - break; - case 132: // 'first' - shift(132); // 'first' - break; - case 133: // 'following' - shift(133); // 'following' - break; - case 134: // 'following-sibling' - shift(134); // 'following-sibling' - break; - case 135: // 'for' - shift(135); // 'for' - break; - case 144: // 'ge' - shift(144); // 'ge' - break; - case 146: // 'group' - shift(146); // 'group' - break; - case 148: // 'gt' - shift(148); // 'gt' - break; - case 149: // 'idiv' - shift(149); // 'idiv' - break; - case 151: // 'import' - shift(151); // 'import' - break; - case 157: // 'insert' - shift(157); // 'insert' - break; - case 158: // 'instance' - shift(158); // 'instance' - break; - case 160: // 'intersect' - shift(160); // 'intersect' - break; - case 161: // 'into' - shift(161); // 'into' - break; - case 162: // 'is' - shift(162); // 'is' - break; - case 168: // 'last' - shift(168); // 'last' - break; - case 170: // 'le' - shift(170); // 'le' - break; - case 172: // 'let' - shift(172); // 'let' - break; - case 176: // 'lt' - shift(176); // 'lt' - break; - case 178: // 'mod' - shift(178); // 'mod' - break; - case 179: // 'modify' - shift(179); // 'modify' - break; - case 180: // 'module' - shift(180); // 'module' - break; - case 182: // 'namespace' - shift(182); // 'namespace' - break; - case 184: // 'ne' - shift(184); // 'ne' - break; - case 196: // 'only' - shift(196); // 'only' - break; - case 198: // 'or' - shift(198); // 'or' - break; - case 199: // 'order' - shift(199); // 'order' - break; - case 200: // 'ordered' - shift(200); // 'ordered' - break; - case 204: // 'parent' - shift(204); // 'parent' - break; - case 210: // 'preceding' - shift(210); // 'preceding' - break; - case 211: // 'preceding-sibling' - shift(211); // 'preceding-sibling' - break; - case 216: // 'rename' - shift(216); // 'rename' - break; - case 217: // 'replace' - shift(217); // 'replace' - break; - case 218: // 'return' - shift(218); // 'return' - break; - case 222: // 'satisfies' - shift(222); // 'satisfies' - break; - case 227: // 'self' - shift(227); // 'self' - break; - case 233: // 'some' - shift(233); // 'some' - break; - case 234: // 'stable' - shift(234); // 'stable' - break; - case 235: // 'start' - shift(235); // 'start' - break; - case 246: // 'to' - shift(246); // 'to' - break; - case 247: // 'treat' - shift(247); // 'treat' - break; - case 248: // 'try' - shift(248); // 'try' - break; - case 252: // 'union' - shift(252); // 'union' - break; - case 254: // 'unordered' - shift(254); // 'unordered' - break; - case 258: // 'validate' - shift(258); // 'validate' - break; - case 264: // 'where' - shift(264); // 'where' - break; - case 268: // 'with' - shift(268); // 'with' - break; - case 272: // 'xquery' - shift(272); // 'xquery' - break; - case 70: // 'allowing' - shift(70); // 'allowing' - break; - case 79: // 'at' - shift(79); // 'at' - break; - case 81: // 'base-uri' - shift(81); // 'base-uri' - break; - case 83: // 'boundary-space' - shift(83); // 'boundary-space' - break; - case 84: // 'break' - shift(84); // 'break' - break; - case 89: // 'catch' - shift(89); // 'catch' - break; - case 96: // 'construction' - shift(96); // 'construction' - break; - case 99: // 'context' - shift(99); // 'context' - break; - case 100: // 'continue' - shift(100); // 'continue' - break; - case 102: // 'copy-namespaces' - shift(102); // 'copy-namespaces' - break; - case 104: // 'decimal-format' - shift(104); // 'decimal-format' - break; - case 123: // 'encoding' - shift(123); // 'encoding' - break; - case 130: // 'exit' - shift(130); // 'exit' - break; - case 131: // 'external' - shift(131); // 'external' - break; - case 139: // 'ft-option' - shift(139); // 'ft-option' - break; - case 152: // 'in' - shift(152); // 'in' - break; - case 153: // 'index' - shift(153); // 'index' - break; - case 159: // 'integrity' - shift(159); // 'integrity' - break; - case 169: // 'lax' - shift(169); // 'lax' - break; - case 190: // 'nodes' - shift(190); // 'nodes' - break; - case 197: // 'option' - shift(197); // 'option' - break; - case 201: // 'ordering' - shift(201); // 'ordering' - break; - case 220: // 'revalidation' - shift(220); // 'revalidation' - break; - case 223: // 'schema' - shift(223); // 'schema' - break; - case 226: // 'score' - shift(226); // 'score' - break; - case 232: // 'sliding' - shift(232); // 'sliding' - break; - case 238: // 'strict' - shift(238); // 'strict' - break; - case 249: // 'tumbling' - shift(249); // 'tumbling' - break; - case 250: // 'type' - shift(250); // 'type' - break; - case 255: // 'updating' - shift(255); // 'updating' - break; - case 259: // 'value' - shift(259); // 'value' - break; - case 260: // 'variable' - shift(260); // 'variable' - break; - case 261: // 'version' - shift(261); // 'version' - break; - case 265: // 'while' - shift(265); // 'while' - break; - case 95: // 'constraint' - shift(95); // 'constraint' - break; - case 174: // 'loop' - shift(174); // 'loop' - break; - default: - shift(219); // 'returning' - } - eventHandler.endNonterminal("FunctionName", e0); - } - - function parse_NCName() - { - eventHandler.startNonterminal("NCName", e0); - switch (l1) - { - case 28: // NCName^Token - shift(28); // NCName^Token - break; - case 68: // 'after' - shift(68); // 'after' - break; - case 73: // 'and' - shift(73); // 'and' - break; - case 77: // 'as' - shift(77); // 'as' - break; - case 78: // 'ascending' - shift(78); // 'ascending' - break; - case 82: // 'before' - shift(82); // 'before' - break; - case 86: // 'case' - shift(86); // 'case' - break; - case 87: // 'cast' - shift(87); // 'cast' - break; - case 88: // 'castable' - shift(88); // 'castable' - break; - case 92: // 'collation' - shift(92); // 'collation' - break; - case 103: // 'count' - shift(103); // 'count' - break; - case 107: // 'default' - shift(107); // 'default' - break; - case 111: // 'descending' - shift(111); // 'descending' - break; - case 116: // 'div' - shift(116); // 'div' - break; - case 120: // 'else' - shift(120); // 'else' - break; - case 121: // 'empty' - shift(121); // 'empty' - break; - case 124: // 'end' - shift(124); // 'end' - break; - case 126: // 'eq' - shift(126); // 'eq' - break; - case 129: // 'except' - shift(129); // 'except' - break; - case 135: // 'for' - shift(135); // 'for' - break; - case 144: // 'ge' - shift(144); // 'ge' - break; - case 146: // 'group' - shift(146); // 'group' - break; - case 148: // 'gt' - shift(148); // 'gt' - break; - case 149: // 'idiv' - shift(149); // 'idiv' - break; - case 158: // 'instance' - shift(158); // 'instance' - break; - case 160: // 'intersect' - shift(160); // 'intersect' - break; - case 161: // 'into' - shift(161); // 'into' - break; - case 162: // 'is' - shift(162); // 'is' - break; - case 170: // 'le' - shift(170); // 'le' - break; - case 172: // 'let' - shift(172); // 'let' - break; - case 176: // 'lt' - shift(176); // 'lt' - break; - case 178: // 'mod' - shift(178); // 'mod' - break; - case 179: // 'modify' - shift(179); // 'modify' - break; - case 184: // 'ne' - shift(184); // 'ne' - break; - case 196: // 'only' - shift(196); // 'only' - break; - case 198: // 'or' - shift(198); // 'or' - break; - case 199: // 'order' - shift(199); // 'order' - break; - case 218: // 'return' - shift(218); // 'return' - break; - case 222: // 'satisfies' - shift(222); // 'satisfies' - break; - case 234: // 'stable' - shift(234); // 'stable' - break; - case 235: // 'start' - shift(235); // 'start' - break; - case 246: // 'to' - shift(246); // 'to' - break; - case 247: // 'treat' - shift(247); // 'treat' - break; - case 252: // 'union' - shift(252); // 'union' - break; - case 264: // 'where' - shift(264); // 'where' - break; - case 268: // 'with' - shift(268); // 'with' - break; - case 71: // 'ancestor' - shift(71); // 'ancestor' - break; - case 72: // 'ancestor-or-self' - shift(72); // 'ancestor-or-self' - break; - case 80: // 'attribute' - shift(80); // 'attribute' - break; - case 91: // 'child' - shift(91); // 'child' - break; - case 94: // 'comment' - shift(94); // 'comment' - break; - case 101: // 'copy' - shift(101); // 'copy' - break; - case 106: // 'declare' - shift(106); // 'declare' - break; - case 108: // 'delete' - shift(108); // 'delete' - break; - case 109: // 'descendant' - shift(109); // 'descendant' - break; - case 110: // 'descendant-or-self' - shift(110); // 'descendant-or-self' - break; - case 117: // 'document' - shift(117); // 'document' - break; - case 118: // 'document-node' - shift(118); // 'document-node' - break; - case 119: // 'element' - shift(119); // 'element' - break; - case 122: // 'empty-sequence' - shift(122); // 'empty-sequence' - break; - case 127: // 'every' - shift(127); // 'every' - break; - case 132: // 'first' - shift(132); // 'first' - break; - case 133: // 'following' - shift(133); // 'following' - break; - case 134: // 'following-sibling' - shift(134); // 'following-sibling' - break; - case 143: // 'function' - shift(143); // 'function' - break; - case 150: // 'if' - shift(150); // 'if' - break; - case 151: // 'import' - shift(151); // 'import' - break; - case 157: // 'insert' - shift(157); // 'insert' - break; - case 163: // 'item' - shift(163); // 'item' - break; - case 168: // 'last' - shift(168); // 'last' - break; - case 180: // 'module' - shift(180); // 'module' - break; - case 182: // 'namespace' - shift(182); // 'namespace' - break; - case 183: // 'namespace-node' - shift(183); // 'namespace-node' - break; - case 189: // 'node' - shift(189); // 'node' - break; - case 200: // 'ordered' - shift(200); // 'ordered' - break; - case 204: // 'parent' - shift(204); // 'parent' - break; - case 210: // 'preceding' - shift(210); // 'preceding' - break; - case 211: // 'preceding-sibling' - shift(211); // 'preceding-sibling' - break; - case 214: // 'processing-instruction' - shift(214); // 'processing-instruction' - break; - case 216: // 'rename' - shift(216); // 'rename' - break; - case 217: // 'replace' - shift(217); // 'replace' - break; - case 224: // 'schema-attribute' - shift(224); // 'schema-attribute' - break; - case 225: // 'schema-element' - shift(225); // 'schema-element' - break; - case 227: // 'self' - shift(227); // 'self' - break; - case 233: // 'some' - shift(233); // 'some' - break; - case 241: // 'switch' - shift(241); // 'switch' - break; - case 242: // 'text' - shift(242); // 'text' - break; - case 248: // 'try' - shift(248); // 'try' - break; - case 251: // 'typeswitch' - shift(251); // 'typeswitch' - break; - case 254: // 'unordered' - shift(254); // 'unordered' - break; - case 258: // 'validate' - shift(258); // 'validate' - break; - case 260: // 'variable' - shift(260); // 'variable' - break; - case 272: // 'xquery' - shift(272); // 'xquery' - break; - case 70: // 'allowing' - shift(70); // 'allowing' - break; - case 79: // 'at' - shift(79); // 'at' - break; - case 81: // 'base-uri' - shift(81); // 'base-uri' - break; - case 83: // 'boundary-space' - shift(83); // 'boundary-space' - break; - case 84: // 'break' - shift(84); // 'break' - break; - case 89: // 'catch' - shift(89); // 'catch' - break; - case 96: // 'construction' - shift(96); // 'construction' - break; - case 99: // 'context' - shift(99); // 'context' - break; - case 100: // 'continue' - shift(100); // 'continue' - break; - case 102: // 'copy-namespaces' - shift(102); // 'copy-namespaces' - break; - case 104: // 'decimal-format' - shift(104); // 'decimal-format' - break; - case 123: // 'encoding' - shift(123); // 'encoding' - break; - case 130: // 'exit' - shift(130); // 'exit' - break; - case 131: // 'external' - shift(131); // 'external' - break; - case 139: // 'ft-option' - shift(139); // 'ft-option' - break; - case 152: // 'in' - shift(152); // 'in' - break; - case 153: // 'index' - shift(153); // 'index' - break; - case 159: // 'integrity' - shift(159); // 'integrity' - break; - case 169: // 'lax' - shift(169); // 'lax' - break; - case 190: // 'nodes' - shift(190); // 'nodes' - break; - case 197: // 'option' - shift(197); // 'option' - break; - case 201: // 'ordering' - shift(201); // 'ordering' - break; - case 220: // 'revalidation' - shift(220); // 'revalidation' - break; - case 223: // 'schema' - shift(223); // 'schema' - break; - case 226: // 'score' - shift(226); // 'score' - break; - case 232: // 'sliding' - shift(232); // 'sliding' - break; - case 238: // 'strict' - shift(238); // 'strict' - break; - case 249: // 'tumbling' - shift(249); // 'tumbling' - break; - case 250: // 'type' - shift(250); // 'type' - break; - case 255: // 'updating' - shift(255); // 'updating' - break; - case 259: // 'value' - shift(259); // 'value' - break; - case 261: // 'version' - shift(261); // 'version' - break; - case 265: // 'while' - shift(265); // 'while' - break; - case 95: // 'constraint' - shift(95); // 'constraint' - break; - case 174: // 'loop' - shift(174); // 'loop' - break; - default: - shift(219); // 'returning' - } - eventHandler.endNonterminal("NCName", e0); - } - - function shift(t) - { - if (l1 == t) - { - whitespace(); - eventHandler.terminal(JSONiqTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); - b0 = b1; e0 = e1; l1 = 0; - } - else - { - error(b1, e1, 0, l1, t); - } - } - - function whitespace() - { - if (e0 != b1) - { - b0 = e0; - e0 = b1; - eventHandler.whitespace(b0, e0); - } - } - - function matchW(set) - { - var code; - for (;;) - { - code = match(set); - if (code != 30) // S^WS - { - break; - } - } - return code; - } - - function lookahead1W(set) - { - if (l1 == 0) - { - l1 = matchW(set); - b1 = begin; - e1 = end; - } - } - - function lookahead1(set) - { - if (l1 == 0) - { - l1 = match(set); - b1 = begin; - e1 = end; - } - } - - function error(b, e, s, l, t) - { - throw new self.ParseException(b, e, s, l, t); - } - - var lk, b0, e0; - var l1, b1, e1; - var eventHandler; - - var input; - var size; - var begin; - var end; - - function match(tokenSetId) - { - var nonbmp = false; - begin = end; - var current = end; - var result = JSONiqTokenizer.INITIAL[tokenSetId]; - var state = 0; - - for (var code = result & 4095; code != 0; ) - { - var charclass; - var c0 = current < size ? input.charCodeAt(current) : 0; - ++current; - if (c0 < 0x80) - { - charclass = JSONiqTokenizer.MAP0[c0]; - } - else if (c0 < 0xd800) - { - var c1 = c0 >> 4; - charclass = JSONiqTokenizer.MAP1[(c0 & 15) + JSONiqTokenizer.MAP1[(c1 & 31) + JSONiqTokenizer.MAP1[c1 >> 5]]]; - } - else - { - if (c0 < 0xdc00) - { - var c1 = current < size ? input.charCodeAt(current) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) - { - ++current; - c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; - nonbmp = true; - } - } - var lo = 0, hi = 5; - for (var m = 3; ; m = (hi + lo) >> 1) - { - if (JSONiqTokenizer.MAP2[m] > c0) hi = m - 1; - else if (JSONiqTokenizer.MAP2[6 + m] < c0) lo = m + 1; - else {charclass = JSONiqTokenizer.MAP2[12 + m]; break;} - if (lo > hi) {charclass = 0; break;} - } - } - - state = code; - var i0 = (charclass << 12) + code - 1; - code = JSONiqTokenizer.TRANSITION[(i0 & 15) + JSONiqTokenizer.TRANSITION[i0 >> 4]]; - - if (code > 4095) - { - result = code; - code &= 4095; - end = current; - } - } - - result >>= 12; - if (result == 0) - { - end = current - 1; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - return error(begin, end, state, -1, -1); - } - - if (nonbmp) - { - for (var i = result >> 9; i > 0; --i) - { - --end; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - } - } - else - { - end -= result >> 9; - } - - return (result & 511) - 1; - } -} - -JSONiqTokenizer.getTokenSet = function(tokenSetId) -{ - var set = []; - var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; - for (var i = 0; i < 279; i += 32) - { - var j = i; - var i0 = (i >> 5) * 2066 + s - 1; - var i1 = i0 >> 2; - var i2 = i1 >> 2; - var f = JSONiqTokenizer.EXPECTED[(i0 & 3) + JSONiqTokenizer.EXPECTED[(i1 & 3) + JSONiqTokenizer.EXPECTED[(i2 & 3) + JSONiqTokenizer.EXPECTED[i2 >> 2]]]]; - for ( ; f != 0; f >>>= 1, ++j) - { - if ((f & 1) != 0) - { - set.push(JSONiqTokenizer.TOKEN[j]); - } - } - } - return set; -}; - -JSONiqTokenizer.MAP0 = -[ 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37 -]; - -JSONiqTokenizer.MAP1 = -[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 37, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 31, 31, 37, 37, 37, 37, 37, 37, 37, 66, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 -]; - -JSONiqTokenizer.MAP2 = -[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 37, 31, 37, 31, 31, 37 -]; - -JSONiqTokenizer.INITIAL = -[ 1, 2, 49155, 57348, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 -]; - -JSONiqTokenizer.TRANSITION = -[ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 17408, 19288, 17439, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19074, 36169, 17439, 36866, 17466, 36890, 36866, 22314, 19105, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22182, 19288, 19121, 36866, 17466, 18345, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19273, 19552, 19304, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19332, 17423, 19363, 36866, 17466, 17537, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 18614, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19391, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19427, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36154, 19288, 19457, 36866, 17466, 17740, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22780, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22375, 22197, 18469, 36866, 17466, 36890, 36866, 21991, 24018, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21331, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 19485, 19501, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19537, 22390, 19568, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19596, 19611, 19457, 36866, 17466, 36890, 36866, 18246, 19627, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22242, 20553, 19457, 36866, 17466, 36890, 36866, 18648, 30477, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36472, 19288, 19457, 36866, 17466, 17809, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21770, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19643, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19672, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20538, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17975, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22345, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19726, 19742, 21529, 24035, 23112, 26225, 23511, 27749, 27397, 24035, 34360, 24035, 24036, 23114, 35166, 23114, 23114, 19758, 23511, 35247, 23511, 23511, 28447, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 19821, 23511, 23511, 23511, 23511, 23512, 19441, 36539, 24035, 24035, 24035, 24035, 19846, 19869, 23114, 23114, 23114, 28618, 32187, 19892, 23511, 23511, 23511, 34585, 20402, 36647, 24035, 24035, 24036, 23114, 33757, 23114, 23114, 23029, 20271, 23511, 27070, 23511, 23511, 30562, 24035, 24035, 29274, 26576, 23114, 23114, 31118, 23036, 29695, 23511, 23511, 32431, 23634, 30821, 24035, 23110, 19913, 23114, 23467, 31261, 23261, 34299, 19932, 24035, 32609, 19965, 35389, 19984, 27689, 19830, 29391, 29337, 20041, 22643, 35619, 33728, 20062, 20121, 20166, 35100, 26145, 20211, 23008, 19876, 20208, 20227, 25670, 20132, 26578, 27685, 20141, 20243, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36094, 19288, 19457, 36866, 17466, 21724, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22735, 19552, 20287, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22750, 19288, 21529, 24035, 23112, 28056, 23511, 29483, 28756, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 20327, 23511, 23511, 23511, 23511, 31156, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 20371, 23511, 23511, 23511, 23511, 27443, 20395, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 29457, 29700, 23511, 23511, 23511, 23511, 33444, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 28350, 20421, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 20447, 20475, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20523, 22257, 20569, 20783, 21715, 17603, 20699, 20837, 20614, 20630, 21149, 20670, 21405, 17486, 17509, 17525, 18373, 19179, 20695, 20716, 20732, 20755, 19194, 18042, 21641, 20592, 20779, 20598, 21412, 17470, 17591, 20896, 17468, 17619, 20799, 20700, 21031, 20744, 20699, 20828, 18075, 21259, 20581, 20853, 18048, 20868, 20884, 17756, 17784, 17800, 17825, 17854, 21171, 21200, 20931, 20947, 21378, 20955, 20971, 18086, 20645, 21002, 20986, 18178, 17960, 18012, 18381, 18064, 29176, 21044, 21438, 21018, 21122, 21393, 21060, 21844, 21094, 20654, 17493, 18150, 18166, 18214, 25967, 20763, 21799, 21110, 21830, 21138, 21246, 21301, 18336, 18361, 21165, 21187, 20812, 21216, 21232, 21287, 21317, 18553, 21347, 21363, 21428, 21454, 21271, 21483, 21499, 21515, 21575, 21467, 18712, 21591, 21633, 21078, 18189, 18198, 20679, 21657, 21701, 21074, 21687, 21740, 21756, 21786, 21815, 21860, 21876, 21892, 21946, 21962, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36457, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 36813, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 21981, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 22151, 22007, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 27898, 17884, 18890, 17906, 17928, 22042, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 22070, 22112, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 22142, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36109, 19288, 18469, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22167, 19288, 19457, 36866, 17466, 17768, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22227, 36487, 22273, 36866, 17466, 36890, 36866, 19316, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18749, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 22304, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19580, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22330, 19089, 19457, 36866, 17466, 18721, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22765, 19347, 19457, 36866, 17466, 36890, 36866, 18114, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34541, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 22540, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29908, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22561, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 23837, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22584, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36442, 19288, 21605, 24035, 23112, 28137, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 31568, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22690, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 27584, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 22659, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22360, 19552, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22675, 22811, 19457, 36866, 17466, 36890, 36866, 19133, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22827, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36064, 19288, 22865, 22881, 32031, 22897, 22913, 22956, 29939, 24035, 24035, 24035, 23003, 23114, 23114, 23114, 23024, 22420, 23511, 23511, 23511, 23052, 29116, 23073, 29268, 24035, 25563, 26915, 23106, 23131, 23114, 23114, 23159, 23181, 23197, 23248, 23511, 23511, 23282, 23305, 22493, 32364, 24035, 33472, 30138, 26325, 31770, 33508, 27345, 33667, 23114, 23321, 23473, 23351, 35793, 36576, 23511, 23375, 22500, 24145, 24035, 29197, 20192, 24533, 23440, 23114, 19017, 23459, 22839, 23489, 23510, 23511, 33563, 23528, 32076, 25389, 24035, 26576, 23561, 23583, 23114, 32683, 22516, 23622, 23655, 23511, 23634, 35456, 37144, 23110, 23683, 34153, 20499, 32513, 25824, 23705, 24035, 24035, 23111, 23114, 19874, 27078, 33263, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 20507, 32241, 20150, 31862, 27464, 35108, 23727, 23007, 35895, 34953, 26578, 27685, 20141, 24569, 31691, 19787, 33967, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36427, 19552, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 27027, 26576, 23114, 23114, 23114, 31471, 23756, 22468, 23511, 23511, 23511, 34687, 23772, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 23788, 24035, 24035, 24035, 21559, 23828, 23114, 23114, 23114, 25086, 22839, 23853, 23511, 23511, 23511, 23876, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 31761, 23909, 23953, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36049, 19288, 21605, 30825, 23112, 23987, 23511, 24003, 31001, 27617, 24034, 24035, 24036, 24052, 24089, 23114, 23114, 22420, 24109, 24168, 23511, 23511, 29116, 24188, 27609, 20017, 29516, 24035, 26576, 24222, 19968, 23114, 24252, 33811, 22468, 24270, 33587, 23511, 24320, 27443, 22493, 24035, 24035, 24035, 24035, 24339, 23113, 23114, 23114, 23114, 28128, 28618, 29700, 23511, 23511, 23511, 28276, 34564, 20402, 24035, 24035, 32929, 24036, 23114, 23114, 23114, 24357, 23029, 22839, 23511, 23511, 23511, 24377, 25645, 24035, 34112, 24035, 26576, 23114, 26643, 23114, 32683, 22516, 23511, 25638, 23511, 23711, 24035, 24395, 27809, 23114, 24414, 20499, 24432, 30917, 23628, 24035, 30680, 23111, 23114, 30233, 27078, 25748, 24452, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 24475, 19829, 26577, 26597, 26154, 24519, 24556, 24596, 23007, 20046, 20132, 26578, 24634, 20141, 24569, 31691, 24679, 24727, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36412, 19288, 21605, 19943, 34861, 32618, 26027, 29483, 32016, 32050, 36233, 24776, 35574, 24801, 24819, 32671, 31289, 22420, 24868, 24886, 20087, 26849, 29116, 19803, 24035, 24035, 24035, 36228, 26576, 23114, 23114, 23114, 24981, 33811, 22468, 23511, 23511, 23511, 29028, 27443, 22493, 24923, 27965, 24035, 24035, 32797, 24946, 23443, 23114, 23114, 29636, 24997, 22849, 28252, 23511, 23511, 23511, 25042, 25110, 24035, 24035, 34085, 24036, 25133, 23114, 23114, 25152, 23029, 22839, 25169, 23511, 36764, 23511, 25645, 30403, 24035, 25186, 26576, 31806, 24093, 25212, 32683, 22516, 32713, 26245, 34293, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 32406, 23111, 23114, 28676, 30944, 27689, 25234, 24035, 23112, 19872, 37063, 23266, 24036, 23114, 30243, 20379, 26100, 29218, 20211, 30105, 25257, 25284, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 24834, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36034, 19288, 21671, 25314, 25072, 25330, 25346, 25362, 29939, 29951, 35288, 29984, 23812, 27216, 25405, 25424, 30456, 22584, 26292, 25461, 25480, 31592, 29116, 25516, 34963, 25545, 27007, 25579, 33937, 25614, 25661, 25686, 34872, 25702, 25718, 25734, 25769, 25795, 25811, 25840, 22493, 26533, 25856, 24035, 25876, 30763, 27481, 25909, 23114, 28987, 25936, 25954, 29700, 25983, 23511, 31412, 26043, 26063, 22568, 29241, 29592, 26116, 31216, 35383, 26170, 34783, 26194, 26221, 22839, 26241, 26261, 22477, 26283, 26308, 27306, 31035, 24655, 26576, 29854, 33386, 26341, 32683, 22516, 32153, 30926, 26361, 19996, 26381, 35463, 26397, 26424, 34646, 26478, 35605, 31386, 26494, 35567, 31964, 22940, 23689, 25218, 30309, 32289, 19830, 33605, 23112, 32109, 27733, 27084, 24496, 35886, 35221, 26525, 36602, 26549, 26558, 26574, 26594, 26613, 26629, 26666, 26700, 26578, 27685, 23740, 24285, 31691, 26733, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36397, 19552, 18991, 25887, 28117, 32618, 26776, 29483, 29939, 26802, 24035, 24035, 24036, 28664, 23114, 23114, 23114, 22420, 30297, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 25559, 26576, 23114, 23114, 23114, 30525, 33811, 22468, 23511, 23511, 23511, 28725, 27443, 22493, 24035, 24035, 27249, 24035, 24035, 23113, 23114, 23114, 26827, 23114, 28618, 29700, 23511, 23511, 26845, 23511, 34564, 20402, 24035, 24035, 26979, 24036, 23114, 23114, 23114, 24974, 23029, 22839, 23511, 23511, 23511, 26865, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 33305, 24035, 25598, 23114, 19874, 34253, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 26886, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 26931, 24569, 26439, 26947, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36019, 19288, 26995, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 27043, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 27061, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 29978, 24035, 24035, 23113, 23114, 33114, 23114, 23114, 30010, 29700, 23511, 35913, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 27155, 26576, 23114, 23114, 30447, 23036, 29695, 23511, 23511, 30935, 20099, 24152, 25529, 27100, 34461, 27121, 22625, 29156, 26009, 27137, 30422, 31903, 31655, 28870, 27171, 32439, 31731, 19830, 27232, 22612, 27265, 26786, 25494, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 20342, 27288, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 27322, 27339, 28020, 27361, 27382, 29939, 24035, 24035, 32581, 24036, 23114, 23114, 23114, 27425, 22420, 23511, 23511, 23511, 27442, 28306, 19803, 24035, 24035, 24035, 24035, 26710, 23114, 23114, 23114, 23114, 32261, 22468, 23511, 23511, 23511, 23511, 35719, 24694, 29510, 24035, 24035, 24035, 24035, 26717, 23114, 23114, 23114, 23114, 28618, 32217, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 27459, 23114, 23114, 23114, 36252, 23029, 20271, 23511, 23511, 23511, 28840, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 27480, 34483, 28401, 29761, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36382, 19288, 21605, 27497, 27517, 28504, 28898, 27569, 29939, 29401, 27600, 27323, 27633, 19025, 27662, 23114, 27705, 22420, 20483, 27721, 23511, 27765, 28306, 19803, 23540, 24035, 24610, 27781, 27805, 26650, 23114, 28573, 32990, 25920, 22468, 26870, 23511, 26684, 34262, 34737, 25057, 34622, 24035, 24035, 23971, 24206, 27825, 27847, 23114, 23114, 27865, 27885, 35766, 27914, 23511, 23511, 32766, 32844, 27934, 28795, 26909, 27955, 26092, 27988, 25445, 28005, 28036, 28052, 21965, 23511, 32196, 19897, 28072, 28102, 36534, 21541, 23801, 28153, 28180, 28197, 28221, 23036, 32695, 28251, 28268, 28292, 23667, 34825, 23930, 24580, 28322, 28344, 31627, 28366, 25996, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 35625, 33477, 33359, 27674, 28393, 33992, 24036, 23114, 30243, 19829, 28417, 28433, 28463, 23008, 19876, 20208, 23007, 20046, 20132, 28489, 28520, 20141, 24569, 31691, 19787, 28550, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 28589, 24035, 24035, 24035, 24035, 28608, 23114, 23114, 23114, 23114, 28618, 20431, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36004, 19288, 28634, 31951, 28565, 28702, 28718, 28741, 32544, 20175, 28792, 32086, 20105, 28811, 29059, 29862, 28856, 22420, 28886, 30354, 23359, 28922, 28306, 28952, 23888, 26320, 36506, 24035, 29331, 28968, 36609, 23114, 29003, 31661, 27061, 30649, 27366, 23511, 29023, 27918, 24694, 24035, 24035, 23893, 33094, 30867, 23113, 23114, 23114, 29044, 34184, 30010, 29700, 23511, 23511, 29081, 29102, 34585, 20402, 27789, 24035, 24035, 24036, 23114, 29132, 23114, 23114, 23029, 20271, 23511, 29153, 23511, 23511, 30562, 30174, 24035, 24035, 27409, 25438, 23114, 23114, 29172, 36668, 31332, 23511, 23511, 29192, 30144, 24035, 23110, 30203, 23114, 23467, 31544, 23261, 23628, 24035, 22545, 23111, 23114, 29213, 27078, 27689, 29234, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 29257, 23008, 19876, 20208, 28768, 29290, 29320, 34776, 29353, 20141, 22435, 29378, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36367, 19288, 21605, 34616, 19006, 32618, 31497, 31507, 36216, 20184, 24035, 34393, 29424, 34668, 23114, 34900, 29447, 22420, 30360, 23511, 37089, 29473, 28306, 19803, 29499, 24398, 24035, 24035, 26576, 31799, 29532, 29550, 23114, 33811, 22468, 32298, 29571, 31184, 23511, 23512, 37127, 36628, 29589, 24035, 24135, 24035, 23113, 29608, 23114, 27831, 29634, 28618, 29652, 30037, 23511, 24172, 29671, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 29555, 29690, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 29719, 24035, 23110, 29738, 23114, 23467, 34035, 29756, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 29777, 34364, 28181, 30243, 29799, 31920, 27272, 27185, 23008, 31126, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29828, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35989, 19552, 19687, 35139, 28649, 29878, 29894, 29924, 29939, 23224, 23085, 31969, 24036, 35173, 24752, 24803, 23114, 22420, 31190, 30318, 24870, 23511, 28306, 29967, 23967, 24035, 24035, 24035, 26576, 30000, 23114, 23114, 23114, 33811, 22468, 30026, 23511, 23511, 23511, 23512, 26078, 24035, 24035, 24035, 30053, 37137, 30071, 23114, 23114, 33368, 25136, 28618, 30723, 23511, 23511, 37096, 31356, 34585, 20402, 30092, 30127, 30160, 24036, 35740, 30219, 24960, 30259, 23029, 20271, 34042, 30285, 30342, 30376, 23289, 30055, 30400, 30419, 30438, 32640, 33532, 33514, 30472, 18792, 26267, 24323, 23057, 30493, 23639, 20008, 30196, 33188, 30517, 20075, 23511, 30541, 23628, 30578, 33928, 28776, 30594, 19874, 30610, 30637, 19830, 30677, 27646, 19872, 25779, 23266, 23232, 35016, 30243, 30696, 29812, 30712, 30746, 27206, 30779, 30807, 23007, 33395, 20132, 26578, 27685, 31703, 22928, 31691, 19787, 31079, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36352, 19288, 23335, 30841, 26131, 30888, 30904, 30986, 29939, 24035, 24704, 31017, 20025, 23114, 26178, 31051, 31095, 22420, 23511, 22524, 31142, 31172, 28534, 31206, 35497, 25196, 24035, 28592, 24503, 23114, 31239, 31285, 23114, 31305, 31321, 31355, 31372, 31407, 23511, 30556, 24694, 24035, 27501, 19805, 24035, 24035, 23113, 23114, 31428, 24066, 23114, 28618, 29700, 23511, 31837, 18809, 23511, 34585, 31448, 24035, 24035, 24035, 23090, 23114, 23114, 23114, 23114, 31619, 35038, 23511, 23511, 23511, 23511, 33714, 24035, 33085, 24035, 29431, 23114, 31467, 23114, 23143, 31487, 23511, 31523, 23511, 35195, 36783, 24035, 30111, 23567, 23114, 23467, 31543, 31560, 23628, 24035, 24035, 23111, 23114, 19874, 30953, 31584, 34508, 24035, 31608, 26345, 37055, 23266, 31643, 31677, 31719, 31747, 31786, 31822, 26898, 23008, 19876, 31859, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 31878, 31936, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35974, 19288, 21605, 27972, 35663, 31985, 29655, 32001, 36715, 24785, 25893, 23545, 31912, 19853, 19916, 25938, 24540, 22420, 31843, 29674, 29573, 32735, 28936, 19803, 24035, 24035, 32047, 24035, 26576, 23114, 23114, 27544, 23114, 33811, 22468, 23511, 23511, 32161, 23511, 23512, 32066, 24035, 33313, 24035, 24035, 24035, 23113, 27426, 32102, 23114, 23114, 28618, 32125, 23511, 32144, 23511, 23511, 33569, 20402, 24035, 27045, 24035, 24036, 23114, 23114, 28328, 23114, 30076, 32177, 23511, 23511, 30384, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23595, 32212, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 22635, 25753, 32233, 32257, 32277, 19829, 26577, 26597, 20211, 23008, 19876, 32322, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 32352, 35285, 32380, 34196, 33016, 30661, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 32404, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 32422, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 30269, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 19949, 24035, 23111, 32455, 19874, 31269, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36337, 19552, 19209, 21617, 26509, 32475, 32491, 32529, 29939, 24035, 32578, 25241, 32597, 23114, 32634, 29007, 32656, 22420, 23511, 32729, 26365, 32751, 28306, 32788, 32882, 24035, 24035, 32813, 36727, 23114, 33182, 23114, 27553, 33235, 32829, 23511, 32706, 23511, 28906, 28377, 26962, 32881, 32904, 32898, 32920, 24035, 32953, 23114, 32977, 26408, 23114, 28164, 33006, 23511, 33039, 35774, 23511, 32306, 20402, 33076, 30872, 24035, 24036, 25408, 33110, 28979, 23114, 23029, 20271, 35835, 33130, 33054, 23511, 30562, 33148, 24035, 24035, 33167, 23114, 23114, 33775, 23036, 20459, 23511, 23511, 25464, 24646, 24035, 24035, 22446, 23114, 23114, 25627, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 31391, 33204, 33220, 33251, 33287, 26577, 26597, 20211, 33329, 19876, 33345, 23007, 20046, 20132, 26578, 27685, 28473, 22599, 31691, 33411, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35959, 19288, 21907, 27243, 29843, 32618, 33427, 31507, 29939, 33460, 34090, 24035, 24036, 33493, 24416, 33530, 23114, 22420, 33548, 24379, 33585, 23511, 28306, 19803, 33603, 24202, 24035, 24035, 25593, 33749, 28205, 23114, 23114, 32388, 22468, 33853, 33060, 23511, 23511, 31339, 33621, 24035, 24035, 34397, 24618, 30757, 33663, 23114, 23114, 33683, 35684, 28618, 26678, 23511, 23511, 32506, 33699, 34585, 20402, 24035, 32562, 26973, 24036, 23114, 23114, 33377, 33773, 23029, 20271, 23511, 23511, 30621, 23511, 23860, 24035, 33791, 21553, 26576, 36558, 23114, 33809, 23036, 32857, 26047, 23511, 33827, 23634, 24035, 24035, 23110, 23114, 23114, 31252, 23511, 33845, 23628, 24035, 24459, 23111, 23114, 33869, 27078, 30791, 29783, 24035, 24742, 19872, 33895, 23266, 26462, 19710, 33879, 33919, 26577, 26597, 24123, 24930, 21930, 20208, 30501, 33953, 25268, 20252, 33983, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36322, 19552, 23390, 33634, 35154, 34008, 34024, 34058, 35544, 34106, 34128, 26811, 33151, 34144, 34169, 34212, 23114, 34228, 34244, 34278, 34315, 23511, 34331, 34347, 34380, 34413, 24035, 24663, 26576, 34429, 34453, 34477, 29534, 33811, 22468, 34499, 34524, 34557, 25170, 34580, 35436, 23937, 34601, 24035, 24341, 26453, 23113, 34638, 34662, 23114, 24236, 28618, 34684, 34703, 34729, 23511, 35352, 34753, 34799, 24035, 34815, 32558, 34848, 34888, 35814, 34923, 23165, 29137, 23606, 30326, 30730, 34939, 33023, 30562, 36848, 34979, 24035, 24847, 34996, 23114, 23114, 35032, 29695, 35054, 23511, 23511, 35091, 33296, 35124, 24296, 28235, 24361, 36276, 32772, 35067, 35189, 27301, 30855, 24852, 22452, 35211, 35237, 35316, 25500, 35270, 23405, 24304, 35304, 29362, 24036, 23114, 35332, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 35368, 28823, 23920, 32336, 35405, 20141, 24569, 31691, 35421, 35479, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35944, 22795, 21605, 33647, 35877, 35513, 30962, 35529, 34073, 35557, 24035, 24035, 20405, 31107, 23114, 23114, 23114, 35590, 34713, 23511, 23511, 23511, 35641, 19803, 29408, 32937, 25298, 24035, 35657, 23115, 27849, 24760, 35679, 26205, 22468, 23511, 35700, 24907, 24901, 35075, 31893, 34980, 24035, 24035, 24035, 24035, 23113, 35009, 23114, 23114, 23114, 28618, 35716, 30970, 23511, 23511, 23511, 34585, 23215, 24035, 24035, 24035, 24036, 35735, 23114, 23114, 23114, 27105, 35756, 35790, 23511, 23511, 23511, 35254, 35446, 24035, 24035, 31223, 35809, 23114, 23114, 23036, 36825, 35830, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 31031, 20355, 19872, 33903, 23266, 24036, 23114, 28686, 19829, 26577, 26597, 20211, 23008, 23424, 20208, 24711, 31065, 24486, 26578, 27685, 20141, 19773, 35851, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36307, 19288, 21605, 35494, 19702, 32618, 33437, 31507, 29939, 25117, 24035, 27939, 24036, 27869, 23114, 26829, 23114, 22420, 23494, 23511, 33132, 23511, 28306, 19803, 24035, 34832, 24035, 24035, 26576, 23114, 25153, 23114, 23114, 33811, 22468, 23511, 23511, 35911, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35929, 19288, 21605, 25860, 23112, 36185, 23511, 36201, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 26748, 24035, 24035, 24035, 24035, 24035, 36249, 23114, 23114, 23114, 23114, 28618, 28835, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 27151, 24035, 26760, 23114, 27989, 23114, 23114, 36268, 20271, 23511, 24436, 23511, 29703, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36292, 19288, 21605, 36503, 21922, 32618, 34534, 31507, 36522, 24035, 33793, 24035, 35864, 23114, 23114, 36555, 23417, 22420, 23511, 23511, 36574, 26020, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 36592, 24035, 24035, 36625, 24035, 24035, 23113, 23114, 32961, 23114, 23114, 29618, 29700, 23511, 29086, 23511, 23511, 34585, 20402, 36644, 24035, 24035, 24036, 29740, 23114, 23114, 23114, 29065, 36663, 31527, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 31451, 23112, 36684, 23511, 36700, 29939, 24035, 24035, 24035, 30185, 23114, 23114, 23114, 27526, 22420, 23511, 23511, 23511, 32865, 28306, 19803, 36743, 24035, 27017, 24035, 26576, 27535, 23114, 31432, 23114, 33811, 22468, 33271, 23511, 32128, 23511, 23512, 24694, 24035, 27196, 24035, 24035, 24035, 23113, 32459, 23114, 23114, 23114, 28618, 29700, 33829, 36762, 23511, 23511, 34585, 20402, 24035, 36746, 24035, 29722, 23114, 23114, 34437, 23114, 34907, 20271, 23511, 23511, 18801, 23511, 23206, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 36837, 24035, 24035, 33739, 23114, 23114, 25094, 23511, 23261, 23628, 24035, 36780, 23111, 24073, 19874, 27078, 35344, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22720, 19288, 36799, 36866, 17466, 36890, 36864, 21991, 22211, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17631, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22705, 19288, 19457, 36866, 17466, 36890, 36866, 19375, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36124, 19288, 36951, 36866, 17466, 36890, 36866, 21991, 22404, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18567, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36979, 36995, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18027, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 21529, 24035, 23112, 23033, 23511, 31507, 25377, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 37040, 23511, 23511, 23511, 23511, 28086, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 37079, 23511, 23511, 23511, 23511, 23512, 34766, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 37112, 37160, 18469, 36866, 17466, 36890, 36866, 17656, 37174, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18537, 22984, 17553, 17572, 22285, 18780, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 0, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 127011, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2576384, 2215936, 2215936, 2215936, 2416640, 2424832, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2543616, 2215936, 2215936, 2215936, 2215936, 2215936, 2629632, 2215936, 2617344, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2691072, 2215936, 2707456, 2215936, 2715648, 2215936, 2723840, 2764800, 2215936, 2215936, 2797568, 2215936, 2822144, 2215936, 2215936, 2854912, 2215936, 2215936, 2215936, 2912256, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 180224, 0, 0, 2174976, 0, 0, 2170880, 2617344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2691072, 2170880, 2707456, 2170880, 2715648, 2170880, 2723840, 2764800, 2170880, 2170880, 2797568, 2170880, 2170880, 2797568, 2170880, 2822144, 2170880, 2170880, 2854912, 2170880, 2170880, 2170880, 2912256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2609152, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2654208, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 184599, 280, 0, 2174976, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 544, 0, 546, 0, 0, 2179072, 0, 0, 0, 552, 0, 0, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2158592, 2158592, 2232320, 2232320, 0, 2240512, 2240512, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 2768896, 2789376, 2813952, 2170880, 2170880, 2170880, 2875392, 2904064, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 167936, 0, 0, 0, 0, 2174976, 0, 0, 2215936, 2215936, 2514944, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2592768, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 32768, 0, 0, 0, 0, 0, 2174976, 32768, 0, 2633728, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2711552, 2215936, 2215936, 2215936, 2215936, 2215936, 2760704, 2768896, 2789376, 2813952, 2215936, 2215936, 2215936, 2875392, 2904064, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 65819, 2215936, 2215936, 3031040, 2215936, 3055616, 2215936, 2215936, 2215936, 2215936, 3092480, 2215936, 2215936, 3125248, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2170880, 2170880, 2494464, 2170880, 2170880, 0, 0, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 2699264, 2170880, 2727936, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3026944, 2170880, 2170880, 3063808, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 2379776, 2215936, 2523136, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2596864, 2215936, 2621440, 2215936, 2215936, 2641920, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 548, 0, 0, 0, 0, 287, 2170880, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2699264, 2215936, 2727936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2879488, 2215936, 2916352, 2215936, 2215936, 0, 0, 0, 0, 188416, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 0, 2171019, 2171019, 2171019, 2400395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3031179, 2171019, 3055755, 2171019, 2171019, 2215936, 3133440, 2215936, 2215936, 2215936, 3162112, 2215936, 2215936, 3182592, 3186688, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2523275, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2597003, 2171019, 2621579, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 4337664, 28, 2170880, 2170880, 2170880, 2629632, 2170880, 2170880, 2170880, 2170880, 2719744, 2744320, 2170880, 2170880, 2170880, 2834432, 2838528, 2170880, 2908160, 2170880, 2170880, 2936832, 2215936, 2215936, 2215936, 2215936, 2719744, 2744320, 2215936, 2215936, 2215936, 2834432, 2838528, 2215936, 2908160, 2215936, 2215936, 2936832, 2215936, 2215936, 2985984, 2215936, 2994176, 2215936, 2215936, 3014656, 2215936, 3059712, 3076096, 3088384, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2445312, 2215936, 2465792, 2473984, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2171019, 2494603, 2171019, 2171019, 2215936, 2215936, 2215936, 3215360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3016168, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 124, 124, 0, 128, 128, 2170880, 2170880, 2170880, 3215360, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2535424, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 0, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2170880, 2170880, 3170304, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 2215936, 2215936, 2215936, 2535424, 2539520, 2215936, 2215936, 2588672, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 136, 0, 2215936, 2215936, 2920448, 2215936, 2215936, 2215936, 2990080, 2215936, 2215936, 2215936, 2215936, 3051520, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3108864, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3026944, 2215936, 2215936, 3063808, 2215936, 2215936, 3112960, 2215936, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2537049, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 1508, 2170880, 2170880, 2170880, 1512, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2686976, 2748416, 2170880, 2170880, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3121152, 2170880, 2170880, 3145728, 3158016, 3166208, 2170880, 2420736, 2428928, 2170880, 2478080, 2170880, 2170880, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 0, 0, 3145728, 3158016, 3166208, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 0, 2170880, 2215936, 2215936, 2580480, 2215936, 2605056, 2637824, 2215936, 2215936, 2686976, 2748416, 2215936, 2215936, 2215936, 2924544, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 286, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 1625, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 647, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2686976, 0, 0, 2748416, 2170880, 2170880, 0, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 0, 0, 28, 28, 2170880, 3141632, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2170880, 2420736, 2428928, 2752512, 2756608, 0, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2170880, 3141632, 2170880, 2170880, 2490368, 2215936, 2490368, 2215936, 2215936, 2215936, 2547712, 2555904, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 245760, 0, 3129344, 2170880, 2170880, 2490368, 2170880, 2170880, 2170880, 0, 0, 2547712, 2555904, 2170880, 2170880, 2170880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 45056, 0, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 97, 97, 97, 97, 97, 97, 97, 1354, 97, 97, 97, 97, 97, 97, 97, 97, 1148, 97, 97, 97, 97, 97, 97, 97, 2584576, 2170880, 2170880, 1512, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2170880, 2850816, 2170880, 2170880, 2170880, 3022848, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 2215936, 3022848, 2170880, 2441216, 2170880, 2527232, 0, 0, 2170880, 2600960, 2170880, 0, 2850816, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2596864, 2170880, 2621440, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 3022848, 2170880, 2519040, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2514944, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2519040, 0, 2024, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 2024, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 2170880, 2215936, 2650112, 2965504, 2215936, 0, 0, 2170880, 2650112, 2965504, 2170880, 2551808, 2170880, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 141, 45, 45, 67, 67, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 0, 2551808, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2977792, 2977792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 29, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 49172, 0, 0, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 4256099, 4256099, 24, 24, 0, 28, 28, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 0, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 2170880, 2547712, 2555904, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2215936, 2215936, 543, 543, 545, 545, 0, 0, 2179072, 0, 550, 551, 551, 0, 287, 2171166, 2171166, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 645, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 149, 2584576, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2519040, 0, 0, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 0, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 53264, 18, 49172, 57366, 24, 155648, 28, 102432, 155648, 155687, 114730, 106539, 0, 0, 155648, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 0, 0, 2220032, 0, 94208, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 208896, 18, 278528, 24, 24, 0, 28, 28, 53264, 18, 159765, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 139394, 28, 28, 102432, 131, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 32768, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 546, 0, 0, 2183168, 0, 0, 552, 832, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2654208, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 937, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 644, 0, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 826, 0, 828, 0, 0, 2183168, 0, 0, 830, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2170880, 2170880, 2633728, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 53264, 18, 49172, 57366, 24, 8192, 28, 172066, 172032, 110630, 172066, 106539, 0, 0, 172032, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 102432, 0, 98304, 0, 0, 2220032, 110630, 0, 0, 0, 0, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 45056, 0, 0, 0, 53264, 18, 49172, 57366, 25, 8192, 30, 102432, 0, 110630, 114730, 106539, 0, 0, 176219, 53264, 18, 18, 49172, 0, 57366, 0, 124, 124, 124, 0, 128, 128, 128, 128, 102432, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 546, 0, 0, 2183168, 0, 65536, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 143, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1824, 67, 1826, 67, 67, 67, 67, 17, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 120, 121, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 2179072, 548, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2033, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 978, 0, 546, 70179, 0, 2183168, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1013, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 67, 67, 67, 483, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1359, 97, 97, 97, 67, 67, 1584, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 45, 45, 45, 45, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 774, 67, 67, 1713, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1723, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 45, 1559, 45, 45, 1561, 45, 45, 45, 45, 45, 45, 45, 687, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1771, 1772, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 1827, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 1614, 97, 97, 97, 97, 97, 603, 97, 97, 605, 97, 97, 608, 97, 97, 97, 97, 0, 1532, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 450, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 1839, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 1883, 97, 1885, 97, 0, 1888, 0, 97, 97, 0, 97, 97, 1848, 97, 97, 97, 97, 1852, 45, 45, 45, 45, 45, 45, 45, 384, 391, 45, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 45, 45, 45, 45, 1237, 45, 45, 45, 45, 45, 45, 67, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1951, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1963, 97, 2023, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 1994, 67, 1995, 67, 67, 67, 67, 67, 67, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 137, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2793472, 2805760, 2170880, 2830336, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 281, 549, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2031, 2032, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 0, 546, 70179, 549, 549, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1858, 45, 641, 0, 0, 0, 0, 41606, 926, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 456, 67, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1110, 97, 97, 97, 97, 67, 67, 67, 67, 1301, 1476, 0, 0, 0, 0, 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1486, 97, 1487, 97, 1313, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 97, 45, 1853, 45, 1855, 45, 45, 45, 45, 53264, 18, 49172, 57366, 26, 8192, 31, 102432, 0, 110630, 114730, 106539, 0, 0, 225368, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 18, 49172, 163840, 57366, 0, 24, 24, 229376, 0, 28, 28, 28, 229376, 102432, 0, 0, 0, 0, 2220167, 110630, 0, 0, 0, 114730, 106539, 0, 2171019, 2171019, 2171019, 2171019, 2592907, 2171019, 2171019, 2171019, 2171019, 2633867, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2654347, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3117195, 2171019, 2171019, 2171019, 2171019, 2240641, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 140, 2171019, 2171019, 2171019, 2416779, 2424971, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2617483, 2171019, 2171019, 2642059, 2171019, 2171019, 2171019, 2699403, 2171019, 2728075, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3215499, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2171019, 2822283, 2171019, 2171019, 2855051, 2171019, 2171019, 2171019, 2912395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3002507, 2171019, 2171019, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2171166, 2171166, 2416926, 2425118, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2576670, 2171166, 2617630, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2691358, 2171166, 2707742, 2171166, 2715934, 2171166, 2724126, 2765086, 2171166, 2171166, 2797854, 2171166, 2822430, 2171166, 2171166, 2855198, 2171166, 2171166, 2171166, 2912542, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2793758, 2806046, 2171166, 2830622, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3109150, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2543902, 2171166, 2171166, 2171166, 2171166, 2171166, 2629918, 2793611, 2805899, 2171019, 2830475, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2171166, 2171166, 2171166, 2400542, 2171166, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 0, 2171166, 2920734, 2171166, 2171166, 2171166, 2990366, 2171166, 2171166, 2171166, 2171166, 3117342, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 53264, 0, 18, 18, 4329472, 2232445, 0, 2240641, 4337664, 2711691, 2171019, 2171019, 2171019, 2171019, 2171019, 2760843, 2769035, 2789515, 2814091, 2171019, 2171019, 2171019, 2875531, 2904203, 2171019, 2171019, 3092619, 2171019, 2171019, 3125387, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3199115, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2793472, 2805760, 2215936, 2830336, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2494464, 2170880, 2170880, 2171166, 2171166, 2634014, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2711838, 2171166, 2171166, 2171166, 2171166, 2171166, 2760990, 2769182, 2789662, 2814238, 2171166, 2171166, 2171166, 2875678, 2904350, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3199262, 2171166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379915, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2445451, 2171019, 2465931, 2474123, 2171019, 2171019, 3113099, 2171019, 2171019, 3133579, 2171019, 2171019, 2171019, 3162251, 2171019, 2171019, 3182731, 3186827, 2171019, 2379776, 2879627, 2171019, 2916491, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3027083, 2171019, 2171019, 3063947, 2699550, 2171166, 2728222, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2879774, 2171166, 2916638, 2171166, 2171166, 2171166, 2171166, 2171166, 2609438, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2654494, 2171166, 2171166, 2171166, 2171166, 2171166, 2445598, 2171166, 2466078, 2474270, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2523422, 2171019, 2437259, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2543755, 2171019, 2171019, 2171019, 2584715, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2908299, 2171019, 2171019, 2936971, 2171019, 2171019, 2986123, 2171019, 2994315, 2171019, 2171019, 3014795, 2171019, 3059851, 3076235, 3088523, 2171166, 2171166, 2986270, 2171166, 2994462, 2171166, 2171166, 3014942, 2171166, 3059998, 3076382, 3088670, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3027230, 2171166, 2171166, 3064094, 2171166, 2171166, 3113246, 2171166, 2171166, 3133726, 2506891, 2171019, 2171019, 2171019, 2535563, 2539659, 2171019, 2171019, 2588811, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2691211, 2171019, 2707595, 2171019, 2715787, 2171019, 2723979, 2764939, 2171019, 2171019, 2797707, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2453790, 2457886, 2171166, 2171166, 2171166, 2486558, 2171166, 2171166, 2507038, 2171166, 2171166, 2171166, 2535710, 2539806, 2171166, 2171166, 2588958, 2171166, 2171166, 2171166, 2171166, 2515230, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2593054, 2171166, 2171166, 2171166, 2171166, 3051806, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3170590, 0, 2388107, 2392203, 2171019, 2171019, 2433163, 2171019, 2461835, 2171019, 2171019, 2171019, 2510987, 2171019, 2171019, 2171019, 2171019, 2580619, 2171019, 2605195, 2637963, 2171019, 2171019, 2171019, 2920587, 2171019, 2171019, 2171019, 2990219, 2171019, 2171019, 2171019, 2171019, 3051659, 2171019, 2171019, 2171019, 2453643, 2457739, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2515083, 2171019, 2171019, 2171019, 2171019, 2646155, 2670731, 2752651, 2756747, 2846859, 2961547, 2171019, 2998411, 2171019, 3010699, 2171019, 2171019, 2687115, 2748555, 2171019, 2171019, 2171019, 2924683, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3121291, 2171019, 2171019, 2171019, 3170443, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 3145867, 3158155, 3166347, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 553, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2388254, 2392350, 2171166, 2171166, 2433310, 2171166, 2461982, 2171166, 2171166, 2171166, 2511134, 2171166, 2171166, 0, 2171166, 2171166, 2580766, 2171166, 2605342, 2638110, 2171166, 2171166, 2171166, 2171166, 3031326, 2171166, 3055902, 2171166, 2171166, 2171166, 2171166, 3092766, 2171166, 2171166, 3125534, 2171166, 2171166, 2171166, 3162398, 2171166, 2171166, 3182878, 3186974, 2171166, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 3109003, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2171166, 2687262, 0, 0, 2748702, 2171166, 2171166, 0, 2171166, 2924830, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2597150, 2171166, 2621726, 2171166, 2171166, 2642206, 2171166, 2171166, 2171166, 2171166, 3121438, 2171166, 2171166, 3146014, 3158302, 3166494, 2171019, 2420875, 2429067, 2171019, 2478219, 2171019, 2171019, 2171019, 2171019, 2547851, 2556043, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3129483, 2215936, 2171019, 3141771, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2171166, 2421022, 2429214, 2171166, 2478366, 2171166, 2171166, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2646302, 2670878, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 0, 45, 45, 45, 45, 45, 1405, 1406, 45, 45, 45, 45, 1409, 45, 45, 45, 45, 45, 1415, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1238, 45, 45, 45, 45, 67, 2752798, 2756894, 0, 2847006, 2961694, 2171166, 2998558, 2171166, 3010846, 2171166, 2171166, 2171166, 3141918, 2171019, 2171019, 2490507, 3129344, 2171166, 2171166, 2490654, 2171166, 2171166, 2171166, 0, 0, 2547998, 2556190, 2171166, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 167, 45, 45, 45, 45, 185, 187, 45, 45, 198, 45, 45, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3129630, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2576523, 2171019, 2171019, 2171019, 2171019, 2171019, 2609291, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2171166, 2171166, 2494750, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 147, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 3002654, 2171166, 2171166, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2175257, 0, 0, 2584862, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2441355, 2171019, 2527371, 2171019, 2601099, 2171019, 2850955, 2171019, 2171019, 2171019, 3022987, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 69632, 287, 2170880, 2215936, 3022848, 2171166, 2441502, 2171166, 2527518, 0, 0, 2171166, 2601246, 2171166, 0, 2851102, 2171166, 2171166, 2171166, 2171166, 2720030, 2744606, 2171166, 2171166, 2171166, 2834718, 2838814, 2171166, 2908446, 2171166, 2171166, 2937118, 3023134, 2171019, 2519179, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 3215646, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2486411, 2171019, 2171019, 2171019, 2629771, 2171019, 2171019, 2171019, 2171019, 2719883, 2744459, 2171019, 2171019, 2171019, 2834571, 2838667, 2171019, 2519326, 0, 0, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 2396299, 2171019, 2171019, 2171019, 2171019, 3018891, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396446, 0, 0, 2171166, 2171166, 2171166, 2171166, 3019038, 2171019, 2650251, 2965643, 2171019, 2215936, 2650112, 2965504, 2215936, 0, 0, 2171166, 2650398, 2965790, 2171166, 2551947, 2171019, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 144, 45, 45, 67, 67, 67, 67, 67, 228, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1929, 97, 97, 97, 97, 0, 0, 0, 2552094, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2977931, 2977792, 2978078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1321, 97, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 140, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2584576, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 140, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3215360, 544, 0, 0, 0, 544, 0, 546, 0, 0, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 0, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 552, 0, 0, 0, 552, 0, 287, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 644, 0, 2215936, 2215936, 3170304, 544, 0, 546, 0, 552, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 140, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 249856, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 151640, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 253952, 110630, 114730, 106539, 0, 0, 32856, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 192512, 53264, 18, 18, 49172, 0, 57366, 0, 2232445, 184320, 2232445, 0, 2240641, 2240641, 184320, 2240641, 102432, 0, 0, 0, 221184, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3108864, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 0, 0, 0, 45056, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 127, 127, 53264, 18, 49172, 258071, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 204800, 53264, 18, 49172, 57366, 24, 27, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 33, 0, 33, 33, 33, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2170880, 2170880, 2170880, 2416640, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2030, 45, 45, 45, 45, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1699, 67, 67, 67, 67, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 1358, 97, 97, 97, 641, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 45, 45, 45, 0, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1680, 45, 45, 45, 641, 0, 924, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 45, 45, 45, 45, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 282, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 2028, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1767, 67, 67, 67, 0, 0, 0, 0, 0, 0, 1612, 97, 97, 97, 97, 97, 97, 0, 1785, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1790, 97, 0, 0, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 241664, 2387968, 2392064, 2170880, 2170880, 2433024, 53264, 19, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 274432, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 270336, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 1134711, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 1126440, 1126440, 1126440, 0, 0, 1126400, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 36, 110630, 114730, 106539, 0, 0, 217088, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 94, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 96, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 24666, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 126, 28, 28, 28, 28, 102432, 53264, 122, 123, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 2170880, 2170880, 4256099, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1109, 97, 97, 97, 97, 1113, 132, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 146, 150, 45, 45, 45, 45, 45, 175, 45, 180, 45, 186, 45, 189, 45, 45, 203, 67, 256, 67, 67, 270, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 293, 297, 97, 97, 97, 97, 97, 322, 97, 327, 97, 333, 97, 0, 0, 97, 2026, 0, 2027, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 336, 97, 97, 350, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 2424832, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2617344, 2170880, 45, 439, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 525, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 622, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 1527, 369, 648, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1239, 45, 45, 45, 67, 729, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 762, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 0, 0, 0, 1477, 0, 1086, 0, 0, 0, 1479, 0, 1090, 67, 67, 796, 67, 67, 799, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 67, 67, 811, 67, 67, 67, 67, 67, 816, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 833, 97, 97, 97, 97, 97, 97, 97, 97, 1380, 0, 0, 0, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 45, 45, 45, 45, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 97, 97, 97, 894, 97, 97, 897, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1382, 45, 45, 45, 97, 909, 97, 97, 97, 97, 97, 914, 97, 97, 97, 97, 97, 97, 97, 923, 67, 67, 1079, 67, 67, 67, 67, 67, 37689, 1085, 25403, 1089, 66365, 1093, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 148, 1114, 97, 97, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 97, 97, 606, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1173, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 145, 45, 45, 67, 67, 67, 67, 67, 1762, 67, 67, 67, 1766, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1934, 67, 67, 1255, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 67, 67, 67, 67, 1297, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 33344, 97, 97, 97, 1335, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1377, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 670, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 67, 67, 1438, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1322, 97, 97, 1491, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 1553, 45, 1504, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 97, 97, 0, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 1540, 45, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1700, 67, 67, 67, 97, 1648, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1541, 0, 97, 97, 97, 97, 0, 1940, 0, 97, 97, 97, 97, 97, 97, 45, 45, 2011, 45, 45, 45, 2015, 67, 67, 2017, 67, 67, 67, 2021, 97, 67, 67, 812, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 97, 97, 910, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 0, 0, 0, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 1188, 45, 45, 45, 45, 1414, 45, 45, 45, 1417, 45, 1419, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 453, 45, 45, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 1324, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 930, 45, 45, 45, 45, 97, 97, 97, 97, 1378, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 45, 67, 67, 1923, 67, 1925, 67, 67, 1927, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1985, 45, 45, 45, 45, 45, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 45, 946, 45, 45, 950, 45, 45, 45, 0, 97, 97, 97, 1939, 0, 0, 0, 97, 1943, 97, 97, 1945, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 990, 45, 45, 45, 67, 257, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 337, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, 2170880, 2170880, 2170880, 2416640, 401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 459, 461, 67, 67, 67, 67, 67, 67, 67, 67, 475, 67, 480, 67, 67, 67, 67, 67, 67, 1054, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 484, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 67, 67, 97, 556, 558, 97, 97, 97, 97, 97, 97, 97, 97, 572, 97, 577, 97, 97, 0, 0, 1896, 97, 97, 97, 97, 97, 97, 1903, 45, 45, 45, 45, 983, 45, 45, 45, 45, 988, 45, 45, 45, 45, 45, 45, 1195, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1549, 45, 45, 45, 45, 45, 581, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1004, 45, 45, 45, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 761, 67, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 1071, 67, 67, 67, 67, 1076, 794, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 544, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 859, 97, 0, 0, 2025, 97, 20480, 97, 97, 2029, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1775, 67, 67, 67, 97, 97, 97, 97, 892, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1515, 97, 993, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 992, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1607, 67, 67, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 97, 45, 1556, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 696, 45, 1596, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 67, 97, 97, 97, 1621, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1346, 97, 97, 97, 97, 1740, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 45, 45, 67, 97, 97, 97, 97, 97, 97, 1836, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1984, 97, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 45, 45, 45, 45, 67, 739, 67, 67, 67, 67, 67, 744, 45, 45, 1909, 45, 45, 45, 45, 45, 45, 45, 67, 1917, 67, 1918, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 67, 67, 67, 67, 67, 97, 1930, 97, 1931, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 1580, 67, 67, 0, 97, 97, 1938, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 699, 45, 45, 45, 704, 45, 45, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 2006, 97, 97, 97, 97, 0, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 722, 723, 45, 45, 45, 45, 45, 45, 2045, 67, 67, 67, 2047, 0, 0, 97, 97, 97, 2051, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1957, 45, 67, 67, 67, 67, 67, 1836, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 67, 67, 1761, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 45, 45, 420, 45, 45, 422, 45, 45, 425, 45, 45, 45, 45, 45, 45, 45, 387, 45, 45, 45, 45, 397, 45, 45, 45, 67, 460, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 515, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 97, 0, 2039, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1426, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1689, 67, 67, 67, 97, 557, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 612, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 896, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 97, 45, 939, 45, 45, 45, 45, 943, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1916, 67, 67, 67, 67, 67, 45, 67, 67, 67, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 1019, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 804, 67, 67, 67, 67, 67, 1077, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2543616, 2170880, 2170880, 2170880, 2170880, 2170880, 2629632, 1169, 97, 1171, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 936, 45, 45, 67, 67, 214, 67, 220, 67, 67, 233, 67, 243, 67, 248, 67, 67, 67, 67, 67, 67, 1298, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1617, 97, 0, 0, 0, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 45, 45, 45, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 1281, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 776, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 907, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 690, 45, 45, 695, 45, 45, 67, 67, 67, 67, 67, 1465, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1712, 97, 97, 97, 97, 1741, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1924, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1983, 97, 97, 45, 45, 1987, 45, 1988, 45, 0, 97, 97, 97, 97, 0, 0, 0, 1942, 97, 97, 97, 97, 97, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 711, 45, 45, 153, 45, 45, 166, 45, 176, 45, 181, 45, 45, 188, 191, 196, 45, 204, 255, 258, 263, 67, 271, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 97, 97, 294, 97, 300, 97, 97, 313, 97, 323, 97, 328, 97, 97, 335, 338, 343, 97, 351, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1411, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 67, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1263, 67, 67, 67, 67, 67, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1526, 97, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 0, 97, 97, 1796, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1744, 45, 45, 45, 369, 0, 651, 45, 653, 45, 654, 45, 656, 45, 45, 45, 660, 45, 45, 45, 45, 1558, 45, 45, 45, 45, 45, 45, 45, 45, 1566, 45, 45, 681, 45, 683, 45, 45, 45, 45, 45, 45, 45, 45, 691, 692, 694, 45, 45, 45, 716, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 709, 45, 45, 712, 45, 714, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 726, 45, 45, 45, 733, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 747, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 1613, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 67, 764, 67, 67, 67, 67, 768, 67, 770, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1977, 67, 778, 779, 781, 67, 67, 67, 67, 67, 67, 788, 789, 67, 67, 792, 793, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 67, 67, 824, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 836, 97, 838, 97, 839, 97, 841, 97, 97, 97, 845, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 97, 97, 0, 1728, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1802, 45, 97, 97, 862, 97, 97, 97, 97, 866, 97, 868, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1788, 97, 97, 97, 0, 0, 97, 97, 876, 877, 879, 97, 97, 97, 97, 97, 97, 886, 887, 97, 97, 890, 891, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1646, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 97, 97, 922, 923, 45, 955, 45, 957, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 195, 45, 45, 45, 45, 45, 981, 982, 45, 45, 45, 45, 45, 45, 989, 45, 45, 45, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 67, 67, 1031, 67, 1033, 67, 67, 67, 67, 67, 67, 67, 817, 819, 67, 67, 67, 67, 67, 37689, 544, 67, 1065, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 1078, 67, 67, 1081, 1082, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2437406, 2171166, 2171166, 97, 1115, 97, 1117, 97, 97, 97, 97, 97, 97, 1125, 97, 1127, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 1644, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 1642, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1159, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1502, 97, 97, 97, 97, 97, 1172, 97, 97, 1175, 1176, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 935, 45, 45, 45, 1233, 45, 45, 45, 1236, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1873, 67, 67, 45, 45, 1218, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 1230, 45, 45, 67, 67, 215, 219, 222, 67, 230, 67, 67, 244, 246, 249, 67, 67, 67, 67, 67, 67, 1882, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1904, 45, 1905, 45, 67, 67, 67, 67, 67, 1258, 67, 1260, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 67, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 67, 818, 67, 67, 67, 67, 67, 67, 37689, 544, 67, 67, 1295, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 97, 97, 97, 1326, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 97, 97, 97, 97, 97, 1338, 97, 1340, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 1503, 97, 1363, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 578, 97, 1375, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 45, 45, 45, 45, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1778, 97, 97, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 97, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 1554, 45, 1570, 1571, 45, 67, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 67, 1061, 67, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 1594, 67, 67, 67, 67, 67, 97, 2038, 0, 97, 97, 97, 97, 97, 2044, 45, 45, 45, 995, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 45, 45, 45, 1809, 45, 1811, 45, 45, 45, 45, 45, 67, 1610, 1611, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 1618, 1647, 1649, 97, 97, 97, 1652, 97, 1654, 1655, 97, 0, 45, 45, 45, 1658, 45, 45, 67, 67, 216, 67, 67, 67, 67, 234, 67, 67, 67, 67, 252, 254, 1845, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 947, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1881, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1902, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1921, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 0, 97, 1937, 97, 97, 1940, 0, 0, 97, 97, 97, 97, 97, 97, 1947, 1948, 1949, 45, 45, 45, 1952, 45, 1954, 45, 45, 45, 45, 1959, 1960, 1961, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 67, 67, 1964, 67, 1966, 67, 67, 67, 67, 1971, 1972, 1973, 97, 0, 0, 0, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 884, 97, 97, 97, 889, 97, 97, 1978, 97, 0, 0, 1981, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 736, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 45, 67, 67, 67, 67, 0, 2049, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 933, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 97, 97, 288, 97, 97, 97, 97, 97, 97, 317, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1787, 97, 97, 97, 97, 0, 0, 45, 45, 378, 45, 45, 45, 45, 45, 390, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 431, 433, 45, 45, 45, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 67, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 632, 97, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 67, 97, 97, 97, 97, 97, 97, 1837, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1897, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 97, 2010, 45, 45, 45, 45, 45, 45, 2016, 67, 67, 67, 67, 67, 67, 2022, 45, 2046, 67, 67, 67, 0, 0, 2050, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 932, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 45, 45, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 701, 702, 45, 45, 705, 706, 45, 45, 45, 45, 45, 45, 703, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 45, 45, 45, 45, 45, 725, 45, 45, 45, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 834, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1799, 97, 97, 45, 45, 45, 1569, 45, 45, 45, 1572, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1306, 0, 67, 67, 67, 1598, 67, 67, 67, 67, 67, 67, 67, 67, 1606, 67, 67, 1609, 97, 97, 97, 1650, 97, 97, 1653, 97, 97, 97, 0, 45, 45, 1657, 45, 45, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1421, 45, 45, 45, 1703, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1711, 97, 97, 0, 1895, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 958, 45, 960, 45, 45, 45, 45, 45, 45, 45, 45, 1913, 45, 45, 1915, 67, 67, 67, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 481, 67, 45, 1749, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 45, 45, 45, 45, 173, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1773, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1886, 0, 0, 0, 97, 97, 67, 2035, 2036, 67, 67, 97, 0, 0, 97, 2041, 2042, 97, 97, 45, 45, 45, 45, 1662, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1397, 45, 45, 45, 45, 151, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 437, 205, 45, 67, 67, 67, 218, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 67, 97, 97, 97, 97, 298, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 97, 97, 97, 97, 97, 97, 352, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 365, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1427, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1435, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1037, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1919, 67, 1759, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 45, 154, 45, 162, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 964, 45, 45, 45, 206, 45, 67, 67, 67, 67, 221, 67, 229, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 67, 785, 67, 67, 67, 67, 67, 67, 67, 67, 802, 67, 67, 67, 807, 67, 67, 67, 97, 97, 97, 97, 353, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 402, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 45, 45, 674, 45, 45, 45, 45, 45, 45, 45, 45, 389, 45, 394, 45, 45, 398, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 447, 45, 45, 45, 454, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 488, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 67, 67, 67, 67, 67, 1774, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 67, 67, 523, 67, 67, 527, 67, 67, 67, 67, 67, 533, 67, 67, 67, 540, 97, 97, 97, 585, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 97, 97, 97, 97, 1784, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 620, 97, 97, 624, 97, 97, 97, 97, 97, 630, 97, 97, 97, 637, 713, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 45, 45, 45, 1197, 45, 45, 45, 45, 45, 45, 45, 45, 730, 732, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1581, 67, 45, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 775, 67, 67, 67, 67, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 67, 67, 67, 1080, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 287, 0, 2379776, 2170880, 2170880, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 920, 97, 97, 0, 0, 0, 0, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 45, 959, 45, 45, 45, 45, 45, 45, 45, 45, 45, 184, 45, 45, 45, 45, 202, 45, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1266, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1279, 67, 67, 67, 67, 67, 272, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1293, 67, 67, 67, 1296, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 281, 94, 0, 0, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 0, 97, 1376, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1384, 45, 45, 67, 208, 67, 67, 67, 67, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1069, 1070, 67, 67, 67, 67, 67, 67, 67, 0, 37140, 24854, 0, 0, 0, 0, 41098, 65821, 45, 1423, 45, 45, 45, 45, 45, 45, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1083, 37689, 0, 25403, 0, 66365, 0, 0, 0, 1436, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1830, 67, 1452, 1453, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 67, 67, 1461, 67, 67, 67, 1464, 67, 1466, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 1587, 67, 67, 67, 67, 67, 67, 67, 67, 1595, 1489, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 1505, 1506, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 1164, 97, 97, 97, 97, 97, 1516, 97, 97, 97, 1519, 97, 1521, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1301, 0, 0, 0, 1307, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 919, 97, 97, 97, 0, 97, 97, 97, 1781, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1792, 1860, 45, 1862, 1863, 45, 1865, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1875, 67, 1877, 1878, 67, 1880, 67, 97, 97, 97, 97, 97, 1887, 0, 1889, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 237568, 0, 367, 0, 97, 1893, 0, 0, 0, 97, 1898, 1899, 97, 1901, 97, 45, 45, 45, 45, 45, 2014, 45, 67, 67, 67, 67, 67, 2020, 67, 97, 1989, 45, 1990, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1996, 67, 1997, 67, 67, 67, 67, 67, 273, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 2005, 0, 97, 2007, 97, 97, 18, 0, 139621, 0, 0, 0, 642, 0, 133, 364, 0, 0, 367, 41606, 0, 97, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 209, 67, 67, 67, 223, 67, 67, 67, 67, 67, 67, 67, 67, 67, 786, 67, 67, 67, 791, 67, 67, 45, 45, 940, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1016, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 142, 45, 45, 67, 210, 67, 67, 67, 225, 67, 67, 239, 67, 67, 67, 250, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 476, 67, 67, 67, 67, 67, 67, 67, 1709, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1843, 0, 67, 259, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 289, 97, 97, 97, 303, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 97, 339, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 358, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1953, 45, 1955, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1687, 1688, 67, 67, 67, 67, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1203, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 477, 67, 67, 67, 67, 67, 67, 67, 1970, 97, 97, 97, 1974, 0, 0, 0, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1372, 97, 97, 97, 97, 67, 522, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 536, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 574, 97, 97, 97, 97, 97, 301, 97, 309, 97, 97, 97, 97, 97, 97, 97, 97, 97, 900, 97, 97, 97, 905, 97, 97, 97, 619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 633, 97, 97, 18, 0, 139621, 0, 0, 362, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 664, 67, 67, 67, 67, 750, 751, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1057, 1058, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 67, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 902, 97, 97, 97, 97, 67, 67, 1051, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1302, 0, 0, 0, 1308, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1139, 97, 97, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 1161, 97, 97, 97, 97, 97, 1166, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 1257, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 97, 97, 1337, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1630, 97, 67, 1474, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2380062, 2171166, 2171166, 97, 1529, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 45, 45, 67, 67, 67, 67, 1707, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1891, 1739, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 1200, 45, 45, 45, 45, 97, 97, 1894, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 45, 45, 45, 67, 67, 1965, 67, 1967, 67, 67, 67, 97, 97, 97, 97, 0, 1976, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 97, 97, 1979, 0, 0, 97, 1982, 97, 97, 97, 1986, 45, 45, 45, 45, 45, 735, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 2000, 97, 97, 97, 2002, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1798, 97, 97, 97, 45, 45, 45, 2034, 67, 67, 67, 67, 97, 0, 0, 2040, 97, 97, 97, 97, 45, 45, 45, 45, 1752, 45, 45, 45, 1753, 1754, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 45, 45, 438, 45, 45, 45, 45, 45, 445, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1430, 67, 67, 67, 67, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 531, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1096, 97, 97, 97, 621, 97, 97, 97, 97, 97, 628, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 45, 942, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 708, 45, 45, 45, 45, 763, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 809, 810, 67, 67, 67, 67, 783, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1303, 0, 0, 0, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 45, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 67, 67, 67, 67, 1027, 67, 67, 67, 67, 1032, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1097, 1064, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 67, 1098, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 331, 97, 97, 97, 97, 1158, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1374, 97, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1240, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1252, 67, 97, 97, 97, 1635, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1800, 97, 45, 45, 45, 97, 97, 1793, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1743, 45, 45, 45, 1746, 45, 0, 97, 97, 97, 97, 97, 1851, 97, 45, 45, 45, 45, 1856, 45, 45, 45, 45, 1864, 45, 45, 67, 67, 1869, 67, 67, 67, 67, 1874, 67, 0, 97, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 211, 67, 67, 67, 67, 67, 67, 240, 67, 67, 67, 67, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 67, 67, 268, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 290, 97, 97, 97, 305, 97, 97, 319, 97, 97, 97, 330, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 643, 367, 41606, 97, 97, 348, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 395, 45, 45, 45, 400, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 45, 972, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1086, 25403, 1090, 66365, 1094, 0, 0, 97, 843, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 1121, 97, 97, 97, 97, 1126, 97, 97, 97, 97, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1400, 45, 67, 67, 67, 1011, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1304, 0, 0, 0, 1190, 45, 45, 1193, 1194, 45, 45, 45, 45, 45, 1199, 45, 1201, 45, 45, 45, 45, 1911, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 67, 67, 45, 1205, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1217, 45, 45, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 1229, 45, 45, 45, 1388, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1574, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 1254, 67, 67, 67, 67, 67, 1259, 67, 1261, 67, 67, 67, 67, 1265, 67, 67, 67, 67, 67, 67, 1708, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 1289, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1087, 25403, 1091, 66365, 1095, 0, 0, 97, 97, 97, 97, 1339, 97, 1341, 97, 97, 97, 97, 1345, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 573, 97, 97, 97, 97, 97, 97, 1717, 97, 0, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1329, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 97, 97, 97, 1365, 97, 97, 97, 97, 1369, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1399, 45, 45, 45, 1413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1669, 45, 1422, 45, 45, 1425, 45, 45, 1428, 45, 1429, 67, 67, 67, 67, 67, 67, 67, 67, 1468, 67, 67, 67, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 539, 67, 67, 1475, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 97, 97, 1530, 97, 0, 45, 45, 1534, 45, 45, 45, 45, 45, 45, 45, 45, 1956, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 67, 67, 1601, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 67, 1632, 97, 1634, 0, 97, 97, 97, 1640, 97, 97, 97, 1643, 97, 97, 1645, 97, 97, 97, 97, 97, 912, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1660, 1661, 45, 45, 45, 45, 1665, 1666, 45, 45, 45, 45, 45, 1670, 1692, 1693, 67, 67, 67, 67, 67, 1697, 67, 67, 67, 67, 67, 67, 67, 1702, 97, 97, 1714, 1715, 97, 97, 97, 97, 0, 1721, 1722, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 97, 97, 1362, 1726, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 1734, 97, 97, 97, 97, 97, 848, 849, 97, 97, 97, 97, 856, 97, 97, 97, 97, 97, 354, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 45, 45, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1681, 45, 0, 1846, 97, 97, 97, 97, 97, 97, 45, 45, 1854, 45, 45, 45, 45, 1859, 67, 67, 67, 1879, 67, 67, 97, 97, 1884, 97, 97, 0, 0, 0, 97, 97, 97, 1105, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 1347, 97, 1892, 97, 0, 0, 0, 97, 97, 97, 1900, 97, 97, 45, 45, 45, 45, 45, 997, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1002, 45, 45, 1005, 1006, 45, 67, 67, 67, 67, 67, 1926, 67, 67, 1928, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1737, 97, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1944, 97, 97, 1946, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 190, 45, 45, 45, 152, 155, 45, 163, 45, 45, 177, 179, 182, 45, 45, 45, 193, 197, 45, 45, 45, 1672, 45, 45, 45, 45, 45, 1677, 45, 1679, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 67, 260, 264, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 295, 299, 302, 97, 310, 97, 97, 324, 326, 329, 97, 97, 97, 0, 97, 97, 1639, 0, 1641, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 97, 1523, 97, 97, 97, 97, 97, 97, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 97, 97, 312, 97, 97, 97, 97, 97, 97, 97, 97, 1123, 97, 97, 97, 97, 97, 97, 97, 340, 344, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 373, 375, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 435, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1410, 45, 45, 45, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 67, 67, 67, 67, 1969, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 2064, 2065, 0, 2066, 45, 521, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 465, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1933, 0, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 18, 640, 139621, 358, 641, 0, 0, 0, 0, 364, 0, 0, 367, 0, 618, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 97, 97, 881, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 569, 97, 97, 97, 97, 97, 369, 0, 45, 652, 45, 45, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1432, 67, 67, 67, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 67, 0, 1305, 0, 1311, 0, 1317, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 1724, 97, 97, 97, 777, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 535, 67, 67, 67, 67, 67, 67, 67, 814, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 837, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 97, 97, 97, 0, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1168, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 97, 97, 0, 1637, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1801, 45, 45, 97, 875, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1151, 1152, 97, 97, 97, 67, 67, 67, 1040, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 790, 67, 67, 67, 1180, 0, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 200, 45, 45, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 67, 67, 67, 0, 0, 0, 1481, 0, 1094, 0, 0, 97, 1483, 97, 97, 97, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 1633, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1381, 0, 0, 45, 45, 45, 45, 97, 97, 1727, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 636, 45, 45, 1760, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 67, 67, 1299, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1616, 97, 97, 1803, 45, 45, 45, 45, 1807, 45, 45, 45, 45, 45, 1813, 45, 45, 45, 67, 67, 1684, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 822, 67, 67, 37689, 544, 67, 67, 1818, 67, 67, 67, 67, 1822, 67, 67, 67, 67, 67, 1828, 67, 67, 67, 67, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2012, 2013, 45, 45, 67, 67, 67, 2018, 2019, 67, 67, 97, 67, 97, 97, 97, 1833, 97, 97, 0, 0, 97, 97, 1840, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 1733, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 1849, 97, 97, 97, 45, 45, 45, 45, 45, 1857, 45, 45, 45, 1910, 45, 1912, 45, 45, 1914, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 67, 1020, 67, 45, 1861, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1446, 67, 67, 67, 67, 67, 1876, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1890, 97, 97, 97, 97, 97, 1134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 97, 97, 97, 580, 1935, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1906, 45, 67, 67, 67, 67, 2048, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 931, 45, 45, 45, 45, 45, 45, 1674, 45, 1676, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1871, 67, 67, 67, 67, 0, 97, 97, 45, 67, 0, 97, 2060, 2061, 0, 2063, 45, 67, 0, 97, 45, 45, 156, 45, 45, 45, 45, 45, 45, 45, 45, 45, 192, 45, 45, 45, 45, 1673, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 429, 45, 45, 45, 45, 67, 67, 67, 269, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 349, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 374, 45, 45, 67, 67, 213, 217, 67, 67, 67, 67, 67, 242, 67, 247, 67, 253, 45, 45, 698, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 399, 45, 45, 0, 0, 0, 0, 925, 41606, 0, 929, 0, 0, 45, 45, 45, 45, 45, 45, 1391, 45, 45, 1395, 45, 45, 45, 45, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 436, 45, 67, 67, 67, 67, 1041, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1776, 67, 67, 97, 97, 97, 1099, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 888, 97, 97, 97, 1131, 97, 97, 97, 97, 1135, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 97, 97, 883, 97, 97, 97, 97, 97, 97, 1310, 0, 0, 0, 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 97, 97, 97, 97, 97, 1107, 97, 97, 97, 97, 97, 97, 97, 97, 1343, 97, 97, 97, 97, 97, 97, 1348, 0, 0, 1317, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1868, 67, 1870, 67, 67, 67, 67, 67, 1817, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 823, 67, 37689, 544, 67, 97, 1832, 97, 97, 1834, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 1732, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1177, 0, 0, 925, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 1941, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1991, 1992, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1998, 134, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 941, 45, 45, 944, 45, 45, 45, 45, 45, 45, 952, 45, 45, 207, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 67, 67, 67, 37689, 544, 369, 650, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1682, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 835, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1725, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 1036, 67, 67, 67, 265, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 296, 97, 97, 97, 97, 314, 97, 97, 97, 97, 332, 334, 97, 97, 97, 97, 97, 1146, 1147, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 97, 97, 345, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 372, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 45, 45, 404, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 451, 452, 45, 45, 45, 67, 1683, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 490, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 1450, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 537, 538, 67, 67, 67, 67, 67, 506, 67, 67, 508, 67, 67, 511, 67, 67, 67, 67, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1484, 97, 97, 97, 97, 97, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1499, 97, 97, 97, 97, 97, 97, 97, 97, 97, 587, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 634, 635, 97, 97, 97, 97, 97, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 97, 97, 97, 369, 0, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 1001, 45, 45, 45, 45, 45, 45, 45, 45, 715, 45, 45, 45, 720, 45, 45, 45, 45, 45, 45, 45, 45, 728, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 840, 97, 97, 97, 97, 97, 1174, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 97, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 680, 45, 968, 45, 970, 45, 973, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 962, 45, 45, 45, 45, 45, 979, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 688, 45, 45, 45, 45, 45, 45, 45, 1007, 1008, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 1044, 67, 1046, 67, 1049, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 808, 67, 67, 0, 0, 0, 1102, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 97, 97, 97, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 1138, 97, 1140, 97, 1143, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 45, 1191, 45, 45, 45, 45, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 991, 45, 67, 67, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1048, 67, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 97, 1386, 45, 1387, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 455, 45, 457, 45, 45, 1424, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1433, 67, 1434, 67, 67, 67, 67, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 1593, 67, 67, 45, 45, 1805, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1814, 45, 45, 1816, 67, 67, 67, 67, 1820, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1829, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 821, 67, 67, 67, 37689, 544, 67, 1831, 97, 97, 97, 97, 1835, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1850, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 961, 45, 45, 45, 45, 965, 45, 967, 1907, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1920, 0, 1936, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 28672, 97, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2054, 97, 97, 291, 97, 97, 97, 97, 97, 97, 320, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 926, 1179, 0, 45, 377, 45, 45, 45, 381, 45, 45, 392, 45, 45, 396, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 45, 45, 45, 67, 67, 67, 67, 463, 67, 67, 67, 467, 67, 67, 478, 67, 67, 482, 67, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 1472, 67, 502, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1460, 67, 97, 97, 97, 97, 560, 97, 97, 97, 564, 97, 97, 575, 97, 97, 579, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 930, 97, 599, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 872, 97, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1758, 0, 362, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 934, 45, 45, 45, 164, 168, 174, 178, 45, 45, 45, 45, 45, 194, 45, 45, 45, 165, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 45, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1060, 67, 67, 67, 67, 67, 67, 1052, 1053, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1063, 97, 1157, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1167, 97, 97, 97, 97, 97, 1379, 97, 97, 97, 0, 0, 0, 45, 1383, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 1812, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1471, 67, 45, 1402, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 67, 1462, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 1517, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 1636, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1705, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1842, 0, 0, 1779, 97, 97, 97, 1782, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1789, 97, 97, 0, 0, 0, 97, 1847, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 45, 737, 738, 67, 740, 67, 741, 67, 743, 67, 67, 67, 67, 67, 67, 1968, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 2062, 97, 45, 67, 0, 97, 45, 67, 67, 97, 97, 2001, 97, 0, 0, 2004, 97, 97, 0, 97, 97, 97, 97, 1797, 97, 97, 97, 97, 97, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 292, 97, 97, 97, 97, 311, 315, 321, 325, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1330, 97, 97, 1333, 1334, 97, 341, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 363, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 416, 45, 376, 45, 45, 45, 45, 382, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 45, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 414, 45, 45, 45, 418, 67, 67, 67, 462, 67, 67, 67, 67, 468, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 1604, 67, 67, 67, 67, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 1067, 67, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 274, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 504, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 517, 519, 541, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 554, 97, 97, 97, 559, 97, 97, 97, 97, 565, 97, 97, 97, 97, 97, 97, 97, 1718, 0, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 906, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 597, 97, 97, 97, 97, 97, 1520, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 1656, 45, 45, 45, 97, 97, 601, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 614, 616, 638, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 661, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1815, 45, 67, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 678, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 977, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 697, 67, 67, 748, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1274, 67, 67, 67, 67, 67, 67, 67, 67, 765, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 780, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1777, 67, 97, 97, 97, 97, 97, 97, 846, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 97, 1742, 45, 45, 45, 45, 45, 45, 45, 1747, 97, 97, 97, 863, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 1178, 925, 0, 1179, 0, 97, 97, 97, 878, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 954, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 963, 45, 45, 966, 45, 45, 157, 45, 45, 171, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 1022, 67, 67, 1026, 67, 67, 67, 1030, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 1605, 67, 67, 67, 1608, 67, 67, 67, 1039, 67, 67, 1042, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 67, 0, 1100, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 97, 97, 97, 97, 1116, 97, 97, 1120, 97, 97, 97, 1124, 97, 97, 97, 97, 97, 97, 562, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1133, 97, 97, 1136, 97, 97, 97, 97, 97, 97, 97, 97, 915, 917, 97, 97, 97, 97, 97, 0, 97, 1170, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1993, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 1278, 67, 0, 0, 0, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1189, 1204, 45, 45, 45, 1207, 45, 45, 1209, 45, 1210, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 45, 689, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 805, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1249, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1300, 0, 0, 0, 0, 0, 1267, 67, 67, 1269, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 97, 1349, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 97, 0, 1980, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 677, 45, 45, 45, 45, 1401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 953, 67, 1437, 67, 1440, 67, 67, 67, 67, 1445, 67, 67, 67, 1448, 67, 67, 67, 67, 67, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 67, 67, 67, 1473, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 834, 97, 97, 97, 97, 1490, 97, 1493, 97, 97, 97, 97, 1498, 97, 97, 97, 1501, 97, 97, 97, 0, 97, 1638, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 916, 97, 97, 97, 97, 97, 97, 0, 1528, 97, 97, 97, 0, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1932, 0, 0, 1555, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1567, 45, 45, 158, 45, 45, 172, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 67, 212, 67, 67, 67, 67, 231, 235, 241, 245, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 472, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1651, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 45, 67, 1704, 67, 1706, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1841, 97, 0, 1844, 97, 97, 97, 97, 1716, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1385, 1748, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1757, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 97, 97, 1780, 97, 97, 97, 0, 0, 1786, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1730, 0, 97, 97, 97, 97, 97, 1736, 97, 1738, 67, 97, 97, 97, 97, 97, 97, 0, 1838, 97, 97, 97, 97, 97, 0, 0, 97, 1729, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 1165, 97, 97, 97, 45, 1950, 45, 45, 45, 45, 45, 45, 45, 45, 1958, 67, 67, 67, 1962, 67, 67, 67, 67, 67, 1246, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1710, 97, 97, 97, 1999, 67, 97, 97, 97, 97, 0, 2003, 97, 97, 97, 0, 97, 97, 2008, 2009, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 2052, 67, 2053, 0, 0, 0, 0, 925, 41606, 0, 0, 930, 0, 45, 45, 45, 45, 45, 45, 1392, 45, 1394, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 1565, 45, 45, 45, 1568, 0, 97, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 28672, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 679, 45, 45, 67, 67, 266, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 346, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 362, 0, 364, 0, 367, 41098, 369, 140, 371, 45, 45, 45, 379, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 449, 45, 45, 45, 45, 45, 67, 67, 542, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 97, 0, 1794, 1795, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 97, 639, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 45, 731, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 251, 67, 67, 67, 67, 67, 798, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1073, 67, 67, 67, 860, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 873, 0, 0, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 921, 97, 0, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1250, 67, 67, 1253, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 97, 1155, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1141, 97, 97, 67, 67, 1439, 67, 1441, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 97, 97, 1492, 97, 1494, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 97, 67, 67, 67, 2037, 67, 97, 0, 0, 97, 97, 97, 2043, 97, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 232, 67, 67, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1975, 0, 0, 97, 874, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1142, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 65, 86, 117, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 63, 84, 115, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 61, 82, 113, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 59, 80, 111, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 57, 78, 109, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 55, 76, 107, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 53, 74, 105, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 51, 72, 103, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 49, 70, 101, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 47, 68, 99, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 45, 67, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 213085, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 0, 0, 44, 0, 0, 32863, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 41, 41, 41, 0, 0, 1138688, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 89, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 127, 127, 127, 127, 102432, 67, 262, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 342, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 360, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 45, 45, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1292, 67, 67, 1294, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1615, 97, 97, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 66, 87, 118, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 64, 85, 116, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 62, 83, 114, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 60, 81, 112, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 58, 79, 110, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 56, 77, 108, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 54, 75, 106, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 52, 73, 104, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 50, 71, 102, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 48, 69, 100, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 46, 67, 98, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 233472, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 69724, 53264, 18, 18, 49172, 0, 57366, 262144, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 45, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 28, 139621, 359, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1389, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 45, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1449, 67, 67, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1154, 97, 0, 0, 0, 0, 925, 41606, 927, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 67, 67, 45, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 951, 45, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 45, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1488, 67, 67, 267, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 347, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 361, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 734, 45, 45, 45, 67, 67, 67, 67, 67, 742, 67, 67, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1214, 45, 45, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1361, 97, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 45, 45, 0, 0, 0, 0, 2220032, 0, 0, 1130496, 0, 0, 0, 0, 2170880, 2171020, 2170880, 2170880, 18, 0, 0, 131072, 0, 0, 0, 90112, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1485, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1390, 45, 1393, 45, 45, 45, 45, 1398, 45, 45, 45, 2170880, 2171167, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 0, 0, 0, 0, 2183168, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2721252, 2744320, 2170880, 2170880, 2170880, 2834432, 2840040, 2170880, 2908160, 2170880, 2170880, 2936832, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3014656, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 0, 2220032, 0, 0, 0, 1142784, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3215360, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 543, 0, 545, 0, 0, 2183168, 0, 0, 831, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 2170880, 2170880, 3092480, 2170880, 2170880, 3125248, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 0, 0, 0, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 0, 0, 0, 65820, 65820, 0, 287, 97, 97, 97, 97, 97, 1783, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1791, 0, 0, 546, 70179, 0, 0, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 97, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 0, 0, 147456, 0, 0, 0, 0, 925, 41606, 0, 928, 0, 0, 45, 45, 45, 45, 45, 45, 998, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 1564, 45, 45, 45, 45, 0, 2158592, 2158592, 0, 0, 0, 0, 2232320, 2232320, 2232320, 0, 2240512, 2240512, 2240512, 2240512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640 -]; - -JSONiqTokenizer.EXPECTED = -[ 291, 300, 304, 341, 315, 309, 305, 295, 319, 323, 327, 329, 296, 333, 337, 339, 342, 346, 350, 294, 356, 360, 312, 367, 352, 371, 363, 375, 379, 383, 387, 391, 395, 726, 399, 405, 518, 684, 405, 405, 405, 405, 808, 405, 405, 405, 512, 405, 405, 405, 431, 405, 405, 406, 405, 405, 404, 405, 405, 405, 405, 405, 405, 405, 908, 631, 410, 415, 405, 414, 419, 608, 405, 429, 602, 405, 435, 443, 405, 441, 641, 478, 405, 447, 451, 450, 456, 643, 461, 460, 762, 679, 465, 469, 741, 473, 477, 482, 486, 492, 932, 931, 523, 498, 504, 720, 405, 510, 596, 405, 516, 941, 580, 522, 929, 527, 590, 589, 897, 939, 534, 538, 547, 551, 555, 559, 563, 567, 571, 969, 575, 708, 690, 689, 579, 584, 634, 405, 594, 731, 405, 600, 882, 405, 606, 895, 786, 452, 612, 405, 615, 620, 876, 624, 628, 638, 647, 651, 655, 659, 663, 667, 676, 683, 688, 695, 694, 791, 405, 699, 437, 405, 706, 714, 405, 712, 825, 870, 405, 718, 724, 769, 768, 823, 730, 735, 745, 751, 422, 755, 759, 425, 766, 902, 810, 587, 775, 888, 887, 405, 773, 992, 405, 779, 962, 405, 785, 781, 986, 790, 795, 797, 506, 500, 499, 801, 805, 814, 820, 829, 833, 837, 841, 845, 849, 853, 857, 861, 616, 865, 869, 868, 488, 405, 874, 816, 405, 880, 738, 405, 886, 892, 543, 405, 901, 906, 913, 912, 918, 494, 541, 922, 926, 936, 945, 949, 953, 957, 530, 966, 973, 960, 702, 701, 405, 979, 981, 405, 985, 747, 405, 990, 998, 914, 405, 996, 1004, 672, 975, 974, 1014, 1002, 1008, 670, 1012, 405, 405, 405, 405, 405, 401, 1018, 1022, 1026, 1106, 1071, 1111, 1111, 1111, 1082, 1145, 1030, 1101, 1034, 1038, 1106, 1106, 1106, 1106, 1046, 1206, 1052, 1106, 1072, 1111, 1111, 1042, 1134, 1065, 1111, 1112, 1056, 1160, 1207, 1062, 1204, 1208, 1069, 1106, 1106, 1106, 1076, 1111, 1207, 1161, 1122, 1205, 1064, 1094, 1106, 1106, 1107, 1111, 1111, 1111, 1078, 1086, 1207, 1092, 1098, 1046, 1058, 1106, 1106, 1110, 1111, 1111, 1116, 1120, 1161, 1126, 1202, 1104, 1106, 1145, 1146, 1129, 1138, 1088, 1151, 1048, 1157, 1153, 1132, 1141, 1165, 1107, 1111, 1172, 1179, 1109, 1183, 1175, 1143, 1147, 1187, 1108, 1191, 1195, 1144, 1199, 1168, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1557, 1247, 1241, 1241, 1038, 1434, 1241, 1241, 1241, 1241, 1254, 1275, 1617, 1241, 1280, 1287, 1241, 1241, 1241, 1287, 1241, 2114, 1291, 1241, 1243, 1241, 2049, 1824, 2094, 2095, 1520, 1309, 1241, 1241, 1302, 1241, 1321, 1311, 1241, 1241, 1313, 1778, 1325, 1336, 1241, 1241, 1325, 1330, 1353, 1241, 1241, 1695, 1354, 1241, 1241, 1241, 1294, 1686, 1331, 1241, 1696, 1368, 1241, 1338, 1370, 1241, 1392, 1399, 1364, 2017, 1406, 2016, 1405, 1716, 1406, 1407, 1422, 1417, 1421, 1241, 1241, 1241, 1349, 1426, 1241, 1774, 1756, 1241, 1773, 1241, 1241, 1345, 1964, 1812, 1432, 1241, 1241, 1345, 1993, 1459, 1241, 1241, 1241, 1395, 1848, 1767, 1465, 1241, 1241, 1394, 1847, 1242, 1477, 1241, 1241, 1428, 1241, 1445, 1492, 1241, 1241, 1438, 1241, 1499, 1241, 1241, 1241, 1455, 1241, 1818, 1448, 1241, 1250, 1241, 2026, 1623, 1449, 1241, 1612, 1616, 1241, 1614, 1241, 1257, 1241, 1241, 1985, 1292, 1586, 1512, 1241, 1517, 2050, 1526, 1674, 1519, 1524, 1647, 2051, 1532, 1537, 1551, 1544, 1550, 1555, 1561, 1571, 1578, 1584, 1590, 1591, 1653, 1595, 1602, 1606, 1610, 1634, 1628, 1640, 1633, 1645, 1241, 1241, 1241, 1469, 1241, 1970, 1651, 1241, 1270, 1241, 1241, 1819, 1449, 1241, 1293, 1664, 1241, 1241, 1481, 1485, 1574, 1672, 1241, 1241, 1513, 1317, 1487, 1684, 1241, 1241, 1533, 1299, 1694, 1241, 1241, 1295, 1241, 1241, 1241, 1546, 1700, 1241, 1241, 1707, 1241, 1713, 1241, 1849, 1715, 1241, 1720, 1241, 1276, 1267, 1241, 1241, 2107, 1657, 1864, 1241, 1881, 1241, 1326, 1292, 1241, 1685, 1358, 1724, 1338, 1241, 1363, 1362, 1342, 1340, 1361, 1339, 1833, 1372, 1360, 1833, 1833, 1342, 1343, 1835, 1341, 1731, 1738, 1344, 1241, 1745, 1241, 1379, 1241, 1241, 2092, 1241, 1388, 1761, 1754, 1241, 1386, 1241, 1400, 1760, 1241, 1241, 1241, 1598, 1734, 1241, 1241, 1241, 1635, 1645, 1241, 1780, 1766, 1241, 1241, 1332, 1771, 1241, 1241, 1629, 2079, 1241, 1242, 1784, 1241, 1241, 1680, 1639, 2063, 1790, 1241, 1241, 1741, 1241, 1241, 1800, 1241, 1241, 1762, 1473, 1241, 1806, 1241, 1241, 1786, 1240, 1709, 1241, 1241, 1241, 1668, 1811, 1241, 1940, 1241, 1401, 1974, 1241, 1408, 1413, 1382, 1241, 1816, 1241, 1241, 1802, 2086, 1811, 1241, 1817, 1945, 1823, 2095, 2095, 2047, 2094, 2046, 2080, 1241, 1409, 1312, 1376, 2096, 2048, 1241, 1241, 1807, 1241, 1241, 1241, 2035, 1241, 1241, 1828, 1241, 2057, 2061, 1241, 1241, 1843, 1241, 2059, 1241, 1241, 1241, 1690, 1847, 1241, 1241, 1241, 1703, 2102, 1848, 1241, 1241, 1853, 1292, 1848, 1241, 2016, 1857, 1241, 2002, 1868, 1241, 1436, 1241, 1241, 1271, 1305, 1241, 1874, 1241, 1241, 1884, 2037, 1892, 1241, 1890, 1241, 1461, 1241, 1241, 1795, 1241, 1241, 1891, 1241, 1878, 1241, 1888, 1241, 1888, 1905, 1896, 2087, 1912, 1903, 1241, 1911, 1906, 1916, 1905, 2027, 1863, 1925, 2088, 1859, 1861, 1922, 1927, 1931, 1935, 1494, 1241, 1241, 1918, 1907, 1939, 1917, 1944, 1949, 1241, 1241, 1451, 1955, 1241, 1241, 1241, 1796, 1727, 2061, 1241, 1241, 1899, 1241, 1660, 1968, 1241, 1241, 1951, 1678, 1978, 1241, 1241, 1241, 1839, 1241, 1241, 1984, 1982, 1241, 1488, 1241, 1241, 1624, 1450, 1989, 1241, 1241, 1241, 1870, 1995, 1292, 1241, 1241, 1958, 1261, 1241, 1996, 1241, 1241, 1241, 2039, 2008, 1241, 1241, 1750, 2000, 1241, 1256, 2001, 1960, 1241, 1564, 1241, 1504, 1241, 1241, 1442, 1241, 1241, 1564, 1528, 1263, 1241, 1508, 1241, 1241, 1468, 1498, 2006, 1540, 2015, 1539, 2014, 1748, 2013, 1539, 1831, 2014, 2012, 1500, 1567, 2022, 2021, 1241, 1580, 1241, 1241, 2033, 2037, 1791, 2045, 2031, 1241, 1621, 1241, 1641, 2044, 1241, 1241, 1241, 2093, 1241, 1241, 2055, 1241, 1241, 2067, 1241, 1283, 1241, 1241, 1241, 2101, 2071, 1241, 1241, 1241, 2073, 1848, 2040, 1241, 1241, 1241, 2077, 1241, 1241, 2106, 1241, 1241, 2084, 1241, 2111, 1241, 1241, 1381, 1380, 1241, 1241, 1241, 2100, 1241, 2129, 2118, 2122, 2126, 2197, 2133, 3010, 2825, 2145, 2698, 2156, 2226, 2160, 2161, 2165, 2174, 2293, 2194, 2630, 2201, 2203, 2152, 3019, 2226, 2263, 2209, 2213, 2218, 2269, 2292, 2269, 2269, 2184, 2226, 2238, 2148, 2151, 3017, 2245, 2214, 2269, 2269, 2185, 2226, 2292, 2269, 2291, 2269, 2269, 2269, 2292, 2205, 3019, 2226, 2226, 2160, 2160, 2160, 2261, 2160, 2160, 2160, 2262, 2276, 2160, 2160, 2277, 2216, 2283, 2216, 2269, 2269, 2268, 2269, 2267, 2269, 2269, 2269, 2271, 2568, 2292, 2269, 2293, 2269, 2182, 2190, 2269, 2186, 2226, 2226, 2226, 2226, 2227, 2160, 2160, 2160, 2160, 2263, 2160, 2275, 2277, 2282, 2215, 2217, 2269, 2269, 2291, 2269, 2269, 2293, 2291, 2269, 2220, 2269, 2295, 2294, 2269, 2269, 2305, 2233, 2262, 2278, 2218, 2269, 2234, 2226, 2226, 2228, 2160, 2160, 2160, 2289, 2220, 2294, 2294, 2269, 2269, 2304, 2269, 2160, 2160, 2287, 2269, 2269, 2305, 2269, 2269, 2312, 2269, 2269, 2225, 2226, 2160, 2287, 2289, 2219, 2304, 2295, 2314, 2234, 2226, 2314, 2269, 2226, 2226, 2160, 2288, 2219, 2222, 2304, 2296, 2269, 2224, 2160, 2160, 2269, 2302, 2294, 2314, 2224, 2226, 2288, 2220, 2294, 2269, 2290, 2269, 2269, 2293, 2269, 2269, 2269, 2269, 2270, 2221, 2313, 2225, 2227, 2160, 2300, 2269, 2225, 2261, 2309, 2234, 2229, 2223, 2318, 2318, 2318, 2328, 2336, 2340, 2344, 2350, 2637, 2712, 2358, 2362, 2372, 2135, 2378, 2398, 2135, 2135, 2135, 2135, 2136, 2417, 2241, 2135, 2378, 2135, 2135, 2980, 2984, 2135, 3006, 2135, 2135, 2135, 2945, 2931, 2425, 2400, 2135, 2135, 2135, 2954, 2135, 2481, 2433, 2135, 2135, 2988, 2824, 2135, 2135, 2482, 2434, 2135, 2135, 2440, 2445, 2452, 2135, 2135, 2998, 3002, 2961, 2441, 2446, 2453, 2463, 2974, 2135, 2135, 2135, 2140, 2642, 2709, 2459, 2470, 2465, 2135, 2135, 3005, 2135, 2135, 2987, 2823, 2458, 2469, 2464, 2975, 2135, 2135, 2135, 2353, 2488, 2447, 2324, 2974, 2135, 2409, 2459, 2448, 2135, 2961, 2487, 2446, 2476, 2323, 2973, 2135, 2135, 2135, 2354, 2476, 2974, 2135, 2135, 2135, 2957, 2135, 2135, 2960, 2135, 2135, 2135, 2363, 2409, 2459, 2474, 2465, 2487, 2571, 2973, 2135, 2135, 2168, 2973, 2135, 2135, 2135, 2959, 2135, 2135, 2135, 2506, 2135, 2957, 2488, 2170, 2135, 2135, 2135, 2960, 2135, 2818, 2493, 2135, 2135, 3033, 2135, 2135, 2135, 2934, 2819, 2494, 2135, 2135, 2135, 2976, 2780, 2499, 2135, 2135, 2135, 3000, 2968, 2135, 2935, 2135, 2135, 2135, 2364, 2507, 2135, 2135, 2934, 2135, 2135, 2780, 2492, 2507, 2135, 2135, 2506, 2780, 2135, 2135, 2782, 2780, 2135, 2782, 2135, 2783, 2374, 2514, 2135, 2135, 2135, 3007, 2530, 2974, 2135, 2135, 2135, 3008, 2135, 2135, 2134, 2135, 2526, 2531, 2975, 2135, 2135, 3042, 2581, 2575, 2956, 2135, 2135, 2135, 2394, 2135, 2508, 2535, 2840, 2844, 2495, 2135, 2135, 2136, 2684, 2537, 2842, 2846, 2135, 2136, 2561, 2581, 2551, 2536, 2841, 2845, 2975, 3043, 2582, 2843, 2555, 2135, 3040, 3044, 2538, 2844, 2975, 2135, 2135, 2253, 2644, 2672, 2542, 2554, 2135, 2135, 2346, 2873, 2551, 2555, 2135, 2135, 2135, 2381, 2559, 2565, 2538, 2553, 2135, 2560, 2914, 2576, 2590, 2135, 2135, 2135, 2408, 2136, 2596, 2624, 2135, 2135, 2135, 2409, 2135, 2618, 2597, 3008, 2135, 2135, 2380, 2956, 2601, 2135, 2135, 2135, 2410, 2620, 2624, 2135, 2136, 2383, 2135, 2135, 2783, 2623, 2135, 2135, 2393, 2888, 2136, 2621, 3008, 2135, 2618, 2618, 2622, 2135, 2135, 2405, 2414, 2619, 2384, 2624, 2135, 2136, 2950, 2135, 2138, 2135, 2139, 2135, 2604, 2623, 2135, 2140, 2878, 2665, 2957, 2622, 2135, 2135, 2428, 2762, 2606, 2612, 2135, 2135, 2501, 2586, 2604, 3038, 2135, 2604, 3036, 2387, 2958, 2386, 2135, 2141, 2135, 2421, 2387, 2385, 2135, 2385, 2384, 2384, 2135, 2386, 2628, 2384, 2135, 2135, 2501, 2596, 2591, 2135, 2135, 2135, 2400, 2135, 2634, 2135, 2135, 2559, 2580, 2575, 2648, 2135, 2135, 2135, 2429, 2649, 2135, 2135, 2135, 2435, 2654, 2658, 2135, 2135, 2135, 2436, 2649, 2178, 2659, 2135, 2135, 2595, 2601, 2669, 2677, 2135, 2135, 2616, 2957, 2879, 2665, 2691, 2135, 2363, 2367, 2900, 2878, 2664, 2690, 2975, 2877, 2643, 2670, 2974, 2671, 2975, 2135, 2135, 2619, 2608, 2669, 2673, 2135, 2135, 2653, 2177, 2672, 2135, 2135, 2135, 2486, 2168, 2251, 2255, 2695, 2974, 2709, 2135, 2135, 2135, 2487, 2169, 2399, 2716, 2975, 2135, 2363, 2770, 2776, 2640, 2717, 2135, 2135, 2729, 2135, 2135, 2641, 2718, 2135, 2135, 2135, 2505, 2135, 2640, 2257, 2974, 2135, 2727, 2975, 2135, 2365, 2332, 2895, 2957, 2135, 2959, 2135, 2365, 2749, 2754, 2959, 2958, 2958, 2135, 2380, 2793, 2799, 2135, 2735, 2738, 2135, 2381, 2135, 2135, 2940, 2974, 2135, 2744, 2135, 2135, 2739, 2519, 2976, 2745, 2135, 2135, 2135, 2509, 2755, 2135, 2135, 2135, 2510, 2772, 2778, 2135, 2135, 2740, 2520, 2135, 2771, 2777, 2135, 2135, 2759, 2750, 2792, 2798, 2135, 2135, 2781, 2392, 2779, 2135, 2135, 2135, 2521, 2135, 2679, 2248, 2135, 2135, 2681, 2480, 2135, 2135, 2786, 3000, 2135, 2679, 2683, 2135, 2135, 2416, 2135, 2135, 2135, 2525, 2135, 2730, 2135, 2135, 2135, 2560, 2581, 2135, 2805, 2135, 2135, 2804, 2962, 2832, 2974, 2135, 2382, 2135, 2135, 2958, 2135, 2135, 2960, 2135, 2829, 2833, 2975, 2961, 2965, 2969, 2973, 2968, 2972, 2135, 2135, 2135, 2641, 2135, 2515, 2966, 2970, 2851, 2478, 2135, 2135, 2808, 2135, 2809, 2135, 2135, 2135, 2722, 2852, 2479, 2135, 2135, 2815, 2135, 2135, 2766, 2853, 2480, 2135, 2857, 2479, 2135, 2388, 2723, 2135, 2364, 2331, 2894, 2858, 2480, 2135, 2135, 2850, 2478, 2135, 2135, 2135, 2806, 2864, 2135, 2399, 2256, 2974, 2865, 2135, 2135, 2862, 2135, 2135, 2135, 2685, 2807, 2865, 2135, 2135, 2807, 2863, 2135, 2135, 2135, 2686, 2884, 2807, 2135, 2809, 2807, 2135, 2135, 2807, 2806, 2705, 2810, 2808, 2700, 2869, 2702, 2702, 2702, 2704, 2883, 2135, 2135, 2135, 2730, 2884, 2135, 2135, 2135, 2731, 2321, 2546, 2135, 2135, 2876, 2255, 2889, 2322, 2547, 2135, 2401, 2135, 2135, 2135, 2949, 2367, 2893, 2544, 2973, 2906, 2973, 2135, 2135, 2877, 2663, 2368, 2901, 2907, 2974, 2366, 2899, 2905, 2972, 2920, 2974, 2135, 2135, 2911, 2900, 2920, 2363, 2913, 2918, 2465, 2941, 2975, 2135, 2135, 2924, 2928, 2974, 2945, 2931, 2135, 2135, 2135, 2765, 2136, 2955, 2135, 2135, 2939, 2931, 2380, 2135, 2135, 2380, 2135, 2135, 2135, 2780, 2507, 2137, 2135, 2137, 2135, 2139, 2135, 2806, 2810, 2135, 2135, 2135, 2992, 2135, 2135, 2962, 2966, 2970, 2974, 2135, 2135, 2787, 3014, 2135, 2521, 2993, 2135, 2135, 2135, 2803, 2135, 2135, 2135, 2618, 2607, 2997, 3001, 2135, 2135, 2963, 2967, 2971, 2975, 2135, 2135, 2791, 2797, 2135, 3009, 2999, 3003, 2787, 3001, 2135, 2135, 2964, 2968, 2785, 2999, 3003, 2135, 2135, 2135, 2804, 2785, 2999, 3004, 2135, 2135, 2135, 2807, 2135, 2135, 3023, 2135, 2135, 2135, 2811, 2135, 2135, 3027, 2135, 2135, 2135, 2837, 2968, 3028, 2135, 2135, 2135, 2875, 2135, 2784, 3029, 2135, 2408, 2457, 2446, 0, 14, 0, -2120220672, 1610612736, -2074083328, -2002780160, -2111830528, 1073872896, 1342177280, 1075807216, 4096, 16384, 2048, 8192, 0, 8192, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, -2145386496, 8388608, 1073741824, 0, 0x80000000, 0x80000000, 2097152, 2097152, 2097152, 536870912, 0, 0, 134217728, 33554432, 1536, 268435456, 268435456, 268435456, 268435456, 128, 256, 32, 0, 65536, 131072, 524288, 16777216, 268435456, 0x80000000, 1572864, 1835008, 640, 32768, 65536, 262144, 1048576, 2097152, 196608, 196800, 196608, 196608, 0, 131072, 131072, 131072, 196608, 196624, 196608, 196624, 196608, 196608, 128, 4096, 16384, 16384, 2048, 0, 4, 0, 0, 0x80000000, 2097152, 0, 1024, 32, 32, 0, 65536, 1572864, 1048576, 32768, 32768, 32768, 32768, 196608, 196608, 196608, 64, 64, 196608, 196608, 131072, 131072, 131072, 131072, 268435456, 268435456, 64, 196736, 196608, 196608, 196608, 131072, 196608, 196608, 16384, 4, 4, 4, 2, 32, 32, 65536, 1048576, 12582912, 1073741824, 0, 0, 2, 8, 16, 96, 2048, 32768, 0, 0, 131072, 268435456, 268435456, 268435456, 256, 256, 196608, 196672, 196608, 196608, 196608, 196608, 4, 0, 256, 256, 256, 256, 32, 32, 32768, 32, 32, 32, 32, 32768, 268435456, 268435456, 268435456, 196608, 196608, 196608, 196624, 196608, 196608, 196608, 16, 16, 16, 268435456, 196608, 64, 64, 64, 196608, 196608, 196608, 196672, 268435456, 64, 64, 196608, 196608, 16, 196608, 196608, 196608, 268435456, 64, 196608, 131072, 262144, 4194304, 25165824, 33554432, 134217728, 268435456, 268435456, 196608, 262152, 8, 256, 512, 3072, 16384, 200, -1073741816, 8392713, 40, 8392718, 520, 807404072, 40, 520, 100663304, 0, 0, -540651761, -540651761, 257589048, 0, 262144, 0, 0, 3, 8, 256, 0, 4, 6, 4100, 8388612, 0, 0, 0, 3, 4, 8, 256, 512, 1024, 0, 2097152, 0, 0, -537854471, -537854471, 0, 100663296, 0, 0, 1, 2, 0, 0, 0, 16384, 0, 0, 0, 96, 14336, 0, 0, 0, 7, 8, 234881024, 0, 0, 0, 8, 0, 0, 0, 0, 262144, 0, 0, 16, 64, 384, 512, 0, 1, 1, 0, 12582912, 0, 0, 0, 0, 33554432, 67108864, -606084144, -606084144, -606084138, 0, 0, 28, 32, 768, 1966080, -608174080, 0, 0, 0, 14, 35056, 16, 64, 896, 24576, 98304, 98304, 131072, 262144, 524288, 1048576, 4194304, 25165824, 1048576, 62914560, 134217728, -805306368, 0, 384, 512, 16384, 65536, 131072, 262144, 29360128, 33554432, 134217728, 268435456, 1073741824, 0x80000000, 262144, 524288, 1048576, 29360128, 33554432, 524288, 1048576, 16777216, 33554432, 134217728, 268435456, 1073741824, 0, 0, 0, 123856, 1966080, 0, 64, 384, 16384, 65536, 131072, 16384, 65536, 524288, 268435456, 0x80000000, 0, 0, 524288, 0x80000000, 0, 0, 1, 16, 0, 256, 524288, 0, 0, 0, 25, 96, 128, -537854471, 0, 0, 0, 32, 7404800, -545259520, 0, 0, 0, 60, 0, 249, 64768, 1048576, 6291456, 6291456, 25165824, 100663296, 402653184, 1073741824, 96, 128, 1280, 2048, 4096, 57344, 6291456, 57344, 6291456, 8388608, 16777216, 33554432, 201326592, 1342177280, 0x80000000, 0, 57344, 6291456, 8388608, 100663296, 134217728, 0x80000000, 0, 0, 0, 1, 8, 16, 64, 128, 64, 128, 256, 1024, 131072, 131072, 131072, 262144, 524288, 16777216, 57344, 6291456, 8388608, 67108864, 134217728, 64, 256, 1024, 2048, 4096, 57344, 64, 256, 0, 24576, 32768, 6291456, 67108864, 134217728, 0, 1, 64, 256, 24576, 32768, 4194304, 32768, 4194304, 67108864, 0, 0, 64, 256, 0, 0, 24576, 32768, 0, 16384, 4194304, 67108864, 64, 16384, 0, 0, 1, 64, 256, 16384, 4194304, 67108864, 0, 0, 0, 16384, 0, 16384, 16384, 0, -470447874, -470447874, -470447874, 0, 0, 128, 0, 0, 8, 96, 2048, 32768, 262144, 8388608, 35056, 1376256, -471859200, 0, 0, 14, 16, 224, 2048, 32768, 2097152, 4194304, 8388608, -486539264, 0, 96, 128, 2048, 32768, 262144, 2097152, 262144, 2097152, 8388608, 33554432, 536870912, 1073741824, 0x80000000, 0, 1610612736, 0x80000000, 0, 0, 1, 524288, 1048576, 12582912, 0, 0, 0, 151311, 264503296, 2097152, 8388608, 33554432, 1610612736, 0x80000000, 262144, 8388608, 33554432, 536870912, 67108864, 4194304, 0, 4194304, 0, 4194304, 4194304, 0, 0, 524288, 8388608, 536870912, 1073741824, 0x80000000, 1, 4097, 8388609, 96, 2048, 32768, 1073741824, 0x80000000, 0, 96, 2048, 0x80000000, 0, 0, 96, 2048, 0, 0, 1, 12582912, 0, 0, 0, 0, 1641895695, 1641895695, 0, 0, 0, 249, 7404800, 15, 87808, 1835008, 1639972864, 0, 768, 5120, 16384, 65536, 1835008, 1835008, 12582912, 16777216, 1610612736, 0, 3, 4, 8, 768, 4096, 65536, 0, 0, 256, 512, 786432, 8, 256, 512, 4096, 16384, 1835008, 16384, 1835008, 12582912, 1610612736, 0, 0, 0, 256, 0, 0, 0, 4, 8, 16, 32, 1, 2, 8, 256, 16384, 524288, 16384, 524288, 1048576, 12582912, 1610612736, 0, 0, 0, 8388608, 0, 0, 0, 524288, 4194304, 0, 0, 0, 8388608, -548662288, -548662288, -548662288, 0, 0, 256, 16384, 65536, 520093696, -1073741824, 0, 0, 0, 16777216, 0, 16, 32, 960, 4096, 4980736, 520093696, 1073741824, 0, 32, 896, 4096, 57344, 1048576, 6291456, 8388608, 16777216, 100663296, 134217728, 268435456, 0x80000000, 0, 512, 786432, 4194304, 33554432, 134217728, 268435456, 0, 786432, 4194304, 134217728, 268435456, 0, 524288, 4194304, 268435456, 0, 0, 0, 0, 0, 4194304, 4194304, -540651761, 0, 0, 0, 2, 4, 8, 16, 96, 128, 264503296, -805306368, 0, 0, 0, 8, 256, 512, 19456, 131072, 3072, 16384, 131072, 262144, 8388608, 16777216, 512, 1024, 2048, 16384, 131072, 262144, 131072, 262144, 8388608, 33554432, 201326592, 268435456, 0, 3, 4, 256, 1024, 2048, 57344, 16384, 131072, 8388608, 33554432, 134217728, 268435456, 0, 3, 256, 1024, 16384, 131072, 33554432, 134217728, 1073741824, 0x80000000, 0, 0, 256, 524288, 0x80000000, 0, 3, 256, 33554432, 134217728, 1073741824, 0, 1, 2, 33554432, 1, 2, 134217728, 1073741824, 0, 1, 2, 134217728, 0, 0, 0, 64, 0, 0, 0, 16, 32, 896, 4096, 786432, 4194304, 16777216, 33554432, 201326592, 268435456, 1073741824, 0x80000000, 0, 0, 0, 15, 0, 4980736, 4980736, 4980736, 70460, 70460, 3478332, 0, 0, 1008, 4984832, 520093696, 60, 4864, 65536, 0, 0, 0, 12, 16, 32, 256, 512, 4096, 65536, 0, 0, 0, 67108864, 0, 0, 0, 12, 0, 256, 512, 65536, 0, 0, 1024, 512, 131072, 131072, 4, 16, 32, 65536, 0, 4, 16, 32, 0, 0, 0, 4, 16, 0, 0, 16384, 67108864, 0, 0, 1, 24, 96, 128, 256, 1024 -]; - -JSONiqTokenizer.TOKEN = -[ - "(0)", - "JSONChar", - "JSONCharRef", - "JSONPredefinedCharRef", - "ModuleDecl", - "Annotation", - "OptionDecl", - "Operator", - "Variable", - "Tag", - "EndTag", - "PragmaContents", - "DirCommentContents", - "DirPIContents", - "CDataSectionContents", - "AttrTest", - "Wildcard", - "EQName", - "IntegerLiteral", - "DecimalLiteral", - "DoubleLiteral", - "PredefinedEntityRef", - "'\"\"'", - "EscapeApos", - "AposChar", - "ElementContentChar", - "QuotAttrContentChar", - "AposAttrContentChar", - "NCName", - "QName", - "S", - "CharRef", - "CommentContents", - "DocTag", - "DocCommentContents", - "EOF", - "'!'", - "'\"'", - "'#'", - "'#)'", - "'$$'", - "''''", - "'('", - "'(#'", - "'(:'", - "'(:~'", - "')'", - "'*'", - "'*'", - "','", - "'-->'", - "'.'", - "'/'", - "'/>'", - "':'", - "':)'", - "';'", - "''), token: xmlcomment, next: function(stack){ stack.pop(); } } - ], - CData: [ - { name: 'CDataSectionContents', token: cdata }, - { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } - ], - PI: [ - { name: 'DirPIContents', token: pi }, - { name: n('?'), token: pi }, - { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } - ], - AposString: [ - { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, - { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, - { name: 'CharRef', token: 'constant.language.escape' }, - { name: 'EscapeApos', token: 'constant.language.escape' }, - { name: 'AposChar', token: 'string' } - ], - QuotString: [ - { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, - { name: 'JSONPredefinedCharRef', token: 'constant.language.escape' }, - { name: 'JSONCharRef', token: 'constant.language.escape' }, - { name: 'JSONChar', token: 'string' } - ] -}; - -exports.JSONiqLexer = function(){ return new Lexer(JSONiqTokenizer, Rules); }; -},{"./JSONiqTokenizer":"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(_dereq_,module,exports){ -'use strict'; - -var TokenHandler = function(code) { - var input = code; - this.tokens = []; - - this.reset = function() { - input = input; - this.tokens = []; - }; - - this.startNonterminal = function() {}; - this.endNonterminal = function() {}; - - this.terminal = function(name, begin, end) { - this.tokens.push({ - name: name, - value: input.substring(begin, end) - }); - }; - - this.whitespace = function(begin, end) { - this.tokens.push({ - name: 'WS', - value: input.substring(begin, end) - }); - }; -}; - -exports.Lexer = function(Tokenizer, Rules) { - - this.tokens = []; - - this.getLineTokens = function(line, state) { - state = (state === 'start' || !state) ? '["start"]' : state; - var stack = JSON.parse(state); - var h = new TokenHandler(line); - var tokenizer = new Tokenizer(line, h); - var tokens = []; - - while(true) { - var currentState = stack[stack.length - 1]; - try { - h.tokens = []; - tokenizer['parse_' + currentState](); - var info = null; - - if(h.tokens.length > 1 && h.tokens[0].name === 'WS') { - tokens.push({ - type: 'text', - value: h.tokens[0].value - }); - h.tokens.splice(0, 1); - } - - var token = h.tokens[0]; - var rules = Rules[currentState]; - for(var k = 0; k < rules.length; k++) { - var rule = Rules[currentState][k]; - if((typeof(rule.name) === 'function' && rule.name(token)) || rule.name === token.name) { - info = rule; - break; - } - } - - if(token.name === 'EOF') { break; } - if(token.value === '') { throw 'Encountered empty string lexical rule.'; } - - tokens.push({ - type: info === null ? 'text' : (typeof(info.token) === 'function' ? info.token(token.value) : info.token), - value: token.value - }); - - if(info && info.next) { - info.next(stack); - } - - } catch(e) { - if(e instanceof tokenizer.ParseException) { - var index = 0; - for(var i=0; i < tokens.length; i++) { - index += tokens[i].value.length; - } - tokens.push({ type: 'text', value: line.substring(index) }); - return { - tokens: tokens, - state: JSON.stringify(['start']) - }; - } else { - throw e; - } - } - } - - return { - tokens: tokens, - state: JSON.stringify(stack) - }; - }; -}; -},{}]},{},["/node_modules/xqlint/lib/lexers/jsoniq_lexer.js"]); - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === "') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - var atCursor = false; - var state = JSON.parse(state).pop(); - if ((token && token.value === '>') || state !== "StartTag") return; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - var previous = iterator.stepBackward(); - if (!token || !hasType(token, 'meta.tag') || (previous !== null && previous.value.match('/'))) { - return; - } - var tag = token.value.substring(1); - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - }; - } - }); - - }; - oop.inherits(XQueryBehaviour, Behaviour); - - exports.XQueryBehaviour = XQueryBehaviour; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jsoniq",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/jsoniq_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"], function(require, exports, module) { -"use strict"; - -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JSONiqLexer = require("./xquery/jsoniq_lexer").JSONiqLexer; -var Range = require("../range").Range; -var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Anchor = require("../anchor").Anchor; - -var Mode = function() { - this.$tokenizer = new JSONiqLexer(); - this.$behaviour = new XQueryBehaviour(); - this.foldingRules = new CStyleFoldMode(); - this.$highlightRules = new TextHighlightRules(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.completer = { - getCompletions: function(editor, session, pos, prefix, callback) { - if (!session.$worker) - return callback(); - session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); - session.$worker.on("complete", function(e){ - callback(null, e.data); - }); - } - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); - if (match) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*[\}\)]/.test(input); - }; - - this.autoOutdent = function(state, doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*[\}\)])/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(:(.*):\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); - } - }; - this.createWorker = function(session) { - - var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); - var that = this; - - worker.attachToDocument(session.getDocument()); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - worker.on("markers", function(e) { - session.clearAnnotations(); - that.addMarkers(e.data, session); - }); - - return worker; - }; - - this.removeMarkers = function(session) { - var markers = session.getMarkers(false); - for (var id in markers) { - if (markers[id].clazz.indexOf('language_highlight_') === 0) { - session.removeMarker(id); - } - } - for (var i = 0; i < session.markerAnchors.length; i++) { - session.markerAnchors[i].detach(); - } - session.markerAnchors = []; - }; - - this.addMarkers = function(annos, mySession) { - var _self = this; - - if (!mySession.markerAnchors) mySession.markerAnchors = []; - this.removeMarkers(mySession); - mySession.languageAnnos = []; - annos.forEach(function(anno) { - var anchor = new Anchor(mySession.getDocument(), anno.pos.sl, anno.pos.sc || 0); - mySession.markerAnchors.push(anchor); - var markerId; - var colDiff = anno.pos.ec - anno.pos.sc; - var rowDiff = anno.pos.el - anno.pos.sl; - var gutterAnno = { - guttertext: anno.message, - type: anno.level || "warning", - text: anno.message - }; - - function updateFloat(single) { - if (markerId) - mySession.removeMarker(markerId); - gutterAnno.row = anchor.row; - if (anno.pos.sc !== undefined && anno.pos.ec !== undefined) { - var range = new Range(anno.pos.sl, anno.pos.sc, anno.pos.el, anno.pos.ec); - markerId = mySession.addMarker(range, "language_highlight_" + (anno.type ? anno.type : "default")); - } - if (single) mySession.setAnnotations(mySession.languageAnnos); - } - updateFloat(); - anchor.on("change", function() { - updateFloat(true); - }); - if (anno.message) mySession.languageAnnos.push(gutterAnno); - }); - mySession.setAnnotations(mySession.languageAnnos); - }; - - this.$id = "ace/mode/jsoniq"; - this.snippetFileId = "ace/snippets/jsoniq"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jsoniq"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jsp.js b/src-noconflict/mode-jsp.js deleted file mode 100644 index 9c72a0c..0000000 --- a/src-noconflict/mode-jsp.js +++ /dev/null @@ -1,1433 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while|" + - "var" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - regex: "(open(?:\\s+))?module(?=\\s*\\w)", - token: "keyword", - next: [{ - regex: "{", - token: "paren.lparen", - next: [{ - regex: "}", - token: "paren.rparen", - next: "start" - }, { - regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", - token: "keyword" - }] - }, { - token : "text", - regex : "\\s+" - }, { - token : "identifier", - regex : "\\w+" - }, { - token : "punctuation.operator", - regex : "." - }, { - token : "text", - regex : "\\s+" - }, { - regex: "", // exit if there is anything else - next: "start" - }] - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; -}); - -ace.define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; - -var JspHighlightRules = function() { - HtmlHighlightRules.call(this); - - var builtinVariables = 'request|response|out|session|' + - 'application|config|pageContext|page|Exception'; - - var keywords = 'page|include|taglib'; - - var startRules = [ - { - token : "comment", - regex : "<%--", - push : "jsp-dcomment" - }, { - token : "meta.tag", // jsp open tag - regex : "<%@?|<%=?|<%!?|]+>", - push : "jsp-start" - } - ]; - - var endRules = [ - { - token : "meta.tag", // jsp close tag - regex : "%>|<\\/jsp:[^>]+>", - next : "pop" - }, { - token: "variable.language", - regex : builtinVariables - }, { - token: "keyword", - regex : keywords - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(JavaHighlightRules, "jsp-", endRules, ["start"]); - - this.addRules({ - "jsp-dcomment" : [{ - token : "comment", - regex : ".*?--%>", - next : "pop" - }] - }); - - this.normalizeRules(); -}; - -oop.inherits(JspHighlightRules, HtmlHighlightRules); - -exports.JspHighlightRules = JspHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JspHighlightRules = require("./jsp_highlight_rules").JspHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JspHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/jsp"; - this.snippetFileId = "ace/snippets/jsp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jsp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jssm.js b/src-noconflict/mode-jssm.js deleted file mode 100644 index 5897329..0000000 --- a/src-noconflict/mode-jssm.js +++ /dev/null @@ -1,325 +0,0 @@ -ace.define("ace/mode/jssm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JSSMHighlightRules = function() { - - this.$rules = { - start: [{ - token: "punctuation.definition.comment.mn", - regex: /\/\*/, - push: [{ - token: "punctuation.definition.comment.mn", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.jssm" - }], - comment: "block comment" - }, { - token: "comment.line.jssm", - regex: /\/\//, - push: [{ - token: "comment.line.jssm", - regex: /$/, - next: "pop" - }, { - defaultToken: "comment.line.jssm" - }], - comment: "block comment" - }, { - token: "entity.name.function", - regex: /\${/, - push: [{ - token: "entity.name.function", - regex: /}/, - next: "pop" - }, { - defaultToken: "keyword.other" - }], - comment: "js outcalls" - }, { - token: "constant.numeric", - regex: /[0-9]*\.[0-9]*\.[0-9]*/, - comment: "semver" - }, { - token: "constant.language.jssmLanguage", - regex: /graph_layout\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /machine_name\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /machine_version\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /jssm_version\s*:/, - comment: "jssm language tokens" - }, { - token: "keyword.control.transition.jssmArrow.legal_legal", - regex: /<->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_none", - regex: /<-/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_legal", - regex: /->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_main", - regex: /<=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_main", - regex: /=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_none", - regex: /<=/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_forced", - regex: /<~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_forced", - regex: /~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_none", - regex: /<~/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_main", - regex: /<-=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_legal", - regex: /<=->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_forced", - regex: /<-~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_legal", - regex: /<~->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_forced", - regex: /<=~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_main", - regex: /<~=>/, - comment: "transitions" - }, { - token: "constant.numeric.jssmProbability", - regex: /[0-9]+%/, - comment: "edge probability annotation" - }, { - token: "constant.character.jssmAction", - regex: /\'[^']*\'/, - comment: "action annotation" - }, { - token: "entity.name.tag.jssmLabel.doublequoted", - regex: /\"[^"]*\"/, - comment: "jssm label annotation" - }, { - token: "entity.name.tag.jssmLabel.atom", - regex: /[a-zA-Z0-9_.+&()#@!?,]/, - comment: "jssm label annotation" - }] - }; - - this.normalizeRules(); -}; - -JSSMHighlightRules.metaData = { - fileTypes: ["jssm", "jssm_state"], - name: "JSSM", - scopeName: "source.jssm" -}; - - -oop.inherits(JSSMHighlightRules, TextHighlightRules); - -exports.JSSMHighlightRules = JSSMHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jssm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jssm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JSSMHighlightRules = require("./jssm_highlight_rules").JSSMHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JSSMHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/jssm"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jssm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-jsx.js b/src-noconflict/mode-jsx.js deleted file mode 100644 index 8cfbaaf..0000000 --- a/src-noconflict/mode-jsx.js +++ /dev/null @@ -1,411 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsxHighlightRules = function() { - var keywords = lang.arrayToMap( - ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + - "if|throw|" + - "delete|in|try|" + - "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + - "number|int|string|boolean|variant|" + - "log|assert").split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|") - ); - - var reserved = lang.arrayToMap( - ("debugger|with|" + - "const|export|" + - "let|private|public|yield|protected|" + - "extern|native|as|operator|__fake__|__readonly__").split("|") - ); - - var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : [ - "storage.type", - "text", - "entity.name.function" - ], - regex : "(function)(\\s+)(" + identifierRe + ")" - }, { - token : function(value) { - if (value == "this") - return "variable.language"; - else if (value == "function") - return "storage.type"; - else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) - return "keyword"; - else if (buildinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) - return "language.support.class"; - else - return "identifier"; - }, - regex : identifierRe - }, { - token : "keyword.operator", - regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({<]" - }, { - token : "paren.rparen", - regex : "[\\])}>]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(JsxHighlightRules, TextHighlightRules); - -exports.JsxHighlightRules = JsxHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -function Mode() { - this.HighlightRules = JsxHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -} -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/jsx"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/jsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-julia.js b/src-noconflict/mode-julia.js deleted file mode 100644 index f2331a2..0000000 --- a/src-noconflict/mode-julia.js +++ /dev/null @@ -1,303 +0,0 @@ -ace.define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JuliaHighlightRules = function() { - - this.$rules = { start: - [ { include: '#function_decl' }, - { include: '#function_call' }, - { include: '#type_decl' }, - { include: '#keyword' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#string' }, - { include: '#comment' } ], - '#bracket': - [ { token: 'keyword.bracket.julia', - regex: '\\(|\\)|\\[|\\]|\\{|\\}|,' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.julia', - 'comment.line.number-sign.julia' ], - regex: '(#)(?!\\{)(.*$)'} ], - '#function_call': - [ { token: [ 'support.function.julia', 'text' ], - regex: '([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()'} ], - '#function_decl': - [ { token: [ 'keyword.other.julia', 'meta.function.julia', - 'entity.name.function.julia', 'meta.function.julia','text' ], - regex: '(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])'} ], - '#keyword': - [ { token: 'keyword.other.julia', - regex: '\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b' }, - { token: 'keyword.control.julia', - regex: '\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b' }, - { token: 'storage.modifier.variable.julia', - regex: '\\b(?:global|local|const|export|import|importall|using)\\b' }, - { token: 'variable.macro.julia', regex: '@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b' } ], - '#number': - [ { token: 'constant.numeric.julia', - regex: '\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b' } ], - '#operator': - [ { token: 'keyword.operator.update.julia', - regex: '=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>=' }, - { token: 'keyword.operator.ternary.julia', regex: '\\?|:' }, - { token: 'keyword.operator.boolean.julia', - regex: '\\|\\||&&|!' }, - { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' }, - { token: 'keyword.operator.relation.julia', - regex: '>|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>' }, - { token: 'keyword.operator.range.julia', regex: ':' }, - { token: 'keyword.operator.shift.julia', regex: '<<|>>' }, - { token: 'keyword.operator.bitwise.julia', regex: '\\||\\&|~' }, - { token: 'keyword.operator.arithmetic.julia', - regex: '\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^' }, - { token: 'keyword.operator.isa.julia', regex: '::' }, - { token: 'keyword.operator.dots.julia', - regex: '\\.(?=[a-zA-Z])|\\.\\.+' }, - { token: 'keyword.operator.interpolation.julia', - regex: '\\$#?(?=.)' }, - { token: [ 'variable', 'keyword.operator.transposed-variable.julia' ], - regex: '([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:\'|\\.\')*\\.?\')' }, - { token: 'text', - regex: '\\[|\\('}, - { token: [ 'text', 'keyword.operator.transposed-matrix.julia' ], - regex: "([\\]\\)])((?:'|\\.')*\\.?')"} ], - '#string': - [ { token: 'punctuation.definition.string.begin.julia', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '\'', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.single.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '"', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '"[\\w\\xff-\\u218e\\u2455-\\uffff]*', - next: 'pop' }, - { include: '#string_custom_escaped_char' }, - { defaultToken: 'string.quoted.custom-double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '`', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '`', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.backtick.julia' } ] } ], - '#string_custom_escaped_char': [ { token: 'constant.character.escape.julia', regex: '\\\\"' } ], - '#string_escaped_char': - [ { token: 'constant.character.escape.julia', - regex: '\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' } ], - '#type_decl': - [ { token: - [ 'keyword.control.type.julia', - 'meta.type.julia', - 'entity.name.type.julia', - 'entity.other.inherited-class.julia', - 'punctuation.separator.inheritance.julia', - 'entity.other.inherited-class.julia' ], - regex: '(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?' }, - { token: [ 'other.typed-variable.julia', 'support.type.julia' ], - regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' } ] }; - - this.normalizeRules(); -}; - -JuliaHighlightRules.metaData = { fileTypes: [ 'jl' ], - firstLineMatch: '^#!.*\\bjulia\\s*$', - foldingStartMarker: '^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$', - foldingStopMarker: '^\\s*(?:end)\\b.*$', - name: 'Julia', - scopeName: 'source.julia' }; - - -oop.inherits(JuliaHighlightRules, TextHighlightRules); - -exports.JuliaHighlightRules = JuliaHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JuliaHighlightRules = require("./julia_highlight_rules").JuliaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JuliaHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.blockComment = ""; - this.$id = "ace/mode/julia"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/julia"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-kotlin.js b/src-noconflict/mode-kotlin.js deleted file mode 100644 index c4bd0a1..0000000 --- a/src-noconflict/mode-kotlin.js +++ /dev/null @@ -1,797 +0,0 @@ -ace.define("ace/mode/kotlin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var KotlinHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#comments" - }, { - token: [ - "text", - "keyword.other.kotlin", - "text", - "entity.name.package.kotlin", - "text" - ], - regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/ - }, { - include: "#imports" - }, { - include: "#statements" - }], - "#classes": [{ - token: "text", - regex: /(?=\s*(?:companion|class|object|interface))/, - push: [{ - token: "text", - regex: /}|(?=$)/, - next: "pop" - }, { - token: ["keyword.other.kotlin", "text"], - regex: /\b((?:companion\s*)?)(class|object|interface)\b/, - push: [{ - token: "text", - regex: /(?=<|{|\(|:)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\bobject\b/ - }, { - token: "entity.name.type.class.kotlin", - regex: /\w+/ - }] - }, { - token: "text", - regex: //, - next: "pop" - }, { - include: "#generics" - }] - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?={|$)/, - next: "pop" - }, { - token: "entity.other.inherited-class.kotlin", - regex: /\w+/ - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }] - }], - "#comments": [{ - token: "punctuation.definition.comment.kotlin", - regex: /\/\*/, - push: [{ - token: "punctuation.definition.comment.kotlin", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.kotlin" - }] - }, { - token: [ - "text", - "punctuation.definition.comment.kotlin", - "comment.line.double-slash.kotlin" - ], - regex: /(\s*)(\/\/)(.*$)/ - }], - "#constants": [{ - token: "constant.language.kotlin", - regex: /\b(?:true|false|null|this|super)\b/ - }, { - token: "constant.numeric.kotlin", - regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/ - }, { - token: "constant.other.kotlin", - regex: /\b[A-Z][A-Z0-9_]+\b/ - }], - "#expressions": [{ - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - include: "#types" - }, { - include: "#strings" - }, { - include: "#constants" - }, { - include: "#comments" - }, { - include: "#keywords" - }], - "#functions": [{ - token: "text", - regex: /(?=\s*fun)/, - push: [{ - token: "text", - regex: /}|(?=$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\bfun\b/, - push: [{ - token: "text", - regex: /(?=\()/, - next: "pop" - }, { - token: "text", - regex: //, - next: "pop" - }, { - include: "#generics" - }] - }, { - token: ["text", "entity.name.function.kotlin"], - regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ - }] - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?={|=|$)/, - next: "pop" - }, { - include: "#types" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /(?=\})/, - next: "pop" - }, { - include: "#statements" - }] - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }], - "#generics": [{ - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?=,|>)/, - next: "pop" - }, { - include: "#types" - }] - }, { - include: "#keywords" - }, { - token: "storage.type.generic.kotlin", - regex: /\w+/ - }], - "#getters-and-setters": [{ - token: ["entity.name.function.kotlin", "text"], - regex: /\b(get)\b(\s*\(\s*\))/, - push: [{ - token: "text", - regex: /\}|(?=\bset\b)|$/, - next: "pop" - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$|\bset\b)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }, { - token: ["entity.name.function.kotlin", "text"], - regex: /\b(set)\b(\s*)(?=\()/, - push: [{ - token: "text", - regex: /\}|(?=\bget\b)|$/, - next: "pop" - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$|\bset\b)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }], - "#imports": [{ - token: [ - "text", - "keyword.other.kotlin", - "text", - "keyword.other.kotlin" - ], - regex: /^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/ - }], - "#keywords": [{ - token: "storage.modifier.kotlin", - regex: /\b(?:var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\b/ - }, { - token: "keyword.control.catch-exception.kotlin", - regex: /\b(?:try|catch|finally|throw)\b/ - }, { - token: "keyword.control.kotlin", - regex: /\b(?:if|else|while|for|do|return|when|where|break|continue)\b/ - }, { - token: "keyword.operator.kotlin", - regex: /\b(?:in|is|as|assert)\b/ - }, { - token: "keyword.operator.comparison.kotlin", - regex: /==|!=|===|!==|<=|>=|<|>/ - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/ - }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/ - }, { - token: "keyword.operator.dot.kotlin", - regex: /\./ - }, { - token: "keyword.operator.increment-decrement.kotlin", - regex: /\-\-|\+\+/ - }, { - token: "keyword.operator.arithmetic.kotlin", - regex: /\-|\+|\*|\/|%/ - }, { - token: "keyword.operator.arithmetic.assign.kotlin", - regex: /\+=|\-=|\*=|\/=/ - }, { - token: "keyword.operator.logical.kotlin", - regex: /!|&&|\|\|/ - }, { - token: "keyword.operator.range.kotlin", - regex: /\.\./ - }, { - token: "punctuation.terminator.kotlin", - regex: /;/ - }], - "#namespaces": [{ - token: "keyword.other.kotlin", - regex: /\bnamespace\b/ - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }], - "#parameters": [{ - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?=,|\)|=)/, - next: "pop" - }, { - include: "#types" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=,|\))/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - include: "#keywords" - }, { - token: "variable.parameter.function.kotlin", - regex: /\w+/ - }], - "#statements": [{ - include: "#namespaces" - }, { - include: "#typedefs" - }, { - include: "#classes" - }, { - include: "#functions" - }, { - include: "#variables" - }, { - include: "#getters-and-setters" - }, { - include: "#expressions" - }], - "#strings": [{ - token: "punctuation.definition.string.begin.kotlin", - regex: /"""/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /"""/, - next: "pop" - }, { - token: "variable.parameter.template.kotlin", - regex: /\$\w+|\$\{[^\}]+\}/ - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.third.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /"/, - next: "pop" - }, { - token: "variable.parameter.template.kotlin", - regex: /\$\w+|\$\{[^\}]+\}/ - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /'/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /'/, - next: "pop" - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.single.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /`/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /`/, - next: "pop" - }, { - defaultToken: "string.quoted.single.kotlin" - }] - }], - "#typedefs": [{ - token: "text", - regex: /(?=\s*type)/, - push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\btype\b/ - }, { - token: "text", - regex: //, - next: "pop" - }, { - include: "#generics" - }] - }, { - include: "#expressions" - }] - }], - "#types": [{ - token: "storage.type.buildin.kotlin", - regex: /\b(?:Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b/ - }, { - token: "storage.type.buildin.array.kotlin", - regex: /\b(?:IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b/ - }, { - token: [ - "storage.type.buildin.collection.kotlin", - "text" - ], - regex: /\b(Array|List|Map)(<\b)/, - push: [{ - token: "text", - regex: />/, - next: "pop" - }, { - include: "#types" - }, { - include: "#keywords" - }] - }, { - token: "text", - regex: /\w+/, - next: "pop" - }, { - include: "#types" - }, { - include: "#keywords" - }] - }, { - token: ["keyword.operator.tuple.kotlin", "text"], - regex: /(#)(\()/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#types" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /->/ - }], - "#variables": [{ - token: "text", - regex: /(?=\s*(?:var|val))/, - push: [{ - token: "text", - regex: /(?=:|=|$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\b(?:var|val)\b/, - push: [{ - token: "text", - regex: /(?=:|=|$)/, - next: "pop" - }, { - token: "text", - regex: //, - next: "pop" - }, { - include: "#generics" - }] - }, { - token: ["text", "entity.name.variable.kotlin"], - regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?==|$)/, - next: "pop" - }, { - include: "#types" - }, { - include: "#getters-and-setters" - }] - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - include: "#expressions" - }, { - include: "#getters-and-setters" - }] - }] - }] - }; - - this.normalizeRules(); -}; - -KotlinHighlightRules.metaData = { - fileTypes: ["kt", "kts"], - name: "Kotlin", - scopeName: "source.Kotlin" -}; - - -oop.inherits(KotlinHighlightRules, TextHighlightRules); - -exports.KotlinHighlightRules = KotlinHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/kotlin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/kotlin_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var KotlinHighlightRules = require("./kotlin_highlight_rules").KotlinHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = KotlinHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/kotlin"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/kotlin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-latex.js b/src-noconflict/mode-latex.js deleted file mode 100644 index fc98728..0000000 --- a/src-noconflict/mode-latex.js +++ /dev/null @@ -1,296 +0,0 @@ -ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - - this.$rules = { - "start" : [{ - token : "comment", - regex : "%.*$" - }, { - token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], - regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" - }, { - token : ["keyword","lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(verbatim)(})", - next : "verbatim" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(lstlisting)(})", - next : "lstlisting" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:begin|end))({)([\\w*]*)(})" - }, { - token : "storage.type", - regex : /\\verb\b\*?/, - next : [{ - token : ["keyword.operator", "string", "keyword.operator"], - regex : "(.)(.*?)(\\1|$)|", - next : "start" - }] - }, { - token : "storage.type", - regex : "\\\\[a-zA-Z]+" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "constant.character.escape", - regex : "\\\\[^a-zA-Z]?" - }, { - token : "string", - regex : "\\${1,2}", - next : "equation" - }], - "equation" : [{ - token : "comment", - regex : "%.*$" - }, { - token : "string", - regex : "\\${1,2}", - next : "start" - }, { - token : "constant.character.escape", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "error", - regex : "^\\s*$", - next : "start" - }, { - defaultToken : "string" - }], - "verbatim": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(verbatim)(})", - next : "start" - }, { - defaultToken : "text" - }], - "lstlisting": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(lstlisting)(})", - next : "start" - }, { - defaultToken : "text" - }] - }; - - this.normalizeRules(); -}; -oop.inherits(LatexHighlightRules, TextHighlightRules); - -exports.LatexHighlightRules = LatexHighlightRules; - -}); - -ace.define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; -var keywordLevels = { - "\\subparagraph": 1, - "\\paragraph": 2, - "\\subsubsubsection": 3, - "\\subsubsection": 4, - "\\subsection": 5, - "\\section": 6, - "\\chapter": 7, - "\\part": 8, - "\\begin": 9, - "\\end": 10 -}; - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\\(begin)|\s*\\(part|chapter|(?:sub)*(?:section|paragraph))\b|{\s*$/; - this.foldingStopMarker = /^\s*\\(end)\b|^\s*}/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.latexBlock(session, row, match[0].length - 1); - if (match[2]) - return this.latexSection(session, row, match[0].length - 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[1]) - return this.latexBlock(session, row, match[0].length - 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.latexBlock = function(session, row, column, returnRange) { - var keywords = { - "\\begin": 1, - "\\end": -1 - }; - - var stream = new TokenIterator(session, row, column); - var token = stream.getCurrentToken(); - if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) - return; - - var val = token.value; - var dir = keywords[val]; - - var getType = function() { - var token = stream.stepForward(); - var type = token.type == "lparen" ?stream.stepForward().value : ""; - if (dir === -1) { - stream.stepBackward(); - if (type) - stream.stepBackward(); - } - return type; - }; - var stack = [getType()]; - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) - continue; - var level = keywords[token.value]; - if (!level) - continue; - var type = getType(); - if (level === dir) - stack.unshift(type); - else if (stack.shift() !== type || !stack.length) - break; - } - - if (stack.length) - return; - - if (dir == 1) { - stream.stepBackward(); - stream.stepBackward(); - } - - if (returnRange) - return stream.getCurrentTokenRange(); - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - else - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - - this.latexSection = function(session, row, column) { - var stream = new TokenIterator(session, row, column); - var token = stream.getCurrentToken(); - if (!token || token.type != "storage.type") - return; - - var startLevel = keywordLevels[token.value] || 0; - var stackDepth = 0; - var endRow = row; - - while(token = stream.stepForward()) { - if (token.type !== "storage.type") - continue; - var level = keywordLevels[token.value] || 0; - - if (level >= 9) { - if (!stackDepth) - endRow = stream.getCurrentTokenRow() - 1; - stackDepth += level == 9 ? 1 : - 1; - if (stackDepth < 0) - break; - } else if (level >= startLevel) - break; - } - - if (!stackDepth) - endRow = stream.getCurrentTokenRow() - 1; - - while (endRow > row && !/\S/.test(session.getLine(endRow))) - endRow--; - - return new Range( - row, session.getLine(row).length, - endRow, session.getLine(endRow).length - ); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/latex"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var LatexFoldMode = require("./folding/latex").FoldMode; - -var Mode = function() { - this.HighlightRules = LatexHighlightRules; - this.foldingRules = new LatexFoldMode(); - this.$behaviour = new CstyleBehaviour({ braces: true }); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - - this.lineCommentStart = "%"; - - this.$id = "ace/mode/latex"; - - this.getMatching = function(session, row, column) { - if (row == undefined) - row = session.selection.lead; - if (typeof row == "object") { - column = row.column; - row = row.row; - } - - var startToken = session.getTokenAt(row, column); - if (!startToken) - return; - if (startToken.value == "\\begin" || startToken.value == "\\end") { - return this.foldingRules.latexBlock(session, row, column, true); - } - }; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/latex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-latte.js b/src-noconflict/mode-latte.js deleted file mode 100644 index 07bf321..0000000 --- a/src-noconflict/mode-latte.js +++ /dev/null @@ -1,2708 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/latte_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatteHighlightRules = function() { - HtmlHighlightRules.call(this); - for (var rule in this.$rules) { - this.$rules[rule].unshift( - { - token : "comment.start.latte", - regex : "\\{\\*", - push : [{ - token : "comment.end.latte", - regex : ".*\\*\\}", - next : "pop" - }, { - defaultToken : "comment" - }] - }, { - token : "meta.tag.punctuation.tag-open.latte", - regex : "\\{(?![\\s'\"{}]|$)/?", - push : [{ - token : "meta.tag.latte", - regex : "(?:_|=|[a-z]\\w*(?:[.:-]\\w+)*)?", - next: [{ - token : "meta.tag.punctuation.tag-close.latte", - regex : "\\}", - next : "pop" - }, { - include: "latte-content" - }] - }] - }); - } - this.$rules['tag_stuff'].unshift({ - token : "meta.attribute.latte", - regex : "n:[\\w-]+", - next : [{ - include: "tag_whitespace" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - next : [{ - token : "string.attribute-value.xml", - regex : "'", - next : [ - {token : "string.attribute-value.xml", regex: "'", next: "tag_stuff"}, - {include : "latte-content"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - next : [ - {token : "string.attribute-value.xml", regex: '"', next: "tag_stuff"}, - {include : "latte-content"} - ] - }, { - token : "text.tag-whitespace.xml", - regex : "\\s", - next: "tag_stuff" - }, { - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", - next: "tag_stuff" - }, { - include : "latte-content" - }] - }, { - token : "empty", - regex : "", - next : "tag_stuff" - }] - }); - this.$rules["latte-content"] = [ - { - token : "comment.start.latte", // multi line comment - regex : "\\/\\*", - push : [ - { - token : "comment.end.latte", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - } - ] - }, { - token : "string.start", // " string start - regex : '"', - push : [ - { - token : "constant.language.escape", - regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' - }, { - token : "variable", - regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ - }, { - token : "variable", - regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now - }, - {token : "string.end", regex : '"', next : "pop"}, - {defaultToken : "string"} - ] - }, { - token : "string.start", // ' string start - regex : "'", - push : [ - {token : "constant.language.escape", regex : /\\['\\]/}, - {token : "string.end", regex : "'", next : "pop"}, - {defaultToken : "string"} - ] - }, { - token : "keyword.control", - regex : "\\b(?:INF|NAN|and|or|xor|AND|OR|XOR|clone|new|instanceof|return|continue|break|as)\\b" - }, { - token : "constant.language", - regex : "\\b(?:true|false|null|TRUE|FALSE|NULL)\\b" - }, { - token : "variable", - regex : /\$\w+/ - }, { - token : "constant.numeric", - regex : "[+-]?[0-9]+(?:\\.[0-9]+)?(?:e[0-9]+)?" - }, { - token : ["support.class", "keyword.operator"], - regex : "\\b(\\w+)(::)" - }, { - token : "constant.language", // constants - regex : "\\b(?:[A-Z0-9_]+)\\b" - }, { - token : "string.unquoted", - regex : "\\w+(?:-+\\w+)*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "keyword.operator", - regex : "::|=>|->|\\?->|\\?\\?->|\\+\\+|--|<<|>>|<=>|<=|>=|===|!==|==|!=|<>|&&|\\|\\||\\?\\?|\\?>|\\*\\*|\\.\\.\\.|[^'\"]" // =>, any char except quotes - } - ]; - - this.normalizeRules(); -}; - -oop.inherits(LatteHighlightRules, TextHighlightRules); - -exports.LatteHighlightRules = LatteHighlightRules; -}); - -ace.define("ace/mode/latte",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/latte_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var LatteHighlightRules = require("./latte_highlight_rules").LatteHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = LatteHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.blockComment = {start: "{*", end: "*}"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*\{(?:if|else|elseif|ifset|elseifset|ifchanged|switch|case|foreach|iterateWhile|for|while|first|last|sep|try|capture|spaceless|snippet|block|define|embed|snippetArea)\b[^{]*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+\{\/$/.test(line + input); - }; - - this.autoOutdent = function(state, doc, row) { - }; - - this.$id = "ace/mode/latte"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/latte"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-less.js b/src-noconflict/mode-less.js deleted file mode 100644 index 3ab5a32..0000000 --- a/src-noconflict/mode-less.js +++ /dev/null @@ -1,839 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require('./css_highlight_rules'); - -var LessHighlightRules = function() { - - - var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + - "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + - "or|and|when|not"; - - var keywords = keywordList.split('|'); - - var properties = CssHighlightRules.supportType.split('|'); - - var keywordMapper = this.createKeywordMapper({ - "support.constant": CssHighlightRules.supportConstant, - "keyword": keywordList, - "support.constant.color": CssHighlightRules.supportConstantColor, - "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "identifier", true); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "paren.lparen", "string", "paren.rparen"], - regex : "(url)(\\()(.*)(\\))" - }, { - token : ["support.function", "paren.lparen"], - regex : "(:extend|[a-z0-9_\\-]+)(\\()" - }, { - token : function(value) { - if (keywords.indexOf(value.toLowerCase()) > -1) - return "keyword"; - else - return "variable"; - }, - regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" - }, { - token : "variable", - regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" - }, { - token : function(first, second) { - if(properties.indexOf(first.toLowerCase()) > -1) { - return ["support.type.property", "text"]; - } - else { - return ["support.type.unknownProperty", "text"]; - } - }, - regex : "([a-z0-9-_]+)(\\s*:)" - }, { - token : "keyword", - regex : "&" // special case - always treat as keyword - }, { - token : keywordMapper, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z_][a-z0-9-_]*" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - this.normalizeRules(); -}; - -oop.inherits(LessHighlightRules, TextHighlightRules); - -exports.LessHighlightRules = LessHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CssCompletions = require("./css_completions").CssCompletions; - -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = LessHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions("ruleset", session, pos, prefix); - }; - - this.$id = "ace/mode/less"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/less"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-liquid.js b/src-noconflict/mode-liquid.js deleted file mode 100644 index 543e2b8..0000000 --- a/src-noconflict/mode-liquid.js +++ /dev/null @@ -1,2742 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/behaviour/liquid",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/xml","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { - "use strict"; - - var oop = require("../../lib/oop"); - var Behaviour = require("../behaviour").Behaviour; - var XmlBehaviour = require("./xml").XmlBehaviour; - var TokenIterator = require("../../token_iterator").TokenIterator; - var lang = require("../../lib/lang"); - - function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; - } - - var LiquidBehaviour = function () { - XmlBehaviour.call(this); - this.add("autoBraceTagClosing","insertion", function (state, action, editor, session, text) { - if (text == '}') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !( token.value.trim() === '%' || is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - if (/{%\s*%/.test(session.getLine(position.row))) return; - if (/^\s*}/.test(session.getLine(position.row).slice(position.column))) - return; - while (!token.type != 'keyword.block') { - token = iterator.stepBackward(); - if (token.value == '{%') { - while(true) { - token = iterator.stepForward(); - - if (token.type === 'keyword.block') { - break; - } else if (token.value.trim() == '%') { - token = null; - break; - } - } - break; - } - } - if (!token ) return ; - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - return { - text: "}" + "{% end" + element + " %}", - selection: [1, 1] - }; - } - }); - - }; - - oop.inherits(LiquidBehaviour, Behaviour); - - exports.LiquidBehaviour = LiquidBehaviour; - }); - -ace.define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var LiquidHighlightRules = function() { - HtmlHighlightRules.call(this); - var functions = ( - "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|" + - "escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|" + - "truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split" - ); - - var keywords = ( - "capture|endcapture|case|endcase|when|comment|endcomment|" + - "cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|" + - "style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow" - ); - var blocks = 'for|if|case|capture|unless|tablerow|marker|comment'; - - var builtinVariables = 'forloop|tablerowloop'; - - var definitions = ("assign"); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": builtinVariables, - "keyword": keywords, - "keyword.block": blocks, - "support.function": functions, - "keyword.definition": definitions - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable", - regex : "{%", - push : "liquid-start" - }, { - token : "variable", - regex : "{{", - push : "liquid-start" - }); - } - - this.addRules({ - "liquid-start" : [{ - token: "variable", - regex: "}}", - next: "pop" - }, { - token: "variable", - regex: "%}", - next: "pop" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "/|\\*|\\-|\\+|=|!=|\\?\\:" - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - }] - }); - - this.normalizeRules(); -}; -oop.inherits(LiquidHighlightRules, TextHighlightRules); - -exports.LiquidHighlightRules = LiquidHighlightRules; -}); - -ace.define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/html","ace/mode/html_completions","ace/mode/behaviour/liquid","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HtmlMode = require("./html").Mode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var LiquidBehaviour = require("./behaviour/liquid").LiquidBehaviour; -var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = LiquidHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new LiquidBehaviour(); - this.$completer = new HtmlCompletions(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.blockComment = {start: ""}; - this.voidElements = new HtmlMode().voidElements; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/liquid"; - this.snippetFileId = "ace/snippets/liquid"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/liquid"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-lisp.js b/src-noconflict/mode-lisp.js deleted file mode 100644 index c70763a..0000000 --- a/src-noconflict/mode-lisp.js +++ /dev/null @@ -1,112 +0,0 @@ -ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LispHighlightRules = function() { - var keywordControl = "case|do|let|loop|if|else|when"; - var keywordOperator = "eq|neq|and|or"; - var constantLanguage = "null|nil"; - var supportFunctions = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control": keywordControl, - "keyword.operator": keywordOperator, - "constant.language": constantLanguage, - "support.function": supportFunctions - }, "identifier", true); - - this.$rules = - { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], - regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], - regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" - }, - { - token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], - regex: "(\\*)(\\S*)(\\*)" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - } - ], - "qqstring": [ - { - token: "constant.character.escape.lisp", - regex: "\\\\." - }, - { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - } - ] -}; - -}; - -oop.inherits(LispHighlightRules, TextHighlightRules); - -exports.LispHighlightRules = LispHighlightRules; -}); - -ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; - -var Mode = function() { - this.HighlightRules = LispHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - - this.$id = "ace/mode/lisp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/lisp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-livescript.js b/src-noconflict/mode-livescript.js deleted file mode 100644 index bead848..0000000 --- a/src-noconflict/mode-livescript.js +++ /dev/null @@ -1,279 +0,0 @@ -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/text"], function(require, exports, module){ - var identifier, LiveScriptMode, keywordend, stringfill; - identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - exports.Mode = LiveScriptMode = (function(superclass){ - var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode; - function LiveScriptMode(){ - var that; - this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); - if (that = require('../mode/matching_brace_outdent')) { - this.$outdent = new that.MatchingBraceOutdent; - } - this.$id = "ace/mode/livescript"; - this.$behaviour = new (require("./behaviour/cstyle").CstyleBehaviour)(); - } - indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - prototype.getNextLineIndent = function(state, line, tab){ - var indent, tokens; - indent = this.$getIndent(line); - tokens = this.$tokenizer.getLineTokens(line, state).tokens; - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { - if (state === 'start' && indenter.test(line)) { - indent += tab; - } - } - return indent; - }; - prototype.lineCommentStart = "#"; - prototype.blockComment = {start: "###", end: "###"}; - prototype.checkOutdent = function(state, line, input){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; - }; - prototype.autoOutdent = function(state, doc, row){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; - }; - return LiveScriptMode; - }(require('../mode/text').Mode)); - keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - stringfill = { - defaultToken: 'string' - }; - LiveScriptMode.Rules = { - start: [ - { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '[\\^!|&%+\\-]+' - }, { - token: 'text', - regex: '\\s+' - } - ], - heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - defaultToken: 'string.regex' - } - ], - key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '', - next: 'start' - } - ], - comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - defaultToken: 'comment.doc' - } - ], - qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill - ], - qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill - ], - qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill - ], - qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill - ], - js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill - ], - words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill - ] - }; -function extend$(sub, sup){ - function fun(){} fun.prototype = (sub.superclass = sup).prototype; - (sub.prototype = new fun).constructor = sub; - if (typeof sup.extended == 'function') sup.extended(sub); - return sub; -} -function import$(obj, src){ - var own = {}.hasOwnProperty; - for (var key in src) if (own.call(src, key)) obj[key] = src[key]; - return obj; -} -}); (function() { - ace.require(["ace/mode/livescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-logiql.js b/src-noconflict/mode-logiql.js deleted file mode 100644 index a3c78fc..0000000 --- a/src-noconflict/mode-logiql.js +++ /dev/null @@ -1,317 +0,0 @@ -ace.define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LogiQLHighlightRules = function() { - - this.$rules = { start: - [ { token: 'comment.block', - regex: '/\\*', - push: - [ { token: 'comment.block', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block' } ] - }, - { token: 'comment.single', - regex: '//.*' - }, - { token: 'constant.numeric', - regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?' - }, - { token: 'string', - regex: '"', - push: - [ { token: 'string', regex: '"', next: 'pop' }, - { defaultToken: 'string' } ] - }, - { token: 'constant.language', - regex: '\\b(true|false)\\b' - }, - { token: 'entity.name.type.logicblox', - regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b' - }, - { token: 'keyword.start', regex: '->', comment: 'Constraint' }, - { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint'}, - { token: 'keyword.start', regex: '<-', comment: 'Rule' }, - { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, - { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, - { token: 'keyword.other', regex: '!', comment: 'Negation' }, - { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, - { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, - { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality'}, - { token: 'keyword.other', regex: '@', comment: 'Equality' }, - { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations'}, - { token: 'keyword', regex: '::', comment: 'Colon colon' }, - { token: 'support.function', - regex: '\\b(agg\\s*<<)', - push: - [ { include: '$self' }, - { token: 'support.function', - regex: '>>', - next: 'pop' } ] - }, - { token: 'storage.modifier', - regex: '\\b(lang:[\\w:]*)' - }, - { token: [ 'storage.type', 'text' ], - regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)' - }, - { token: 'entity.name', - regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))' - }, - { token: 'variable.parameter', - regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))' - } ] }; - - this.normalizeRules(); -}; - -oop.inherits(LogiQLHighlightRules, TextHighlightRules); - -exports.LogiQLHighlightRules = LogiQLHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/behaviour/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = LogiQLHighlightRules; - this.foldingRules = new FoldMode(); - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (/comment|string/.test(endState)) - return indent; - if (tokens.length && tokens[tokens.length - 1].type == "comment.single") - return indent; - - var match = line.match(); - if (/(-->|<--|<-|->|{)\s*$/.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (this.$outdent.checkOutdent(line, input)) - return true; - - if (input !== "\n" && input !== "\r\n") - return false; - - if (!/^\s+/.test(line)) - return false; - - return true; - }; - - this.autoOutdent = function(state, doc, row) { - if (this.$outdent.autoOutdent(doc, row)) - return; - var prevLine = doc.getLine(row); - var match = prevLine.match(/^\s+/); - var column = prevLine.lastIndexOf(".") + 1; - if (!match || !row || !column) return 0; - - var line = doc.getLine(row + 1); - var startRange = this.getMatching(doc, {row: row, column: column}); - if (!startRange || startRange.start.row == row) return 0; - - column = match[0].length; - var indent = this.$getIndent(doc.getLine(startRange.start.row)); - doc.replace(new Range(row + 1, 0, row + 1, column), indent); - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) - row = session.selection.lead; - if (typeof row == "object") { - column = row.column; - row = row.row; - } - - var startToken = session.getTokenAt(row, column); - var KW_START = "keyword.start", KW_END = "keyword.end"; - var tok; - if (!startToken) - return; - if (startToken.type == KW_START) { - var it = new TokenIterator(session, row, column); - it.step = it.stepForward; - } else if (startToken.type == KW_END) { - var it = new TokenIterator(session, row, column); - it.step = it.stepBackward; - } else - return; - - while (tok = it.step()) { - if (tok.type == KW_START || tok.type == KW_END) - break; - } - if (!tok || tok.type == startToken.type) - return; - - var col = it.getCurrentTokenColumn(); - var row = it.getCurrentTokenRow(); - return new Range(row, col, row, col + tok.value.length); - }; - this.$id = "ace/mode/logiql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/logiql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-logtalk.js b/src-noconflict/mode-logtalk.js deleted file mode 100644 index 14d0371..0000000 --- a/src-noconflict/mode-logtalk.js +++ /dev/null @@ -1,352 +0,0 @@ -ace.define("ace/mode/logtalk_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LogtalkHighlightRules = function() { - - this.$rules = { start: - [ { token: 'punctuation.definition.comment.logtalk', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.logtalk', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.logtalk' } ] }, - { todo: 'fix grouping', - token: - [ 'comment.line.percentage.logtalk', - 'punctuation.definition.comment.logtalk' ], - regex: '%.*$\\n?' }, - { todo: 'fix grouping', - token: - [ 'storage.type.opening.logtalk', - 'punctuation.definition.storage.type.logtalk' ], - regex: ':-\\s(?:object|protocol|category|module)(?=[(])' }, - { todo: 'fix grouping', - token: - [ 'storage.type.closing.logtalk', - 'punctuation.definition.storage.type.logtalk' ], - regex: ':-\\send_(?:object|protocol|category)(?=[.])' }, - { caseInsensitive: false, - token: 'storage.type.relations.logtalk', - regex: '\\b(?:complements|extends|i(?:nstantiates|mp(?:orts|lements))|specializes)(?=[(])' }, - { caseInsensitive: false, - todo: 'fix grouping', - token: - [ 'storage.modifier.others.logtalk', - 'punctuation.definition.storage.modifier.logtalk' ], - regex: ':-\\s(?:e(?:lse|ndif)|built_in|dynamic|synchronized|threaded)(?=[.])' }, - { caseInsensitive: false, - todo: 'fix grouping', - token: - [ 'storage.modifier.others.logtalk', - 'punctuation.definition.storage.modifier.logtalk' ], - regex: ':-\\s(?:c(?:alls|oinductive)|e(?:lif|n(?:coding|sure_loaded)|xport)|i(?:f|n(?:clude|itialization|fo))|reexport|set_(?:logtalk|prolog)_flag|uses)(?=[(])' }, - { caseInsensitive: false, - todo: 'fix grouping', - token: - [ 'storage.modifier.others.logtalk', - 'punctuation.definition.storage.modifier.logtalk' ], - regex: ':-\\s(?:alias|info|d(?:ynamic|iscontiguous)|m(?:eta_(?:non_terminal|predicate)|ode|ultifile)|p(?:ublic|r(?:otected|ivate))|op|use(?:s|_module)|synchronized)(?=[(])' }, - { token: 'keyword.operator.message-sending.logtalk', - regex: '(:|::|\\^\\^)' }, - { token: 'keyword.operator.external-call.logtalk', - regex: '([{}])' }, - { token: 'keyword.operator.mode.logtalk', regex: '(\\?|@)' }, - { token: 'keyword.operator.comparison.term.logtalk', - regex: '(@=<|@<|@>|@>=|==|\\\\==)' }, - { token: 'keyword.operator.comparison.arithmetic.logtalk', - regex: '(=<|<|>|>=|=:=|=\\\\=)' }, - { token: 'keyword.operator.bitwise.logtalk', - regex: '(<<|>>|/\\\\|\\\\/|\\\\)' }, - { token: 'keyword.operator.evaluable.logtalk', - regex: '\\b(?:e|pi|div|mod|rem)\\b(?![-!(^~])' }, - { token: 'keyword.operator.evaluable.logtalk', - regex: '(\\*\\*|\\+|-|\\*|/|//)' }, - { token: 'keyword.operator.misc.logtalk', - regex: '(:-|!|\\\\+|,|;|-->|->|=|\\=|\\.|=\\.\\.|\\^|\\bas\\b|\\bis\\b)' }, - { caseInsensitive: false, - token: 'support.function.evaluable.logtalk', - regex: '\\b(a(bs|cos|sin|tan|tan2)|c(eiling|os)|div|exp|flo(at(_(integer|fractional)_part)?|or)|log|m(ax|in|od)|r(em|ound)|s(i(n|gn)|qrt)|t(an|runcate)|xor)(?=[(])' }, - { token: 'support.function.control.logtalk', - regex: '\\b(?:true|fa(?:il|lse)|repeat|(?:instantiation|system)_error)\\b(?![-!(^~])' }, - { token: 'support.function.control.logtalk', - regex: '\\b((?:type|domain|existence|permission|representation|evaluation|resource|syntax)_error)(?=[(])' }, - { token: 'support.function.control.logtalk', - regex: '\\b(?:ca(?:ll|tch)|ignore|throw|once)(?=[(])' }, - { token: 'support.function.chars-and-bytes-io.logtalk', - regex: '\\b(?:(?:get|p(?:eek|ut))_(c(?:har|ode)|byte)|nl)(?=[(])' }, - { token: 'support.function.chars-and-bytes-io.logtalk', - regex: '\\bnl\\b' }, - { token: 'support.function.atom-term-processing.logtalk', - regex: '\\b(?:atom_(?:length|c(?:hars|o(?:ncat|des)))|sub_atom|char_code|number_c(?:har|ode)s)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.term-testing.logtalk', - regex: '\\b(?:var|atom(ic)?|integer|float|c(?:allable|ompound)|n(?:onvar|umber)|ground|acyclic_term)(?=[(])' }, - { token: 'support.function.term-comparison.logtalk', - regex: '\\b(compare)(?=[(])' }, - { token: 'support.function.term-io.logtalk', - regex: '\\b(?:read(_term)?|write(?:q|_(?:canonical|term))?|(current_)?(?:char_conversion|op))(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.term-creation-and-decomposition.logtalk', - regex: '\\b(arg|copy_term|functor|numbervars|term_variables)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.term-unification.logtalk', - regex: '\\b(subsumes_term|unify_with_occurs_check)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.stream-selection-and-control.logtalk', - regex: '\\b(?:(?:se|curren)t_(?:in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(])' }, - { token: 'support.function.stream-selection-and-control.logtalk', - regex: '\\b(?:flush_output|at_end_of_stream)\\b' }, - { token: 'support.function.prolog-flags.logtalk', - regex: '\\b((?:se|curren)t_prolog_flag)(?=[(])' }, - { token: 'support.function.compiling-and-loading.logtalk', - regex: '\\b(logtalk_(?:compile|l(?:ibrary_path|oad|oad_context)|make(_target_action)?))(?=[(])' }, - { token: 'support.function.compiling-and-loading.logtalk', - regex: '\\b(logtalk_make)\\b' }, - { caseInsensitive: false, - token: 'support.function.event-handling.logtalk', - regex: '\\b(?:(?:abolish|define)_events|current_event)(?=[(])' }, - { token: 'support.function.implementation-defined-hooks.logtalk', - regex: '\\b(?:(?:create|current|set)_logtalk_flag|halt)(?=[(])' }, - { token: 'support.function.implementation-defined-hooks.logtalk', - regex: '\\b(halt)\\b' }, - { token: 'support.function.sorting.logtalk', - regex: '\\b((key)?(sort))(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.entity-creation-and-abolishing.logtalk', - regex: '\\b((c(?:reate|urrent)|abolish)_(?:object|protocol|category))(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.reflection.logtalk', - regex: '\\b((object|protocol|category)_property|co(mplements_object|nforms_to_protocol)|extends_(object|protocol|category)|imp(orts_category|lements_protocol)|(instantiat|specializ)es_class)(?=[(])' }, - { token: 'support.function.logtalk', - regex: '\\b((?:for|retract)all)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.execution-context.logtalk', - regex: '\\b(?:context|parameter|se(?:lf|nder)|this)(?=[(])' }, - { token: 'support.function.database.logtalk', - regex: '\\b(?:a(?:bolish|ssert(?:a|z))|clause|retract(all)?)(?=[(])' }, - { token: 'support.function.all-solutions.logtalk', - regex: '\\b((?:bag|set)of|f(?:ind|or)all)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.multi-threading.logtalk', - regex: '\\b(threaded(_(call|once|ignore|exit|peek|wait|notify))?)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.engines.logtalk', - regex: '\\b(threaded_engine(_(create|destroy|self|next(?:_reified)?|yield|post|fetch))?)(?=[(])' }, - { caseInsensitive: false, - token: 'support.function.reflection.logtalk', - regex: '\\b(?:current_predicate|predicate_property)(?=[(])' }, - { token: 'support.function.event-handler.logtalk', - regex: '\\b(?:before|after)(?=[(])' }, - { token: 'support.function.message-forwarding-handler.logtalk', - regex: '\\b(forward)(?=[(])' }, - { token: 'support.function.grammar-rule.logtalk', - regex: '\\b(?:expand_(?:goal|term)|(?:goal|term)_expansion|phrase)(?=[(])' }, - { token: 'punctuation.definition.string.begin.logtalk', - regex: '\'', - push: - [ { token: 'constant.character.escape.logtalk', - regex: '\\\\([\\\\abfnrtv"\']|(x[a-fA-F0-9]+|[0-7]+)\\\\)' }, - { token: 'punctuation.definition.string.end.logtalk', - regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.logtalk' } ] }, - { token: 'punctuation.definition.string.begin.logtalk', - regex: '"', - push: - [ { token: 'constant.character.escape.logtalk', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.logtalk', - regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.logtalk' } ] }, - { token: 'constant.numeric.logtalk', - regex: '\\b(0b[0-1]+|0o[0-7]+|0x[0-9a-fA-F]+)\\b' }, - { token: 'constant.numeric.logtalk', - regex: '\\b(0\'\\\\.|0\'.|0\'\'|0\'")' }, - { token: 'constant.numeric.logtalk', - regex: '\\b(\\d+\\.?\\d*((e|E)(\\+|-)?\\d+)?)\\b' }, - { token: 'variable.other.logtalk', - regex: '\\b([A-Z_][A-Za-z0-9_]*)\\b' } ] }; - - this.normalizeRules(); -}; - -oop.inherits(LogtalkHighlightRules, TextHighlightRules); - -exports.LogtalkHighlightRules = LogtalkHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/logtalk",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/logtalk_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LogtalkHighlightRules = require("./logtalk_highlight_rules").LogtalkHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = LogtalkHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/logtalk"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/logtalk"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-lsl.js b/src-noconflict/mode-lsl.js deleted file mode 100644 index 0737996..0000000 --- a/src-noconflict/mode-lsl.js +++ /dev/null @@ -1,343 +0,0 @@ -ace.define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -oop.inherits(LSLHighlightRules, TextHighlightRules); - -function LSLHighlightRules() { - var keywordMapper = this.createKeywordMapper({ - "constant.language.float.lsl" : "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI", - "constant.language.integer.lsl": "ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR", - "constant.language.integer.boolean.lsl" : "FALSE|TRUE", - "constant.language.quaternion.lsl" : "ZERO_ROTATION", - "constant.language.string.lsl" : "EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED", - "constant.language.vector.lsl" : "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR", - "invalid.broken.lsl": "LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH", - "invalid.deprecated.lsl" : "ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect", - "invalid.illegal.lsl": "event", - "invalid.unimplemented.lsl": "CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera", - "reserved.godmode.lsl": "llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask", - "reserved.log.lsl" : "print", - "keyword.control.lsl" : "do|else|for|if|jump|return|while", - "storage.type.lsl" : "float|integer|key|list|quaternion|rotation|string|vector", - "support.function.lsl": "llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64", - "support.function.event.lsl" : "at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.line.double-slash.lsl", - regex : "\\/\\/.*$" - }, { - token : "comment.block.begin.lsl", - regex : "\\/\\*", - next : "comment" - }, { - token : "string.quoted.double.lsl", - start : '"', - end : '"', - next : [{ - token : "constant.character.escape.lsl", - regex : /\\[tn"\\]/ - }] - }, { - token : "constant.numeric.lsl", - regex : "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b" - }, { - token : "entity.name.state.lsl", - regex : "\\b((state)\\s+[A-Za-z_]\\w*|default)\\b" - }, { - token : keywordMapper, - regex : "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "support.function.user-defined.lsl", - regex : /\b([a-zA-Z_]\w*)(?=\(.*?\))/ - }, { - token : "keyword.operator.lsl", - regex : "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?" - }, { - token : "invalid.illegal.keyword.operator.lsl", - regex : ":=?" - }, { - token : "punctuation.operator.lsl", - regex : "\\,|\\;" - }, { - token : "paren.lparen.lsl", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen.lsl", - regex : "[\\]\\)\\}]" - }, { - token : "text.lsl", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.block.end.lsl", - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment.block.lsl" - } - ] - }; - this.normalizeRules(); -} - -exports.LSLHighlightRules = LSLHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Rules = require("./lsl_highlight_rules").LSLHighlightRules; -var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var oop = require("../lib/oop"); - -var Mode = function() { - this.HighlightRules = Rules; - this.$outdent = new Outdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["//"]; - - this.blockComment = { - start: "/*", - end: "*/" - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type === "comment.block.lsl") { - return indent; - } - - if (state === "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/lsl"; - this.snippetFileId = "ace/snippets/lsl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/lsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-lua.js b/src-noconflict/mode-lua.js deleted file mode 100644 index efe79fc..0000000 --- a/src-noconflict/mode-lua.js +++ /dev/null @@ -1,452 +0,0 @@ -ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - - var builtinConstants = ("true|false|nil|_G|_VERSION"); - - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - - var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "support.function": functions, - "keyword.deprecated": deprecatedIn5152, - "constant.library": stdLibaries, - "constant.language": builtinConstants, - "variable.language": "self" - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var floatNumber = "(?:" + pointFloat + ")"; - - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; - }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] - }; - - this.normalizeRules(); -}; - -oop.inherits(LuaHighlightRules, TextHighlightRules); - -exports.LuaHighlightRules = LuaHighlightRules; -}); - -ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; - this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1] == "then" && /\belseif\b/.test(line)) - return; - if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "start"; - } else if (match[2]) { - var type = session.bgTokenizer.getState(row) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[0][0] === "]") { - var type = session.bgTokenizer.getState(row - 1) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.luaBlock(session, row, match.index + 1); - - if (match[2]) - return session.getCommentFoldRange(row, match.index + 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.luaBlock(session, row, match.index + 1); - } - - if (match[0][0] === "]") - return session.getCommentFoldRange(row, match.index + 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.luaBlock = function(session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - var indentKeywords = { - "function": 1, - "do": 1, - "then": 1, - "elseif": -1, - "end": -1, - "repeat": 1, - "until": -1 - }; - - var token = stream.getCurrentToken(); - if (!token || token.type != "keyword") - return; - - var val = token.value; - var stack = [val]; - var dir = indentKeywords[val]; - - if (!dir) - return; - - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (token.type !== "keyword") - continue; - var level = dir * indentKeywords[token.value]; - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0) { - stack.shift(); - if (!stack.length && token.value != "elseif") - break; - if (level === 0) - stack.unshift(token.value); - } - } - - if (!token) - return null; - - if (tokenRange) - return stream.getCurrentTokenRange(); - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - else - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; -var LuaFoldMode = require("./folding/lua").FoldMode; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = LuaHighlightRules; - - this.foldingRules = new LuaFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - - var indentKeywords = { - "function": 1, - "then": 1, - "do": 1, - "else": 1, - "elseif": 1, - "repeat": 1, - "end": -1, - "until": -1 - }; - var outdentKeywords = [ - "else", - "elseif", - "end", - "until" - ]; - - function getNetIndentLevel(tokens) { - var level = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "keyword") { - if (token.value in indentKeywords) { - level += indentKeywords[token.value]; - } - } else if (token.type == "paren.lparen") { - level += token.value.length; - } else if (token.type == "paren.rparen") { - level -= token.value.length; - } - } - if (level < 0) { - return -1; - } else if (level > 0) { - return 1; - } else { - return 0; - } - } - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var level = 0; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (state == "start") { - level = getNetIndentLevel(tokens); - } - if (level > 0) { - return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { - if (!this.checkOutdent(state, line, "\n")) { - return indent.substr(0, indent.length - tab.length); - } - } - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (input != "\n" && input != "\r" && input != "\r\n") - return false; - - if (line.match(/^\s*[\)\}\]]$/)) - return true; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens || !tokens.length) - return false; - - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in indentKeywords) - return this.foldingRules.luaBlock(session, row, column, true); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - var column = line.match(/^\s*/)[0].length; - if (!column || !row) return; - - var startRange = this.getMatching(session, row, column + 1); - if (!startRange || startRange.start.row == row) - return; - var indent = this.$getIndent(session.getLine(startRange.start.row)); - if (indent.length != column) { - session.replace(new Range(row, 0, row, column), indent); - session.outdentRows(new Range(row + 1, 0, row + 1, 0)); - } - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/lua"; - this.snippetFileId = "ace/snippets/lua"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/lua"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-luapage.js b/src-noconflict/mode-luapage.js deleted file mode 100644 index 94fc3f3..0000000 --- a/src-noconflict/mode-luapage.js +++ /dev/null @@ -1,3028 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - - var builtinConstants = ("true|false|nil|_G|_VERSION"); - - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - - var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "support.function": functions, - "keyword.deprecated": deprecatedIn5152, - "constant.library": stdLibaries, - "constant.language": builtinConstants, - "variable.language": "self" - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var floatNumber = "(?:" + pointFloat + ")"; - - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; - }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] - }; - - this.normalizeRules(); -}; - -oop.inherits(LuaHighlightRules, TextHighlightRules); - -exports.LuaHighlightRules = LuaHighlightRules; -}); - -ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; - this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1] == "then" && /\belseif\b/.test(line)) - return; - if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "start"; - } else if (match[2]) { - var type = session.bgTokenizer.getState(row) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[0][0] === "]") { - var type = session.bgTokenizer.getState(row - 1) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.luaBlock(session, row, match.index + 1); - - if (match[2]) - return session.getCommentFoldRange(row, match.index + 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.luaBlock(session, row, match.index + 1); - } - - if (match[0][0] === "]") - return session.getCommentFoldRange(row, match.index + 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.luaBlock = function(session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - var indentKeywords = { - "function": 1, - "do": 1, - "then": 1, - "elseif": -1, - "end": -1, - "repeat": 1, - "until": -1 - }; - - var token = stream.getCurrentToken(); - if (!token || token.type != "keyword") - return; - - var val = token.value; - var stack = [val]; - var dir = indentKeywords[val]; - - if (!dir) - return; - - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (token.type !== "keyword") - continue; - var level = dir * indentKeywords[token.value]; - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0) { - stack.shift(); - if (!stack.length && token.value != "elseif") - break; - if (level === 0) - stack.unshift(token.value); - } - } - - if (!token) - return null; - - if (tokenRange) - return stream.getCurrentTokenRange(); - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - else - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; -var LuaFoldMode = require("./folding/lua").FoldMode; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = LuaHighlightRules; - - this.foldingRules = new LuaFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - - var indentKeywords = { - "function": 1, - "then": 1, - "do": 1, - "else": 1, - "elseif": 1, - "repeat": 1, - "end": -1, - "until": -1 - }; - var outdentKeywords = [ - "else", - "elseif", - "end", - "until" - ]; - - function getNetIndentLevel(tokens) { - var level = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "keyword") { - if (token.value in indentKeywords) { - level += indentKeywords[token.value]; - } - } else if (token.type == "paren.lparen") { - level += token.value.length; - } else if (token.type == "paren.rparen") { - level -= token.value.length; - } - } - if (level < 0) { - return -1; - } else if (level > 0) { - return 1; - } else { - return 0; - } - } - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var level = 0; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (state == "start") { - level = getNetIndentLevel(tokens); - } - if (level > 0) { - return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { - if (!this.checkOutdent(state, line, "\n")) { - return indent.substr(0, indent.length - tab.length); - } - } - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (input != "\n" && input != "\r" && input != "\r\n") - return false; - - if (line.match(/^\s*[\)\}\]]$/)) - return true; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens || !tokens.length) - return false; - - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in indentKeywords) - return this.foldingRules.luaBlock(session, row, column, true); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - var column = line.match(/^\s*/)[0].length; - if (!column || !row) return; - - var startRange = this.getMatching(session, row, column + 1); - if (!startRange || startRange.start.row == row) - return; - var indent = this.$getIndent(session.getLine(startRange.start.row)); - if (indent.length != column) { - session.replace(new Range(row, 0, row, column), indent); - session.outdentRows(new Range(row + 1, 0, row + 1, 0)); - } - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/lua"; - this.snippetFileId = "ace/snippets/lua"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; - -var LuaPageHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - token: "keyword", - regex: "<\\%\\=?", - push: "lua-start" - }, { - token: "keyword", - regex: "<\\?lua\\=?", - push: "lua-start" - } - ]; - - var endRules = [ - { - token: "keyword", - regex: "\\%>", - next: "pop" - }, { - token: "keyword", - regex: "\\?>", - next: "pop" - } - ]; - - this.embedRules(LuaHighlightRules, "lua-", endRules, ["start"]); - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.normalizeRules(); -}; - -oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); - -exports.LuaPageHighlightRules = LuaPageHighlightRules; - -}); - -ace.define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var LuaMode = require("./lua").Mode; -var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - - this.HighlightRules = LuaPageHighlightRules; - this.createModeDelegates({ - "lua-": LuaMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.$id = "ace/mode/luapage"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/luapage"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-lucene.js b/src-noconflict/mode-lucene.js deleted file mode 100644 index 7e38541..0000000 --- a/src-noconflict/mode-lucene.js +++ /dev/null @@ -1,154 +0,0 @@ -ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuceneHighlightRules = function() { - this.$rules = { - "start" : [ - { - token: "constant.language.escape", - regex: /\\[\-+&|!(){}\[\]^"~*?:\\]/ - }, { - token: "constant.character.negation", - regex: "\\-" - }, { - token: "constant.character.interro", - regex: "\\?" - }, { - token: "constant.character.required", - regex: "\\+" - }, { - token: "constant.character.asterisk", - regex: "\\*" - }, { - token: 'constant.character.proximity', - regex: '~(?:0\\.[0-9]+|[0-9]+)?' - }, { - token: 'keyword.operator', - regex: '(AND|OR|NOT|TO)\\b' - }, { - token: "paren.lparen", - regex: "[\\(\\{\\[]" - }, { - token: "paren.rparen", - regex: "[\\)\\}\\]]" - }, { - token: "keyword.operator", - regex: /[><=^]/ - }, { - token: "constant.numeric", - regex: /\d[\d.-]*/ - }, { - token: "string", - regex: /"(?:\\"|[^"])*"/ - }, { - token: "keyword", - regex: /(?:\\.|[^\s\-+&|!(){}\[\]^"~*?:\\])+:/, - next: "maybeRegex" - }, { - token: "term", - regex: /\w+/ - }, { - token: "text", - regex: /\s+/ - } - ], - "maybeRegex": [{ - token: "text", - regex: /\s+/ - }, { - token: "string.regexp.start", - regex: "/", - next: "regex" - }, { - regex: "", - next: "start" - }], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp.end", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.escape", - regex: "<\d+-\d+>|[~&@]" - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ] - }; -}; - -oop.inherits(LuceneHighlightRules, TextHighlightRules); - -exports.LuceneHighlightRules = LuceneHighlightRules; -}); - -ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"], function(require, exports, module) { -'use strict'; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRules; - -var Mode = function() { - this.HighlightRules = LuceneHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; - -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/lucene"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/lucene"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-makefile.js b/src-noconflict/mode-makefile.js deleted file mode 100644 index 01b27a8..0000000 --- a/src-noconflict/mode-makefile.js +++ /dev/null @@ -1,412 +0,0 @@ -ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; - var variable = "(?:" + variableName + "(?==))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ - }, { - include : "variables" - }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` - }, { - token : "string.end", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], - variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ShHighlightFile = require("./sh_highlight_rules"); - -var MakefileHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "keyword": ShHighlightFile.reservedKeywords, - "support.function.builtin": ShHighlightFile.languageConstructs, - "invalid.deprecated": "debugger" - }, "string"); - - this.$rules = - { - "start": [ - { - token: "string.interpolated.backtick.makefile", - regex: "`", - next: "shell-start" - }, - { - token: "punctuation.definition.comment.makefile", - regex: /#(?=.)/, - next: "comment" - }, - { - token: [ "keyword.control.makefile"], - regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" - }, - {// ^([^\t ]+(\s[^\t ]+)*:(?!\=))\s*.* - token: ["entity.name.function.makefile", "text"], - regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" - } - ], - "comment": [ - { - token : "punctuation.definition.comment.makefile", - regex : /.+\\/ - }, - { - token : "punctuation.definition.comment.makefile", - regex : ".+", - next : "start" - } - ], - "shell-start": [ - { - token: keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "string", - regex : "\\w+" - }, - { - token : "string.interpolated.backtick.makefile", - regex : "`", - next : "start" - } - ] -}; - -}; - -oop.inherits(MakefileHighlightRules, TextHighlightRules); - -exports.MakefileHighlightRules = MakefileHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MakefileHighlightRules = require("./makefile_highlight_rules").MakefileHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = MakefileHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.$indentWithTabs = true; - - this.$id = "ace/mode/makefile"; - this.snippetFileId = "ace/snippets/makefile"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/makefile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-markdown.js b/src-noconflict/mode-markdown.js deleted file mode 100644 index 967e5cc..0000000 --- a/src-noconflict/mode-markdown.js +++ /dev/null @@ -1,3194 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var modes = require("../config").$modes; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -}; - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - var codeBlockStartRule = { - token : "support.function", - regex : /^\s*(```+[^`]*|~~~+[^~]*)$/, - onMatch: function(value, state, stack, line) { - var m = value.match(/^(\s*)([`~]+)(.*)/); - var language = /[\w-]+|$/.exec(m[3])[0]; - if (!modes[language]) - language = ""; - stack.unshift("githubblock", [], [m[1], m[2], language], state); - return this.token; - }, - next : "githubblock" - }; - var codeBlockRules = [{ - token : "support.function", - regex : ".*", - onMatch: function(value, state, stack, line) { - var embedState = stack[1]; - var indent = stack[2][0]; - var endMarker = stack[2][1]; - var language = stack[2][2]; - - var m = /^(\s*)(`+|~+)\s*$/.exec(value); - if ( - m && m[1].length < indent.length + 3 - && m[2].length >= endMarker.length && m[2][0] == endMarker[0] - ) { - stack.splice(0, 3); - this.next = stack.shift(); - return this.token; - } - this.next = ""; - if (language && modes[language]) { - var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); - stack[1] = data.state; - return data.tokens; - } - return this.token; - } - }]; - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s|$)/, - next : "header" - }, - codeBlockStartRule, - { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\!?\\[)(" + // [ - escaped("]") + // link text or alt text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, - codeBlockStartRule, - { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : codeBlockRules - }); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return ""; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) == "start") - return "end"; - return "start"; - } - - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) !== "start") { - while (++row < maxRow) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(startRow, startColumn, row, 0); - } else { - while (row -- > 0) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(row, line.length, startRow, 0); - } - } - - var token; - function isHeading(row) { - token = session.getTokens(row)[0]; - return token && token.type.lastIndexOf(heading, 0) === 0; - } - - var heading = "markup.heading"; - function getLevel() { - var ch = token.value[0]; - if (ch == "=") return 6; - if (ch == "-") return 5; - return 7 - token.value.search(/[^#]|$/); - } - - if (isHeading(row)) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (!isHeading(row)) - continue; - var level = getLevel(); - if (level >= startHeadingLevel) - break; - } - - endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); - - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; - var variable = "(?:" + variableName + "(?==))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ - }, { - include : "variables" - }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` - }, { - token : "string.end", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], - variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { - this.HighlightRules = ShHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/sh"; - this.snippetFileId = "ace/snippets/sh"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var XmlMode = require("./xml").Mode; -var HtmlMode = require("./html").Mode; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var MarkdownFoldMode = require("./folding/markdown").FoldMode; - -var Mode = function() { - this.HighlightRules = MarkdownHighlightRules; - - this.createModeDelegates({ - javascript: require("./javascript").Mode, - html: require("./html").Mode, - bash: require("./sh").Mode, - sh: require("./sh").Mode, - xml: require("./xml").Mode, - css: require("./css").Mode - }); - - this.foldingRules = new MarkdownFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.blockComment = {start: ""}; - this.$quotes = {'"': '"', "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "listblock") { - var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); - if (!match) - return ""; - var marker = match[2]; - if (!marker) - marker = parseInt(match[3], 10) + 1 + "."; - return match[1] + marker + match[4]; - } else { - return this.$getIndent(line); - } - }; - this.$id = "ace/mode/markdown"; - this.snippetFileId = "ace/snippets/markdown"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/markdown"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mask.js b/src-noconflict/mode-mask.js deleted file mode 100644 index 9f33434..0000000 --- a/src-noconflict/mode-mask.js +++ /dev/null @@ -1,1803 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var modes = require("../config").$modes; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -}; - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - var codeBlockStartRule = { - token : "support.function", - regex : /^\s*(```+[^`]*|~~~+[^~]*)$/, - onMatch: function(value, state, stack, line) { - var m = value.match(/^(\s*)([`~]+)(.*)/); - var language = /[\w-]+|$/.exec(m[3])[0]; - if (!modes[language]) - language = ""; - stack.unshift("githubblock", [], [m[1], m[2], language], state); - return this.token; - }, - next : "githubblock" - }; - var codeBlockRules = [{ - token : "support.function", - regex : ".*", - onMatch: function(value, state, stack, line) { - var embedState = stack[1]; - var indent = stack[2][0]; - var endMarker = stack[2][1]; - var language = stack[2][2]; - - var m = /^(\s*)(`+|~+)\s*$/.exec(value); - if ( - m && m[1].length < indent.length + 3 - && m[2].length >= endMarker.length && m[2][0] == endMarker[0] - ) { - stack.splice(0, 3); - this.next = stack.shift(); - return this.token; - } - this.next = ""; - if (language && modes[language]) { - var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); - stack[1] = data.state; - return data.tokens; - } - return this.token; - } - }]; - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s|$)/, - next : "header" - }, - codeBlockStartRule, - { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\!?\\[)(" + // [ - escaped("]") + // link text or alt text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, - codeBlockStartRule, - { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : codeBlockRules - }); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -exports.MaskHighlightRules = MaskHighlightRules; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextRules = require("./text_highlight_rules").TextHighlightRules; -var JSRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var CssRules = require("./css_highlight_rules").CssHighlightRules; -var MDRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var HTMLRules = require("./html_highlight_rules").HtmlHighlightRules; - -var token_TAG = "keyword.support.constant.language", - token_COMPO = "support.function.markup.bold", - token_KEYWORD = "keyword", - token_LANG = "constant.language", - token_UTIL = "keyword.control.markup.italic", - token_ATTR = "support.variable.class", - token_PUNKT = "keyword.operator", - token_ITALIC = "markup.italic", - token_BOLD = "markup.bold", - token_LPARE = "paren.lparen", - token_RPARE = "paren.rparen"; - -var const_FUNCTIONS, - const_KEYWORDS, - const_CONST, - const_TAGS; -(function(){ - const_FUNCTIONS = lang.arrayToMap( - ("log").split("|") - ); - const_CONST = lang.arrayToMap( - (":dualbind|:bind|:import|slot|event|style|html|markdown|md").split("|") - ); - const_KEYWORDS = lang.arrayToMap( - ("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import").split("|") - ); - const_TAGS = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); -}()); - -function MaskHighlightRules () { - - this.$rules = { - "start" : [ - Token("comment", "\\/\\/.*$"), - Token("comment", "\\/\\*", [ - Token("comment", ".*?\\*\\/", "start"), - Token("comment", ".+") - ]), - - Blocks.string("'''"), - Blocks.string('"""'), - Blocks.string('"'), - Blocks.string("'"), - - Blocks.syntax(/(markdown|md)\b/, "md-multiline", "multiline"), - Blocks.syntax(/html\b/, "html-multiline", "multiline"), - Blocks.syntax(/(slot|event)\b/, "js-block", "block"), - Blocks.syntax(/style\b/, "css-block", "block"), - Blocks.syntax(/var\b/, "js-statement", "attr"), - - Blocks.tag(), - - Token(token_LPARE, "[[({>]"), - Token(token_RPARE, "[\\])};]", "start"), - { - caseInsensitive: true - } - ] - }; - var rules = this; - - addJavaScript("interpolation", /\]/, token_RPARE + "." + token_ITALIC); - addJavaScript("statement", /\)|}|;/); - addJavaScript("block", /\}/); - addCss(); - addMarkdown(); - addHtml(); - - function addJavaScript(name, escape, closeType) { - var prfx = "js-" + name + "-", - rootTokens = name === "block" ? ["start"] : ["start", "no_regex"]; - add( - JSRules - , prfx - , escape - , rootTokens - , closeType - ); - } - function addCss() { - add(CssRules, "css-block-", /\}/); - } - function addMarkdown() { - add(MDRules, "md-multiline-", /("""|''')/, []); - } - function addHtml() { - add(HTMLRules, "html-multiline-", /("""|''')/); - } - function add(Rules, strPrfx, rgxEnd, rootTokens, closeType) { - var next = "pop"; - var tokens = rootTokens || [ "start" ]; - if (tokens.length === 0) { - tokens = null; - } - if (/block|multiline/.test(strPrfx)) { - next = strPrfx + "end"; - rules.$rules[next] = [ - Token("empty", "", "start") - ]; - } - rules.embedRules( - Rules - , strPrfx - , [ Token(closeType || token_RPARE, rgxEnd, next) ] - , tokens - , tokens == null ? true : false - ); - } - - this.normalizeRules(); -} -oop.inherits(MaskHighlightRules, TextRules); - -var Blocks = { - string: function(str, next){ - var token = Token( - "string.start" - , str - , [ - Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), - Token("string.end", str, "pop"), - { - defaultToken: "string" - } - ] - , next - ); - if (str.length === 1){ - var escaped = Token("string.escape", "\\\\" + str); - token.push.unshift(escaped); - } - return token; - }, - interpolation: function(){ - return [ - Token(token_UTIL, /\s*\w*\s*:/), - "js-interpolation-start" - ]; - }, - tagHead: function (rgx) { - return Token(token_ATTR, rgx, [ - Token(token_ATTR, /[\w\-_]+/), - Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), - Blocks.goUp() - ]); - }, - tag: function () { - return { - token: 'tag', - onMatch : function(value) { - if (void 0 !== const_KEYWORDS[value]) - return token_KEYWORD; - if (void 0 !== const_CONST[value]) - return token_LANG; - if (void 0 !== const_FUNCTIONS[value]) - return "support.function"; - if (void 0 !== const_TAGS[value.toLowerCase()]) - return token_TAG; - - return token_COMPO; - }, - regex : /([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/, - push: [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , - Blocks.expression(), - Blocks.attribute(), - - Token(token_LPARE, /[;>{]/, "pop") - ] - }; - }, - syntax: function(rgx, next, type){ - return { - token: token_LANG, - regex : rgx, - push: ({ - "attr": [ - next + "-start", - Token(token_PUNKT, /;/, "start") - ], - "multiline": [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , - Blocks.attribute(), - Blocks.expression(), - Token(token_LPARE, /[>\{]/), - Token(token_PUNKT, /;/, "start"), - Token(token_LPARE, /'''|"""/, [ next + "-start" ]) - ], - "block": [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , - Blocks.attribute(), - Blocks.expression(), - Token(token_LPARE, /\{/, [ next + "-start" ]) - ] - })[type] - }; - }, - attribute: function(){ - return Token(function(value){ - return /^x\-/.test(value) - ? token_ATTR + "." + token_BOLD - : token_ATTR; - }, /[\w_-]+/, [ - Token(token_PUNKT, /\s*=\s*/, [ - Blocks.string('"'), - Blocks.string("'"), - Blocks.word(), - Blocks.goUp() - ]), - Blocks.goUp() - ]); - }, - expression: function(){ - return Token(token_LPARE, /\(/, [ "js-statement-start" ]); - }, - word: function(){ - return Token("string", /[\w-_]+/); - }, - goUp: function(){ - return Token("text", "", "pop"); - }, - goStart: function(){ - return Token("text", "", "start"); - } -}; - - -function Token(token, rgx, mix) { - var push, next, onMatch; - if (arguments.length === 4) { - push = mix; - next = arguments[3]; - } - else if (typeof mix === "string") { - next = mix; - } - else { - push = mix; - } - if (typeof token === "function") { - onMatch = token; - token = "empty"; - } - return { - token: token, - regex: rgx, - push: push, - next: next, - onMatch: onMatch - }; -} - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MaskHighlightRules = require("./mask_highlight_rules").MaskHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MaskHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/mask"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/mask"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-matlab.js b/src-noconflict/mode-matlab.js deleted file mode 100644 index 2ebc7c9..0000000 --- a/src-noconflict/mode-matlab.js +++ /dev/null @@ -1,263 +0,0 @@ -ace.define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MatlabHighlightRules = function() { - -var keywords = ( - "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while" - ); - - var builtinConstants = ( - "true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout" - ); - - var builtinFunctions = ( - "abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|"+ - "airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|" + - "audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|"+ - "bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|"+ - "bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|"+ - "camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|"+ - "computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|"+ - "getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|"+ - "getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|"+ - "getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|"+ - "getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|"+ - "hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|"+ - "renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|"+ - "setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|"+ - "cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|"+ - "clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|"+ - "commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|"+ - "copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|"+ - "cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|"+ - "dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|"+ - "demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|"+ - "dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|"+ - "erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|"+ - "expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|"+ - "fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|"+ - "findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|"+ - "frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|"+ - "get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|"+ - "guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|"+ - "hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|"+ - "hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|"+ - "ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|"+ - "1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|"+ - "isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|"+ - "isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|"+ - "isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|"+ - "lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|"+ - "linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|"+ - "lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|"+ - "matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|"+ - "MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|"+ - "minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|"+ - "multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|"+ - "ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|"+ - "NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|"+ - "getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|"+ - "inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|"+ - "setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|"+ - "ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|"+ - "orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|"+ - "permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|"+ - "polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|"+ - "PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|"+ - "getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|"+ - "rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|"+ - "restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|"+ - "saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|"+ - "setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|"+ - "spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|"+ - "str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|"+ - "strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|"+ - "support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|"+ - "textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|"+ - "transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|"+ - "uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|"+ - "uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|"+ - "userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|"+ - "view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|"+ - "what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|"+ - "ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|"+ - "pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|"+ - "cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|"+ - "template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|"+ - "controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|"+ - "dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|"+ - "fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|"+ - "pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|"+ - "gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|"+ - "jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|"+ - "LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|"+ - "mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|"+ - "sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|"+ - "nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|"+ - "pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|"+ - "Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|"+ - "rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|"+ - "robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|"+ - "statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|"+ - "ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest"+ - "adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|"+ - "bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|"+ - "cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|"+ - "entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|"+ - "getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|"+ - "iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|"+ - "imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|"+ - "imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|"+ - "imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|"+ - "imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|"+ - "imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|"+ - "iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|"+ - "isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|"+ - "medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|"+ - "reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|"+ - "rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|"+ - "warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|"+ - "linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog" - ); - var storageType = ( - "cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse" - ); - var keywordMapper = this.createKeywordMapper({ - "storage.type": storageType, - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - start: [{ - token : "string", - regex : "'", - stateName : "qstring", - next : [{ - token : "constant.language.escape", - regex : "''" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] - }, { - token : "text", - regex : "\\s+" - }, { - regex: "", - next: "noQstring" - }], - noQstring : [{ - regex: "^\\s*%{\\s*$", - token: "comment.start", - push: "blockComment" - }, { - token : "comment", - regex : "%[^\r\n]*" - }, { - token : "string", - regex : '"', - stateName : "qqstring", - next : [{ - token : "constant.language.escape", - regex : /\\./ - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }] - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=", - next: "start" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\.", - next: "start" - }, { - token : "paren.lparen", - regex : "[({\\[]", - next: "start" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }, { - token : "text", - regex : "$", - next : "start" - }], - blockComment: [{ - regex: "^\\s*%{\\s*$", - token: "comment.start", - push: "blockComment" - }, { - regex: "^\\s*%}\\s*$", - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(MatlabHighlightRules, TextHighlightRules); - -exports.MatlabHighlightRules = MatlabHighlightRules; -}); - -ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; - -var Mode = function() { - this.HighlightRules = MatlabHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "%"; - this.blockComment = {start: "%{", end: "%}"}; - - this.$id = "ace/mode/matlab"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/matlab"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-maze.js b/src-noconflict/mode-maze.js deleted file mode 100644 index 84fc016..0000000 --- a/src-noconflict/mode-maze.js +++ /dev/null @@ -1,292 +0,0 @@ -ace.define("ace/mode/maze_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MazeHighlightRules = function() { - - this.$rules = { - start: [{ - token: "keyword.control", - regex: /##|``/, - comment: "Wall" - }, { - token: "entity.name.tag", - regex: /\.\./, - comment: "Path" - }, { - token: "keyword.control", - regex: /<>/, - comment: "Splitter" - }, { - token: "entity.name.tag", - regex: /\*[\*A-Za-z0-9]/, - comment: "Signal" - }, { - token: "constant.numeric", - regex: /[0-9]{2}/, - comment: "Pause" - }, { - token: "keyword.control", - regex: /\^\^/, - comment: "Start" - }, { - token: "keyword.control", - regex: /\(\)/, - comment: "Hole" - }, { - token: "support.function", - regex: />>/, - comment: "Out" - }, { - token: "support.function", - regex: />\//, - comment: "Ln Out" - }, { - token: "support.function", - regex: /< *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/, - comment: "Assignment function" - }, { - token: [ - "entity.name.function", - "keyword.other", - "keyword.control", - "keyword.other", - "keyword.operator", - "keyword.other", - "keyword.operator", - "constant.numeric", - "entity.name.tag", - "keyword.other", - "keyword.control", - "keyword.other", - "constant.language", - "keyword.other", - "keyword.control", - "keyword.other", - "constant.language" - ], - regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/, - comment: "Equality Function" - }, { - token: "entity.name.function", - regex: /[A-Za-z][A-Za-z0-9]/, - comment: "Function cell" - }, { - token: "comment.line.double-slash", - regex: / *\/\/.*/, - comment: "Comment" - }] - }; - - this.normalizeRules(); -}; - -MazeHighlightRules.metaData = { - fileTypes: ["mz"], - name: "Maze", - scopeName: "source.maze" -}; - - -oop.inherits(MazeHighlightRules, TextHighlightRules); - -exports.MazeHighlightRules = MazeHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MazeHighlightRules = require("./maze_highlight_rules").MazeHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MazeHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/maze"; - this.snippetFileId = "ace/snippets/maze"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/maze"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mediawiki.js b/src-noconflict/mode-mediawiki.js deleted file mode 100644 index 0fbad3e..0000000 --- a/src-noconflict/mode-mediawiki.js +++ /dev/null @@ -1,592 +0,0 @@ -ace.define("ace/mode/mediawiki_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MediaWikiHighlightRules = function() { - this.$rules = { - start: [{ - include: "#switch" - }, { - include: "#redirect" - }, { - include: "#variable" - }, { - include: "#comment" - }, { - include: "#entity" - }, { - include: "#emphasis" - }, { - include: "#tag" - }, { - include: "#table" - }, { - include: "#hr" - }, { - include: "#heading" - }, { - include: "#link" - }, { - include: "#list" - }, { - include: "#template" - }], - "#hr": [{ - token: "markup.bold", - regex: /^[-]{4,}/ - }], - "#switch": [{ - token: "constant.language", - regex: /(__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__NEWSECTIONLINK__|__NONEWSECTIONLINK__|__NOWYSIWYG__|__NOGALLERY__|__HIDDENCAT__|__EXPECTUNUSEDCATEGORY__|__NOCONTENTCONVERT__|__NOCC__|__NOTITLECONVERT__|__NOTC__|__START__|__END__|__INDEX__|__NOINDEX__|__STATICREDIRECT__|__NOGLOBAL__|__DISAMBIG__)/ - }], - "#redirect": [{ - token: [ - "keyword.control.redirect", - "meta.keyword.control" - ], - regex: /(^#REDIRECT|^#redirect|^#Redirect)(\s+)/ - }], - "#variable": [{ - token: "storage.type.variable", - regex: /{{{/, - push: [{ - token: "storage.type.variable", - regex: /}}}/, - next: "pop" - }, { - token: [ - "text", - "variable.other", - "text", - "keyword.operator" - ], - regex: /(\s*)(\w+)(\s*)((?:\|)?)/ - }, { - defaultToken: "storage.type.variable" - }] - }], - "#entity": [{ - token: "constant.character.entity", - regex: /&\w+;/ - }], - "#list": [{ - token: "markup.bold", - regex: /^[#*;:]+/, - push: [{ - token: "markup.list", - regex: /$/, - next: "pop" - }, { - include: "$self" - }, { - defaultToken: "markup.list" - }] - }], - "#template": [{ - token: [ - "storage.type.function", - "meta.template", - "entity.name.function", - "meta.template" - ], - regex: /({{)(\s*)([#\w: ]+)(\s*)/, - push: [{ - token: "storage.type.function", - regex: /}}/, - next: "pop" - }, { - token: [ - "storage", - "meta.structure.dictionary", - "support.type.property-name", - "meta.structure.dictionary", - "punctuation.separator.dictionary.key-value", - "meta.structure.dictionary", - "meta.structure.dictionary.value" - ], - regex: /(\|)(\s*)([a-zA-Z-]*)(\s*)(=)(\s*)([^|}]*)/, - push: [{ - token: "meta.structure.dictionary", - regex: /(?=}}|[|])/, - next: "pop" - }, { - defaultToken: "meta.structure.dictionary" - }] - }, { - token: ["storage", "meta.template.value"], - regex: /(\|)(.*?)/, - push: [{ - token: [], - regex: /(?=}}|[|])/, - next: "pop" - }, { - include: "$self" - }, { - defaultToken: "meta.template.value" - }] - }, { - defaultToken: "meta.template" - }] - }], - "#link": [{ - token: [ - "punctuation.definition.tag.begin", - "meta.tag.link.internal", - "entity.name.tag", - "meta.tag.link.internal", - "string.other.link.title", - "meta.tag.link.internal", - "punctuation.definition.tag" - ], - regex: /(\[\[)(\s*)((?:Category|Wikipedia)?)(:?)([^\]\]\|]+)(\s*)((?:\|)*)/, - push: [{ - token: "punctuation.definition.tag.end", - regex: /\]\]/, - next: "pop" - }, { - include: "$self" - }, { - defaultToken: "meta.tag.link.internal" - }] - }, { - token: [ - "punctuation.definition.tag.begin", - "meta.tag.link.external", - "meta.tag.link.external", - "string.unquoted", - "punctuation.definition.tag.end" - ], - regex: /(\[)(.*?)([\s]+)(.*?)(\])/ - }], - "#comment": [{ - token: "punctuation.definition.comment.html", - regex: //, - next: "pop" - }, { - defaultToken: "comment.block.html" - }] - }], - "#emphasis": [{ - token: [ - "punctuation.definition.tag.begin", - "markup.italic.bold", - "punctuation.definition.tag.end" - ], - regex: /(''''')(?!')(.*?)('''''|$)/ - }, { - token: [ - "punctuation.definition.tag.begin", - "markup.bold", - "punctuation.definition.tag.end" - ], - regex: /(''')(?!')(.*?)('''|$)/ - }, { - token: [ - "punctuation.definition.tag.begin", - "markup.italic", - "punctuation.definition.tag.end" - ], - regex: /('')(?!')(.*?)(''|$)/ - }], - "#heading": [{ - token: [ - "punctuation.definition.heading", - "entity.name.section", - "punctuation.definition.heading" - ], - regex: /(={1,6})(.+?)(\1)(?!=)/ - }], - "#tag": [{ - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag", - "meta.tag.block.ref", - "punctuation.definition.tag.end" - ], - regex: /(<)(ref)((?:\s+.*?)?)(>)/, - caseInsensitive: true, - push: [{ - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag", - "meta.tag.block.ref", - "punctuation.definition.tag.end" - ], - regex: /(<\/)(ref)(\s*)(>)/, - caseInsensitive: true, - next: "pop" - }, { - include: "$self" - }, { - defaultToken: "meta.tag.block.ref" - }] - }, - { - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag", - "meta.tag.block.nowiki", - "punctuation.definition.tag.end" - ], - regex: /(<)(nowiki)((?:\s+.*?)?)(>)/, - caseInsensitive: true, - push: [{ - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag", - "meta.tag.block.nowiki", - "punctuation.definition.tag.end" - ], - regex: /(<\/)(nowiki)(\s*)(>)/, - caseInsensitive: true, - next: "pop" - }, { - defaultToken: "meta.tag.block.nowiki" - }] - }, { - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag" - ], - regex: /(<\/?)(noinclude|includeonly|onlyinclude)(?=\W)/, - caseInsensitive: true, - push: [{ - token: [ - "invalid.illegal", - "punctuation.definition.tag.end" - ], - regex: /((?:\/)?)(>)/, - next: "pop" - }, { - include: "#attribute" - }, { - defaultToken: "meta.tag.block.any" - }] - }, { - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag" - ], - regex: /(<)(br|wbr|hr|meta|link)(?=\W)/, - caseInsensitive: true, - push: [{ - token: "punctuation.definition.tag.end", - regex: /\/?>/, - next: "pop" - }, { - include: "#attribute" - }, { - defaultToken: "meta.tag.other" - }] - }, { - token: [ - "punctuation.definition.tag.begin", - "entity.name.tag" - ], - regex: /(<\/?)(div|center|span|h1|h2|h3|h4|h5|h6|bdo|em|strong|cite|dfn|code|samp|kbd|var|abbr|blockquote|q|sub|sup|p|pre|ins|del|ul|ol|li|dl|dd|dt|table|caption|thead|tfoot|tbody|colgroup|col|tr|td|th|a|img|video|source|track|tt|b|i|big|small|strike|s|u|font|ruby|rb|rp|rt|rtc|math|figure|figcaption|bdi|data|time|mark|html)(?=\W)/, - caseInsensitive: true, - push: [{ - token: [ - "invalid.illegal", - "punctuation.definition.tag.end" - ], - regex: /((?:\/)?)(>)/, - next: "pop" - }, { - include: "#attribute" - }, { - defaultToken: "meta.tag.block" - }] - }, { - token: [ - "punctuation.definition.tag.begin", - "invalid.illegal" - ], - regex: /(<\/)(br|wbr|hr|meta|link)(?=\W)/, - caseInsensitive: true, - push: [{ - token: "punctuation.definition.tag.end", - regex: /\/?>/, - next: "pop" - }, { - include: "#attribute" - }, { - defaultToken: "meta.tag.other" - }] - }], - "#caption": [{ - token: [ - "meta.tag.block.table-caption", - "punctuation.definition.tag.begin" - ], - regex: /^(\s*)(\|\+)/, - push: [{ - token: "meta.tag.block.table-caption", - regex: /$/, - next: "pop" - }, { - defaultToken: "meta.tag.block.table-caption" - }] - }], - "#tr": [{ - token: [ - "meta.tag.block.tr", - "punctuation.definition.tag.begin", - "meta.tag.block.tr", - "invalid.illegal" - ], - regex: /^(\s*)(\|\-)([\s]*)(.*)/ - }], - "#th": [{ - token: [ - "meta.tag.block.th.heading", - "punctuation.definition.tag.begin", - "meta.tag.block.th.heading", - "punctuation.definition.tag", - "markup.bold" - ], - regex: /^(\s*)(!)(?:(.*?)(\|))?(.*?)(?=!!|$)/, - push: [{ - token: "meta.tag.block.th.heading", - regex: /$/, - next: "pop" - }, { - token: [ - "punctuation.definition.tag.begin", - "meta.tag.block.th.inline", - "punctuation.definition.tag", - "markup.bold" - ], - regex: /(!!)(?:(.*?)(\|))?(.*?)(?=!!|$)/ - }, { - include: "$self" - }, { - defaultToken: "meta.tag.block.th.heading" - }] - }], - "#td": [{ - token: [ - "meta.tag.block.td", - "punctuation.definition.tag.begin" - ], - regex: /^(\s*)(\|)/, - push: [{ - token: "meta.tag.block.td", - regex: /$/, - next: "pop" - }, { - include: "$self" - }, { - defaultToken: "meta.tag.block.td" - }] - }], - "#table": [{ - patterns: [{ - name: "meta.tag.block.table", - begin: "^\\s*({\\|)(.*?)$", - end: "^\\s*\\|}", - beginCaptures: { - 1: { - name: "punctuation.definition.tag.begin" - }, - 2: { - patterns: [{ - include: "#attribute" - }] - }, - 3: { - name: "invalid.illegal" - } - }, - endCaptures: { - 0: { - name: "punctuation.definition.tag.end" - } - }, - patterns: [{ - include: "#comment" - }, { - include: "#template" - }, { - include: "#caption" - }, { - include: "#tr" - }, { - include: "#th" - }, { - include: "#td" - }] - }], - repository: { - caption: { - name: "meta.tag.block.table-caption", - begin: "^\\s*(\\|\\+)", - end: "$", - beginCaptures: { - 1: { - name: "punctuation.definition.tag.begin" - } - } - }, - tr: { - name: "meta.tag.block.tr", - match: "^\\s*(\\|\\-)[\\s]*(.*)", - captures: { - 1: { - name: "punctuation.definition.tag.begin" - }, - 2: { - name: "invalid.illegal" - } - } - }, - th: { - name: "meta.tag.block.th.heading", - begin: "^\\s*(!)((.*?)(\\|))?(.*?)(?=(!!)|$)", - end: "$", - beginCaptures: { - 1: { - name: "punctuation.definition.tag.begin" - }, - 3: { - patterns: [{ - include: "#attribute" - }] - }, - 4: { - name: "punctuation.definition.tag" - }, - 5: { - name: "markup.bold" - } - }, - patterns: [{ - name: "meta.tag.block.th.inline", - match: "(!!)((.*?)(\\|))?(.*?)(?=(!!)|$)", - captures: { - 1: { - name: "punctuation.definition.tag.begin" - }, - 3: { - patterns: [{ - include: "#attribute" - }] - }, - 4: { - name: "punctuation.definition.tag" - }, - 5: { - name: "markup.bold" - } - } - }, { - include: "$self" - }] - }, - td: { - name: "meta.tag.block.td", - begin: "^\\s*(\\|)", - end: "$", - beginCaptures: { - 1: { - name: "punctuation.definition.tag.begin" - }, - 2: { - patterns: [{ - include: "#attribute" - }] - }, - 3: { - name: "punctuation.definition.tag" - } - }, - patterns: [{ - include: "$self" - }] - } - } - }], - "#attribute": [{ - include: "#string" - }, { - token: "entity.other.attribute-name", - regex: /\w+/ - }], - "#string": [{ - token: "string.quoted.double", - regex: /\"/, - push: [{ - token: "string.quoted.double", - regex: /\"/, - next: "pop" - }, { - defaultToken: "string.quoted.double" - }] - }, { - token: "string.quoted.single", - regex: /\'/, - push: [{ - token: "string.quoted.single", - regex: /\'/, - next: "pop" - }, { - defaultToken: "string.quoted.single" - }] - }], - "#url": [{ - token: "markup.underline.link", - regex: /(?:http(?:s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:\/?#\[\]@!\$&'\(\)\*\+,;=.]+/ - }, { - token: "invalid.illegal", - regex: /.*/ - }] - }; - - - this.normalizeRules(); -}; - -MediaWikiHighlightRules.metaData = { - name: "MediaWiki", - scopeName: "text.html.mediawiki", - fileTypes: ["mediawiki", "wiki"] -}; - - -oop.inherits(MediaWikiHighlightRules, TextHighlightRules); - -exports.MediaWikiHighlightRules = MediaWikiHighlightRules; -}); - -ace.define("ace/mode/mediawiki",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mediawiki_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MediaWikiHighlightRules = require("./mediawiki_highlight_rules").MediaWikiHighlightRules; - -var Mode = function() { - this.HighlightRules = MediaWikiHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.blockComment = {start: ""}; - this.$id = "ace/mode/mediawiki"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/mediawiki"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mel.js b/src-noconflict/mode-mel.js deleted file mode 100644 index 4348d30..0000000 --- a/src-noconflict/mode-mel.js +++ /dev/null @@ -1,263 +0,0 @@ -ace.define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MELHighlightRules = function() { - - this.$rules = { start: - [ { caseInsensitive: true, - token: 'storage.type.mel', - regex: '\\b(matrix|string|vector|float|int|void)\\b' }, - { caseInsensitive: true, - token: 'support.function.mel', - regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, - { caseInsensitive: true, - token: 'support.constant.mel', - regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, - { caseInsensitive: true, - token: 'keyword.control.mel', - regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, - { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, - { caseInsensitive: true, - token: 'constant.language.mel', - regex: '\\b(null|undefined)\\b' }, - { token: 'constant.numeric.mel', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.mel', - regex: '"', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', - regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.mel' } ] }, - - { token: [ 'variable.other.mel', 'punctuation.definition.variable.mel' ], - regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, - - { token: 'punctuation.definition.string.begin.mel', - regex: '\'', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', - regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.mel' } ] }, - - { token: 'constant.language.mel', - regex: '\\b(false|true|yes|no|on|off)\\b' }, - - { token: 'punctuation.definition.comment.mel', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.mel', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.mel' } ] }, - - { token: [ 'comment.line.double-slash.mel', 'punctuation.definition.comment.mel' ], - regex: '(//)(.*$\\n?)' }, - - { caseInsensitive: true, - token: 'keyword.operator.mel', - regex: '\\b(instanceof)\\b' }, - { token: 'keyword.operator.symbolic.mel', - regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, - - { token: [ 'meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel' ], - regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, - - { token: [ 'meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel' ], - regex: '(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()', - push: - [ { include: '$self' }, - { token: 'punctuation.section.function.mel', - regex: '\\)', - next: 'pop' }, - { defaultToken: 'meta.function.mel' } ] } - - ] }; - - this.normalizeRules(); -}; - -oop.inherits(MELHighlightRules, TextHighlightRules); - -exports.MELHighlightRules = MELHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MELHighlightRules = require("./mel_highlight_rules").MELHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MELHighlightRules; - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/mel"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/mel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mips.js b/src-noconflict/mode-mips.js deleted file mode 100644 index ce61bfd..0000000 --- a/src-noconflict/mode-mips.js +++ /dev/null @@ -1,264 +0,0 @@ -ace.define("ace/mode/mips_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MIPSHighlightRules = function() { - - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - - this.$rules = { - start: [{ - token: "storage.modifier.mips", - regex: /\.\b(?:align|ascii|asciiz|byte|double|extern|float|globl|space|word)\b/, - comment: "Assembler directives for data storage" - }, { - token: "entity.name.section.mips", - regex: /\.\b(?:data|text|kdata|ktext|)\b/, - comment: "Segements: .data .text" - }, { - token: "variable.parameter.mips", - regex: /\$(?:(?:3[01]|[12]?[0-9]|[0-9])|zero|at|v[01]|a[0-3]|s[0-7]|t[0-9]|k[01]|gp|sp|fp|ra)/, - comment: "Registers by id $1, $2, ..." - }, { - token: "variable.parameter.mips", - regex: /\$f(?:[0-9]|[1-2][0-9]|3[0-1])/, - comment: "Floating point registers" - }, { - token: "support.function.source.mips", - regex: /\b(?:(?:add|sub|div|l|mov|mult|neg|s|c\.eq|c\.le|c\.lt)\.[ds]|cvt\.s\.[dw]|cvt\.d\.[sw]|cvt\.w\.[ds]|bc1[tf])\b/, - comment: "The MIPS floating-point instruction set" - }, { - token: "support.function.source.mips", - regex: /\b(?:add|addu|addi|addiu|sub|subu|and|andi|or|not|ori|nor|xor|xori|slt|sltu|slti|sltiu|sll|sllv|rol|srl|sra|srlv|ror|j|jr|jal|beq|bne|lw|sw|lb|sb|lui|move|mfhi|mflo|mthi|mtlo)\b/, - comment: "Just the hardcoded instructions provided by the MIPS assembly language" - }, { - token: "support.function.other.mips", - regex: /\b(?:abs|b|beqz|bge|bgt|bgtu|ble|bleu|blt|bltu|bnez|div|divu|la|li|move|mul|neg|not|rem|remu|seq|sge|sgt|sle|sne)\b/, - comment: "Pseudo instructions" - }, { - token: "entity.name.function.mips", - regex: /\bsyscall\b/, - comment: "Other" - }, { - token : "string", // character - regex : "(?:'\")(?:" + escapeRe + "|.)?(?:'\")" - }, { - token : "string.start", - regex : '\'', - stateName: "qstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "string.end", regex: '\'|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token: "constant.numeric.mips", - regex: /\b(?:\d+|0(?:x|X)[a-fA-F0-9]+)\b/, - comment: "Numbers like +12, -3, 55, 0x3F" - }, { - token: "entity.name.tag.mips", - regex: /\b[\w]+\b:/, - comment: "Labels at line start: begin_repeat: add ..." - }, { - token: "comment.assembly", - regex: /#.*$/, - comment: "Single line comments" - }] - }; - - this.normalizeRules(); -}; - -MIPSHighlightRules.metaData = { - fileTypes: ["s", "asm"], - name: "MIPS", - scopeName: "source.mips" -}; - - -oop.inherits(MIPSHighlightRules, TextHighlightRules); - -exports.MIPSHighlightRules = MIPSHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/mips",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mips_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MIPSHighlightRules = require("./mips_highlight_rules").MIPSHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MIPSHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ["#"]; - this.$id = "ace/mode/mips"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/mips"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mixal.js b/src-noconflict/mode-mixal.js deleted file mode 100644 index c49f13d..0000000 --- a/src-noconflict/mode-mixal.js +++ /dev/null @@ -1,122 +0,0 @@ -ace.define("ace/mode/mixal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MixalHighlightRules = function() { - var isValidSymbol = function(string) { - return string && string.search(/^[A-Z\u0394\u03a0\u03a30-9]{1,10}$/) > -1 && string.search(/[A-Z\u0394\u03a0\u03a3]/) > -1; - }; - - var isValidOp = function(op) { - return op && [ - 'NOP', 'ADD', 'FADD', 'SUB', 'FSUB', 'MUL', 'FMUL', 'DIV', 'FDIV', 'NUM', 'CHAR', 'HLT', - 'SLA', 'SRA', 'SLAX', 'SRAX', 'SLC', 'SRC', 'MOVE', 'LDA', 'LD1', 'LD2', 'LD3', 'LD4', - 'LD5', 'LD6', 'LDX', 'LDAN', 'LD1N', 'LD2N', 'LD3N', 'LD4N', 'LD5N', 'LD6N', 'LDXN', - 'STA', 'ST1', 'ST2', 'ST3', 'ST4', 'ST5', 'ST6', 'STX', 'STJ', 'STZ', 'JBUS', 'IOC', - 'IN', 'OUT', 'JRED', 'JMP', 'JSJ', 'JOV', 'JNOV', 'JL', 'JE', 'JG', 'JGE', 'JNE', 'JLE', - 'JAN', 'JAZ', 'JAP', 'JANN', 'JANZ', 'JANP', 'J1N', 'J1Z', 'J1P', 'J1NN', 'J1NZ', - 'J1NP', 'J2N', 'J2Z', 'J2P', 'J2NN', 'J2NZ', 'J2NP','J3N', 'J3Z', 'J3P', 'J3NN', 'J3NZ', - 'J3NP', 'J4N', 'J4Z', 'J4P', 'J4NN', 'J4NZ', 'J4NP', 'J5N', 'J5Z', 'J5P', 'J5NN', - 'J5NZ', 'J5NP','J6N', 'J6Z', 'J6P', 'J6NN', 'J6NZ', 'J6NP', 'JXAN', 'JXZ', 'JXP', - 'JXNN', 'JXNZ', 'JXNP', 'INCA', 'DECA', 'ENTA', 'ENNA', 'INC1', 'DEC1', 'ENT1', 'ENN1', - 'INC2', 'DEC2', 'ENT2', 'ENN2', 'INC3', 'DEC3', 'ENT3', 'ENN3', 'INC4', 'DEC4', 'ENT4', - 'ENN4', 'INC5', 'DEC5', 'ENT5', 'ENN5', 'INC6', 'DEC6', 'ENT6', 'ENN6', 'INCX', 'DECX', - 'ENTX', 'ENNX', 'CMPA', 'FCMP', 'CMP1', 'CMP2', 'CMP3', 'CMP4', 'CMP5', 'CMP6', 'CMPX', - 'EQU', 'ORIG', 'CON', 'ALF', 'END' - ].indexOf(op) > -1; - }; - - var containsOnlySupportedCharacters = function(string) { - return string && string.search(/[^ A-Z\u0394\u03a0\u03a30-9.,()+*/=$<>@;:'-]/) == -1; - }; - - this.$rules = { - "start" : [{ - token: "comment.line.character", - regex: /^ *\*.*$/ - }, { - token: function(label, space0, keyword, space1, literal, comment) { - return [ - isValidSymbol(label) ? "variable.other" : "invalid.illegal", - "text", - "keyword.control", - "text", - containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", - "comment.line.character" - ]; - }, - regex: /^(\S+)?( +)(ALF)( )(.{5})(\s+.*)?$/ - }, { - token: function(label, space0, keyword, space1, literal, comment) { - return [ - isValidSymbol(label) ? "variable.other" : "invalid.illegal", - "text", - "keyword.control", - "text", - containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", - "comment.line.character" - ]; - }, - regex: /^(\S+)?( +)(ALF)( )(\S.{4})(\s+.*)?$/ - }, { - token: function(label, space0, op, comment) { - return [ - isValidSymbol(label) ? "variable.other" : "invalid.illegal", - "text", - isValidOp(op) ? "keyword.control" : "invalid.illegal", - "comment.line.character" - ]; - }, - regex: /^(\S+)?( +)(\S+)(?:\s*)$/ - }, { - token: function(label, space0, op, space1, address, comment) { - return [ - isValidSymbol(label) ? "variable.other" : "invalid.illegal", - "text", - isValidOp(op) ? "keyword.control" : "invalid.illegal", - "text", - containsOnlySupportedCharacters(address) ? "text" : "invalid.illegal", - "comment.line.character" - ]; - }, - regex: /^(\S+)?( +)(\S+)( +)(\S+)(\s+.*)?$/ - }, { - defaultToken: "text" - }] - }; -}; - -oop.inherits(MixalHighlightRules, TextHighlightRules); - -exports.MixalHighlightRules = MixalHighlightRules; - -}); - -ace.define("ace/mode/mixal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mixal_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MixalHighlightRules = require("./mixal_highlight_rules").MixalHighlightRules; - -var Mode = function() { - this.HighlightRules = MixalHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/mixal"; - this.lineCommentStart = "*"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/mixal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mushcode.js b/src-noconflict/mode-mushcode.js deleted file mode 100644 index 58a8f90..0000000 --- a/src-noconflict/mode-mushcode.js +++ /dev/null @@ -1,681 +0,0 @@ -ace.define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MushCodeRules = function() { - - - var keywords = ( - "@if|"+ - "@ifelse|"+ - "@switch|"+ - "@halt|"+ - "@dolist|"+ - "@create|"+ - "@scent|"+ - "@sound|"+ - "@touch|"+ - "@ataste|"+ - "@osound|"+ - "@ahear|"+ - "@aahear|"+ - "@amhear|"+ - "@otouch|"+ - "@otaste|"+ - "@drop|"+ - "@odrop|"+ - "@adrop|"+ - "@dropfail|"+ - "@odropfail|"+ - "@smell|"+ - "@oemit|"+ - "@emit|"+ - "@pemit|"+ - "@parent|"+ - "@clone|"+ - "@taste|"+ - "whisper|"+ - "page|"+ - "say|"+ - "pose|"+ - "semipose|"+ - "teach|"+ - "touch|"+ - "taste|"+ - "smell|"+ - "listen|"+ - "look|"+ - "move|"+ - "go|"+ - "home|"+ - "follow|"+ - "unfollow|"+ - "desert|"+ - "dismiss|"+ - "@tel" - ); - - var builtinConstants = ( - "=#0" - ); - - var builtinFunctions = ( - "default|"+ - "edefault|"+ - "eval|"+ - "get_eval|"+ - "get|"+ - "grep|"+ - "grepi|"+ - "hasattr|"+ - "hasattrp|"+ - "hasattrval|"+ - "hasattrpval|"+ - "lattr|"+ - "nattr|"+ - "poss|"+ - "udefault|"+ - "ufun|"+ - "u|"+ - "v|"+ - "uldefault|"+ - "xget|"+ - "zfun|"+ - "band|"+ - "bnand|"+ - "bnot|"+ - "bor|"+ - "bxor|"+ - "shl|"+ - "shr|"+ - "and|"+ - "cand|"+ - "cor|"+ - "eq|"+ - "gt|"+ - "gte|"+ - "lt|"+ - "lte|"+ - "nand|"+ - "neq|"+ - "nor|"+ - "not|"+ - "or|"+ - "t|"+ - "xor|"+ - "con|"+ - "entrances|"+ - "exit|"+ - "followers|"+ - "home|"+ - "lcon|"+ - "lexits|"+ - "loc|"+ - "locate|"+ - "lparent|"+ - "lsearch|"+ - "next|"+ - "num|"+ - "owner|"+ - "parent|"+ - "pmatch|"+ - "rloc|"+ - "rnum|"+ - "room|"+ - "where|"+ - "zone|"+ - "worn|"+ - "held|"+ - "carried|"+ - "acos|"+ - "asin|"+ - "atan|"+ - "ceil|"+ - "cos|"+ - "e|"+ - "exp|"+ - "fdiv|"+ - "fmod|"+ - "floor|"+ - "log|"+ - "ln|"+ - "pi|"+ - "power|"+ - "round|"+ - "sin|"+ - "sqrt|"+ - "tan|"+ - "aposs|"+ - "andflags|"+ - "conn|"+ - "commandssent|"+ - "controls|"+ - "doing|"+ - "elock|"+ - "findable|"+ - "flags|"+ - "fullname|"+ - "hasflag|"+ - "haspower|"+ - "hastype|"+ - "hidden|"+ - "idle|"+ - "isbaker|"+ - "lock|"+ - "lstats|"+ - "money|"+ - "who|"+ - "name|"+ - "nearby|"+ - "obj|"+ - "objflags|"+ - "photo|"+ - "poll|"+ - "powers|"+ - "pendingtext|"+ - "receivedtext|"+ - "restarts|"+ - "restarttime|"+ - "subj|"+ - "shortestpath|"+ - "tmoney|"+ - "type|"+ - "visible|"+ - "cat|"+ - "element|"+ - "elements|"+ - "extract|"+ - "filter|"+ - "filterbool|"+ - "first|"+ - "foreach|"+ - "fold|"+ - "grab|"+ - "graball|"+ - "index|"+ - "insert|"+ - "itemize|"+ - "items|"+ - "iter|"+ - "last|"+ - "ldelete|"+ - "map|"+ - "match|"+ - "matchall|"+ - "member|"+ - "mix|"+ - "munge|"+ - "pick|"+ - "remove|"+ - "replace|"+ - "rest|"+ - "revwords|"+ - "setdiff|"+ - "setinter|"+ - "setunion|"+ - "shuffle|"+ - "sort|"+ - "sortby|"+ - "splice|"+ - "step|"+ - "wordpos|"+ - "words|"+ - "add|"+ - "lmath|"+ - "max|"+ - "mean|"+ - "median|"+ - "min|"+ - "mul|"+ - "percent|"+ - "sign|"+ - "stddev|"+ - "sub|"+ - "val|"+ - "bound|"+ - "abs|"+ - "inc|"+ - "dec|"+ - "dist2d|"+ - "dist3d|"+ - "div|"+ - "floordiv|"+ - "mod|"+ - "modulo|"+ - "remainder|"+ - "vadd|"+ - "vdim|"+ - "vdot|"+ - "vmag|"+ - "vmax|"+ - "vmin|"+ - "vmul|"+ - "vsub|"+ - "vunit|"+ - "regedit|"+ - "regeditall|"+ - "regeditalli|"+ - "regediti|"+ - "regmatch|"+ - "regmatchi|"+ - "regrab|"+ - "regraball|"+ - "regraballi|"+ - "regrabi|"+ - "regrep|"+ - "regrepi|"+ - "after|"+ - "alphamin|"+ - "alphamax|"+ - "art|"+ - "before|"+ - "brackets|"+ - "capstr|"+ - "case|"+ - "caseall|"+ - "center|"+ - "containsfansi|"+ - "comp|"+ - "decompose|"+ - "decrypt|"+ - "delete|"+ - "edit|"+ - "encrypt|"+ - "escape|"+ - "if|"+ - "ifelse|"+ - "lcstr|"+ - "left|"+ - "lit|"+ - "ljust|"+ - "merge|"+ - "mid|"+ - "ostrlen|"+ - "pos|"+ - "repeat|"+ - "reverse|"+ - "right|"+ - "rjust|"+ - "scramble|"+ - "secure|"+ - "space|"+ - "spellnum|"+ - "squish|"+ - "strcat|"+ - "strmatch|"+ - "strinsert|"+ - "stripansi|"+ - "stripfansi|"+ - "strlen|"+ - "switch|"+ - "switchall|"+ - "table|"+ - "tr|"+ - "trim|"+ - "ucstr|"+ - "unsafe|"+ - "wrap|"+ - "ctitle|"+ - "cwho|"+ - "channels|"+ - "clock|"+ - "cflags|"+ - "ilev|"+ - "itext|"+ - "inum|"+ - "convsecs|"+ - "convutcsecs|"+ - "convtime|"+ - "ctime|"+ - "etimefmt|"+ - "isdaylight|"+ - "mtime|"+ - "secs|"+ - "msecs|"+ - "starttime|"+ - "time|"+ - "timefmt|"+ - "timestring|"+ - "utctime|"+ - "atrlock|"+ - "clone|"+ - "create|"+ - "cook|"+ - "dig|"+ - "emit|"+ - "lemit|"+ - "link|"+ - "oemit|"+ - "open|"+ - "pemit|"+ - "remit|"+ - "set|"+ - "tel|"+ - "wipe|"+ - "zemit|"+ - "fbcreate|"+ - "fbdestroy|"+ - "fbwrite|"+ - "fbclear|"+ - "fbcopy|"+ - "fbcopyto|"+ - "fbclip|"+ - "fbdump|"+ - "fbflush|"+ - "fbhset|"+ - "fblist|"+ - "fbstats|"+ - "qentries|"+ - "qentry|"+ - "play|"+ - "ansi|"+ - "break|"+ - "c|"+ - "asc|"+ - "die|"+ - "isdbref|"+ - "isint|"+ - "isnum|"+ - "isletters|"+ - "linecoords|"+ - "localize|"+ - "lnum|"+ - "nameshort|"+ - "null|"+ - "objeval|"+ - "r|"+ - "rand|"+ - "s|"+ - "setq|"+ - "setr|"+ - "soundex|"+ - "soundslike|"+ - "valid|"+ - "vchart|"+ - "vchart2|"+ - "vlabel|"+ - "@@|"+ - "bakerdays|"+ - "bodybuild|"+ - "box|"+ - "capall|"+ - "catalog|"+ - "children|"+ - "ctrailer|"+ - "darttime|"+ - "debt|"+ - "detailbar|"+ - "exploredroom|"+ - "fansitoansi|"+ - "fansitoxansi|"+ - "fullbar|"+ - "halfbar|"+ - "isdarted|"+ - "isnewbie|"+ - "isword|"+ - "lambda|"+ - "lobjects|"+ - "lplayers|"+ - "lthings|"+ - "lvexits|"+ - "lvobjects|"+ - "lvplayers|"+ - "lvthings|"+ - "newswrap|"+ - "numsuffix|"+ - "playerson|"+ - "playersthisweek|"+ - "randomad|"+ - "randword|"+ - "realrandword|"+ - "replacechr|"+ - "second|"+ - "splitamount|"+ - "strlenall|"+ - "text|"+ - "third|"+ - "tofansi|"+ - "totalac|"+ - "unique|"+ - "getaddressroom|"+ - "listpropertycomm|"+ - "listpropertyres|"+ - "lotowner|"+ - "lotrating|"+ - "lotratingcount|"+ - "lotvalue|"+ - "boughtproduct|"+ - "companyabb|"+ - "companyicon|"+ - "companylist|"+ - "companyname|"+ - "companyowners|"+ - "companyvalue|"+ - "employees|"+ - "invested|"+ - "productlist|"+ - "productname|"+ - "productowners|"+ - "productrating|"+ - "productratingcount|"+ - "productsoldat|"+ - "producttype|"+ - "ratedproduct|"+ - "soldproduct|"+ - "topproducts|"+ - "totalspentonproduct|"+ - "totalstock|"+ - "transfermoney|"+ - "uniquebuyercount|"+ - "uniqueproductsbought|"+ - "validcompany|"+ - "deletepicture|"+ - "fbsave|"+ - "getpicturesecurity|"+ - "haspicture|"+ - "listpictures|"+ - "picturesize|"+ - "replacecolor|"+ - "rgbtocolor|"+ - "savepicture|"+ - "setpicturesecurity|"+ - "showpicture|"+ - "piechart|"+ - "piechartlabel|"+ - "createmaze|"+ - "drawmaze|"+ - "drawwireframe" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - this.$rules = { - "start" : [ - { - token : "variable", // mush substitution register - regex : "%[0-9]{1}" - }, - { - token : "variable", // mush substitution register - regex : "%q[0-9A-Za-z]{1}" - }, - { - token : "variable", // mush special character register - regex : "%[a-zA-Z]{1}" - }, - { - token: "variable.language", - regex: "%[a-z0-9-_]+" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(MushCodeRules, TextHighlightRules); - -exports.MushCodeRules = MushCodeRules; -}); - -ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MushCodeRules = require("./mushcode_highlight_rules").MushCodeRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = MushCodeRules; - this.foldingRules = new PythonFoldMode("\\:"); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/mushcode"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/mushcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-mysql.js b/src-noconflict/mode-mysql.js deleted file mode 100644 index 4bb4e89..0000000 --- a/src-noconflict/mode-mysql.js +++ /dev/null @@ -1,167 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MysqlHighlightRules = function() { - - var mySqlKeywords = /*sql*/ "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where" + "|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat"; - var builtins = "by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl"; - var variable = "charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee"; - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtins, - "keyword": mySqlKeywords, - "constant": "false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat", - "variable.language": variable - }, "identifier", true); - - - function string(rule) { - var start = rule.start; - var escapeSeq = rule.escape; - return { - token: "string.start", - regex: start, - next: [ - {token: "constant.language.escape", regex: escapeSeq}, - {token: "string.end", next: "start", regex: start}, - {defaultToken: "string"} - ] - }; - } - - this.$rules = { - "start" : [ { - token : "comment", regex : "(?:-- |#).*$" - }, - string({start: '"', escape: /\\[0'"bnrtZ\\%_]?/}), - string({start: "'", escape: /\\[0'"bnrtZ\\%_]?/}), - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/ - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.class", - regex : "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.buildin", - regex : "`[^`]*`" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(MysqlHighlightRules, TextHighlightRules); - -exports.MysqlHighlightRules = MysqlHighlightRules; -}); - -ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var MysqlHighlightRules = require("./mysql_highlight_rules").MysqlHighlightRules; - -var Mode = function() { - this.HighlightRules = MysqlHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ["--", "#"]; // todo space - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/mysql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/mysql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-nginx.js b/src-noconflict/mode-nginx.js deleted file mode 100644 index 99cba64..0000000 --- a/src-noconflict/mode-nginx.js +++ /dev/null @@ -1,298 +0,0 @@ -ace.define("ace/mode/nginx_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var NginxHighlightRules = function () { - var keywords = "include|index|absolute_redirect|aio|output_buffers|directio|sendfile|aio_write|alias|root|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|default_type|disable_symlinks|directio_alignment|error_page|etag|if_modified_since|ignore_invalid_headers|internal|keepalive_requests|keepalive_disable|keepalive_timeout|limit_except|large_client_header_buffers|limit_rate|limit_rate_after|lingering_close|lingering_time|lingering_timeout|listen|log_not_found|log_subrequest|max_ranges|merge_slashes|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|satisfy|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|subrequest_output_buffer_size|tcp_nodelay|tcp_nopush|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|variables_hash_bucket_size|variables_hash_max_size|accept_mutex|accept_mutex_delay|debug_connection|error_log|daemon|debug_points|env|load_module|lock_file|master_process|multi_accept|pcre_jit|pid|ssl_engine|thread_pool|timer_resolution|use|user|worker_aio_requests|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_shutdown_timeout|working_directory|allow|deny|add_before_body|add_after_body|addition_types|api|status_zone|auth_basic|auth_basic_user_file|auth_jwt|auth_jwt|auth_jwt_claim_set|auth_jwt_header_set|auth_jwt_key_file|auth_jwt_key_request|auth_jwt_leeway|auth_request|auth_request_set|autoindex|autoindex_exact_size|autoindex_format|autoindex_localtime|ancient_browser|ancient_browser_value|modern_browser|modern_browser_value|charset|charset_map|charset_types|override_charset|source_charset|create_full_put_path|dav_access|dav_methods|min_delete_depth|empty_gif|f4f|f4f_buffer_size|fastcgi_bind|fastcgi_buffer_size|fastcgi_buffering|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_background_update|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_age|fastcgi_cache_lock_timeout|fastcgi_cache_max_range_offset|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_revalidate|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_catch_stderr|fastcgi_connect_timeout|fastcgi_force_ranges|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_limit_rate|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_next_upstream_timeout|fastcgi_next_upstream_tries|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_pass_request_body|fastcgi_pass_request_headers|fastcgi_read_timeout|fastcgi_request_buffering|fastcgi_send_lowat|fastcgi_send_timeout|fastcgi_socket_keepalive|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geoip_country|geoip_city|geoip_org|geoip_proxy|geoip_proxy_recursive|grpc_bind|grpc_buffer_size|grpc_connect_timeout|grpc_hide_header|grpc_ignore_headers|grpc_intercept_errors|grpc_next_upstream|grpc_next_upstream_timeout|grpc_next_upstream_tries|grpc_pass|grpc_pass_header|grpc_read_timeout|grpc_send_timeout|grpc_set_header|grpc_socket_keepalive|grpc_ssl_certificate|grpc_ssl_certificate_key|grpc_ssl_ciphers|grpc_ssl_crl|grpc_ssl_name|grpc_ssl_password_file|grpc_ssl_protocols|grpc_ssl_server_name|grpc_ssl_session_reuse|grpc_ssl_trusted_certificate|grpc_ssl_verify|grpc_ssl_verify_depth|gunzip|gunzip_buffers|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_types|gzip_vary|gzip_static|add_header|add_trailer|expires|hlshls_buffers|hls_forward_args|hls_fragment|hls_mp4_buffer_size|hls_mp4_max_buffer_size|image_filter|image_filter_buffer|image_filter_interlace|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|image_filter_webp_quality|js_content|js_include|js_set|keyval|keyval_zone|limit_conn|limit_conn_log_level|limit_conn_status|limit_conn_zone|limit_zone|limit_req|limit_req_log_level|limit_req_status|limit_req_zone|access_log|log_format|open_log_file_cache|map_hash_bucket_size|map_hash_max_size|memcached_bind|memcached_buffer_size|memcached_connect_timeout|memcached_force_ranges|memcached_gzip_flag|memcached_next_upstream|memcached_next_upstream_timeout|memcached_next_upstream_tries|memcached_pass|memcached_read_timeout|memcached_send_timeout|memcached_socket_keepalive|mirror|mirror_request_body|mp4|mp4_buffer_size|mp4_max_buffer_size|mp4_limit_rate|mp4_limit_rate_after|perl_modules|perl_require|perl_set|proxy_bind|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_background_update|proxy_cache_bypass|proxy_cache_convert_head|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_age|proxy_cache_lock_timeout|proxy_cache_max_range_offset|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_purge|proxy_cache_revalidate|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_force_ranges|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_limit_rate|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_next_upstream_timeout|proxy_next_upstream_tries|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_socket_keepalive|proxy_ssl_certificate|proxy_ssl_certificate_key|proxy_ssl_ciphers|proxy_ssl_crl|proxy_ssl_name|proxy_ssl_password_file|proxy_ssl_protocols|proxy_ssl_server_name|proxy_ssl_session_reuse|proxy_ssl_trusted_certificate|proxy_ssl_verify|proxy_ssl_verify_depth|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|set_real_ip_from|real_ip_header|real_ip_recursive|referer_hash_bucket_size|referer_hash_max_size|valid_referers|break|return|rewrite_log|set|uninitialized_variable_warn|scgi_bind|scgi_buffer_size|scgi_buffering|scgi_buffers|scgi_busy_buffers_size|scgi_cache|scgi_cache_background_update|scgi_cache_key|scgi_cache_lock|scgi_cache_lock_age|scgi_cache_lock_timeout|scgi_cache_max_range_offset|scgi_cache_methods|scgi_cache_min_uses|scgi_cache_path|scgi_cache_purge|scgi_cache_revalidate|scgi_cache_use_stale|scgi_cache_valid|scgi_connect_timeout|scgi_force_ranges|scgi_hide_header|scgi_ignore_client_abort|scgi_ignore_headers|scgi_intercept_errors|scgi_limit_rate|scgi_max_temp_file_size|scgi_next_upstream|scgi_next_upstream_timeout|scgi_next_upstream_tries|scgi_no_cache|scgi_param|scgi_pass|scgi_pass_header|scgi_pass_request_body|scgi_pass_request_headers|scgi_read_timeout|scgi_request_buffering|scgi_send_timeout|scgi_socket_keepalive|scgi_store|scgi_store_access|scgi_temp_file_write_size|scgi_temp_path|secure_link|secure_link_md5|secure_link_secret|session_log|session_log_format|session_log_zone|slice|spdy_chunk_size|spdy_headers_comp|ssi|ssi_last_modified|ssi_min_file_chunk|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_buffer_size|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_early_data|ssl_ecdh_curve|ssl_password_file|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_ticket_key|ssl_session_tickets|ssl_session_timeout|ssl_stapling|ssl_stapling_file|ssl_stapling_responder|ssl_stapling_verify|ssl_trusted_certificate|ssl_verify_client|ssl_verify_depth|status|status_format|status_zone|stub_status|sub_filter|sub_filter_last_modified|sub_filter_once|sub_filter_types|server|zone|state|hash|ip_hash|keepalive|keepalive_requests|keepalive_timeout|ntlm|least_conn|least_time|queue|random|sticky|sticky_cookie_insert|upstream_conf|health_check|userid|userid_domain|userid_expires|userid_mark|userid_name|userid_p3p|userid_path|userid_service|uwsgi_bind|uwsgi_buffer_size|uwsgi_buffering|uwsgi_buffers|uwsgi_busy_buffers_size|uwsgi_cache|uwsgi_cache_background_update|uwsgi_cache_bypass|uwsgi_cache_key|uwsgi_cache_lock|uwsgi_cache_lock_age|uwsgi_cache_lock_timeout|uwsgi_cache_max_range_offset|uwsgi_cache_methods|uwsgi_cache_min_uses|uwsgi_cache_path|uwsgi_cache_purge|uwsgi_cache_revalidate|uwsgi_cache_use_stale|uwsgi_cache_valid|uwsgi_connect_timeout|uwsgi_force_ranges|uwsgi_hide_header|uwsgi_ignore_client_abort|uwsgi_ignore_headers|uwsgi_intercept_errors|uwsgi_limit_rate|uwsgi_max_temp_file_size|uwsgi_modifier1|uwsgi_modifier2|uwsgi_next_upstream|uwsgi_next_upstream_timeout|uwsgi_next_upstream_tries|uwsgi_no_cache|uwsgi_param|uwsgi_pass|uwsgi_pass_header|uwsgi_pass_request_body|uwsgi_pass_request_headers|uwsgi_read_timeout|uwsgi_request_buffering|uwsgi_send_timeout|uwsgi_socket_keepalive|uwsgi_ssl_certificate|uwsgi_ssl_certificate_key|uwsgi_ssl_ciphers|uwsgi_ssl_crl|uwsgi_ssl_name|uwsgi_ssl_password_file|uwsgi_ssl_protocols|uwsgi_ssl_server_name|uwsgi_ssl_session_reuse|uwsgi_ssl_trusted_certificate|uwsgi_ssl_verify|uwsgi_ssl_verify_depth|uwsgi_store|uwsgi_store_access|uwsgi_temp_file_write_size|uwsgi_temp_path|http2_body_preread_size|http2_chunk_size|http2_idle_timeout|http2_max_concurrent_pushes|http2_max_concurrent_streams|http2_max_field_size|http2_max_header_size|http2_max_requests|http2_push|http2_push_preload|http2_recv_buffer_size|http2_recv_timeout|xml_entities|xslt_last_modified|xslt_param|xslt_string_param|xslt_stylesheet|xslt_types|listen|protocol|resolver|resolver_timeout|timeout|auth_http|auth_http_header|auth_http_pass_client_cert|auth_http_timeout|proxy_buffer|proxy_pass_error_message|proxy_timeout|xclient|starttls|imap_auth|imap_capabilities|imap_client_buffer|pop3_auth|pop3_capabilities|smtp_auth|smtp_capabilities|smtp_client_buffer|smtp_greeting_delay|preread_buffer_size|preread_timeout|proxy_protocol_timeout|js_access|js_filter|js_preread|proxy_download_rate|proxy_requests|proxy_responses|proxy_upload_rate|ssl_handshake_timeout|ssl_preread|health_check_timeout|zone_sync|zone_sync_buffers|zone_sync_connect_retry_interval|zone_sync_connect_timeout|zone_sync_interval|zone_sync_recv_buffer_size|zone_sync_server|zone_sync_ssl|zone_sync_ssl_certificate|zone_sync_ssl_certificate_key|zone_sync_ssl_ciphers|zone_sync_ssl_crl|zone_sync_ssl_name|zone_sync_ssl_password_file|zone_sync_ssl_protocols|zone_sync_ssl_server_name|zone_sync_ssl_trusted_certificate|zone_sync_ssl_verify_depth|zone_sync_timeout|google_perftools_profiles|proxy|perl"; - - this.$rules = { - "start": [{ - token: ["storage.type", "text", "string.regexp", "paren.lparen"], - regex: "\\b(location)(\\s+)([\\^]?~[\\*]?\\s+.*?)({)" - }, { - token: ["storage.type", "text", "text", "paren.lparen"], - regex: "\\b(location|match|upstream)(\\s+)(.*?)({)" - }, { - token: ["storage.type", "text", "string", "text", "variable", "text", "paren.lparen"], - regex: '\\b(split_clients|map)(\\s+)(\\".*\\")(\\s+)(\\$[\\w_]+)(\\s*)({)' - }, { - token: ["storage.type", "text", "paren.lparen"], - regex: "\\b(http|events|server|mail|stream)(\\s*)({)" - }, { - token: ["storage.type", "text", "variable", "text", "variable", "text", "paren.lparen"], - regex: '\\b(geo|map)(\\s+)(\\$[\\w_]+)?(\\s*)(\\$[\\w_]+)(\\s*)({)' - }, { - token: "paren.rparen", - regex: "(})" - }, { - token: "paren.lparen", - regex: "({)" - }, { - token: ["storage.type", "text", "paren.lparen"], - regex: "\\b(if)(\\s+)(\\()", - push: [{ - token: "paren.rparen", - regex: "\\)|$", - next: "pop" - }, { - include: "lexical" - }] - }, { - token: "keyword", - regex: "\\b(" + keywords + ")\\b", - push: [{ - token: "punctuation", - regex: ";", - next: "pop" - }, { - include: "lexical" - }] - }, { - token: ["keyword", "text", "string.regexp", "text", "punctuation"], - regex: "\\b(rewrite)(\\s)(\\S*)(\\s.*)(;)" - }, { - include: "lexical" - }, { - include: "comments" - }], - comments: [{ - token: "comment", - regex: '#.*$' - }], - lexical: [{ - token: "string", - regex: "'", - push: [{ - token: "string", - regex: "'", - next: "pop" - }, { - include: "variables" - }, { - defaultToken: "string" - }] - }, { - token: "string", - regex: '"', - push: [{ - token: "string", - regex: '"', - next: "pop" - }, { - include: "variables" - }, { - defaultToken: "string" - }] - }, { - token: "string.regexp", - regex: /[!]?[~][*]?\s+.*(?=\))/ - }, { - token: "string.regexp", - regex: /[\^]\S*(?=;$)/ - }, { - token: "string.regexp", - regex: /[\^]\S*(?=;|\s|$)/ - }, { - token: "keyword.operator", - regex: "\\B(\\+|\\-|\\*|\\=|!=)\\B" - }, { - token: "constant.language", - regex: "\\b(true|false|on|off|all|any|main|always)\\b" - }, { - token: "text", - regex: "\\s+" - }, { - include: "variables" - } - ], - variables: [{ - token: "variable", - regex: "\\$[\\w_]+" - }, { - token: "variable.language", - regex: "\\b(GET|POST|HEAD)\\b" - }] - }; - this.normalizeRules(); -}; - - -oop.inherits(NginxHighlightRules, TextHighlightRules); - -exports.NginxHighlightRules = NginxHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/nginx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nginx_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var NginxHighlightRules = require("./nginx_highlight_rules").NginxHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function () { - TextMode.call(this); - this.HighlightRules = NginxHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; - -oop.inherits(Mode, TextMode); - - -(function () { - this.lineCommentStart = "#"; - - this.$id = "ace/mode/nginx"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/nginx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-nim.js b/src-noconflict/mode-nim.js deleted file mode 100644 index c598711..0000000 --- a/src-noconflict/mode-nim.js +++ /dev/null @@ -1,363 +0,0 @@ -ace.define("ace/mode/nim_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var NimHighlightRules = function () { - - var keywordMapper = this.createKeywordMapper({ - "variable": "var|let|const", - "keyword": "assert|parallel|spawn|export|include|from|template|mixin|bind|import|concept|raise|defer|try|finally|except|converter|proc|func|macro|method|and|or|not|xor|shl|shr|div|mod|in|notin|is|isnot|of|static|if|elif|else|case|of|discard|when|return|yield|block|break|while|echo|continue|asm|using|cast|addr|unsafeAddr|type|ref|ptr|do|declared|defined|definedInScope|compiles|sizeOf|is|shallowCopy|getAst|astToStr|spawn|procCall|for|iterator|as", - "storage.type": "newSeq|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|char|bool|string|set|pointer|float32|float64|enum|object|cstring|array|seq|openArray|varargs|UncheckedArray|tuple|set|distinct|void|auto|openarray|range", - "support.function": "lock|ze|toU8|toU16|toU32|ord|low|len|high|add|pop|contains|card|incl|excl|dealloc|inc", - "constant.language": "nil|true|false" - }, "identifier"); - - var hexNumber = "(?:0[xX][\\dA-Fa-f][\\dA-Fa-f_]*)"; - var decNumber = "(?:[0-9][\\d_]*)"; - var octNumber = "(?:0o[0-7][0-7_]*)"; - var binNumber = "(?:0[bB][01][01_]*)"; - var intNumber = "(?:" + hexNumber + "|" + decNumber + "|" + octNumber + "|" + binNumber + ")(?:'?[iIuU](?:8|16|32|64)|u)?\\b"; - var exponent = "(?:[eE][+-]?[\\d][\\d_]*)"; - var floatNumber = "(?:[\\d][\\d_]*(?:[.][\\d](?:[\\d_]*)" + exponent + "?)|" + exponent + ")"; - var floatNumberExt = "(?:" + hexNumber + "(?:'(?:(?:[fF](?:32|64)?)|[dD])))|(?:" + floatNumber + "|" + decNumber + "|" + octNumber + "|" + binNumber + ")(?:'(?:(?:[fF](?:32|64)?)|[dD]))"; - var stringEscape = "\\\\([abeprcnlftv\\\"']|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - var identifier = '[a-zA-Z][a-zA-Z0-9_]*'; - this.$rules = { - "start": [{ - token: ["identifier", "keyword.operator", "support.function"], - regex: "(" + identifier + ")([.]{1})(" + identifier + ")(?=\\()" - }, {//pragmas - token: "paren.lparen", - regex: "(\\{\\.)", - next: [{ - token: "paren.rparen", - regex: '(\\.\\}|\\})', - next: "start" - }, { - include: "methods" - }, { - token: "identifier", - regex: identifier - }, { - token: "punctuation", - regex: /[,]/ - }, { - token: "keyword.operator", - regex: /[=:.]/ - }, { - token: "paren.lparen", - regex: /[[(]/ - }, { - token: "paren.rparen", - regex: /[\])]/ - }, { - include: "math" - }, { - include: "strings" - }, { - defaultToken: "text" - }] - }, { - token: "comment.doc.start", - regex: /##\[(?!])/, - push: "docBlockComment" - }, { - token: "comment.start", - regex: /#\[(?!])/, - push: "blockComment" - }, { - token: "comment.doc", - regex: '##.*$' - }, { - token: "comment", - regex: '#.*$' - }, { - include: "strings" - }, {// character - token: "string", - regex: "'(?:\\\\(?:[abercnlftv]|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})|.{1})?'" - }, { - include: "methods" - }, { - token: keywordMapper, - regex: "[a-zA-Z][a-zA-Z0-9_]*\\b" - }, { - token: ["keyword.operator", "text", "storage.type"], - regex: "([:])(\\s+)(" + identifier + ")(?=$|\\)|\\[|,|\\s+=|;|\\s+\\{)" - }, { - token: "paren.lparen", - regex: /\[\.|{\||\(\.|\[:|[[({`]/ - }, { - token: "paren.rparen", - regex: /\.\)|\|}|\.]|[\])}]/ - }, { - token: "keyword.operator", - regex: /[=+\-*\/<>@$~&%|!?^.:\\]/ - }, { - token: "punctuation", - regex: /[,;]/ - }, { - include: "math" - }], - blockComment: [{ - regex: /#\[]/, - token: "comment" - }, { - regex: /#\[(?!])/, - token: "comment.start", - push: "blockComment" - }, { - regex: /]#/, - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }], - docBlockComment: [{ - regex: /##\[]/, - token: "comment.doc" - }, { - regex: /##\[(?!])/, - token: "comment.doc.start", - push: "docBlockComment" - }, { - regex: /]##/, - token: "comment.doc.end", - next: "pop" - }, { - defaultToken: "comment.doc" - }], - math: [{ - token: "constant.float", - regex: floatNumberExt - }, { - token: "constant.float", - regex: floatNumber - }, { - token: "constant.integer", - regex: intNumber - }], - methods: [{ - token: "support.function", - regex: "(\\w+)(?=\\()" - }], - strings: [{ - token: "string", - regex: '(\\b' + identifier + ')?"""', - push: [{ - token: "string", - regex: '"""', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string", - regex: "\\b" + identifier + '"(?=.)', - push: [{ - token: "string", - regex: '"|$', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string", - regex: '"', - push: [{ - token: "string", - regex: '"|$', - next: "pop" - }, { - token: "constant.language.escape", - regex: stringEscape - }, { - defaultToken: "string" - }] - }] - }; - this.normalizeRules(); -}; - - -oop.inherits(NimHighlightRules, TextHighlightRules); - -exports.NimHighlightRules = NimHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/nim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nim_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var NimHighlightRules = require("./nim_highlight_rules").NimHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function () { - TextMode.call(this); - this.HighlightRules = NimHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; - -oop.inherits(Mode, TextMode); - - -(function () { - this.lineCommentStart = "#"; - this.blockComment = {start: "#[", end: "]#", nestable: true}; - - - this.$id = "ace/mode/nim"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/nim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-nix.js b/src-noconflict/mode-nix.js deleted file mode 100644 index b64254b..0000000 --- a/src-noconflict/mode-nix.js +++ /dev/null @@ -1,647 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + - "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "//$", - next : "start" - }, { - token : "comment", - regex : "//", - next : "singleLineComment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "constant.language.escape", regex: formatRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : 'R"\\(', - stateName: "rawString", - next: [ - { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; - this.snippetFileId = "ace/snippets/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var NixHighlightRules = function() { - - var constantLanguage = "true|false"; - var keywordControl = "with|import|if|else|then|inherit"; - var keywordDeclaration = "let|in|rec"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language.nix": constantLanguage, - "keyword.control.nix": keywordControl, - "keyword.declaration.nix": keywordDeclaration - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /#.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "(==|!=|<=?|>=?)", - token: ["keyword.operator.comparison.nix"] - }, { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.nix"] - }, { - regex: "=", - token: "keyword.operator.assignment.nix" - }, { - token: "string", - regex: "''", - next: "qqdoc" - }, { - token: "string", - regex: "'", - next: "qstring" - }, { - token: "string", - regex: '"', - push: "qqstring" - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - regex: "}", - token: function(val, start, stack) { - return stack[1] && stack[1].charAt(0) == "q" ? "constant.language.escape" : "text"; - }, - next: "pop" - }], - "comment": [{ - token: "comment", // closing comment - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - }], - "qqdoc": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "''", - next: "pop" - }, { - defaultToken: "string" - }], - "qqstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: '"', - next: "pop" - }, { - defaultToken: "string" - }], - "qstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "'", - next: "pop" - }, { - defaultToken: "string" - }] - }; - - this.normalizeRules(); - }; - - oop.inherits(NixHighlightRules, TextHighlightRules); - - exports.NixHighlightRules = NixHighlightRules; -}); - -ace.define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var NixHighlightRules = require("./nix_highlight_rules").NixHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - this.HighlightRules = NixHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "#"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/nix"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/nix"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-nsis.js b/src-noconflict/mode-nsis.js deleted file mode 100644 index 9379e1f..0000000 --- a/src-noconflict/mode-nsis.js +++ /dev/null @@ -1,312 +0,0 @@ -ace.define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var NSISHighlightRules = function() { - - this.$rules = { - start: [{ - token: "keyword.compiler.nsis", - regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/, - caseInsensitive: true - }, { - token: "keyword.command.nsis", - regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, - caseInsensitive: true - }, { - token: "keyword.control.nsis", - regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, - caseInsensitive: true - }, { - token: "keyword.plugin.nsis", - regex: /^\s*\w+::\w+/, - caseInsensitive: true - }, { - token: "keyword.operator.comparison.nsis", - regex: /[!<>]?=|<>|<|>/ - }, { - token: "support.function.nsis", - regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/, - caseInsensitive: true - }, { - token: "support.library.nsis", - regex: /\${[\w\.:-]+}/ - }, { - token: "constant.nsis", - regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, - caseInsensitive: true - }, { - token: "constant.library.nsis", - regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsDomainController|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/ - }, { - token: "constant.language.boolean.true.nsis", - regex: /\b(?:true|on)\b/ - }, { - token: "constant.language.boolean.false.nsis", - regex: /\b(?:false|off)\b/ - }, { - token: "constant.language.option.nsis", - regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/, - caseInsensitive: true - }, { - token: "constant.language.slash-option.nsis", - regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, - caseInsensitive: true - }, { - token: "constant.numeric.nsis", - regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/ - }, { - token: "entity.name.function.nsis", - regex: /\$\([\w\.:-]+\)/ - }, { - token: "storage.type.function.nsis", - regex: /\$\w+/ - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /`/, - push: [{ - token: "punctuation.definition.string.end.nsis", - regex: /`/, - next: "pop" - }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ - }, { - defaultToken: "string.quoted.back.nsis" - }] - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.nsis", - regex: /"/, - next: "pop" - }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ - }, { - defaultToken: "string.quoted.double.nsis" - }] - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /'/, - push: [{ - token: "punctuation.definition.string.end.nsis", - regex: /'/, - next: "pop" - }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ - }, { - defaultToken: "string.quoted.single.nsis" - }] - }, { - token: [ - "punctuation.definition.comment.nsis", - "comment.line.nsis" - ], - regex: /(;|#)(.*$)/ - }, { - token: "punctuation.definition.comment.nsis", - regex: /\/\*/, - push: [{ - token: "punctuation.definition.comment.nsis", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.nsis" - }] - }, { - token: "text", - regex: /(?:!include|!insertmacro)\b/ - }] - }; - - this.normalizeRules(); -}; - -NSISHighlightRules.metaData = { - comment: "\n\ttodo: - highlight functions\n\t", - fileTypes: ["nsi", "nsh"], - name: "NSIS", - scopeName: "source.nsis" -}; - - -oop.inherits(NSISHighlightRules, TextHighlightRules); - -exports.NSISHighlightRules = NSISHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var NSISHighlightRules = require("./nsis_highlight_rules").NSISHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = NSISHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = [";", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/nsis"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/nsis"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-nunjucks.js b/src-noconflict/mode-nunjucks.js deleted file mode 100644 index 555c00b..0000000 --- a/src-noconflict/mode-nunjucks.js +++ /dev/null @@ -1,2698 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/nunjucks_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var NunjucksHighlightRules = function() { - HtmlHighlightRules.call(this); - this.$rules["start"].unshift({ - token: "punctuation.begin", - regex: /{{-?/, - push: [{ - token: "punctuation.end", - regex: /-?}}/, - next: "pop" - }, - {include: "expression"} - ] - }, { - token: "punctuation.begin", - regex: /{%-?/, - push: [{ - token: "punctuation.end", - regex: /-?%}/, - next: "pop" - }, { - token: "constant.language.escape", - regex: /\b(r\/.*\/[gimy]?)\b/ - }, - {include: "statement"} - ] - }, { - token: "comment.begin", - regex: /{#/, - push: [{ - token: "comment.end", - regex: /#}/, - next: "pop" - }, - {defaultToken: "comment"} - ] - }); - this.addRules({ - attribute_value: [{ - token: "string.attribute-value.xml", - regex: "'", - push: [ - {token: "string.attribute-value.xml", regex: "'", next: "pop"}, - { - token: "punctuation.begin", - regex: /{{-?/, - push: [{ - token: "punctuation.end", - regex: /-?}}/, - next: "pop" - }, - {include: "expression"} - ] - }, - {include: "attr_reference"}, - {defaultToken: "string.attribute-value.xml"} - ] - }, { - token: "string.attribute-value.xml", - regex: '"', - push: [ - {token: "string.attribute-value.xml", regex: '"', next: "pop"}, - { - token: "punctuation.begin", - regex: /{{-?/, - push: [{ - token: "punctuation.end", - regex: /-?}}/, - next: "pop" - }, - {include: "expression"} - ] - }, - {include: "attr_reference"}, - {defaultToken: "string.attribute-value.xml"} - ] - }], - "statement": [{ - token: "keyword.control", - regex: /\b(block|endblock|extends|endif|elif|for|endfor|asyncEach|endeach|include|asyncAll|endall|macro|endmacro|set|endset|ignore missing|as|from|raw|verbatim|filter|endfilter)\b/ - }, - {include: "expression"} - ], - "expression": [{ - token: "constant.language", - regex: /\b(true|false|none)\b/ - }, { - token: "string", - regex: /"/, - push: [{ - token: "string", - regex: /"/, - next: "pop" - }, - {include: "escapeStrings"}, - {defaultToken: "string"} - ] - }, { - token: "string", - regex: /'/, - push: [{ - token: "string", - regex: /'/, - next: "pop" - }, - {include: "escapeStrings"}, - {defaultToken: "string"} - ] - }, { - token: "constant.numeric", // hexadecimal, octal and binary - regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token: "constant.numeric", // decimal integers and floats - regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token: "keyword.operator", - regex: /\+|-|\/\/|\/|%|\*\*|\*|===|==|!==|!=|>=|>|<=|>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var C_Highlight_File = require("./c_cpp_highlight_rules"); -var CHighlightRules = C_Highlight_File.c_cppHighlightRules; - -var ObjectiveCHighlightRules = function() { - - var escapedConstRe = "\\\\(?:[abefnrtv'\"?\\\\]|" + - "[0-3]\\d{1,2}|" + - "[4-7]\\d?|" + - "222|" + - "x[a-zA-Z0-9]+)"; - - var specialVariables = [{ - regex: "\\b_cmd\\b", - token: "variable.other.selector.objc" - }, { - regex: "\\b(?:self|super)\\b", - token: "variable.language.objc" - } - ]; - - var cObj = new CHighlightRules(); - var cRules = cObj.getRules(); - - this.$rules = { - "start": [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, - { - token: [ "storage.type.objc", "punctuation.definition.storage.type.objc", - "entity.name.type.objc", "text", "entity.other.inherited-class.objc" - ], - regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)" - }, - { - token: [ "storage.type.objc" ], - regex: "(@end)" - }, - { - token: [ "storage.type.objc", "entity.name.type.objc", - "entity.other.inherited-class.objc" - ], - regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?" - }, - { - token: "string.begin.objc", - regex: '@"', - next: "constant_NSString" - }, - { - token: "storage.type.objc", - regex: "\\bid\\s*<", - next: "protocol_list" - }, - { - token: "keyword.control.macro.objc", - regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"], - regex: "(@)(try|catch|finally|throw)\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.other.objc"], - regex: "(@)(defs|encode)\\b" - }, - { - token: ["storage.type.id.objc", "text"], - regex: "(\\bid\\b)(\\s|\\n)?" - }, - { - token: "storage.type.objc", - regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "storage.type.objc"], - regex: "(@)(class|protocol)\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "punctuation"], - regex: "(@selector)(\\s*\\()", - next: "selectors" - }, - { - token: [ "punctuation.definition.storage.modifier.objc", "storage.modifier.objc"], - regex: "(@)(synchronized|public|private|protected|package)\\b" - }, - { - token: "constant.language.objc", - regex: "\\bYES|NO|Nil|nil\\b" - }, - { - token: "support.variable.foundation", - regex: "\\bNSApp\\b" - }, - { - token: [ "support.function.cocoa.leopard"], - regex: "(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)" - }, - { - token: ["support.function.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)" - }, - { - token: ["support.class.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)" - }, - { - token: ["support.class.cocoa"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.type.cocoa.leopard"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.class.quartz"], - regex: "(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)" - }, - { - token: ["support.type.quartz"], - regex: "(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)" - }, - { - token: ["support.type.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa.leopard"], - regex: "(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa"], - regex: "(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)" - }, - { - token: ["support.constant.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)" - }, - { - token: "support.function.C99.c", - regex: C_Highlight_File.cFunctions - }, - { - token : cObj.getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "punctuation.section.scope.begin.objc", - regex: "\\[", - next: "bracketed_content" - }, - { - token: "meta.function.objc", - regex: "^(?:-|\\+)\\s*" - } - ], - "constant_NSString": [ - { - token: "constant.character.escape.objc", - regex: escapedConstRe - }, - { - token: "invalid.illegal.unknown-escape.objc", - regex: "\\\\." - }, - { - token: "string", - regex: '[^"\\\\]+' - }, - { - token: "punctuation.definition.string.end", - regex: "\"", - next: "start" - } - ], - "protocol_list": [ - { - token: "punctuation.section.scope.end.objc", - regex: ">", - next: "start" - }, - { - token: "support.other.protocol.objc", - regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b" - } - ], - "selectors": [ - { - token: "support.function.any-method.name-of-parameter.objc", - regex: "\\b(?:[a-zA-Z_:][\\w]*)+" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "bracketed_content": [ - { - token: "punctuation.section.scope.end.objc", - regex: "]", - next: "start" - }, - { - token: ["support.function.any-method.objc"], - regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)", - next: "start" - }, - { - token: "support.function.any-method.objc", - regex: "\\w+(?::|(?=]))", - next: "start" - } - ], - "bracketed_strings": [ - { - token: "punctuation.section.scope.end.objc", - regex: "]", - next: "start" - }, - { - token: "keyword.operator.logical.predicate.cocoa", - regex: "\\b(?:AND|OR|NOT|IN)\\b" - }, - { - token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"], - regex: "\\b(\\w+)(:)" - }, - { - regex: "\\b(?:ALL|ANY|SOME|NONE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b", - token: "keyword.operator.comparison.predicate.cocoa" - }, - { - regex: "\\bC(?:ASEINSENSITIVE|I)\\b", - token: "keyword.other.modifier.predicate.cocoa" - }, - { - regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b", - token: "keyword.other.predicate.cocoa" - }, - { - regex: escapedConstRe, - token: "constant.character.escape.objc" - }, - { - regex: "\\\\.", - token: "invalid.illegal.unknown-escape.objc" - }, - { - token: "string", - regex: '[^"\\\\]' - }, - { - token: "punctuation.definition.string.end.objc", - regex: "\"", - next: "predicates" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "methods" : [ - { - token : "meta.function.objc", - regex : "(?=\\{|#)|;", - next : "start" - } - ] -}; - for (var r in cRules) { - if (this.$rules[r]) { - if (this.$rules[r].push) - this.$rules[r].push.apply(this.$rules[r], cRules[r]); - } else { - this.$rules[r] = cRules[r]; - } - } - - this.$rules.bracketed_content = this.$rules.bracketed_content.concat( - this.$rules.start, specialVariables - ); - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(ObjectiveCHighlightRules, CHighlightRules); - -exports.ObjectiveCHighlightRules = ObjectiveCHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ObjectiveCHighlightRules = require("./objectivec_highlight_rules").ObjectiveCHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ObjectiveCHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/objectivec"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/objectivec"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ocaml.js b/src-noconflict/mode-ocaml.js deleted file mode 100644 index 3b1a3e7..0000000 --- a/src-noconflict/mode-ocaml.js +++ /dev/null @@ -1,421 +0,0 @@ -ace.define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var OcamlHighlightRules = function() { - - var keywords = ( - "and|as|assert|begin|class|constraint|do|done|downto|else|end|" + - "exception|external|for|fun|function|functor|if|in|include|" + - "inherit|initializer|lazy|let|match|method|module|mutable|new|" + - "object|of|open|or|private|rec|sig|struct|then|to|try|type|val|" + - "virtual|when|while|with" - ); - - var builtinConstants = ("true|false"); - - var builtinFunctions = ( - "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" + - "add_available_units|add_big_int|add_buffer|add_channel|add_char|" + - "add_initializer|add_int_big_int|add_interfaces|add_num|add_string|" + - "add_substitute|add_substring|alarm|allocated_bytes|allow_only|" + - "allow_unsafe_modules|always|append|appname_get|appname_set|" + - "approx_num_exp|approx_num_fix|arg|argv|arith_status|array|" + - "array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|" + - "assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|" + - "beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|" + - "bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|" + - "bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|" + - "bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|" + - "cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|" + - "chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|" + - "chown|chr|chroot|classify_float|clear|clear_available_units|" + - "clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|" + - "close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|" + - "close_out|close_out_noerr|close_process|close_process|" + - "close_process_full|close_process_in|close_process_out|close_subwindow|" + - "close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|" + - "combine|combine|command|compact|compare|compare_big_int|compare_num|" + - "complex32|complex64|concat|conj|connect|contains|contains_from|contents|" + - "copy|cos|cosh|count|count|counters|create|create_alarm|create_image|" + - "create_matrix|create_matrix|create_matrix|create_object|" + - "create_object_and_run_initializers|create_object_opt|create_process|" + - "create_process|create_process_env|create_process_env|create_table|" + - "current|current_dir_name|current_point|current_x|current_y|curveto|" + - "custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|" + - "delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|" + - "dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|" + - "double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|" + - "draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|" + - "dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|" + - "environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|" + - "error_message|escaped|establish_server|executable_name|execv|execve|execvp|" + - "execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|" + - "file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|" + - "filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|" + - "float|float32|float64|float_of_big_int|float_of_bits|float_of_int|" + - "float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|" + - "flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|" + - "for_all|for_all2|force|force_newline|force_val|foreground|fork|" + - "format_of_string|formatter_of_buffer|formatter_of_out_channel|" + - "fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|" + - "from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|" + - "full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|" + - "genarray_of_array1|genarray_of_array2|genarray_of_array3|get|" + - "get_all_formatter_output_functions|get_approx_printing|get_copy|" + - "get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|" + - "get_formatter_output_functions|get_formatter_tag_functions|get_image|" + - "get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|" + - "get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|" + - "get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|" + - "getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|" + - "getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|" + - "getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|" + - "getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|" + - "getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|" + - "global_replace|global_substitute|gmtime|green|grid|group_beginning|" + - "group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|" + - "hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|" + - "incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|" + - "infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|" + - "input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|" + - "int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|" + - "int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|" + - "is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|" + - "is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|" + - "kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|" + - "lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|" + - "lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|" + - "loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|" + - "logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|" + - "lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|" + - "make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|" + - "marshal|match_beginning|match_end|matched_group|matched_string|max|" + - "max_array_length|max_big_int|max_elt|max_float|max_int|max_num|" + - "max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|" + - "min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|" + - "minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|" + - "mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|" + - "nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|" + - "new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|" + - "nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|" + - "num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|" + - "of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|" + - "of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|" + - "open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|" + - "open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|" + - "open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|" + - "open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|" + - "out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|" + - "output_char|output_string|output_value|over_max_boxes|pack|params|" + - "parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|" + - "place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|" + - "power_big_int_positive_big_int|power_big_int_positive_int|" + - "power_int_positive_big_int|power_int_positive_int|power_num|" + - "pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|" + - "pp_get_all_formatter_output_functions|pp_get_ellipsis_text|" + - "pp_get_formatter_output_functions|pp_get_formatter_tag_functions|" + - "pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|" + - "pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|" + - "pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|" + - "pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|" + - "pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|" + - "pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|" + - "pp_set_all_formatter_output_functions|pp_set_ellipsis_text|" + - "pp_set_formatter_out_channel|pp_set_formatter_output_functions|" + - "pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|" + - "pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|" + - "pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|" + - "prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|" + - "print_bool|print_break|print_char|print_cut|print_endline|print_float|" + - "print_flush|print_if_newline|print_int|print_newline|print_space|" + - "print_stat|print_string|print_tab|print_tbreak|printf|prohibit|" + - "public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|" + - "raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|" + - "read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|" + - "recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|" + - "regexp_string_case_fold|register|register_exception|rem|remember_mode|" + - "remove|remove_assoc|remove_assq|rename|replace|replace_first|" + - "replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|" + - "rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|" + - "rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|" + - "run_initializers|run_initializers_opt|scanf|search_backward|" + - "search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|" + - "set_all_formatter_output_functions|set_approx_printing|" + - "set_binary_mode_in|set_binary_mode_out|set_close_on_exec|" + - "set_close_on_exec|set_color|set_ellipsis_text|" + - "set_error_when_null_denominator|set_field|set_floating_precision|" + - "set_font|set_formatter_out_channel|set_formatter_output_functions|" + - "set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|" + - "set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|" + - "set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|" + - "set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|" + - "set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|" + - "setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|" + - "setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|" + - "shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|" + - "shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|" + - "shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|" + - "sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|" + - "sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|" + - "sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|" + - "sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|" + - "sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|" + - "slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|" + - "slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|" + - "split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|" + - "square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|" + - "stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|" + - "stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|" + - "str_formatter|string|string_after|string_before|string_match|" + - "string_of_big_int|string_of_bool|string_of_float|string_of_format|" + - "string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|" + - "string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|" + - "sub_right|subset|subset|substitute_first|substring|succ|succ|" + - "succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|" + - "symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|" + - "tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|" + - "tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|" + - "temp_file|text_size|time|time|time|timed_read|timed_write|times|times|" + - "tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|" + - "to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|" + - "to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|" + - "truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|" + - "uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|" + - "unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|" + - "update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|" + - "wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|" + - "wait_timed_read|wait_timed_write|wait_write|waitpid|white|" + - "widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|" + - - "Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|" + - "Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|" + - "Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|" + - "Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|" + - "MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|" + - "Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|" + - "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : '\\(\\*.*?\\*\\)\\s*?$' - }, - { - token : "comment", - regex : '\\(\\*.*', - next : "comment" - }, - { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, - { - token : "string", // single char - regex : "'.'" - }, - { - token : "string", // " string - regex : '"', - next : "qstring" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, - { - token : "constant.numeric", // float - regex : floatNumber - }, - { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "keyword.operator", - regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=" - }, - { - token : "paren.lparen", - regex : "[[({]" - }, - { - token : "paren.rparen", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\)", - next : "start" - }, - { - defaultToken : "comment" - } - ], - - "qstring" : [ - { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(OcamlHighlightRules, TextHighlightRules); - -exports.OcamlHighlightRules = OcamlHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var OcamlHighlightRules = require("./ocaml_highlight_rules").OcamlHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = OcamlHighlightRules; - this.$behaviour = this.$defaultBehaviour; - - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/; - -(function() { - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(\*(.*)\*\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(*" + line + "*)"); - } - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && - state === 'start' && indenter.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/ocaml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/ocaml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-pascal.js b/src-noconflict/mode-pascal.js deleted file mode 100644 index 0b38059..0000000 --- a/src-noconflict/mode-pascal.js +++ /dev/null @@ -1,223 +0,0 @@ -ace.define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PascalHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword.control": "absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class" + - "|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization" + - "|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is" + - "|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private" + - "|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr" + - "|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor" - }, "identifier", true); - - this.$rules = { - start: [{ - caseInsensitive: true, - token: ['variable', "text", - 'storage.type.prototype', - 'entity.name.function.prototype' - ], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' - }, { - caseInsensitive: true, - token: ['variable', "text", 'storage.type.function', 'entity.name.function'], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' - }, { - caseInsensitive: true, - token: keywordMapper, - regex: /\b[a-z_]+\b/ - }, { - token: 'constant.numeric', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' - }, { - token: 'punctuation.definition.comment', - regex: '--.*$' - }, { - token: 'punctuation.definition.comment', - regex: '//.*$' - }, { - token: 'punctuation.definition.comment', - regex: '\\(\\*', - push: [{ - token: 'punctuation.definition.comment', - regex: '\\*\\)', - next: 'pop' - }, - { defaultToken: 'comment.block.one' } - ] - }, { - token: 'punctuation.definition.comment', - regex: '\\{', - push: [{ - token: 'punctuation.definition.comment', - regex: '\\}', - next: 'pop' - }, - { defaultToken: 'comment.block.two' } - ] - }, { - token: 'punctuation.definition.string.begin', - regex: '"', - push: [{ token: 'constant.character.escape', regex: '\\\\.' }, - { - token: 'punctuation.definition.string.end', - regex: '"', - next: 'pop' - }, - { defaultToken: 'string.quoted.double' } - ] - }, { - token: 'punctuation.definition.string.begin', - regex: '\'', - push: [{ - token: 'constant.character.escape.apostrophe', - regex: '\'\'' - }, - { - token: 'punctuation.definition.string.end', - regex: '\'', - next: 'pop' - }, - { defaultToken: 'string.quoted.single' } - ] - }, { - token: 'keyword.operator', - regex: '[+\\-;,/*%]|:=|=' - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(PascalHighlightRules, TextHighlightRules); - -exports.PascalHighlightRules = PascalHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PascalHighlightRules = require("./pascal_highlight_rules").PascalHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = PascalHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["--", "//"]; - this.blockComment = [ - {start: "(*", end: "*)"}, - {start: "{", end: "}"} - ]; - - this.$id = "ace/mode/pascal"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/pascal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-perl.js b/src-noconflict/mode-perl.js deleted file mode 100644 index f5ce60b..0000000 --- a/src-noconflict/mode-perl.js +++ /dev/null @@ -1,381 +0,0 @@ -ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - - var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "block_comment": [ - { - token: "comment.doc", - regex: "^=cut\\b", - next: "start" - }, - { - defaultToken: "comment.doc" - } - ] - }; -}; - -oop.inherits(PerlHighlightRules, TextHighlightRules); - -exports.PerlHighlightRules = PerlHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PerlHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"}); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.blockComment = [ - {start: "=begin", end: "=cut", lineStartOnly: true}, - {start: "=item", end: "=cut", lineStartOnly: true} - ]; - - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/perl"; - this.snippetFileId = "ace/snippets/perl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/perl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-pgsql.js b/src-noconflict/mode-pgsql.js deleted file mode 100644 index 65528bf..0000000 --- a/src-noconflict/mode-pgsql.js +++ /dev/null @@ -1,1743 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - - var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "block_comment": [ - { - token: "comment.doc", - regex: "^=cut\\b", - next: "start" - }, - { - defaultToken: "comment.doc" - } - ] - }; -}; - -oop.inherits(PerlHighlightRules, TextHighlightRules); - -exports.PerlHighlightRules = PerlHighlightRules; -}); - -ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await|nonlocal" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + - "ascii|breakpoint|bytes" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "variable.language": "self|cls", - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "[uU]?"; - var strRawPre = "[rR]"; - var strFormatPre = "[fF]"; - var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token: "string", - regex: strRawPre + '"{3}', - next: "rawqqstring3" - }, { - token: "string", - regex: strRawPre + '"(?=.)', - next: "rawqqstring" - }, { - token: "string", - regex: strRawPre + "'{3}", - next: "rawqstring3" - }, { - token: "string", - regex: strRawPre + "'(?=.)", - next: "rawqstring" - }, { - token: "string", - regex: strFormatPre + '"{3}', - next: "fqqstring3" - }, { - token: "string", - regex: strFormatPre + '"(?=.)', - next: "fqqstring" - }, { - token: "string", - regex: strFormatPre + "'{3}", - next: "fqstring3" - }, { - token: "string", - regex: strFormatPre + "'(?=.)", - next: "fqstring" - },{ - token: "string", - regex: strRawFormatPre + '"{3}', - next: "rfqqstring3" - }, { - token: "string", - regex: strRawFormatPre + '"(?=.)', - next: "rfqqstring" - }, { - token: "string", - regex: strRawFormatPre + "'{3}", - next: "rfqstring3" - }, { - token: "string", - regex: strRawFormatPre + "'(?=.)", - next: "rfqstring" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token: "punctuation", - regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" - }, { - token: "paren.lparen", - regex: "[\\[\\(\\{]" - }, { - token: "paren.rparen", - regex: "[\\]\\)\\}]" - }, { - token: "text", - regex: "\\s+" - }, { - include: "constants" - }], - "qqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "qstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "qqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "qstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "fqqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "fqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rfqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring": [{ - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstringParRules": [{//TODO: nested {} - token: "paren.lparen", - regex: "[\\[\\(]" - }, { - token: "paren.rparen", - regex: "[\\]\\)]" - }, { - token: "string", - regex: "\\s+" - }, { - token: "string", - regex: "'[^']*'" - }, { - token: "string", - regex: '"[^"]*"' - }, { - token: "function.support", - regex: "(!s|!r|!a)" - }, { - include: "constants" - },{ - token: 'paren.rparen', - regex: "}", - next: 'pop' - },{ - token: 'paren.lparen', - regex: "{", - push: "fqstringParRules" - }], - "constants": [{ - token: "constant.numeric", // imaginary - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token: "constant.numeric", // float - regex: floatNumber - }, { - token: "constant.numeric", // long integer - regex: integer + "[lL]\\b" - }, { - token: "constant.numeric", // integer - regex: integer + "\\b" - }, { - token: ["punctuation", "function.support"],// method - regex: "(\\.)([a-zA-Z_]+)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }] - }; - this.normalizeRules(); -}; - -oop.inherits(PythonHighlightRules, TextHighlightRules); - -exports.PythonHighlightRules = PythonHighlightRules; -}); - -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" - }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken : "string" - } - ], - "comment" : [ - { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" - }, { - defaultToken: "comment" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var PgsqlHighlightRules = function() { - var keywords = ( - "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + - "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|" + - "assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|" + - "bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" + - "catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|" + - "cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|" + - "configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|" + - "create|cross|cstring|csv|current|current_catalog|current_date|current_role|" + - "current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|" + - "date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|" + - "definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|" + - "domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|" + - "except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|" + - "family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|" + - "freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|" + - "having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|" + - "increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|" + - "insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|" + - "internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|" + - "language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|" + - "like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|" + - "mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|" + - "national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|" + - "numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|" + - "options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|" + - "password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|" + - "pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|" + - "preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|" + - "reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|" + - "regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|" + - "reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|" + - "right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|" + - "sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|" + - "simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|" + - "stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|" + - "template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|" + - "transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|" + - "txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|" + - "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" + - "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" + - "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" + - "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone" - ); - - - var builtinFunctions = ( - "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + - "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" + - "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" + - "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" + - "abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|" + - "aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|" + - "anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|" + - "anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|" + - "anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|" + - "array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|" + - "array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|" + - "array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|" + - "array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|" + - "arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|" + - "ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|" + - "bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|" + - "bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|" + - "bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|" + - "boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|" + - "box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|" + - "box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|" + - "box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|" + - "box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|" + - "bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|" + - "bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|" + - "bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|" + - "bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|" + - "btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|" + - "btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|" + - "btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|" + - "btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|" + - "btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|" + - "btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|" + - "btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|" + - "bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|" + - "bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|" + - "byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|" + - "cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|" + - "cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|" + - "cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|" + - "cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|" + - "charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|" + - "cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|" + - "circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|" + - "circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|" + - "circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|" + - "circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|" + - "circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|" + - "close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|" + - "contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|" + - "covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|" + - "current_query|current_schema|current_schemas|current_setting|current_user|currtid|" + - "currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|" + - "database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|" + - "date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|" + - "date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|" + - "date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|" + - "date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|" + - "date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|" + - "date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|" + - "daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|" + - "dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|" + - "dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|" + - "dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|" + - "dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|" + - "enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|" + - "enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|" + - "euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|" + - "euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|" + - "euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|" + - "family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|" + - "float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|" + - "float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|" + - "float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|" + - "float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|" + - "float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|" + - "float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|" + - "float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|" + - "float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|" + - "float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|" + - "float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|" + - "float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|" + - "fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|" + - "gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|" + - "get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|" + - "gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|" + - "ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|" + - "gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|" + - "ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|" + - "gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|" + - "gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|" + - "gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|" + - "gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|" + - "gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|" + - "gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|" + - "gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|" + - "gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|" + - "gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|" + - "gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|" + - "has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|" + - "has_function_privilege|has_language_privilege|has_schema_privilege|" + - "has_sequence_privilege|has_server_privilege|has_table_privilege|" + - "has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|" + - "hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|" + - "hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|" + - "hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|" + - "hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|" + - "hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|" + - "icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|" + - "inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|" + - "inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|" + - "initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|" + - "int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|" + - "int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|" + - "int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|" + - "int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|" + - "int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|" + - "int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|" + - "int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|" + - "int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|" + - "int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|" + - "int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|" + - "int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|" + - "int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|" + - "int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|" + - "int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|" + - "int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|" + - "int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|" + - "int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|" + - "internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|" + - "interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|" + - "interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|" + - "interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|" + - "interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|" + - "interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|" + - "ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|" + - "iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|" + - "json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|" + - "json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|" + - "json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|" + - "json_object_field|json_object_field_text|json_object_keys|json_out|" + - "json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|" + - "justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|" + - "koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|" + - "language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|" + - "latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|" + - "line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|" + - "line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|" + - "lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|" + - "lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|" + - "lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|" + - "lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|" + - "lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|" + - "macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|" + - "macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|" + - "mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|" + - "mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|" + - "mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|" + - "name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|" + - "namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|" + - "neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|" + - "network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|" + - "nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|" + - "numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|" + - "numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|" + - "numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|" + - "numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|" + - "numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|" + - "numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|" + - "numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|" + - "octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|" + - "oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|" + - "oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|" + - "on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|" + - "path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|" + - "path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|" + - "path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|" + - "pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|" + - "pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|" + - "pg_available_extension_versions|pg_available_extensions|pg_backend_pid|" + - "pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|" + - "pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|" + - "pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|" + - "pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|" + - "pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|" + - "pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|" + - "pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|" + - "pg_get_function_arguments|pg_get_function_identity_arguments|" + - "pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|" + - "pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|" + - "pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|" + - "pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|" + - "pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|" + - "pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|" + - "pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|" + - "pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|" + - "pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|" + - "pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|" + - "pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|" + - "pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|" + - "pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|" + - "pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|" + - "pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|" + - "pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|" + - "pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|" + - "pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|" + - "pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|" + - "pg_stat_get_bgwriter_buf_written_checkpoints|" + - "pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|" + - "pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|" + - "pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|" + - "pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|" + - "pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|" + - "pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|" + - "pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|" + - "pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|" + - "pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|" + - "pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|" + - "pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|" + - "pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|" + - "pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|" + - "pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|" + - "pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|" + - "pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|" + - "pg_stat_get_function_calls|pg_stat_get_function_self_time|" + - "pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|" + - "pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|" + - "pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|" + - "pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|" + - "pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|" + - "pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|" + - "pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|" + - "pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|" + - "pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|" + - "pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|" + - "pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|" + - "pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|" + - "pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|" + - "pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|" + - "pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|" + - "pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|" + - "pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|" + - "pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|" + - "pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|" + - "pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|" + - "pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|" + - "pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|" + - "plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|" + - "point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|" + - "point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|" + - "poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|" + - "poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|" + - "poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|" + - "polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|" + - "prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|" + - "pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|" + - "querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|" + - "range_after|range_before|range_cmp|range_contained_by|range_contains|" + - "range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|" + - "range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|" + - "range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|" + - "range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|" + - "range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|" + - "record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|" + - "regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|" + - "regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|" + - "regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|" + - "regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|" + - "regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|" + - "regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|" + - "regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|" + - "regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|" + - "reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|" + - "reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|" + - "rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|" + - "schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|" + - "set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|" + - "shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|" + - "similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|" + - "smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|" + - "spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|" + - "spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|" + - "spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|" + - "spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|" + - "spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|" + - "spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|" + - "spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|" + - "statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|" + - "string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|" + - "suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|" + - "table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|" + - "text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|" + - "texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|" + - "textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|" + - "thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|" + - "tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|" + - "time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|" + - "time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|" + - "timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|" + - "timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|" + - "timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|" + - "timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|" + - "timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|" + - "timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|" + - "timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|" + - "timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|" + - "timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|" + - "timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|" + - "timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|" + - "timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|" + - "timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|" + - "timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|" + - "timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|" + - "timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|" + - "timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|" + - "timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|" + - "timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|" + - "timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|" + - "tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|" + - "tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|" + - "tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|" + - "tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|" + - "to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|" + - "trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|" + - "ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|" + - "ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|" + - "tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|" + - "tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|" + - "tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|" + - "tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|" + - "tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|" + - "txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|" + - "txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|" + - "txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|" + - "unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|" + - "utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|" + - "utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|" + - "utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|" + - "utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|" + - "uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|" + - "varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|" + - "varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|" + - "varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|" + - "void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|" + - "win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|" + - "win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|" + - "xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|" + - "xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|" + - "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords - }, "identifier", true); - - - var sqlRules = [{ - token : "string", // single line string -- assume dollar strings if multi-line for now - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "variable.language", // pg identifier - regex : '".*?"' - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers - }, { - token : "keyword.operator", - regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + - "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + - "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + - "~=|~>=~|~>~|~~|~~\\*" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } - ]; - - - this.$rules = { - "start" : [{ - token : "comment", - regex : "--.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "comment" - },{ - token : "keyword.statementBegin", - regex : "[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. - next : "statement" - },{ - token : "support.buildin", // psql directive - regex : "^\\\\[\\S]+.*$" - } - ], - - "statement" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentStatement" - }, { - token : "statementEnd", - regex : ";", - next : "start" - }, { - token : "string", - regex : "\\$perl\\$", - next : "perl-start" - }, { - token : "string", - regex : "\\$python\\$", - next : "python-start" - }, { - token : "string", - regex : "\\$json\\$", - next : "json-start" - }, { - token : "string", - regex : "\\$(js|javascript)\\$", - next : "javascript-start" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line - next : "dollarSql" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarStatementString" - } - ].concat(sqlRules), - - "dollarSql" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentDollarSql" - }, { - token : "string", // end quoting with dollar at the start of a line - regex : "^\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarSqlString" - } - ].concat(sqlRules), - - "comment" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - - "commentStatement" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "statement" - }, { - defaultToken : "comment" - } - ], - - "commentDollarSql" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "dollarSql" - }, { - defaultToken : "comment" - } - ], - - "dollarStatementString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ], - - "dollarSqlString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "dollarSql" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); - this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); - this.embedRules(JsonHighlightRules, "json-", [{token : "string", regex : "\\$json\\$", next : "statement"}]); - this.embedRules(JavaScriptHighlightRules, "javascript-", [{token : "string", regex : "\\$(js|javascript)\\$", next : "statement"}]); -}; - -oop.inherits(PgsqlHighlightRules, TextHighlightRules); - -exports.PgsqlHighlightRules = PgsqlHighlightRules; -}); - -ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; - -var Mode = function() { - this.HighlightRules = PgsqlHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "start" || state == "keyword.statementEnd") { - return ""; - } else { - return this.$getIndent(line); // Keep whatever indent the previous line has - } - }; - - this.$id = "ace/mode/pgsql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/pgsql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-php.js b/src-noconflict/mode-php.js deleted file mode 100644 index c9d2f8f..0000000 --- a/src-noconflict/mode-php.js +++ /dev/null @@ -1,13110 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var PhpLangHighlightRules = function() { - var docComment = DocCommentHighlightRules; - var builtinFunctions = lang.arrayToMap( -'abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|\ -aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|\ -apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|\ -apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|\ -apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|\ -apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|\ -apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|\ -apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|\ -array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|\ -array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|\ -array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|\ -array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|\ -array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|\ -array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|\ -atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|\ -bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|\ -bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|\ -bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|\ -bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|\ -bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|\ -cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|\ -cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|\ -cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|\ -cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|\ -cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|\ -cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|\ -cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|\ -cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|\ -cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|\ -cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|\ -cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|\ -cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|\ -cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|\ -cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|\ -cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|\ -cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|\ -cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|\ -cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|\ -cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|\ -cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|\ -cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|\ -cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|\ -cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|\ -cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|\ -cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|\ -cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|\ -cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|\ -cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|\ -chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|\ -class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|\ -classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|\ -com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|\ -com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|\ -convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|\ -counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|\ -crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|\ -ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|\ -cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|\ -cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|\ -cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|\ -cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|\ -cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|\ -cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|\ -cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|\ -cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|\ -cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|\ -cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|\ -cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|\ -curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|\ -curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|\ -curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|\ -date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|\ -date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|\ -date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|\ -dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|\ -db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|\ -db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|\ -db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|\ -db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|\ -db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|\ -db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|\ -dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|\ -dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|\ -dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|\ -dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|\ -dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|\ -dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|\ -dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|\ -dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|\ -dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|\ -define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|\ -dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|\ -dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|\ -domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|\ -domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|\ -domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|\ -domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|\ -domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|\ -domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|\ -domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|\ -domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|\ -domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|\ -domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|\ -domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|\ -domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|\ -domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|\ -domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|\ -domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|\ -domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|\ -domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|\ -enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|\ -enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|\ -enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|\ -enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|\ -eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|\ -event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|\ -event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|\ -event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|\ -event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|\ -expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|\ -fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|\ -fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|\ -fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|\ -fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|\ -fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|\ -fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|\ -fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|\ -fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|\ -fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|\ -fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|\ -fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|\ -fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|\ -fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|\ -file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|\ -filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|\ -filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|\ -finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|\ -forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|\ -ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|\ -ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|\ -ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|\ -func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|\ -gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|\ -geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|\ -geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|\ -get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|\ -get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|\ -get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|\ -get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|\ -getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|\ -gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|\ -getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|\ -getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|\ -gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|\ -gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|\ -gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|\ -gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|\ -gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|\ -gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|\ -gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|\ -grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|\ -gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|\ -gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|\ -gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|\ -gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|\ -gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|\ -gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|\ -gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|\ -gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|\ -gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|\ -gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|\ -halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|\ -haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|\ -harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|\ -harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|\ -harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|\ -harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|\ -harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|\ -harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|\ -harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|\ -harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|\ -haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|\ -harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|\ -harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|\ -haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|\ -haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|\ -harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|\ -harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|\ -harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|\ -harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|\ -harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|\ -harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|\ -harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|\ -harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|\ -harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|\ -harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|\ -harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|\ -harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|\ -harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|\ -harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|\ -hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|\ -header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|\ -html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|\ -http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|\ -http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|\ -http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|\ -http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|\ -http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|\ -http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|\ -http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|\ -http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|\ -httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|\ -httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|\ -httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|\ -httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|\ -httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|\ -httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|\ -httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|\ -httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|\ -httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|\ -httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|\ -httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|\ -httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|\ -httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|\ -httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|\ -httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|\ -httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|\ -httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|\ -httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|\ -httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|\ -httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|\ -httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|\ -httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|\ -httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|\ -httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|\ -httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|\ -httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|\ -httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|\ -httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|\ -httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|\ -hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|\ -hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|\ -hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|\ -hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|\ -hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|\ -hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|\ -hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|\ -hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|\ -hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|\ -hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|\ -hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|\ -hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|\ -hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|\ -hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|\ -ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|\ -ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|\ -ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|\ -ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|\ -ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|\ -ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|\ -ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|\ -iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|\ -id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|\ -idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|\ -ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|\ -ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|\ -ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|\ -ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|\ -iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|\ -iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|\ -iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|\ -imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|\ -imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|\ -imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|\ -imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|\ -imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|\ -imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|\ -imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|\ -imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|\ -imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|\ -imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|\ -imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|\ -imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|\ -imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|\ -imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|\ -imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|\ -imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|\ -imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|\ -imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|\ -imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|\ -imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|\ -imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|\ -imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|\ -imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|\ -imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|\ -imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|\ -imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|\ -imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|\ -imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|\ -imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|\ -imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|\ -imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|\ -imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|\ -imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|\ -imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|\ -imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|\ -imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|\ -imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|\ -imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|\ -imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|\ -imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|\ -imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|\ -imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|\ -imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|\ -imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|\ -imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|\ -imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|\ -imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|\ -imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|\ -imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|\ -imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|\ -imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|\ -imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|\ -imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|\ -imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|\ -imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|\ -imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|\ -imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|\ -imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|\ -imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|\ -imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|\ -imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|\ -imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|\ -imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|\ -imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|\ -imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|\ -imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|\ -imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|\ -imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|\ -imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|\ -imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|\ -imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|\ -imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|\ -imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|\ -imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|\ -imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|\ -imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|\ -imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|\ -imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|\ -imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|\ -imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|\ -imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|\ -imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|\ -imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|\ -imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|\ -imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|\ -imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|\ -imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|\ -imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|\ -imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|\ -imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|\ -imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|\ -imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|\ -imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|\ -imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|\ -imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|\ -imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|\ -imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|\ -imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|\ -imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|\ -imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|\ -imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|\ -imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|\ -imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|\ -imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|\ -imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|\ -imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|\ -imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|\ -imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|\ -imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|\ -imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|\ -include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|\ -ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|\ -ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|\ -ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|\ -ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|\ -ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|\ -inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|\ -intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|\ -is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|\ -is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|\ -iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|\ -iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|\ -jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|\ -json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|\ -kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|\ -kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|\ -ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|\ -ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|\ -ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|\ -ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|\ -ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|\ -libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|\ -limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|\ -lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|\ -m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|\ -m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|\ -m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|\ -m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|\ -mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|\ -mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|\ -mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|\ -maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|\ -maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|\ -maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|\ -maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|\ -maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|\ -maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|\ -maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|\ -maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|\ -maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|\ -maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|\ -maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|\ -maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|\ -maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|\ -maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|\ -maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|\ -mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|\ -mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|\ -mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|\ -mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|\ -mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|\ -mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|\ -mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|\ -mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|\ -mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|\ -mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|\ -mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|\ -mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|\ -mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|\ -mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|\ -mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|\ -ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|\ -mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|\ -mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|\ -mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|\ -mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|\ -mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|\ -msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|\ -msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|\ -msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|\ -msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|\ -msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|\ -msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|\ -msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|\ -mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|\ -mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|\ -mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|\ -mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|\ -mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|\ -mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|\ -mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|\ -mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|\ -mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|\ -mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|\ -mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|\ -mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|\ -mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|\ -mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|\ -mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|\ -mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|\ -mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|\ -mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|\ -mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|\ -mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|\ -mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|\ -mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|\ -mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|\ -mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|\ -mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|\ -mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|\ -mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|\ -mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|\ -mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|\ -mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|\ -mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|\ -mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|\ -ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|\ -ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|\ -ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|\ -ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|\ -ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|\ -ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|\ -ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|\ -ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|\ -ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|\ -ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|\ -ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|\ -ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|\ -ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|\ -ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|\ -ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|\ -ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|\ -ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|\ -ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|\ -ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|\ -ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|\ -ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|\ -ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|\ -newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|\ -newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|\ -newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|\ -newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|\ -newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|\ -newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|\ -newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|\ -newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|\ -newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|\ -newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|\ -newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|\ -newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|\ -newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|\ -newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|\ -newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|\ -newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|\ -newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|\ -newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|\ -newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|\ -notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|\ -notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|\ -numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|\ -ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|\ -ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|\ -oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|\ -oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|\ -oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|\ -oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|\ -oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|\ -oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|\ -oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|\ -oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|\ -oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|\ -ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|\ -ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|\ -ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|\ -ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|\ -ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|\ -octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|\ -odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|\ -odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|\ -odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|\ -odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|\ -odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|\ -openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|\ -openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|\ -openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|\ -openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|\ -openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|\ -openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|\ -openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|\ -openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|\ -openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|\ -openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|\ -openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|\ -outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|\ -ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|\ -ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|\ -ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|\ -parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|\ -pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|\ -pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|\ -pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|\ -pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|\ -pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|\ -pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|\ -pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|\ -pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|\ -pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|\ -pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|\ -pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|\ -pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|\ -pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|\ -pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|\ -pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|\ -pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|\ -pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|\ -pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|\ -pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|\ -pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|\ -pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|\ -pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|\ -pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|\ -pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|\ -pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|\ -pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|\ -pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|\ -pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|\ -pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|\ -pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|\ -pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|\ -pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|\ -pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|\ -pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|\ -pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|\ -php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|\ -png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|\ -posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|\ -posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|\ -posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|\ -preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|\ -printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|\ -printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|\ -printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|\ -printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|\ -printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|\ -ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|\ -ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|\ -ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|\ -ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|\ -ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|\ -ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|\ -ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|\ -ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|\ -ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|\ -pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|\ -pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|\ -pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|\ -px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|\ -px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|\ -px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|\ -radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|\ -radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|\ -radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|\ -radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|\ -rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|\ -readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|\ -readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|\ -readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|\ -recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|\ -recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|\ -reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|\ -regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|\ -resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|\ -rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|\ -rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|\ -runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|\ -runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|\ -runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|\ -runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|\ -samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|\ -samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|\ -sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|\ -sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|\ -sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|\ -sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|\ -sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|\ -sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|\ -sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|\ -sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|\ -sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|\ -sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|\ -sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|\ -sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|\ -sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|\ -sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|\ -sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|\ -sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|\ -sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|\ -sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|\ -sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|\ -sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|\ -session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|\ -session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|\ -session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|\ -session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|\ -set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|\ -setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|\ -shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|\ -similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|\ -snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|\ -snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|\ -snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|\ -soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|\ -socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|\ -socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|\ -socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|\ -solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|\ -solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|\ -solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|\ -spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|\ -splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|\ -splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|\ -sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|\ -sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|\ -sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|\ -sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|\ -sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|\ -sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|\ -ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|\ -ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|\ -ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|\ -ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|\ -stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|\ -stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|\ -stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|\ -stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|\ -stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|\ -stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|\ -stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|\ -stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|\ -stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|\ -stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|\ -stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|\ -stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|\ -str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|\ -stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|\ -stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|\ -stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|\ -stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|\ -stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|\ -stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|\ -stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|\ -stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|\ -stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|\ -strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|\ -svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|\ -svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|\ -svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|\ -svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|\ -svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|\ -svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|\ -swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|\ -swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|\ -swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|\ -swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|\ -swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|\ -swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|\ -swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|\ -swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|\ -swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|\ -swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|\ -swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|\ -swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|\ -swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|\ -sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|\ -sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|\ -sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|\ -sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|\ -tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|\ -tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|\ -time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|\ -timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|\ -tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|\ -ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|\ -udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|\ -udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|\ -uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|\ -urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|\ -variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|\ -variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|\ -variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|\ -vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|\ -vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|\ -vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|\ -w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|\ -wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|\ -win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|\ -win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|\ -wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|\ -wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|\ -wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|\ -wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|\ -xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|\ -xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|\ -xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|\ -xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|\ -xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|\ -xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|\ -xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|\ -xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|\ -xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|\ -xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|\ -xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|\ -xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|\ -xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|\ -xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|\ -xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|\ -xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|\ -xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|\ -xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|\ -xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|\ -xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|\ -xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|\ -xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|\ -yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|\ -yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|\ -yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|\ -yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|\ -zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|\ -ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|\ -ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|\ -ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|\ -ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|\ -ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|\ -ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type'.split('|') - ); - var keywords = lang.arrayToMap( -'abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|\ -endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|\ -public|static|switch|throw|trait|try|use|var|while|xor|yield'.split('|') - ); - var languageConstructs = lang.arrayToMap( - ('__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|') - ); - - var builtinConstants = lang.arrayToMap( - ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__').split('|') - ); - - var builtinVariables = lang.arrayToMap( -'$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|\ -$http_response_header|$argc|$argv'.split('|') - ); - var builtinFunctionsDeprecated = lang.arrayToMap( -'key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|\ -com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|\ -cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|\ -hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|\ -maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|\ -mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|\ -mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|\ -mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|\ -mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|\ -mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|\ -mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|\ -ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|\ -ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|\ -ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|\ -ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|\ -ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|\ -PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|\ -PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|\ -PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|\ -PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|\ -PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|\ -PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|\ -PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|\ -PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|\ -px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister\ -set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|\ -sql_regcase'.split('|') - ); - - var keywordsDeprecated = lang.arrayToMap( - ('cfunction|old_function').split('|') - ); - - var futureReserved = lang.arrayToMap([]); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ - }, - docComment.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" - }, { - token : "string", // " string start - regex : '"', - next : "qqstring" - }, { - token : "string", // ' string start - regex : "'", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language", // constants - regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + - "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + - "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + - "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + - "VERSION))|__COMPILER_HALT_OFFSET__)\\b" - }, { - token : ["keyword", "text", "support.class"], - regex : "\\b(new)(\\s+)(\\w+)" - }, { - token : ["support.class", "keyword.operator"], - regex : "\\b(\\w+)(::)" - }, { - token : "constant.language", // constants - regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + - "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + - "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + - "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + - "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + - "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + - "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + - "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + - "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + - "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + - "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + - "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + - "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + - "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (futureReserved.hasOwnProperty(value)) - return "invalid.illegal"; - else if (builtinFunctions.hasOwnProperty(value)) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) - return "variable"; - return "identifier"; - }, - regex : /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ - }, { - onMatch : function(value, currentSate, state) { - value = value.substr(3); - if (value[0] == "'" || value[0] == '"') - value = value.slice(1, -1); - state.unshift(this.next, value); - return "markup.list"; - }, - regex : /<<<(?:\w+|'\w+'|"\w+")$/, - next: "heredoc" - }, { - token : "keyword.operator", - regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : /[,;]/ - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "heredoc" : [ - { - onMatch : function(value, currentSate, stack) { - if (stack[1] != value) - return "string"; - stack.shift(); - stack.shift(); - return "markup.list"; - }, - regex : "^\\w+(?=;?$)", - next: "start" - }, { - token: "string", - regex : ".*" - } - ], - "comment" : [ - { - token : "comment", - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' - }, { - token : "variable", - regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ - }, { - token : "variable", - regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now - }, - {token : "string", regex : '"', next : "start"}, - {defaultToken : "string"} - ], - "qstring" : [ - {token : "constant.language.escape", regex : /\\['\\]/}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(PhpLangHighlightRules, TextHighlightRules); - - -var PhpHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - token : "support.php_tag", // php open tag - regex : "<\\?(?:php|=)?", - push : "php-start" - } - ]; - - var endRules = [ - { - token : "support.php_tag", // php close tag - regex : "\\?>", - next : "pop" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); - - this.normalizeRules(); -}; - -oop.inherits(PhpHighlightRules, HtmlHighlightRules); - -exports.PhpHighlightRules = PhpHighlightRules; -exports.PhpLangHighlightRules = PhpLangHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var functionMap = { - "abs": [ - "int abs(int number)", - "Return the absolute value of the number" - ], - "acos": [ - "float acos(float number)", - "Return the arc cosine of the number in radians" - ], - "acosh": [ - "float acosh(float number)", - "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" - ], - "addGlob": [ - "bool addGlob(string pattern[,int flags [, array options]])", - "Add files matching the glob pattern. See php's glob for the pattern syntax." - ], - "addPattern": [ - "bool addPattern(string pattern[, string path [, array options]])", - "Add files matching the pcre pattern. See php's pcre for the pattern syntax." - ], - "addcslashes": [ - "string addcslashes(string str, string charlist)", - "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" - ], - "addslashes": [ - "string addslashes(string str)", - "Escapes single quote, double quotes and backslash characters in a string with backslashes" - ], - "apache_child_terminate": [ - "bool apache_child_terminate()", - "Terminate apache process after this request" - ], - "apache_get_modules": [ - "array apache_get_modules()", - "Get a list of loaded Apache modules" - ], - "apache_get_version": [ - "string apache_get_version()", - "Fetch Apache version" - ], - "apache_getenv": [ - "bool apache_getenv(string variable [, bool walk_to_top])", - "Get an Apache subprocess_env variable" - ], - "apache_lookup_uri": [ - "object apache_lookup_uri(string URI)", - "Perform a partial request of the given URI to obtain information about it" - ], - "apache_note": [ - "string apache_note(string note_name [, string note_value])", - "Get and set Apache request notes" - ], - "apache_request_auth_name": [ - "string apache_request_auth_name()", - "" - ], - "apache_request_auth_type": [ - "string apache_request_auth_type()", - "" - ], - "apache_request_discard_request_body": [ - "long apache_request_discard_request_body()", - "" - ], - "apache_request_err_headers_out": [ - "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", - "* fetch all headers that go out in case of an error or a subrequest" - ], - "apache_request_headers": [ - "array apache_request_headers()", - "Fetch all HTTP request headers" - ], - "apache_request_headers_in": [ - "array apache_request_headers_in()", - "* fetch all incoming request headers" - ], - "apache_request_headers_out": [ - "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", - "* fetch all outgoing request headers" - ], - "apache_request_is_initial_req": [ - "bool apache_request_is_initial_req()", - "" - ], - "apache_request_log_error": [ - "bool apache_request_log_error(string message, [long facility])", - "" - ], - "apache_request_meets_conditions": [ - "long apache_request_meets_conditions()", - "" - ], - "apache_request_remote_host": [ - "int apache_request_remote_host([int type])", - "" - ], - "apache_request_run": [ - "long apache_request_run()", - "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." - ], - "apache_request_satisfies": [ - "long apache_request_satisfies()", - "" - ], - "apache_request_server_port": [ - "int apache_request_server_port()", - "" - ], - "apache_request_set_etag": [ - "void apache_request_set_etag()", - "" - ], - "apache_request_set_last_modified": [ - "void apache_request_set_last_modified()", - "" - ], - "apache_request_some_auth_required": [ - "bool apache_request_some_auth_required()", - "" - ], - "apache_request_sub_req_lookup_file": [ - "object apache_request_sub_req_lookup_file(string file)", - "Returns sub-request for the specified file. You would need to run it yourself with run()." - ], - "apache_request_sub_req_lookup_uri": [ - "object apache_request_sub_req_lookup_uri(string uri)", - "Returns sub-request for the specified uri. You would need to run it yourself with run()" - ], - "apache_request_sub_req_method_uri": [ - "object apache_request_sub_req_method_uri(string method, string uri)", - "Returns sub-request for the specified file. You would need to run it yourself with run()." - ], - "apache_request_update_mtime": [ - "long apache_request_update_mtime([int dependency_mtime])", - "" - ], - "apache_reset_timeout": [ - "bool apache_reset_timeout()", - "Reset the Apache write timer" - ], - "apache_response_headers": [ - "array apache_response_headers()", - "Fetch all HTTP response headers" - ], - "apache_setenv": [ - "bool apache_setenv(string variable, string value [, bool walk_to_top])", - "Set an Apache subprocess_env variable" - ], - "array_change_key_case": [ - "array array_change_key_case(array input [, int case=CASE_LOWER])", - "Retuns an array with all string keys lowercased [or uppercased]" - ], - "array_chunk": [ - "array array_chunk(array input, int size [, bool preserve_keys])", - "Split array into chunks" - ], - "array_combine": [ - "array array_combine(array keys, array values)", - "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" - ], - "array_count_values": [ - "array array_count_values(array input)", - "Return the value as key and the frequency of that value in input as value" - ], - "array_diff": [ - "array array_diff(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are not present in any of the others arguments." - ], - "array_diff_assoc": [ - "array array_diff_assoc(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" - ], - "array_diff_key": [ - "array array_diff_key(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." - ], - "array_diff_uassoc": [ - "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." - ], - "array_diff_ukey": [ - "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", - "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." - ], - "array_fill": [ - "array array_fill(int start_key, int num, mixed val)", - "Create an array containing num elements starting with index start_key each initialized to val" - ], - "array_fill_keys": [ - "array array_fill_keys(array keys, mixed val)", - "Create an array using the elements of the first parameter as keys each initialized to val" - ], - "array_filter": [ - "array array_filter(array input [, mixed callback])", - "Filters elements from the array via the callback." - ], - "array_flip": [ - "array array_flip(array input)", - "Return array with key <-> value flipped" - ], - "array_intersect": [ - "array array_intersect(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are present in all the other arguments" - ], - "array_intersect_assoc": [ - "array array_intersect_assoc(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" - ], - "array_intersect_key": [ - "array array_intersect_key(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." - ], - "array_intersect_uassoc": [ - "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." - ], - "array_intersect_ukey": [ - "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", - "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." - ], - "array_key_exists": [ - "bool array_key_exists(mixed key, array search)", - "Checks if the given key or index exists in the array" - ], - "array_keys": [ - "array array_keys(array input [, mixed search_value[, bool strict]])", - "Return just the keys from the input array, optionally only for the specified search_value" - ], - "array_key_first": [ - "mixed array_key_first(array arr)", - "Returns the first key of arr if the array is not empty; NULL otherwise" - ], - "array_key_last": [ - "mixed array_key_last(array arr)", - "Returns the last key of arr if the array is not empty; NULL otherwise" - ], - "array_map": [ - "array array_map(mixed callback, array input1 [, array input2 ,...])", - "Applies the callback to the elements in given arrays." - ], - "array_merge": [ - "array array_merge(array arr1, array arr2 [, array ...])", - "Merges elements from passed arrays into one array" - ], - "array_merge_recursive": [ - "array array_merge_recursive(array arr1, array arr2 [, array ...])", - "Recursively merges elements from passed arrays into one array" - ], - "array_multisort": [ - "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", - "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" - ], - "array_pad": [ - "array array_pad(array input, int pad_size, mixed pad_value)", - "Returns a copy of input array padded with pad_value to size pad_size" - ], - "array_pop": [ - "mixed array_pop(array stack)", - "Pops an element off the end of the array" - ], - "array_product": [ - "mixed array_product(array input)", - "Returns the product of the array entries" - ], - "array_push": [ - "int array_push(array stack, mixed var [, mixed ...])", - "Pushes elements onto the end of the array" - ], - "array_rand": [ - "mixed array_rand(array input [, int num_req])", - "Return key/keys for random entry/entries in the array" - ], - "array_reduce": [ - "mixed array_reduce(array input, mixed callback [, mixed initial])", - "Iteratively reduce the array to a single value via the callback." - ], - "array_replace": [ - "array array_replace(array arr1, array arr2 [, array ...])", - "Replaces elements from passed arrays into one array" - ], - "array_replace_recursive": [ - "array array_replace_recursive(array arr1, array arr2 [, array ...])", - "Recursively replaces elements from passed arrays into one array" - ], - "array_reverse": [ - "array array_reverse(array input [, bool preserve keys])", - "Return input as a new array with the order of the entries reversed" - ], - "array_search": [ - "mixed array_search(mixed needle, array haystack [, bool strict])", - "Searches the array for a given value and returns the corresponding key if successful" - ], - "array_shift": [ - "mixed array_shift(array stack)", - "Pops an element off the beginning of the array" - ], - "array_slice": [ - "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", - "Returns elements specified by offset and length" - ], - "array_splice": [ - "array array_splice(array input, int offset [, int length [, array replacement]])", - "Removes the elements designated by offset and length and replace them with supplied array" - ], - "array_sum": [ - "mixed array_sum(array input)", - "Returns the sum of the array entries" - ], - "array_udiff": [ - "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." - ], - "array_udiff_assoc": [ - "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." - ], - "array_udiff_uassoc": [ - "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." - ], - "array_uintersect": [ - "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." - ], - "array_uintersect_assoc": [ - "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." - ], - "array_uintersect_uassoc": [ - "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." - ], - "array_unique": [ - "array array_unique(array input [, int sort_flags])", - "Removes duplicate values from array" - ], - "array_unshift": [ - "int array_unshift(array stack, mixed var [, mixed ...])", - "Pushes elements onto the beginning of the array" - ], - "array_values": [ - "array array_values(array input)", - "Return just the values from the input array" - ], - "array_walk": [ - "bool array_walk(array input, string funcname [, mixed userdata])", - "Apply a user function to every member of an array" - ], - "array_walk_recursive": [ - "bool array_walk_recursive(array input, string funcname [, mixed userdata])", - "Apply a user function recursively to every member of an array" - ], - "arsort": [ - "bool arsort(array &array_arg [, int sort_flags])", - "Sort an array in reverse order and maintain index association" - ], - "asin": [ - "float asin(float number)", - "Returns the arc sine of the number in radians" - ], - "asinh": [ - "float asinh(float number)", - "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" - ], - "asort": [ - "bool asort(array &array_arg [, int sort_flags])", - "Sort an array and maintain index association" - ], - "assert": [ - "int assert(string|bool assertion)", - "Checks if assertion is false" - ], - "assert_options": [ - "mixed assert_options(int what [, mixed value])", - "Set/get the various assert flags" - ], - "atan": [ - "float atan(float number)", - "Returns the arc tangent of the number in radians" - ], - "atan2": [ - "float atan2(float y, float x)", - "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" - ], - "atanh": [ - "float atanh(float number)", - "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" - ], - "attachIterator": [ - "void attachIterator(Iterator iterator[, mixed info])", - "Attach a new iterator" - ], - "base64_decode": [ - "string base64_decode(string str[, bool strict])", - "Decodes string using MIME base64 algorithm" - ], - "base64_encode": [ - "string base64_encode(string str)", - "Encodes string using MIME base64 algorithm" - ], - "base_convert": [ - "string base_convert(string number, int frombase, int tobase)", - "Converts a number in a string from any base <= 36 to any base <= 36" - ], - "basename": [ - "string basename(string path [, string suffix])", - "Returns the filename component of the path" - ], - "bcadd": [ - "string bcadd(string left_operand, string right_operand [, int scale])", - "Returns the sum of two arbitrary precision numbers" - ], - "bccomp": [ - "int bccomp(string left_operand, string right_operand [, int scale])", - "Compares two arbitrary precision numbers" - ], - "bcdiv": [ - "string bcdiv(string left_operand, string right_operand [, int scale])", - "Returns the quotient of two arbitrary precision numbers (division)" - ], - "bcmod": [ - "string bcmod(string left_operand, string right_operand)", - "Returns the modulus of the two arbitrary precision operands" - ], - "bcmul": [ - "string bcmul(string left_operand, string right_operand [, int scale])", - "Returns the multiplication of two arbitrary precision numbers" - ], - "bcpow": [ - "string bcpow(string x, string y [, int scale])", - "Returns the value of an arbitrary precision number raised to the power of another" - ], - "bcpowmod": [ - "string bcpowmod(string x, string y, string mod [, int scale])", - "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" - ], - "bcscale": [ - "bool bcscale(int scale)", - "Sets default scale parameter for all bc math functions" - ], - "bcsqrt": [ - "string bcsqrt(string operand [, int scale])", - "Returns the square root of an arbitray precision number" - ], - "bcsub": [ - "string bcsub(string left_operand, string right_operand [, int scale])", - "Returns the difference between two arbitrary precision numbers" - ], - "bin2hex": [ - "string bin2hex(string data)", - "Converts the binary representation of data to hex" - ], - "bind_textdomain_codeset": [ - "string bind_textdomain_codeset (string domain, string codeset)", - "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." - ], - "bindec": [ - "int bindec(string binary_number)", - "Returns the decimal equivalent of the binary number" - ], - "bindtextdomain": [ - "string bindtextdomain(string domain_name, string dir)", - "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" - ], - "birdstep_autocommit": [ - "bool birdstep_autocommit(int index)", - "" - ], - "birdstep_close": [ - "bool birdstep_close(int id)", - "" - ], - "birdstep_commit": [ - "bool birdstep_commit(int index)", - "" - ], - "birdstep_connect": [ - "int birdstep_connect(string server, string user, string pass)", - "" - ], - "birdstep_exec": [ - "int birdstep_exec(int index, string exec_str)", - "" - ], - "birdstep_fetch": [ - "bool birdstep_fetch(int index)", - "" - ], - "birdstep_fieldname": [ - "string birdstep_fieldname(int index, int col)", - "" - ], - "birdstep_fieldnum": [ - "int birdstep_fieldnum(int index)", - "" - ], - "birdstep_freeresult": [ - "bool birdstep_freeresult(int index)", - "" - ], - "birdstep_off_autocommit": [ - "bool birdstep_off_autocommit(int index)", - "" - ], - "birdstep_result": [ - "mixed birdstep_result(int index, mixed col)", - "" - ], - "birdstep_rollback": [ - "bool birdstep_rollback(int index)", - "" - ], - "bzcompress": [ - "string bzcompress(string source [, int blocksize100k [, int workfactor]])", - "Compresses a string into BZip2 encoded data" - ], - "bzdecompress": [ - "string bzdecompress(string source [, int small])", - "Decompresses BZip2 compressed data" - ], - "bzerrno": [ - "int bzerrno(resource bz)", - "Returns the error number" - ], - "bzerror": [ - "array bzerror(resource bz)", - "Returns the error number and error string in an associative array" - ], - "bzerrstr": [ - "string bzerrstr(resource bz)", - "Returns the error string" - ], - "bzopen": [ - "resource bzopen(string|int file|fp, string mode)", - "Opens a new BZip2 stream" - ], - "bzread": [ - "string bzread(resource bz[, int length])", - "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" - ], - "cal_days_in_month": [ - "int cal_days_in_month(int calendar, int month, int year)", - "Returns the number of days in a month for a given year and calendar" - ], - "cal_from_jd": [ - "array cal_from_jd(int jd, int calendar)", - "Converts from Julian Day Count to a supported calendar and return extended information" - ], - "cal_info": [ - "array cal_info([int calendar])", - "Returns information about a particular calendar" - ], - "cal_to_jd": [ - "int cal_to_jd(int calendar, int month, int day, int year)", - "Converts from a supported calendar to Julian Day Count" - ], - "call_user_func": [ - "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", - "Call a user function which is the first parameter" - ], - "call_user_func_array": [ - "mixed call_user_func_array(string function_name, array parameters)", - "Call a user function which is the first parameter with the arguments contained in array" - ], - "call_user_method": [ - "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", - "Call a user method on a specific object or class" - ], - "call_user_method_array": [ - "mixed call_user_method_array(string method_name, mixed object, array params)", - "Call a user method on a specific object or class using a parameter array" - ], - "ceil": [ - "float ceil(float number)", - "Returns the next highest integer value of the number" - ], - "chdir": [ - "bool chdir(string directory)", - "Change the current directory" - ], - "checkdate": [ - "bool checkdate(int month, int day, int year)", - "Returns true(1) if it is a valid date in gregorian calendar" - ], - "chgrp": [ - "bool chgrp(string filename, mixed group)", - "Change file group" - ], - "chmod": [ - "bool chmod(string filename, int mode)", - "Change file mode" - ], - "chown": [ - "bool chown(string filename, mixed user)", - "Change file owner" - ], - "chr": [ - "string chr(int ascii)", - "Converts ASCII code to a character" - ], - "chroot": [ - "bool chroot(string directory)", - "Change root directory" - ], - "chunk_split": [ - "string chunk_split(string str [, int chunklen [, string ending]])", - "Returns split line" - ], - "class_alias": [ - "bool class_alias(string user_class_name , string alias_name [, bool autoload])", - "Creates an alias for user defined class" - ], - "class_exists": [ - "bool class_exists(string classname [, bool autoload])", - "Checks if the class exists" - ], - "class_implements": [ - "array class_implements(mixed what [, bool autoload ])", - "Return all classes and interfaces implemented by SPL" - ], - "class_parents": [ - "array class_parents(object instance [, bool autoload = true])", - "Return an array containing the names of all parent classes" - ], - "clearstatcache": [ - "void clearstatcache([bool clear_realpath_cache[, string filename]])", - "Clear file stat cache" - ], - "closedir": [ - "void closedir([resource dir_handle])", - "Close directory connection identified by the dir_handle" - ], - "closelog": [ - "bool closelog()", - "Close connection to system logger" - ], - "collator_asort": [ - "bool collator_asort( Collator $coll, array(string) $arr )", - "* Sort array using specified collator, maintaining index association." - ], - "collator_compare": [ - "int collator_compare( Collator $coll, string $str1, string $str2 )", - "* Compare two strings." - ], - "collator_create": [ - "Collator collator_create( string $locale )", - "* Create collator." - ], - "collator_get_attribute": [ - "int collator_get_attribute( Collator $coll, int $attr )", - "* Get collation attribute value." - ], - "collator_get_error_code": [ - "int collator_get_error_code( Collator $coll )", - "* Get collator's last error code." - ], - "collator_get_error_message": [ - "string collator_get_error_message( Collator $coll )", - "* Get text description for collator's last error code." - ], - "collator_get_locale": [ - "string collator_get_locale( Collator $coll, int $type )", - "* Gets the locale name of the collator." - ], - "collator_get_sort_key": [ - "bool collator_get_sort_key( Collator $coll, string $str )", - "* Get a sort key for a string from a Collator. }}}" - ], - "collator_get_strength": [ - "int collator_get_strength(Collator coll)", - "* Returns the current collation strength." - ], - "collator_set_attribute": [ - "bool collator_set_attribute( Collator $coll, int $attr, int $val )", - "* Set collation attribute." - ], - "collator_set_strength": [ - "bool collator_set_strength(Collator coll, int strength)", - "* Set the collation strength." - ], - "collator_sort": [ - "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", - "* Sort array using specified collator." - ], - "collator_sort_with_sort_keys": [ - "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", - "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." - ], - "com_create_guid": [ - "string com_create_guid()", - "Generate a globally unique identifier (GUID)" - ], - "com_event_sink": [ - "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", - "Connect events from a COM object to a PHP object" - ], - "com_get_active_object": [ - "object com_get_active_object(string progid [, int code_page ])", - "Returns a handle to an already running instance of a COM object" - ], - "com_load_typelib": [ - "bool com_load_typelib(string typelib_name [, int case_insensitive])", - "Loads a Typelibrary and registers its constants" - ], - "com_message_pump": [ - "bool com_message_pump([int timeoutms])", - "Process COM messages, sleeping for up to timeoutms milliseconds" - ], - "com_print_typeinfo": [ - "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", - "Print out a PHP class definition for a dispatchable interface" - ], - "compact": [ - "array compact(mixed var_names [, mixed ...])", - "Creates a hash containing variables and their values" - ], - "compose_locale": [ - "static string compose_locale($array)", - "* Creates a locale by combining the parts of locale-ID passed * }}}" - ], - "confirm_extname_compiled": [ - "string confirm_extname_compiled(string arg)", - "Return a string to confirm that the module is compiled in" - ], - "connection_aborted": [ - "int connection_aborted()", - "Returns true if client disconnected" - ], - "connection_status": [ - "int connection_status()", - "Returns the connection status bitfield" - ], - "constant": [ - "mixed constant(string const_name)", - "Given the name of a constant this function will return the constant's associated value" - ], - "convert_cyr_string": [ - "string convert_cyr_string(string str, string from, string to)", - "Convert from one Cyrillic character set to another" - ], - "convert_uudecode": [ - "string convert_uudecode(string data)", - "decode a uuencoded string" - ], - "convert_uuencode": [ - "string convert_uuencode(string data)", - "uuencode a string" - ], - "copy": [ - "bool copy(string source_file, string destination_file [, resource context])", - "Copy a file" - ], - "cos": [ - "float cos(float number)", - "Returns the cosine of the number in radians" - ], - "cosh": [ - "float cosh(float number)", - "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" - ], - "count": [ - "int count(mixed var [, int mode])", - "Count the number of elements in a variable (usually an array)" - ], - "count_chars": [ - "mixed count_chars(string input [, int mode])", - "Returns info about what characters are used in input" - ], - "crc32": [ - "string crc32(string str)", - "Calculate the crc32 polynomial of a string" - ], - "create_function": [ - "string create_function(string args, string code)", - "Creates an anonymous function, and returns its name" - ], - "crypt": [ - "string crypt(string str [, string salt])", - "Hash a string" - ], - "ctype_alnum": [ - "bool ctype_alnum(mixed c)", - "Checks for alphanumeric character(s)" - ], - "ctype_alpha": [ - "bool ctype_alpha(mixed c)", - "Checks for alphabetic character(s)" - ], - "ctype_cntrl": [ - "bool ctype_cntrl(mixed c)", - "Checks for control character(s)" - ], - "ctype_digit": [ - "bool ctype_digit(mixed c)", - "Checks for numeric character(s)" - ], - "ctype_graph": [ - "bool ctype_graph(mixed c)", - "Checks for any printable character(s) except space" - ], - "ctype_lower": [ - "bool ctype_lower(mixed c)", - "Checks for lowercase character(s)" - ], - "ctype_print": [ - "bool ctype_print(mixed c)", - "Checks for printable character(s)" - ], - "ctype_punct": [ - "bool ctype_punct(mixed c)", - "Checks for any printable character which is not whitespace or an alphanumeric character" - ], - "ctype_space": [ - "bool ctype_space(mixed c)", - "Checks for whitespace character(s)" - ], - "ctype_upper": [ - "bool ctype_upper(mixed c)", - "Checks for uppercase character(s)" - ], - "ctype_xdigit": [ - "bool ctype_xdigit(mixed c)", - "Checks for character(s) representing a hexadecimal digit" - ], - "curl_close": [ - "void curl_close(resource ch)", - "Close a cURL session" - ], - "curl_copy_handle": [ - "resource curl_copy_handle(resource ch)", - "Copy a cURL handle along with all of it's preferences" - ], - "curl_errno": [ - "int curl_errno(resource ch)", - "Return an integer containing the last error number" - ], - "curl_error": [ - "string curl_error(resource ch)", - "Return a string contain the last error for the current session" - ], - "curl_exec": [ - "bool curl_exec(resource ch)", - "Perform a cURL session" - ], - "curl_getinfo": [ - "mixed curl_getinfo(resource ch [, int option])", - "Get information regarding a specific transfer" - ], - "curl_init": [ - "resource curl_init([string url])", - "Initialize a cURL session" - ], - "curl_multi_add_handle": [ - "int curl_multi_add_handle(resource mh, resource ch)", - "Add a normal cURL handle to a cURL multi handle" - ], - "curl_multi_close": [ - "void curl_multi_close(resource mh)", - "Close a set of cURL handles" - ], - "curl_multi_exec": [ - "int curl_multi_exec(resource mh, int &still_running)", - "Run the sub-connections of the current cURL handle" - ], - "curl_multi_getcontent": [ - "string curl_multi_getcontent(resource ch)", - "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" - ], - "curl_multi_info_read": [ - "array curl_multi_info_read(resource mh [, long msgs_in_queue])", - "Get information about the current transfers" - ], - "curl_multi_init": [ - "resource curl_multi_init()", - "Returns a new cURL multi handle" - ], - "curl_multi_remove_handle": [ - "int curl_multi_remove_handle(resource mh, resource ch)", - "Remove a multi handle from a set of cURL handles" - ], - "curl_multi_select": [ - "int curl_multi_select(resource mh[, double timeout])", - "Get all the sockets associated with the cURL extension, which can then be \"selected\"" - ], - "curl_setopt": [ - "bool curl_setopt(resource ch, int option, mixed value)", - "Set an option for a cURL transfer" - ], - "curl_setopt_array": [ - "bool curl_setopt_array(resource ch, array options)", - "Set an array of option for a cURL transfer" - ], - "curl_version": [ - "array curl_version([int version])", - "Return cURL version information." - ], - "current": [ - "mixed current(array array_arg)", - "Return the element currently pointed to by the internal array pointer" - ], - "date": [ - "string date(string format [, long timestamp])", - "Format a local date/time" - ], - "date_add": [ - "DateTime date_add(DateTime object, DateInterval interval)", - "Adds an interval to the current date in object." - ], - "date_create": [ - "DateTime date_create([string time[, DateTimeZone object]])", - "Returns new DateTime object" - ], - "date_create_from_format": [ - "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", - "Returns new DateTime object formatted according to the specified format" - ], - "date_date_set": [ - "DateTime date_date_set(DateTime object, long year, long month, long day)", - "Sets the date." - ], - "date_default_timezone_get": [ - "string date_default_timezone_get()", - "Gets the default timezone used by all date/time functions in a script" - ], - "date_default_timezone_set": [ - "bool date_default_timezone_set(string timezone_identifier)", - "Sets the default timezone used by all date/time functions in a script" - ], - "date_diff": [ - "DateInterval date_diff(DateTime object [, bool absolute])", - "Returns the difference between two DateTime objects." - ], - "date_format": [ - "string date_format(DateTime object, string format)", - "Returns date formatted according to given format" - ], - "date_get_last_errors": [ - "array date_get_last_errors()", - "Returns the warnings and errors found while parsing a date/time string." - ], - "date_interval_create_from_date_string": [ - "DateInterval date_interval_create_from_date_string(string time)", - "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" - ], - "date_interval_format": [ - "string date_interval_format(DateInterval object, string format)", - "Formats the interval." - ], - "date_isodate_set": [ - "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", - "Sets the ISO date." - ], - "date_modify": [ - "DateTime date_modify(DateTime object, string modify)", - "Alters the timestamp." - ], - "date_offset_get": [ - "long date_offset_get(DateTime object)", - "Returns the DST offset." - ], - "date_parse": [ - "array date_parse(string date)", - "Returns associative array with detailed info about given date" - ], - "date_parse_from_format": [ - "array date_parse_from_format(string format, string date)", - "Returns associative array with detailed info about given date" - ], - "date_sub": [ - "DateTime date_sub(DateTime object, DateInterval interval)", - "Subtracts an interval to the current date in object." - ], - "date_sun_info": [ - "array date_sun_info(long time, float latitude, float longitude)", - "Returns an array with information about sun set/rise and twilight begin/end" - ], - "date_sunrise": [ - "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", - "Returns time of sunrise for a given day and location" - ], - "date_sunset": [ - "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", - "Returns time of sunset for a given day and location" - ], - "date_time_set": [ - "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", - "Sets the time." - ], - "date_timestamp_get": [ - "long date_timestamp_get(DateTime object)", - "Gets the Unix timestamp." - ], - "date_timestamp_set": [ - "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", - "Sets the date and time based on an Unix timestamp." - ], - "date_timezone_get": [ - "DateTimeZone date_timezone_get(DateTime object)", - "Return new DateTimeZone object relative to give DateTime" - ], - "date_timezone_set": [ - "DateTime date_timezone_set(DateTime object, DateTimeZone object)", - "Sets the timezone for the DateTime object." - ], - "datefmt_create": [ - "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", - "* Create formatter." - ], - "datefmt_format": [ - "string datefmt_format( [mixed]int $args or array $args )", - "* Format the time value as a string. }}}" - ], - "datefmt_get_calendar": [ - "string datefmt_get_calendar( IntlDateFormatter $mf )", - "* Get formatter calendar." - ], - "datefmt_get_datetype": [ - "string datefmt_get_datetype( IntlDateFormatter $mf )", - "* Get formatter datetype." - ], - "datefmt_get_error_code": [ - "int datefmt_get_error_code( IntlDateFormatter $nf )", - "* Get formatter's last error code." - ], - "datefmt_get_error_message": [ - "string datefmt_get_error_message( IntlDateFormatter $coll )", - "* Get text description for formatter's last error code." - ], - "datefmt_get_locale": [ - "string datefmt_get_locale(IntlDateFormatter $mf)", - "* Get formatter locale." - ], - "datefmt_get_pattern": [ - "string datefmt_get_pattern( IntlDateFormatter $mf )", - "* Get formatter pattern." - ], - "datefmt_get_timetype": [ - "string datefmt_get_timetype( IntlDateFormatter $mf )", - "* Get formatter timetype." - ], - "datefmt_get_timezone_id": [ - "string datefmt_get_timezone_id( IntlDateFormatter $mf )", - "* Get formatter timezone_id." - ], - "datefmt_isLenient": [ - "string datefmt_isLenient(IntlDateFormatter $mf)", - "* Get formatter locale." - ], - "datefmt_localtime": [ - "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", - "* Parse the string $value to a localtime array }}}" - ], - "datefmt_parse": [ - "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", - "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" - ], - "datefmt_setLenient": [ - "string datefmt_setLenient(IntlDateFormatter $mf)", - "* Set formatter lenient." - ], - "datefmt_set_calendar": [ - "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", - "* Set formatter calendar." - ], - "datefmt_set_pattern": [ - "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", - "* Set formatter pattern." - ], - "datefmt_set_timezone_id": [ - "bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", - "* Set formatter timezone_id." - ], - "dba_close": [ - "void dba_close(resource handle)", - "Closes database" - ], - "dba_delete": [ - "bool dba_delete(string key, resource handle)", - "Deletes the entry associated with key If inifile: remove all other key lines" - ], - "dba_exists": [ - "bool dba_exists(string key, resource handle)", - "Checks, if the specified key exists" - ], - "dba_fetch": [ - "string dba_fetch(string key, [int skip ,] resource handle)", - "Fetches the data associated with key" - ], - "dba_firstkey": [ - "string dba_firstkey(resource handle)", - "Resets the internal key pointer and returns the first key" - ], - "dba_handlers": [ - "array dba_handlers([bool full_info])", - "List configured database handlers" - ], - "dba_insert": [ - "bool dba_insert(string key, string value, resource handle)", - "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" - ], - "dba_key_split": [ - "array|false dba_key_split(string key)", - "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" - ], - "dba_list": [ - "array dba_list()", - "List opened databases" - ], - "dba_nextkey": [ - "string dba_nextkey(resource handle)", - "Returns the next key" - ], - "dba_open": [ - "resource dba_open(string path, string mode [, string handlername, string ...])", - "Opens path using the specified handler in mode" - ], - "dba_optimize": [ - "bool dba_optimize(resource handle)", - "Optimizes (e.g. clean up, vacuum) database" - ], - "dba_popen": [ - "resource dba_popen(string path, string mode [, string handlername, string ...])", - "Opens path using the specified handler in mode persistently" - ], - "dba_replace": [ - "bool dba_replace(string key, string value, resource handle)", - "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" - ], - "dba_sync": [ - "bool dba_sync(resource handle)", - "Synchronizes database" - ], - "dcgettext": [ - "string dcgettext(string domain_name, string msgid, long category)", - "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" - ], - "dcngettext": [ - "string dcngettext(string domain, string msgid1, string msgid2, int n, int category)", - "Plural version of dcgettext()" - ], - "debug_backtrace": [ - "array debug_backtrace([bool provide_object])", - "Return backtrace as array" - ], - "debug_print_backtrace": [ - "void debug_print_backtrace()", - "Prints a PHP backtrace" - ], - "debug_zval_dump": [ - "void debug_zval_dump(mixed var)", - "Dumps a string representation of an internal Zend value to output" - ], - "decbin": [ - "string decbin(int decimal_number)", - "Returns a string containing a binary representation of the number" - ], - "dechex": [ - "string dechex(int decimal_number)", - "Returns a string containing a hexadecimal representation of the given number" - ], - "decoct": [ - "string decoct(int decimal_number)", - "Returns a string containing an octal representation of the given number" - ], - "define": [ - "bool define(string constant_name, mixed value, bool case_insensitive=false)", - "Define a new constant" - ], - "define_syslog_variables": [ - "void define_syslog_variables()", - "Initializes all syslog-related variables" - ], - "defined": [ - "bool defined(string constant_name)", - "Check whether a constant exists" - ], - "deg2rad": [ - "float deg2rad(float number)", - "Converts the number in degrees to the radian equivalent" - ], - "dgettext": [ - "string dgettext(string domain_name, string msgid)", - "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" - ], - "die": [ - "void die([mixed status])", - "Output a message and terminate the current script" - ], - "dir": [ - "object dir(string directory[, resource context])", - "Directory class with properties, handle and class and methods read, rewind and close" - ], - "dirname": [ - "string dirname(string path)", - "Returns the directory name component of the path" - ], - "disk_free_space": [ - "float disk_free_space(string path)", - "Get free disk space for filesystem that path is on" - ], - "disk_total_space": [ - "float disk_total_space(string path)", - "Get total disk space for filesystem that path is on" - ], - "display_disabled_function": [ - "void display_disabled_function()", - "Dummy function which displays an error when a disabled function is called." - ], - "dl": [ - "int dl(string extension_filename)", - "Load a PHP extension at runtime" - ], - "dngettext": [ - "string dngettext(string domain, string msgid1, string msgid2, int count)", - "Plural version of dgettext()" - ], - "dns_check_record": [ - "bool dns_check_record(string host [, string type])", - "Check DNS records corresponding to a given Internet host name or IP address" - ], - "dns_get_mx": [ - "bool dns_get_mx(string hostname, array mxhosts [, array weight])", - "Get MX records corresponding to a given Internet host name" - ], - "dns_get_record": [ - "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", - "Get any Resource Record corresponding to a given Internet host name" - ], - "dom_attr_is_id": [ - "bool dom_attr_is_id()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" - ], - "dom_characterdata_append_data": [ - "void dom_characterdata_append_data(string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" - ], - "dom_characterdata_delete_data": [ - "void dom_characterdata_delete_data(int offset, int count)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" - ], - "dom_characterdata_insert_data": [ - "void dom_characterdata_insert_data(int offset, string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" - ], - "dom_characterdata_replace_data": [ - "void dom_characterdata_replace_data(int offset, int count, string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" - ], - "dom_characterdata_substring_data": [ - "string dom_characterdata_substring_data(int offset, int count)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" - ], - "dom_document_adopt_node": [ - "DOMNode dom_document_adopt_node(DOMNode source)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" - ], - "dom_document_create_attribute": [ - "DOMAttr dom_document_create_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" - ], - "dom_document_create_attribute_ns": [ - "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" - ], - "dom_document_create_cdatasection": [ - "DOMCdataSection dom_document_create_cdatasection(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" - ], - "dom_document_create_comment": [ - "DOMComment dom_document_create_comment(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" - ], - "dom_document_create_document_fragment": [ - "DOMDocumentFragment dom_document_create_document_fragment()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" - ], - "dom_document_create_element": [ - "DOMElement dom_document_create_element(string tagName [, string value])", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" - ], - "dom_document_create_element_ns": [ - "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" - ], - "dom_document_create_entity_reference": [ - "DOMEntityReference dom_document_create_entity_reference(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" - ], - "dom_document_create_processing_instruction": [ - "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" - ], - "dom_document_create_text_node": [ - "DOMText dom_document_create_text_node(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" - ], - "dom_document_get_element_by_id": [ - "DOMElement dom_document_get_element_by_id(string elementId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" - ], - "dom_document_get_elements_by_tag_name": [ - "DOMNodeList dom_document_get_elements_by_tag_name(string tagname)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" - ], - "dom_document_get_elements_by_tag_name_ns": [ - "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" - ], - "dom_document_import_node": [ - "DOMNode dom_document_import_node(DOMNode importedNode, bool deep)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" - ], - "dom_document_load": [ - "DOMNode dom_document_load(string source [, int options])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" - ], - "dom_document_load_html": [ - "DOMNode dom_document_load_html(string source)", - "Since: DOM extended" - ], - "dom_document_load_html_file": [ - "DOMNode dom_document_load_html_file(string source)", - "Since: DOM extended" - ], - "dom_document_loadxml": [ - "DOMNode dom_document_loadxml(string source [, int options])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" - ], - "dom_document_normalize_document": [ - "void dom_document_normalize_document()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" - ], - "dom_document_relaxNG_validate_file": [ - "bool dom_document_relaxNG_validate_file(string filename); */", - "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" - ], - "dom_document_relaxNG_validate_xml": [ - "bool dom_document_relaxNG_validate_xml(string source); */", - "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" - ], - "dom_document_rename_node": [ - "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" - ], - "dom_document_save": [ - "int dom_document_save(string file)", - "Convenience method to save to file" - ], - "dom_document_save_html": [ - "string dom_document_save_html()", - "Convenience method to output as html" - ], - "dom_document_save_html_file": [ - "int dom_document_save_html_file(string file)", - "Convenience method to save to file as html" - ], - "dom_document_savexml": [ - "string dom_document_savexml([node n])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" - ], - "dom_document_schema_validate": [ - "bool dom_document_schema_validate(string source); */", - "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" - ], - "dom_document_schema_validate_file": [ - "bool dom_document_schema_validate_file(string filename); */", - "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" - ], - "dom_document_validate": [ - "bool dom_document_validate()", - "Since: DOM extended" - ], - "dom_document_xinclude": [ - "int dom_document_xinclude([int options])", - "Substitutues xincludes in a DomDocument" - ], - "dom_domconfiguration_can_set_parameter": [ - "bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" - ], - "dom_domconfiguration_get_parameter": [ - "domdomuserdata dom_domconfiguration_get_parameter(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" - ], - "dom_domconfiguration_set_parameter": [ - "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" - ], - "dom_domerrorhandler_handle_error": [ - "dom_bool dom_domerrorhandler_handle_error(domerror error)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" - ], - "dom_domimplementation_create_document": [ - "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" - ], - "dom_domimplementation_create_document_type": [ - "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" - ], - "dom_domimplementation_get_feature": [ - "DOMNode dom_domimplementation_get_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" - ], - "dom_domimplementation_has_feature": [ - "bool dom_domimplementation_has_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" - ], - "dom_domimplementationlist_item": [ - "domdomimplementation dom_domimplementationlist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" - ], - "dom_domimplementationsource_get_domimplementation": [ - "domdomimplementation dom_domimplementationsource_get_domimplementation(string features)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" - ], - "dom_domimplementationsource_get_domimplementations": [ - "domimplementationlist dom_domimplementationsource_get_domimplementations(string features)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" - ], - "dom_domstringlist_item": [ - "domstring dom_domstringlist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" - ], - "dom_element_get_attribute": [ - "string dom_element_get_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" - ], - "dom_element_get_attribute_node": [ - "DOMAttr dom_element_get_attribute_node(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" - ], - "dom_element_get_attribute_node_ns": [ - "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" - ], - "dom_element_get_attribute_ns": [ - "string dom_element_get_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" - ], - "dom_element_get_elements_by_tag_name": [ - "DOMNodeList dom_element_get_elements_by_tag_name(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" - ], - "dom_element_get_elements_by_tag_name_ns": [ - "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" - ], - "dom_element_has_attribute": [ - "bool dom_element_has_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" - ], - "dom_element_has_attribute_ns": [ - "bool dom_element_has_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" - ], - "dom_element_remove_attribute": [ - "void dom_element_remove_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" - ], - "dom_element_remove_attribute_node": [ - "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" - ], - "dom_element_remove_attribute_ns": [ - "void dom_element_remove_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" - ], - "dom_element_set_attribute": [ - "void dom_element_set_attribute(string name, string value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" - ], - "dom_element_set_attribute_node": [ - "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" - ], - "dom_element_set_attribute_node_ns": [ - "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" - ], - "dom_element_set_attribute_ns": [ - "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" - ], - "dom_element_set_id_attribute": [ - "void dom_element_set_id_attribute(string name, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" - ], - "dom_element_set_id_attribute_node": [ - "void dom_element_set_id_attribute_node(attr idAttr, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" - ], - "dom_element_set_id_attribute_ns": [ - "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" - ], - "dom_import_simplexml": [ - "somNode dom_import_simplexml(sxeobject node)", - "Get a simplexml_element object from dom to allow for processing" - ], - "dom_namednodemap_get_named_item": [ - "DOMNode dom_namednodemap_get_named_item(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" - ], - "dom_namednodemap_get_named_item_ns": [ - "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" - ], - "dom_namednodemap_item": [ - "DOMNode dom_namednodemap_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" - ], - "dom_namednodemap_remove_named_item": [ - "DOMNode dom_namednodemap_remove_named_item(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" - ], - "dom_namednodemap_remove_named_item_ns": [ - "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" - ], - "dom_namednodemap_set_named_item": [ - "DOMNode dom_namednodemap_set_named_item(DOMNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" - ], - "dom_namednodemap_set_named_item_ns": [ - "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" - ], - "dom_namelist_get_name": [ - "string dom_namelist_get_name(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" - ], - "dom_namelist_get_namespace_uri": [ - "string dom_namelist_get_namespace_uri(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" - ], - "dom_node_append_child": [ - "DomNode dom_node_append_child(DomNode newChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" - ], - "dom_node_clone_node": [ - "DomNode dom_node_clone_node(bool deep)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" - ], - "dom_node_compare_document_position": [ - "short dom_node_compare_document_position(DomNode other)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" - ], - "dom_node_get_feature": [ - "DomNode dom_node_get_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" - ], - "dom_node_get_user_data": [ - "mixed dom_node_get_user_data(string key)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" - ], - "dom_node_has_attributes": [ - "bool dom_node_has_attributes()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" - ], - "dom_node_has_child_nodes": [ - "bool dom_node_has_child_nodes()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" - ], - "dom_node_insert_before": [ - "domnode dom_node_insert_before(DomNode newChild, DomNode refChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" - ], - "dom_node_is_default_namespace": [ - "bool dom_node_is_default_namespace(string namespaceURI)", - "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" - ], - "dom_node_is_equal_node": [ - "bool dom_node_is_equal_node(DomNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" - ], - "dom_node_is_same_node": [ - "bool dom_node_is_same_node(DomNode other)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" - ], - "dom_node_is_supported": [ - "bool dom_node_is_supported(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" - ], - "dom_node_lookup_namespace_uri": [ - "string dom_node_lookup_namespace_uri(string prefix)", - "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" - ], - "dom_node_lookup_prefix": [ - "string dom_node_lookup_prefix(string namespaceURI)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" - ], - "dom_node_normalize": [ - "void dom_node_normalize()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" - ], - "dom_node_remove_child": [ - "DomNode dom_node_remove_child(DomNode oldChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" - ], - "dom_node_replace_child": [ - "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" - ], - "dom_node_set_user_data": [ - "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" - ], - "dom_nodelist_item": [ - "DOMNode dom_nodelist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" - ], - "dom_string_extend_find_offset16": [ - "int dom_string_extend_find_offset16(int offset32)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" - ], - "dom_string_extend_find_offset32": [ - "int dom_string_extend_find_offset32(int offset16)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" - ], - "dom_text_is_whitespace_in_element_content": [ - "bool dom_text_is_whitespace_in_element_content()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" - ], - "dom_text_replace_whole_text": [ - "DOMText dom_text_replace_whole_text(string content)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" - ], - "dom_text_split_text": [ - "DOMText dom_text_split_text(int offset)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" - ], - "dom_userdatahandler_handle": [ - "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" - ], - "dom_xpath_evaluate": [ - "mixed dom_xpath_evaluate(string expr [,DOMNode context])", - "" - ], - "dom_xpath_query": [ - "DOMNodeList dom_xpath_query(string expr [,DOMNode context])", - "" - ], - "dom_xpath_register_ns": [ - "bool dom_xpath_register_ns(string prefix, string uri)", - "" - ], - "dom_xpath_register_php_functions": [ - "void dom_xpath_register_php_functions()", - "" - ], - "each": [ - "array each(array arr)", - "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" - ], - "easter_date": [ - "int easter_date([int year])", - "Return the timestamp of midnight on Easter of a given year (defaults to current year)" - ], - "easter_days": [ - "int easter_days([int year, [int method]])", - "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" - ], - "echo": [ - "void echo(string arg1 [, string ...])", - "Output one or more strings" - ], - "empty": [ - "bool empty(mixed var)", - "Determine whether a variable is empty" - ], - "enchant_broker_describe": [ - "array enchant_broker_describe(resource broker)", - "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" - ], - "enchant_broker_dict_exists": [ - "bool enchant_broker_dict_exists(resource broker, string tag)", - "Whether a dictionary exists or not. Using non-empty tag" - ], - "enchant_broker_free": [ - "bool enchant_broker_free(resource broker)", - "Destroys the broker object and its dictionnaries" - ], - "enchant_broker_free_dict": [ - "resource enchant_broker_free_dict(resource dict)", - "Free the dictionary resource" - ], - "enchant_broker_get_dict_path": [ - "string enchant_broker_get_dict_path(resource broker, int dict_type)", - "Get the directory path for a given backend, works with ispell and myspell" - ], - "enchant_broker_get_error": [ - "string enchant_broker_get_error(resource broker)", - "Returns the last error of the broker" - ], - "enchant_broker_init": [ - "resource enchant_broker_init()", - "create a new broker object capable of requesting" - ], - "enchant_broker_list_dicts": [ - "string enchant_broker_list_dicts(resource broker)", - "Lists the dictionaries available for the given broker" - ], - "enchant_broker_request_dict": [ - "resource enchant_broker_request_dict(resource broker, string tag)", - "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" - ], - "enchant_broker_request_pwl_dict": [ - "resource enchant_broker_request_pwl_dict(resource broker, string filename)", - "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." - ], - "enchant_broker_set_dict_path": [ - "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", - "Set the directory path for a given backend, works with ispell and myspell" - ], - "enchant_broker_set_ordering": [ - "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", - "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." - ], - "enchant_dict_add_to_personal": [ - "void enchant_dict_add_to_personal(resource dict, string word)", - "add 'word' to personal word list" - ], - "enchant_dict_add_to_session": [ - "void enchant_dict_add_to_session(resource dict, string word)", - "add 'word' to this spell-checking session" - ], - "enchant_dict_check": [ - "bool enchant_dict_check(resource dict, string word)", - "If the word is correctly spelled return true, otherwise return false" - ], - "enchant_dict_describe": [ - "array enchant_dict_describe(resource dict)", - "Describes an individual dictionary 'dict'" - ], - "enchant_dict_get_error": [ - "string enchant_dict_get_error(resource dict)", - "Returns the last error of the current spelling-session" - ], - "enchant_dict_is_in_session": [ - "bool enchant_dict_is_in_session(resource dict, string word)", - "whether or not 'word' exists in this spelling-session" - ], - "enchant_dict_quick_check": [ - "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", - "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." - ], - "enchant_dict_store_replacement": [ - "void enchant_dict_store_replacement(resource dict, string mis, string cor)", - "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." - ], - "enchant_dict_suggest": [ - "array enchant_dict_suggest(resource dict, string word)", - "Will return a list of values if any of those pre-conditions are not met." - ], - "end": [ - "mixed end(array array_arg)", - "Advances array argument's internal pointer to the last element and return it" - ], - "ereg": [ - "int ereg(string pattern, string string [, array registers])", - "Regular expression match" - ], - "ereg_replace": [ - "string ereg_replace(string pattern, string replacement, string string)", - "Replace regular expression" - ], - "eregi": [ - "int eregi(string pattern, string string [, array registers])", - "Case-insensitive regular expression match" - ], - "eregi_replace": [ - "string eregi_replace(string pattern, string replacement, string string)", - "Case insensitive replace regular expression" - ], - "error_get_last": [ - "array error_get_last()", - "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." - ], - "error_log": [ - "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", - "Send an error message somewhere" - ], - "error_reporting": [ - "int error_reporting([int new_error_level])", - "Return the current error_reporting level, and if an argument was passed - change to the new level" - ], - "escapeshellarg": [ - "string escapeshellarg(string arg)", - "Quote and escape an argument for use in a shell command" - ], - "escapeshellcmd": [ - "string escapeshellcmd(string command)", - "Escape shell metacharacters" - ], - "exec": [ - "string exec(string command [, array &output [, int &return_value]])", - "Execute an external program" - ], - "exif_imagetype": [ - "int exif_imagetype(string imagefile)", - "Get the type of an image" - ], - "exif_read_data": [ - "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", - "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" - ], - "exif_tagname": [ - "string exif_tagname(index)", - "Get headername for index or false if not defined" - ], - "exif_thumbnail": [ - "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", - "Reads the embedded thumbnail" - ], - "exit": [ - "void exit([mixed status])", - "Output a message and terminate the current script" - ], - "exp": [ - "float exp(float number)", - "Returns e raised to the power of the number" - ], - "explode": [ - "array explode(string separator, string str [, int limit])", - "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." - ], - "expm1": [ - "float expm1(float number)", - "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" - ], - "extension_loaded": [ - "bool extension_loaded(string extension_name)", - "Returns true if the named extension is loaded" - ], - "extract": [ - "int extract(array var_array [, int extract_type [, string prefix]])", - "Imports variables into symbol table from an array" - ], - "ezmlm_hash": [ - "int ezmlm_hash(string addr)", - "Calculate EZMLM list hash value." - ], - "fclose": [ - "bool fclose(resource fp)", - "Close an open file pointer" - ], - "feof": [ - "bool feof(resource fp)", - "Test for end-of-file on a file pointer" - ], - "fflush": [ - "bool fflush(resource fp)", - "Flushes output" - ], - "fgetc": [ - "string fgetc(resource fp)", - "Get a character from file pointer" - ], - "fgetcsv": [ - "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", - "Get line from file pointer and parse for CSV fields" - ], - "fgets": [ - "string fgets(resource fp[, int length])", - "Get a line from file pointer" - ], - "fgetss": [ - "string fgetss(resource fp [, int length [, string allowable_tags]])", - "Get a line from file pointer and strip HTML tags" - ], - "file": [ - "array file(string filename [, int flags[, resource context]])", - "Read entire file into an array" - ], - "file_exists": [ - "bool file_exists(string filename)", - "Returns true if filename exists" - ], - "file_get_contents": [ - "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", - "Read the entire file into a string" - ], - "file_put_contents": [ - "int file_put_contents(string file, mixed data [, int flags [, resource context]])", - "Write/Create a file with contents data and return the number of bytes written" - ], - "fileatime": [ - "int fileatime(string filename)", - "Get last access time of file" - ], - "filectime": [ - "int filectime(string filename)", - "Get inode modification time of file" - ], - "filegroup": [ - "int filegroup(string filename)", - "Get file group" - ], - "fileinode": [ - "int fileinode(string filename)", - "Get file inode" - ], - "filemtime": [ - "int filemtime(string filename)", - "Get last modification time of file" - ], - "fileowner": [ - "int fileowner(string filename)", - "Get file owner" - ], - "fileperms": [ - "int fileperms(string filename)", - "Get file permissions" - ], - "filesize": [ - "int filesize(string filename)", - "Get file size" - ], - "filetype": [ - "string filetype(string filename)", - "Get file type" - ], - "filter_has_var": [ - "mixed filter_has_var(constant type, string variable_name)", - "* Returns true if the variable with the name 'name' exists in source." - ], - "filter_input": [ - "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", - "* Returns the filtered variable 'name'* from source `type`." - ], - "filter_input_array": [ - "mixed filter_input_array(constant type, [, mixed options]])", - "* Returns an array with all arguments defined in 'definition'." - ], - "filter_var": [ - "mixed filter_var(mixed variable [, long filter [, mixed options]])", - "* Returns the filtered version of the vriable." - ], - "filter_var_array": [ - "mixed filter_var_array(array data, [, mixed options]])", - "* Returns an array with all arguments defined in 'definition'." - ], - "finfo_buffer": [ - "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", - "Return infromation about a string buffer." - ], - "finfo_close": [ - "resource finfo_close(resource finfo)", - "Close fileinfo resource." - ], - "finfo_file": [ - "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", - "Return information about a file." - ], - "finfo_open": [ - "resource finfo_open([int options [, string arg]])", - "Create a new fileinfo resource." - ], - "finfo_set_flags": [ - "bool finfo_set_flags(resource finfo, int options)", - "Set libmagic configuration options." - ], - "floatval": [ - "float floatval(mixed var)", - "Get the float value of a variable" - ], - "flock": [ - "bool flock(resource fp, int operation [, int &wouldblock])", - "Portable file locking" - ], - "floor": [ - "float floor(float number)", - "Returns the next lowest integer value from the number" - ], - "flush": [ - "void flush()", - "Flush the output buffer" - ], - "fmod": [ - "float fmod(float x, float y)", - "Returns the remainder of dividing x by y as a float" - ], - "fnmatch": [ - "bool fnmatch(string pattern, string filename [, int flags])", - "Match filename against pattern" - ], - "fopen": [ - "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", - "Open a file or a URL and return a file pointer" - ], - "forward_static_call": [ - "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", - "Call a user function which is the first parameter" - ], - "fpassthru": [ - "int fpassthru(resource fp)", - "Output all remaining data from a file pointer" - ], - "fprintf": [ - "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", - "Output a formatted string into a stream" - ], - "fputcsv": [ - "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", - "Format line as CSV and write to file pointer" - ], - "fread": [ - "string fread(resource fp, int length)", - "Binary-safe file read" - ], - "frenchtojd": [ - "int frenchtojd(int month, int day, int year)", - "Converts a french republic calendar date to julian day count" - ], - "fscanf": [ - "mixed fscanf(resource stream, string format [, string ...])", - "Implements a mostly ANSI compatible fscanf()" - ], - "fseek": [ - "int fseek(resource fp, int offset [, int whence])", - "Seek on a file pointer" - ], - "fsockopen": [ - "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", - "Open Internet or Unix domain socket connection" - ], - "fstat": [ - "array fstat(resource fp)", - "Stat() on a filehandle" - ], - "ftell": [ - "int ftell(resource fp)", - "Get file pointer's read/write position" - ], - "ftok": [ - "int ftok(string pathname, string proj)", - "Convert a pathname and a project identifier to a System V IPC key" - ], - "ftp_alloc": [ - "bool ftp_alloc(resource stream, int size[, &response])", - "Attempt to allocate space on the remote FTP server" - ], - "ftp_cdup": [ - "bool ftp_cdup(resource stream)", - "Changes to the parent directory" - ], - "ftp_chdir": [ - "bool ftp_chdir(resource stream, string directory)", - "Changes directories" - ], - "ftp_chmod": [ - "int ftp_chmod(resource stream, int mode, string filename)", - "Sets permissions on a file" - ], - "ftp_close": [ - "bool ftp_close(resource stream)", - "Closes the FTP stream" - ], - "ftp_connect": [ - "resource ftp_connect(string host [, int port [, int timeout]])", - "Opens a FTP stream" - ], - "ftp_delete": [ - "bool ftp_delete(resource stream, string file)", - "Deletes a file" - ], - "ftp_exec": [ - "bool ftp_exec(resource stream, string command)", - "Requests execution of a program on the FTP server" - ], - "ftp_fget": [ - "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", - "Retrieves a file from the FTP server and writes it to an open file" - ], - "ftp_fput": [ - "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", - "Stores a file from an open file to the FTP server" - ], - "ftp_get": [ - "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", - "Retrieves a file from the FTP server and writes it to a local file" - ], - "ftp_get_option": [ - "mixed ftp_get_option(resource stream, int option)", - "Gets an FTP option" - ], - "ftp_login": [ - "bool ftp_login(resource stream, string username, string password)", - "Logs into the FTP server" - ], - "ftp_mdtm": [ - "int ftp_mdtm(resource stream, string filename)", - "Returns the last modification time of the file, or -1 on error" - ], - "ftp_mkdir": [ - "string ftp_mkdir(resource stream, string directory)", - "Creates a directory and returns the absolute path for the new directory or false on error" - ], - "ftp_nb_continue": [ - "int ftp_nb_continue(resource stream)", - "Continues retrieving/sending a file nbronously" - ], - "ftp_nb_fget": [ - "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", - "Retrieves a file from the FTP server asynchronly and writes it to an open file" - ], - "ftp_nb_fput": [ - "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", - "Stores a file from an open file to the FTP server nbronly" - ], - "ftp_nb_get": [ - "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", - "Retrieves a file from the FTP server nbhronly and writes it to a local file" - ], - "ftp_nb_put": [ - "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", - "Stores a file on the FTP server" - ], - "ftp_nlist": [ - "array ftp_nlist(resource stream, string directory)", - "Returns an array of filenames in the given directory" - ], - "ftp_pasv": [ - "bool ftp_pasv(resource stream, bool pasv)", - "Turns passive mode on or off" - ], - "ftp_put": [ - "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", - "Stores a file on the FTP server" - ], - "ftp_pwd": [ - "string ftp_pwd(resource stream)", - "Returns the present working directory" - ], - "ftp_raw": [ - "array ftp_raw(resource stream, string command)", - "Sends a literal command to the FTP server" - ], - "ftp_rawlist": [ - "array ftp_rawlist(resource stream, string directory [, bool recursive])", - "Returns a detailed listing of a directory as an array of output lines" - ], - "ftp_rename": [ - "bool ftp_rename(resource stream, string src, string dest)", - "Renames the given file to a new path" - ], - "ftp_rmdir": [ - "bool ftp_rmdir(resource stream, string directory)", - "Removes a directory" - ], - "ftp_set_option": [ - "bool ftp_set_option(resource stream, int option, mixed value)", - "Sets an FTP option" - ], - "ftp_site": [ - "bool ftp_site(resource stream, string cmd)", - "Sends a SITE command to the server" - ], - "ftp_size": [ - "int ftp_size(resource stream, string filename)", - "Returns the size of the file, or -1 on error" - ], - "ftp_ssl_connect": [ - "resource ftp_ssl_connect(string host [, int port [, int timeout]])", - "Opens a FTP-SSL stream" - ], - "ftp_systype": [ - "string ftp_systype(resource stream)", - "Returns the system type identifier" - ], - "ftruncate": [ - "bool ftruncate(resource fp, int size)", - "Truncate file to 'size' length" - ], - "func_get_arg": [ - "mixed func_get_arg(int arg_num)", - "Get the $arg_num'th argument that was passed to the function" - ], - "func_get_args": [ - "array func_get_args()", - "Get an array of the arguments that were passed to the function" - ], - "func_num_args": [ - "int func_num_args()", - "Get the number of arguments that were passed to the function" - ], - "function ": ["", ""], - "foreach ": ["", ""], - "function_exists": [ - "bool function_exists(string function_name)", - "Checks if the function exists" - ], - "fwrite": [ - "int fwrite(resource fp, string str [, int length])", - "Binary-safe file write" - ], - "gc_collect_cycles": [ - "int gc_collect_cycles()", - "Forces collection of any existing garbage cycles. Returns number of freed zvals" - ], - "gc_disable": [ - "void gc_disable()", - "Deactivates the circular reference collector" - ], - "gc_enable": [ - "void gc_enable()", - "Activates the circular reference collector" - ], - "gc_enabled": [ - "void gc_enabled()", - "Returns status of the circular reference collector" - ], - "gd_info": [ - "array gd_info()", - "" - ], - "getKeywords": [ - "static array getKeywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}" - ], - "get_browser": [ - "mixed get_browser([string browser_name [, bool return_array]])", - "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." - ], - "get_called_class": [ - "string get_called_class()", - "Retrieves the \"Late Static Binding\" class name" - ], - "get_cfg_var": [ - "mixed get_cfg_var(string option_name)", - "Get the value of a PHP configuration option" - ], - "get_class": [ - "string get_class([object object])", - "Retrieves the class name" - ], - "get_class_methods": [ - "array get_class_methods(mixed class)", - "Returns an array of method names for class or class instance." - ], - "get_class_vars": [ - "array get_class_vars(string class_name)", - "Returns an array of default properties of the class." - ], - "get_current_user": [ - "string get_current_user()", - "Get the name of the owner of the current PHP script" - ], - "get_declared_classes": [ - "array get_declared_classes()", - "Returns an array of all declared classes." - ], - "get_declared_interfaces": [ - "array get_declared_interfaces()", - "Returns an array of all declared interfaces." - ], - "get_defined_constants": [ - "array get_defined_constants([bool categorize])", - "Return an array containing the names and values of all defined constants" - ], - "get_defined_functions": [ - "array get_defined_functions()", - "Returns an array of all defined functions" - ], - "get_defined_vars": [ - "array get_defined_vars()", - "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" - ], - "get_display_language": [ - "static string get_display_language($locale[, $in_locale = null])", - "* gets the language for the $locale in $in_locale or default_locale" - ], - "get_display_name": [ - "static string get_display_name($locale[, $in_locale = null])", - "* gets the name for the $locale in $in_locale or default_locale" - ], - "get_display_region": [ - "static string get_display_region($locale, $in_locale = null)", - "* gets the region for the $locale in $in_locale or default_locale" - ], - "get_display_script": [ - "static string get_display_script($locale, $in_locale = null)", - "* gets the script for the $locale in $in_locale or default_locale" - ], - "get_extension_funcs": [ - "array get_extension_funcs(string extension_name)", - "Returns an array with the names of functions belonging to the named extension" - ], - "get_headers": [ - "array get_headers(string url[, int format])", - "fetches all the headers sent by the server in response to a HTTP request" - ], - "get_html_translation_table": [ - "array get_html_translation_table([int table [, int quote_style]])", - "Returns the internal translation table used by htmlspecialchars and htmlentities" - ], - "get_include_path": [ - "string get_include_path()", - "Get the current include_path configuration option" - ], - "get_included_files": [ - "array get_included_files()", - "Returns an array with the file names that were include_once()'d" - ], - "get_loaded_extensions": [ - "array get_loaded_extensions([bool zend_extensions])", - "Return an array containing names of loaded extensions" - ], - "get_magic_quotes_gpc": [ - "int get_magic_quotes_gpc()", - "Get the current active configuration setting of magic_quotes_gpc" - ], - "get_magic_quotes_runtime": [ - "int get_magic_quotes_runtime()", - "Get the current active configuration setting of magic_quotes_runtime" - ], - "get_meta_tags": [ - "array get_meta_tags(string filename [, bool use_include_path])", - "Extracts all meta tag content attributes from a file and returns an array" - ], - "get_object_vars": [ - "array get_object_vars(object obj)", - "Returns an array of object properties" - ], - "get_parent_class": [ - "string get_parent_class([mixed object])", - "Retrieves the parent class name for object or class or current scope." - ], - "get_resource_type": [ - "string get_resource_type(resource res)", - "Get the resource type name for a given resource" - ], - "getallheaders": [ - "array getallheaders()", - "" - ], - "getcwd": [ - "mixed getcwd()", - "Gets the current directory" - ], - "getdate": [ - "array getdate([int timestamp])", - "Get date/time information" - ], - "getenv": [ - "string getenv(string varname)", - "Get the value of an environment variable" - ], - "gethostbyaddr": [ - "string gethostbyaddr(string ip_address)", - "Get the Internet host name corresponding to a given IP address" - ], - "gethostbyname": [ - "string gethostbyname(string hostname)", - "Get the IP address corresponding to a given Internet host name" - ], - "gethostbynamel": [ - "array gethostbynamel(string hostname)", - "Return a list of IP addresses that a given hostname resolves to." - ], - "gethostname": [ - "string gethostname()", - "Get the host name of the current machine" - ], - "getimagesize": [ - "array getimagesize(string imagefile [, array info])", - "Get the size of an image as 4-element array" - ], - "getlastmod": [ - "int getlastmod()", - "Get time of last page modification" - ], - "getmygid": [ - "int getmygid()", - "Get PHP script owner's GID" - ], - "getmyinode": [ - "int getmyinode()", - "Get the inode of the current script being parsed" - ], - "getmypid": [ - "int getmypid()", - "Get current process ID" - ], - "getmyuid": [ - "int getmyuid()", - "Get PHP script owner's UID" - ], - "getopt": [ - "array getopt(string options [, array longopts])", - "Get options from the command line argument list" - ], - "getprotobyname": [ - "int getprotobyname(string name)", - "Returns protocol number associated with name as per /etc/protocols" - ], - "getprotobynumber": [ - "string getprotobynumber(int proto)", - "Returns protocol name associated with protocol number proto" - ], - "getrandmax": [ - "int getrandmax()", - "Returns the maximum value a random number can have" - ], - "getrusage": [ - "array getrusage([int who])", - "Returns an array of usage statistics" - ], - "getservbyname": [ - "int getservbyname(string service, string protocol)", - "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" - ], - "getservbyport": [ - "string getservbyport(int port, string protocol)", - "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" - ], - "gettext": [ - "string gettext(string msgid)", - "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" - ], - "gettimeofday": [ - "array gettimeofday([bool get_as_float])", - "Returns the current time as array" - ], - "gettype": [ - "string gettype(mixed var)", - "Returns the type of the variable" - ], - "glob": [ - "array glob(string pattern [, int flags])", - "Find pathnames matching a pattern" - ], - "gmdate": [ - "string gmdate(string format [, long timestamp])", - "Format a GMT date/time" - ], - "gmmktime": [ - "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", - "Get UNIX timestamp for a GMT date" - ], - "gmp_abs": [ - "resource gmp_abs(resource a)", - "Calculates absolute value" - ], - "gmp_add": [ - "resource gmp_add(resource a, resource b)", - "Add a and b" - ], - "gmp_and": [ - "resource gmp_and(resource a, resource b)", - "Calculates logical AND of a and b" - ], - "gmp_clrbit": [ - "void gmp_clrbit(resource &a, int index)", - "Clears bit in a" - ], - "gmp_cmp": [ - "int gmp_cmp(resource a, resource b)", - "Compares two numbers" - ], - "gmp_com": [ - "resource gmp_com(resource a)", - "Calculates one's complement of a" - ], - "gmp_div_q": [ - "resource gmp_div_q(resource a, resource b [, int round])", - "Divide a by b, returns quotient only" - ], - "gmp_div_qr": [ - "array gmp_div_qr(resource a, resource b [, int round])", - "Divide a by b, returns quotient and reminder" - ], - "gmp_div_r": [ - "resource gmp_div_r(resource a, resource b [, int round])", - "Divide a by b, returns reminder only" - ], - "gmp_divexact": [ - "resource gmp_divexact(resource a, resource b)", - "Divide a by b using exact division algorithm" - ], - "gmp_fact": [ - "resource gmp_fact(int a)", - "Calculates factorial function" - ], - "gmp_gcd": [ - "resource gmp_gcd(resource a, resource b)", - "Computes greatest common denominator (gcd) of a and b" - ], - "gmp_gcdext": [ - "array gmp_gcdext(resource a, resource b)", - "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" - ], - "gmp_hamdist": [ - "int gmp_hamdist(resource a, resource b)", - "Calculates hamming distance between a and b" - ], - "gmp_init": [ - "resource gmp_init(mixed number [, int base])", - "Initializes GMP number" - ], - "gmp_intval": [ - "int gmp_intval(resource gmpnumber)", - "Gets signed long value of GMP number" - ], - "gmp_invert": [ - "resource gmp_invert(resource a, resource b)", - "Computes the inverse of a modulo b" - ], - "gmp_jacobi": [ - "int gmp_jacobi(resource a, resource b)", - "Computes Jacobi symbol" - ], - "gmp_legendre": [ - "int gmp_legendre(resource a, resource b)", - "Computes Legendre symbol" - ], - "gmp_mod": [ - "resource gmp_mod(resource a, resource b)", - "Computes a modulo b" - ], - "gmp_mul": [ - "resource gmp_mul(resource a, resource b)", - "Multiply a and b" - ], - "gmp_neg": [ - "resource gmp_neg(resource a)", - "Negates a number" - ], - "gmp_nextprime": [ - "resource gmp_nextprime(resource a)", - "Finds next prime of a" - ], - "gmp_or": [ - "resource gmp_or(resource a, resource b)", - "Calculates logical OR of a and b" - ], - "gmp_perfect_square": [ - "bool gmp_perfect_square(resource a)", - "Checks if a is an exact square" - ], - "gmp_popcount": [ - "int gmp_popcount(resource a)", - "Calculates the population count of a" - ], - "gmp_pow": [ - "resource gmp_pow(resource base, int exp)", - "Raise base to power exp" - ], - "gmp_powm": [ - "resource gmp_powm(resource base, resource exp, resource mod)", - "Raise base to power exp and take result modulo mod" - ], - "gmp_prob_prime": [ - "int gmp_prob_prime(resource a[, int reps])", - "Checks if a is \"probably prime\"" - ], - "gmp_random": [ - "resource gmp_random([int limiter])", - "Gets random number" - ], - "gmp_scan0": [ - "int gmp_scan0(resource a, int start)", - "Finds first zero bit" - ], - "gmp_scan1": [ - "int gmp_scan1(resource a, int start)", - "Finds first non-zero bit" - ], - "gmp_setbit": [ - "void gmp_setbit(resource &a, int index[, bool set_clear])", - "Sets or clear bit in a" - ], - "gmp_sign": [ - "int gmp_sign(resource a)", - "Gets the sign of the number" - ], - "gmp_sqrt": [ - "resource gmp_sqrt(resource a)", - "Takes integer part of square root of a" - ], - "gmp_sqrtrem": [ - "array gmp_sqrtrem(resource a)", - "Square root with remainder" - ], - "gmp_strval": [ - "string gmp_strval(resource gmpnumber [, int base])", - "Gets string representation of GMP number" - ], - "gmp_sub": [ - "resource gmp_sub(resource a, resource b)", - "Subtract b from a" - ], - "gmp_testbit": [ - "bool gmp_testbit(resource a, int index)", - "Tests if bit is set in a" - ], - "gmp_xor": [ - "resource gmp_xor(resource a, resource b)", - "Calculates logical exclusive OR of a and b" - ], - "gmstrftime": [ - "string gmstrftime(string format [, int timestamp])", - "Format a GMT/UCT time/date according to locale settings" - ], - "grapheme_extract": [ - "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", - "Function to extract a sequence of default grapheme clusters" - ], - "grapheme_stripos": [ - "int grapheme_stripos(string haystack, string needle [, int offset ])", - "Find position of first occurrence of a string within another, ignoring case differences" - ], - "grapheme_stristr": [ - "string grapheme_stristr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "grapheme_strlen": [ - "int grapheme_strlen(string str)", - "Get number of graphemes in a string" - ], - "grapheme_strpos": [ - "int grapheme_strpos(string haystack, string needle [, int offset ])", - "Find position of first occurrence of a string within another" - ], - "grapheme_strripos": [ - "int grapheme_strripos(string haystack, string needle [, int offset])", - "Find position of last occurrence of a string within another, ignoring case" - ], - "grapheme_strrpos": [ - "int grapheme_strrpos(string haystack, string needle [, int offset])", - "Find position of last occurrence of a string within another" - ], - "grapheme_strstr": [ - "string grapheme_strstr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "grapheme_substr": [ - "string grapheme_substr(string str, int start [, int length])", - "Returns part of a string" - ], - "gregoriantojd": [ - "int gregoriantojd(int month, int day, int year)", - "Converts a gregorian calendar date to julian day count" - ], - "gzcompress": [ - "string gzcompress(string data [, int level])", - "Gzip-compress a string" - ], - "gzdeflate": [ - "string gzdeflate(string data [, int level])", - "Gzip-compress a string" - ], - "gzencode": [ - "string gzencode(string data [, int level [, int encoding_mode]])", - "GZ encode a string" - ], - "gzfile": [ - "array gzfile(string filename [, int use_include_path])", - "Read und uncompress entire .gz-file into an array" - ], - "gzinflate": [ - "string gzinflate(string data [, int length])", - "Unzip a gzip-compressed string" - ], - "gzopen": [ - "resource gzopen(string filename, string mode [, int use_include_path])", - "Open a .gz-file and return a .gz-file pointer" - ], - "gzuncompress": [ - "string gzuncompress(string data [, int length])", - "Unzip a gzip-compressed string" - ], - "hash": [ - "string hash(string algo, string data[, bool raw_output = false])", - "Generate a hash of a given input string Returns lowercase hexits by default" - ], - "hash_algos": [ - "array hash_algos()", - "Return a list of registered hashing algorithms" - ], - "hash_copy": [ - "resource hash_copy(resource context)", - "Copy hash resource" - ], - "hash_file": [ - "string hash_file(string algo, string filename[, bool raw_output = false])", - "Generate a hash of a given file Returns lowercase hexits by default" - ], - "hash_final": [ - "string hash_final(resource context[, bool raw_output=false])", - "Output resulting digest" - ], - "hash_hmac": [ - "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", - "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" - ], - "hash_hmac_file": [ - "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", - "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" - ], - "hash_init": [ - "resource hash_init(string algo[, int options, string key])", - "Initialize a hashing context" - ], - "hash_update": [ - "bool hash_update(resource context, string data)", - "Pump data into the hashing algorithm" - ], - "hash_update_file": [ - "bool hash_update_file(resource context, string filename[, resource context])", - "Pump data into the hashing algorithm from a file" - ], - "hash_update_stream": [ - "int hash_update_stream(resource context, resource handle[, integer length])", - "Pump data into the hashing algorithm from an open stream" - ], - "header": [ - "void header(string header [, bool replace, [int http_response_code]])", - "Sends a raw HTTP header" - ], - "header_remove": [ - "void header_remove([string name])", - "Removes an HTTP header previously set using header()" - ], - "headers_list": [ - "array headers_list()", - "Return list of headers to be sent / already sent" - ], - "headers_sent": [ - "bool headers_sent([string &$file [, int &$line]])", - "Returns true if headers have already been sent, false otherwise" - ], - "hebrev": [ - "string hebrev(string str [, int max_chars_per_line])", - "Converts logical Hebrew text to visual text" - ], - "hebrevc": [ - "string hebrevc(string str [, int max_chars_per_line])", - "Converts logical Hebrew text to visual text with newline conversion" - ], - "hexdec": [ - "int hexdec(string hexadecimal_number)", - "Returns the decimal equivalent of the hexadecimal number" - ], - "highlight_file": [ - "bool highlight_file(string file_name [, bool return] )", - "Syntax highlight a source file" - ], - "highlight_string": [ - "bool highlight_string(string string [, bool return] )", - "Syntax highlight a string or optionally return it" - ], - "html_entity_decode": [ - "string html_entity_decode(string string [, int quote_style][, string charset])", - "Convert all HTML entities to their applicable characters" - ], - "htmlentities": [ - "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", - "Convert all applicable characters to HTML entities" - ], - "htmlspecialchars": [ - "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", - "Convert special characters to HTML entities" - ], - "htmlspecialchars_decode": [ - "string htmlspecialchars_decode(string string [, int quote_style])", - "Convert special HTML entities back to characters" - ], - "http_build_query": [ - "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", - "Generates a form-encoded query string from an associative array or object." - ], - "hypot": [ - "float hypot(float num1, float num2)", - "Returns sqrt(num1*num1 + num2*num2)" - ], - "ibase_add_user": [ - "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Add a user to security database" - ], - "ibase_affected_rows": [ - "int ibase_affected_rows( [ resource link_identifier ] )", - "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" - ], - "ibase_backup": [ - "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", - "Initiates a backup task in the service manager and returns immediately" - ], - "ibase_blob_add": [ - "bool ibase_blob_add(resource blob_handle, string data)", - "Add data into created blob" - ], - "ibase_blob_cancel": [ - "bool ibase_blob_cancel(resource blob_handle)", - "Cancel creating blob" - ], - "ibase_blob_close": [ - "string ibase_blob_close(resource blob_handle)", - "Close blob" - ], - "ibase_blob_create": [ - "resource ibase_blob_create([resource link_identifier])", - "Create blob for adding data" - ], - "ibase_blob_echo": [ - "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", - "Output blob contents to browser" - ], - "ibase_blob_get": [ - "string ibase_blob_get(resource blob_handle, int len)", - "Get len bytes data from open blob" - ], - "ibase_blob_import": [ - "string ibase_blob_import([ resource link_identifier, ] resource file)", - "Create blob, copy file in it, and close it" - ], - "ibase_blob_info": [ - "array ibase_blob_info([ resource link_identifier, ] string blob_id)", - "Return blob length and other useful info" - ], - "ibase_blob_open": [ - "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", - "Open blob for retrieving data parts" - ], - "ibase_close": [ - "bool ibase_close([resource link_identifier])", - "Close an InterBase connection" - ], - "ibase_commit": [ - "bool ibase_commit( resource link_identifier )", - "Commit transaction" - ], - "ibase_commit_ret": [ - "bool ibase_commit_ret( resource link_identifier )", - "Commit transaction and retain the transaction context" - ], - "ibase_connect": [ - "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", - "Open a connection to an InterBase database" - ], - "ibase_db_info": [ - "string ibase_db_info(resource service_handle, string db, int action [, int argument])", - "Request statistics about a database" - ], - "ibase_delete_user": [ - "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Delete a user from security database" - ], - "ibase_drop_db": [ - "bool ibase_drop_db([resource link_identifier])", - "Drop an InterBase database" - ], - "ibase_errcode": [ - "int ibase_errcode()", - "Return error code" - ], - "ibase_errmsg": [ - "string ibase_errmsg()", - "Return error message" - ], - "ibase_execute": [ - "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", - "Execute a previously prepared query" - ], - "ibase_fetch_assoc": [ - "array ibase_fetch_assoc(resource result [, int fetch_flags])", - "Fetch a row from the results of a query" - ], - "ibase_fetch_object": [ - "object ibase_fetch_object(resource result [, int fetch_flags])", - "Fetch a object from the results of a query" - ], - "ibase_fetch_row": [ - "array ibase_fetch_row(resource result [, int fetch_flags])", - "Fetch a row from the results of a query" - ], - "ibase_field_info": [ - "array ibase_field_info(resource query_result, int field_number)", - "Get information about a field" - ], - "ibase_free_event_handler": [ - "bool ibase_free_event_handler(resource event)", - "Frees the event handler set by ibase_set_event_handler()" - ], - "ibase_free_query": [ - "bool ibase_free_query(resource query)", - "Free memory used by a query" - ], - "ibase_free_result": [ - "bool ibase_free_result(resource result)", - "Free the memory used by a result" - ], - "ibase_gen_id": [ - "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", - "Increments the named generator and returns its new value" - ], - "ibase_maintain_db": [ - "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", - "Execute a maintenance command on the database server" - ], - "ibase_modify_user": [ - "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Modify a user in security database" - ], - "ibase_name_result": [ - "bool ibase_name_result(resource result, string name)", - "Assign a name to a result for use with ... WHERE CURRENT OF statements" - ], - "ibase_num_fields": [ - "int ibase_num_fields(resource query_result)", - "Get the number of fields in result" - ], - "ibase_num_params": [ - "int ibase_num_params(resource query)", - "Get the number of params in a prepared query" - ], - "ibase_num_rows": [ - "int ibase_num_rows( resource result_identifier )", - "Return the number of rows that are available in a result" - ], - "ibase_param_info": [ - "array ibase_param_info(resource query, int field_number)", - "Get information about a parameter" - ], - "ibase_pconnect": [ - "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", - "Open a persistent connection to an InterBase database" - ], - "ibase_prepare": [ - "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", - "Prepare a query for later execution" - ], - "ibase_query": [ - "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", - "Execute a query" - ], - "ibase_restore": [ - "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", - "Initiates a restore task in the service manager and returns immediately" - ], - "ibase_rollback": [ - "bool ibase_rollback( resource link_identifier )", - "Rollback transaction" - ], - "ibase_rollback_ret": [ - "bool ibase_rollback_ret( resource link_identifier )", - "Rollback transaction and retain the transaction context" - ], - "ibase_server_info": [ - "string ibase_server_info(resource service_handle, int action)", - "Request information about a database server" - ], - "ibase_service_attach": [ - "resource ibase_service_attach(string host, string dba_username, string dba_password)", - "Connect to the service manager" - ], - "ibase_service_detach": [ - "bool ibase_service_detach(resource service_handle)", - "Disconnect from the service manager" - ], - "ibase_set_event_handler": [ - "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", - "Register the callback for handling each of the named events" - ], - "ibase_trans": [ - "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", - "Start a transaction over one or several databases" - ], - "ibase_wait_event": [ - "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", - "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" - ], - "iconv": [ - "string iconv(string in_charset, string out_charset, string str)", - "Returns str converted to the out_charset character set" - ], - "iconv_get_encoding": [ - "mixed iconv_get_encoding([string type])", - "Get internal encoding and output encoding for ob_iconv_handler()" - ], - "iconv_mime_decode": [ - "string iconv_mime_decode(string encoded_string [, int mode, string charset])", - "Decodes a mime header field" - ], - "iconv_mime_decode_headers": [ - "array iconv_mime_decode_headers(string headers [, int mode, string charset])", - "Decodes multiple mime header fields" - ], - "iconv_mime_encode": [ - "string iconv_mime_encode(string field_name, string field_value [, array preference])", - "Composes a mime header field with field_name and field_value in a specified scheme" - ], - "iconv_set_encoding": [ - "bool iconv_set_encoding(string type, string charset)", - "Sets internal encoding and output encoding for ob_iconv_handler()" - ], - "iconv_strlen": [ - "int iconv_strlen(string str [, string charset])", - "Returns the character count of str" - ], - "iconv_strpos": [ - "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", - "Finds position of first occurrence of needle within part of haystack beginning with offset" - ], - "iconv_strrpos": [ - "int iconv_strrpos(string haystack, string needle [, string charset])", - "Finds position of last occurrence of needle within part of haystack beginning with offset" - ], - "iconv_substr": [ - "string iconv_substr(string str, int offset, [int length, string charset])", - "Returns specified part of a string" - ], - "idate": [ - "int idate(string format [, int timestamp])", - "Format a local time/date as integer" - ], - "idn_to_ascii": [ - "int idn_to_ascii(string domain[, int options])", - "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" - ], - "idn_to_utf8": [ - "int idn_to_utf8(string domain[, int options])", - "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" - ], - "ignore_user_abort": [ - "int ignore_user_abort([string value])", - "Set whether we want to ignore a user abort event or not" - ], - "image2wbmp": [ - "bool image2wbmp(resource im [, string filename [, int threshold]])", - "Output WBMP image to browser or file" - ], - "image_type_to_extension": [ - "string image_type_to_extension(int imagetype [, bool include_dot])", - "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" - ], - "image_type_to_mime_type": [ - "string image_type_to_mime_type(int imagetype)", - "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" - ], - "imagealphablending": [ - "bool imagealphablending(resource im, bool on)", - "Turn alpha blending mode on or off for the given image" - ], - "imageantialias": [ - "bool imageantialias(resource im, bool on)", - "Should antialiased functions used or not" - ], - "imagearc": [ - "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", - "Draw a partial ellipse" - ], - "imagechar": [ - "bool imagechar(resource im, int font, int x, int y, string c, int col)", - "Draw a character" - ], - "imagecharup": [ - "bool imagecharup(resource im, int font, int x, int y, string c, int col)", - "Draw a character rotated 90 degrees counter-clockwise" - ], - "imagecolorallocate": [ - "int imagecolorallocate(resource im, int red, int green, int blue)", - "Allocate a color for an image" - ], - "imagecolorallocatealpha": [ - "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", - "Allocate a color with an alpha level. Works for true color and palette based images" - ], - "imagecolorat": [ - "int imagecolorat(resource im, int x, int y)", - "Get the index of the color of a pixel" - ], - "imagecolorclosest": [ - "int imagecolorclosest(resource im, int red, int green, int blue)", - "Get the index of the closest color to the specified color" - ], - "imagecolorclosestalpha": [ - "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", - "Find the closest matching colour with alpha transparency" - ], - "imagecolorclosesthwb": [ - "int imagecolorclosesthwb(resource im, int red, int green, int blue)", - "Get the index of the color which has the hue, white and blackness nearest to the given color" - ], - "imagecolordeallocate": [ - "bool imagecolordeallocate(resource im, int index)", - "De-allocate a color for an image" - ], - "imagecolorexact": [ - "int imagecolorexact(resource im, int red, int green, int blue)", - "Get the index of the specified color" - ], - "imagecolorexactalpha": [ - "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", - "Find exact match for colour with transparency" - ], - "imagecolormatch": [ - "bool imagecolormatch(resource im1, resource im2)", - "Makes the colors of the palette version of an image more closely match the true color version" - ], - "imagecolorresolve": [ - "int imagecolorresolve(resource im, int red, int green, int blue)", - "Get the index of the specified color or its closest possible alternative" - ], - "imagecolorresolvealpha": [ - "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", - "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" - ], - "imagecolorset": [ - "void imagecolorset(resource im, int col, int red, int green, int blue)", - "Set the color for the specified palette index" - ], - "imagecolorsforindex": [ - "array imagecolorsforindex(resource im, int col)", - "Get the colors for an index" - ], - "imagecolorstotal": [ - "int imagecolorstotal(resource im)", - "Find out the number of colors in an image's palette" - ], - "imagecolortransparent": [ - "int imagecolortransparent(resource im [, int col])", - "Define a color as transparent" - ], - "imageconvolution": [ - "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", - "Apply a 3x3 convolution matrix, using coefficient div and offset" - ], - "imagecopy": [ - "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", - "Copy part of an image" - ], - "imagecopymerge": [ - "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", - "Merge one part of an image with another" - ], - "imagecopymergegray": [ - "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", - "Merge one part of an image with another" - ], - "imagecopyresampled": [ - "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", - "Copy and resize part of an image using resampling to help ensure clarity" - ], - "imagecopyresized": [ - "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", - "Copy and resize part of an image" - ], - "imagecreate": [ - "resource imagecreate(int x_size, int y_size)", - "Create a new image" - ], - "imagecreatefromgd": [ - "resource imagecreatefromgd(string filename)", - "Create a new image from GD file or URL" - ], - "imagecreatefromgd2": [ - "resource imagecreatefromgd2(string filename)", - "Create a new image from GD2 file or URL" - ], - "imagecreatefromgd2part": [ - "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", - "Create a new image from a given part of GD2 file or URL" - ], - "imagecreatefromgif": [ - "resource imagecreatefromgif(string filename)", - "Create a new image from GIF file or URL" - ], - "imagecreatefromjpeg": [ - "resource imagecreatefromjpeg(string filename)", - "Create a new image from JPEG file or URL" - ], - "imagecreatefrompng": [ - "resource imagecreatefrompng(string filename)", - "Create a new image from PNG file or URL" - ], - "imagecreatefromstring": [ - "resource imagecreatefromstring(string image)", - "Create a new image from the image stream in the string" - ], - "imagecreatefromwbmp": [ - "resource imagecreatefromwbmp(string filename)", - "Create a new image from WBMP file or URL" - ], - "imagecreatefromxbm": [ - "resource imagecreatefromxbm(string filename)", - "Create a new image from XBM file or URL" - ], - "imagecreatefromxpm": [ - "resource imagecreatefromxpm(string filename)", - "Create a new image from XPM file or URL" - ], - "imagecreatetruecolor": [ - "resource imagecreatetruecolor(int x_size, int y_size)", - "Create a new true color image" - ], - "imagedashedline": [ - "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a dashed line" - ], - "imagedestroy": [ - "bool imagedestroy(resource im)", - "Destroy an image" - ], - "imageellipse": [ - "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", - "Draw an ellipse" - ], - "imagefill": [ - "bool imagefill(resource im, int x, int y, int col)", - "Flood fill" - ], - "imagefilledarc": [ - "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", - "Draw a filled partial ellipse" - ], - "imagefilledellipse": [ - "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", - "Draw an ellipse" - ], - "imagefilledpolygon": [ - "bool imagefilledpolygon(resource im, array point, int num_points, int col)", - "Draw a filled polygon" - ], - "imagefilledrectangle": [ - "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a filled rectangle" - ], - "imagefilltoborder": [ - "bool imagefilltoborder(resource im, int x, int y, int border, int col)", - "Flood fill to specific color" - ], - "imagefilter": [ - "bool imagefilter(resource src_im, int filtertype, [args] )", - "Applies Filter an image using a custom angle" - ], - "imagefontheight": [ - "int imagefontheight(int font)", - "Get font height" - ], - "imagefontwidth": [ - "int imagefontwidth(int font)", - "Get font width" - ], - "imageftbbox": [ - "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", - "Give the bounding box of a text using fonts via freetype2" - ], - "imagefttext": [ - "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", - "Write text to the image using fonts via freetype2" - ], - "imagegammacorrect": [ - "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", - "Apply a gamma correction to a GD image" - ], - "imagegd": [ - "bool imagegd(resource im [, string filename])", - "Output GD image to browser or file" - ], - "imagegd2": [ - "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", - "Output GD2 image to browser or file" - ], - "imagegif": [ - "bool imagegif(resource im [, string filename])", - "Output GIF image to browser or file" - ], - "imagegrabscreen": [ - "resource imagegrabscreen()", - "Grab a screenshot" - ], - "imagegrabwindow": [ - "resource imagegrabwindow(int window_handle [, int client_area])", - "Grab a window or its client area using a windows handle (HWND property in COM instance)" - ], - "imageinterlace": [ - "int imageinterlace(resource im [, int interlace])", - "Enable or disable interlace" - ], - "imageistruecolor": [ - "bool imageistruecolor(resource im)", - "return true if the image uses truecolor" - ], - "imagejpeg": [ - "bool imagejpeg(resource im [, string filename [, int quality]])", - "Output JPEG image to browser or file" - ], - "imagelayereffect": [ - "bool imagelayereffect(resource im, int effect)", - "Set the alpha blending flag to use the bundled libgd layering effects" - ], - "imageline": [ - "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a line" - ], - "imageloadfont": [ - "int imageloadfont(string filename)", - "Load a new font" - ], - "imagepalettecopy": [ - "void imagepalettecopy(resource dst, resource src)", - "Copy the palette from the src image onto the dst image" - ], - "imagepng": [ - "bool imagepng(resource im [, string filename])", - "Output PNG image to browser or file" - ], - "imagepolygon": [ - "bool imagepolygon(resource im, array point, int num_points, int col)", - "Draw a polygon" - ], - "imagepsbbox": [ - "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", - "Return the bounding box needed by a string if rasterized" - ], - "imagepscopyfont": [ - "int imagepscopyfont(int font_index)", - "Make a copy of a font for purposes like extending or reenconding" - ], - "imagepsencodefont": [ - "bool imagepsencodefont(resource font_index, string filename)", - "To change a fonts character encoding vector" - ], - "imagepsextendfont": [ - "bool imagepsextendfont(resource font_index, float extend)", - "Extend or or condense if (extend < 1) a font" - ], - "imagepsfreefont": [ - "bool imagepsfreefont(resource font_index)", - "Free memory used by a font" - ], - "imagepsloadfont": [ - "resource imagepsloadfont(string pathname)", - "Load a new font from specified file" - ], - "imagepsslantfont": [ - "bool imagepsslantfont(resource font_index, float slant)", - "Slant a font" - ], - "imagepstext": [ - "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", - "Rasterize a string over an image" - ], - "imagerectangle": [ - "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a rectangle" - ], - "imagerotate": [ - "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", - "Rotate an image using a custom angle" - ], - "imagesavealpha": [ - "bool imagesavealpha(resource im, bool on)", - "Include alpha channel to a saved image" - ], - "imagesetbrush": [ - "bool imagesetbrush(resource image, resource brush)", - "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" - ], - "imagesetpixel": [ - "bool imagesetpixel(resource im, int x, int y, int col)", - "Set a single pixel" - ], - "imagesetstyle": [ - "bool imagesetstyle(resource im, array styles)", - "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." - ], - "imagesetthickness": [ - "bool imagesetthickness(resource im, int thickness)", - "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." - ], - "imagesettile": [ - "bool imagesettile(resource image, resource tile)", - "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" - ], - "imagestring": [ - "bool imagestring(resource im, int font, int x, int y, string str, int col)", - "Draw a string horizontally" - ], - "imagestringup": [ - "bool imagestringup(resource im, int font, int x, int y, string str, int col)", - "Draw a string vertically - rotated 90 degrees counter-clockwise" - ], - "imagesx": [ - "int imagesx(resource im)", - "Get image width" - ], - "imagesy": [ - "int imagesy(resource im)", - "Get image height" - ], - "imagetruecolortopalette": [ - "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", - "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." - ], - "imagettfbbox": [ - "array imagettfbbox(float size, float angle, string font_file, string text)", - "Give the bounding box of a text using TrueType fonts" - ], - "imagettftext": [ - "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", - "Write text to the image using a TrueType font" - ], - "imagetypes": [ - "int imagetypes()", - "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" - ], - "imagewbmp": [ - "bool imagewbmp(resource im [, string filename, [, int foreground]])", - "Output WBMP image to browser or file" - ], - "imagexbm": [ - "int imagexbm(int im, string filename [, int foreground])", - "Output XBM image to browser or file" - ], - "imap_8bit": [ - "string imap_8bit(string text)", - "Convert an 8-bit string to a quoted-printable string" - ], - "imap_alerts": [ - "array imap_alerts()", - "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." - ], - "imap_append": [ - "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", - "Append a new message to a specified mailbox" - ], - "imap_base64": [ - "string imap_base64(string text)", - "Decode BASE64 encoded text" - ], - "imap_binary": [ - "string imap_binary(string text)", - "Convert an 8bit string to a base64 string" - ], - "imap_body": [ - "string imap_body(resource stream_id, int msg_no [, int options])", - "Read the message body" - ], - "imap_bodystruct": [ - "object imap_bodystruct(resource stream_id, int msg_no, string section)", - "Read the structure of a specified body section of a specific message" - ], - "imap_check": [ - "object imap_check(resource stream_id)", - "Get mailbox properties" - ], - "imap_clearflag_full": [ - "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", - "Clears flags on messages" - ], - "imap_close": [ - "bool imap_close(resource stream_id [, int options])", - "Close an IMAP stream" - ], - "imap_createmailbox": [ - "bool imap_createmailbox(resource stream_id, string mailbox)", - "Create a new mailbox" - ], - "imap_delete": [ - "bool imap_delete(resource stream_id, int msg_no [, int options])", - "Mark a message for deletion" - ], - "imap_deletemailbox": [ - "bool imap_deletemailbox(resource stream_id, string mailbox)", - "Delete a mailbox" - ], - "imap_errors": [ - "array imap_errors()", - "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." - ], - "imap_expunge": [ - "bool imap_expunge(resource stream_id)", - "Permanently delete all messages marked for deletion" - ], - "imap_fetch_overview": [ - "array imap_fetch_overview(resource stream_id, string sequence [, int options])", - "Read an overview of the information in the headers of the given message sequence" - ], - "imap_fetchbody": [ - "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", - "Get a specific body section" - ], - "imap_fetchheader": [ - "string imap_fetchheader(resource stream_id, int msg_no [, int options])", - "Get the full unfiltered header for a message" - ], - "imap_fetchstructure": [ - "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", - "Read the full structure of a message" - ], - "imap_gc": [ - "bool imap_gc(resource stream_id, int flags)", - "This function garbage collects (purges) the cache of entries of a specific type." - ], - "imap_get_quota": [ - "array imap_get_quota(resource stream_id, string qroot)", - "Returns the quota set to the mailbox account qroot" - ], - "imap_get_quotaroot": [ - "array imap_get_quotaroot(resource stream_id, string mbox)", - "Returns the quota set to the mailbox account mbox" - ], - "imap_getacl": [ - "array imap_getacl(resource stream_id, string mailbox)", - "Gets the ACL for a given mailbox" - ], - "imap_getmailboxes": [ - "array imap_getmailboxes(resource stream_id, string ref, string pattern)", - "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" - ], - "imap_getsubscribed": [ - "array imap_getsubscribed(resource stream_id, string ref, string pattern)", - "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" - ], - "imap_headerinfo": [ - "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", - "Read the headers of the message" - ], - "imap_headers": [ - "array imap_headers(resource stream_id)", - "Returns headers for all messages in a mailbox" - ], - "imap_last_error": [ - "string imap_last_error()", - "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." - ], - "imap_list": [ - "array imap_list(resource stream_id, string ref, string pattern)", - "Read the list of mailboxes" - ], - "imap_listscan": [ - "array imap_listscan(resource stream_id, string ref, string pattern, string content)", - "Read list of mailboxes containing a certain string" - ], - "imap_lsub": [ - "array imap_lsub(resource stream_id, string ref, string pattern)", - "Return a list of subscribed mailboxes" - ], - "imap_mail": [ - "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", - "Send an email message" - ], - "imap_mail_compose": [ - "string imap_mail_compose(array envelope, array body)", - "Create a MIME message based on given envelope and body sections" - ], - "imap_mail_copy": [ - "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", - "Copy specified message to a mailbox" - ], - "imap_mail_move": [ - "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", - "Move specified message to a mailbox" - ], - "imap_mailboxmsginfo": [ - "object imap_mailboxmsginfo(resource stream_id)", - "Returns info about the current mailbox" - ], - "imap_mime_header_decode": [ - "array imap_mime_header_decode(string str)", - "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" - ], - "imap_msgno": [ - "int imap_msgno(resource stream_id, int unique_msg_id)", - "Get the sequence number associated with a UID" - ], - "imap_mutf7_to_utf8": [ - "string imap_mutf7_to_utf8(string in)", - "Decode a modified UTF-7 string to UTF-8" - ], - "imap_num_msg": [ - "int imap_num_msg(resource stream_id)", - "Gives the number of messages in the current mailbox" - ], - "imap_num_recent": [ - "int imap_num_recent(resource stream_id)", - "Gives the number of recent messages in current mailbox" - ], - "imap_open": [ - "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", - "Open an IMAP stream to a mailbox" - ], - "imap_ping": [ - "bool imap_ping(resource stream_id)", - "Check if the IMAP stream is still active" - ], - "imap_qprint": [ - "string imap_qprint(string text)", - "Convert a quoted-printable string to an 8-bit string" - ], - "imap_renamemailbox": [ - "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", - "Rename a mailbox" - ], - "imap_reopen": [ - "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", - "Reopen an IMAP stream to a new mailbox" - ], - "imap_rfc822_parse_adrlist": [ - "array imap_rfc822_parse_adrlist(string address_string, string default_host)", - "Parses an address string" - ], - "imap_rfc822_parse_headers": [ - "object imap_rfc822_parse_headers(string headers [, string default_host])", - "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" - ], - "imap_rfc822_write_address": [ - "string imap_rfc822_write_address(string mailbox, string host, string personal)", - "Returns a properly formatted email address given the mailbox, host, and personal info" - ], - "imap_savebody": [ - "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", - "Save a specific body section to a file" - ], - "imap_search": [ - "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", - "Return a list of messages matching the given criteria" - ], - "imap_set_quota": [ - "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", - "Will set the quota for qroot mailbox" - ], - "imap_setacl": [ - "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", - "Sets the ACL for a given mailbox" - ], - "imap_setflag_full": [ - "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", - "Sets flags on messages" - ], - "imap_sort": [ - "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", - "Sort an array of message headers, optionally including only messages that meet specified criteria." - ], - "imap_status": [ - "object imap_status(resource stream_id, string mailbox, int options)", - "Get status info from a mailbox" - ], - "imap_subscribe": [ - "bool imap_subscribe(resource stream_id, string mailbox)", - "Subscribe to a mailbox" - ], - "imap_thread": [ - "array imap_thread(resource stream_id [, int options])", - "Return threaded by REFERENCES tree" - ], - "imap_timeout": [ - "mixed imap_timeout(int timeout_type [, int timeout])", - "Set or fetch imap timeout" - ], - "imap_uid": [ - "int imap_uid(resource stream_id, int msg_no)", - "Get the unique message id associated with a standard sequential message number" - ], - "imap_undelete": [ - "bool imap_undelete(resource stream_id, int msg_no [, int flags])", - "Remove the delete flag from a message" - ], - "imap_unsubscribe": [ - "bool imap_unsubscribe(resource stream_id, string mailbox)", - "Unsubscribe from a mailbox" - ], - "imap_utf7_decode": [ - "string imap_utf7_decode(string buf)", - "Decode a modified UTF-7 string" - ], - "imap_utf7_encode": [ - "string imap_utf7_encode(string buf)", - "Encode a string in modified UTF-7" - ], - "imap_utf8": [ - "string imap_utf8(string mime_encoded_text)", - "Convert a mime-encoded text to UTF-8" - ], - "imap_utf8_to_mutf7": [ - "string imap_utf8_to_mutf7(string in)", - "Encode a UTF-8 string to modified UTF-7" - ], - "implode": [ - "string implode([string glue,] array pieces)", - "Joins array elements placing glue string between items and return one string" - ], - "import_request_variables": [ - "bool import_request_variables(string types [, string prefix])", - "Import GET/POST/Cookie variables into the global scope" - ], - "in_array": [ - "bool in_array(mixed needle, array haystack [, bool strict])", - "Checks if the given value exists in the array" - ], - "include": [ - "bool include(string path)", - "Includes and evaluates the specified file" - ], - "include_once": [ - "bool include_once(string path)", - "Includes and evaluates the specified file" - ], - "inet_ntop": [ - "string inet_ntop(string in_addr)", - "Converts a packed inet address to a human readable IP address string" - ], - "inet_pton": [ - "string inet_pton(string ip_address)", - "Converts a human readable IP address to a packed binary string" - ], - "ini_get": [ - "string ini_get(string varname)", - "Get a configuration option" - ], - "ini_get_all": [ - "array ini_get_all([string extension[, bool details = true]])", - "Get all configuration options" - ], - "ini_restore": [ - "void ini_restore(string varname)", - "Restore the value of a configuration option specified by varname" - ], - "ini_set": [ - "string ini_set(string varname, string newvalue)", - "Set a configuration option, returns false on error and the old value of the configuration option on success" - ], - "interface_exists": [ - "bool interface_exists(string classname [, bool autoload])", - "Checks if the class exists" - ], - "intl_error_name": [ - "string intl_error_name()", - "* Return a string for a given error code. * The string will be the same as the name of the error code constant." - ], - "intl_get_error_code": [ - "int intl_get_error_code()", - "* Get code of the last occured error." - ], - "intl_get_error_message": [ - "string intl_get_error_message()", - "* Get text description of the last occured error." - ], - "intl_is_failure": [ - "bool intl_is_failure()", - "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." - ], - "intval": [ - "int intval(mixed var [, int base])", - "Get the integer value of a variable using the optional base for the conversion" - ], - "ip2long": [ - "int ip2long(string ip_address)", - "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" - ], - "iptcembed": [ - "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", - "Embed binary IPTC data into a JPEG image." - ], - "iptcparse": [ - "array iptcparse(string iptcdata)", - "Parse binary IPTC-data into associative array" - ], - "is_a": [ - "bool is_a(object object, string class_name)", - "Returns true if the object is of this class or has this class as one of its parents" - ], - "is_array": [ - "bool is_array(mixed var)", - "Returns true if variable is an array" - ], - "is_bool": [ - "bool is_bool(mixed var)", - "Returns true if variable is a boolean" - ], - "is_callable": [ - "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", - "Returns true if var is callable." - ], - "is_countable": [ - "bool is_countable(mixed var)", - "Returns true if var is countable, false otherwise" - ], - "is_dir": [ - "bool is_dir(string filename)", - "Returns true if file is directory" - ], - "is_executable": [ - "bool is_executable(string filename)", - "Returns true if file is executable" - ], - "is_file": [ - "bool is_file(string filename)", - "Returns true if file is a regular file" - ], - "is_finite": [ - "bool is_finite(float val)", - "Returns whether argument is finite" - ], - "is_float": [ - "bool is_float(mixed var)", - "Returns true if variable is float point" - ], - "is_infinite": [ - "bool is_infinite(float val)", - "Returns whether argument is infinite" - ], - "is_link": [ - "bool is_link(string filename)", - "Returns true if file is symbolic link" - ], - "is_long": [ - "bool is_long(mixed var)", - "Returns true if variable is a long (integer)" - ], - "is_nan": [ - "bool is_nan(float val)", - "Returns whether argument is not a number" - ], - "is_null": [ - "bool is_null(mixed var)", - "Returns true if variable is null" - ], - "is_numeric": [ - "bool is_numeric(mixed value)", - "Returns true if value is a number or a numeric string" - ], - "is_object": [ - "bool is_object(mixed var)", - "Returns true if variable is an object" - ], - "is_readable": [ - "bool is_readable(string filename)", - "Returns true if file can be read" - ], - "is_resource": [ - "bool is_resource(mixed var)", - "Returns true if variable is a resource" - ], - "is_scalar": [ - "bool is_scalar(mixed value)", - "Returns true if value is a scalar" - ], - "is_string": [ - "bool is_string(mixed var)", - "Returns true if variable is a string" - ], - "is_subclass_of": [ - "bool is_subclass_of(object object, string class_name)", - "Returns true if the object has this class as one of its parents" - ], - "is_uploaded_file": [ - "bool is_uploaded_file(string path)", - "Check if file was created by rfc1867 upload" - ], - "is_writable": [ - "bool is_writable(string filename)", - "Returns true if file can be written" - ], - "isset": [ - "bool isset(mixed var [, mixed var])", - "Determine whether a variable is set" - ], - "iterator_apply": [ - "int iterator_apply(Traversable iterator, callable function [, array args = null)", - "Calls a function for every element in an iterator" - ], - "iterator_count": [ - "int iterator_count(Traversable iterator)", - "Count the elements in an iterator" - ], - "iterator_to_array": [ - "array iterator_to_array(Traversable iterator [, bool use_keys = true])", - "Copy the iterator into an array" - ], - "jddayofweek": [ - "mixed jddayofweek(int juliandaycount [, int mode])", - "Returns name or number of day of week from julian day count" - ], - "jdmonthname": [ - "string jdmonthname(int juliandaycount, int mode)", - "Returns name of month for julian day count" - ], - "jdtofrench": [ - "string jdtofrench(int juliandaycount)", - "Converts a julian day count to a french republic calendar date" - ], - "jdtogregorian": [ - "string jdtogregorian(int juliandaycount)", - "Converts a julian day count to a gregorian calendar date" - ], - "jdtojewish": [ - "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", - "Converts a julian day count to a jewish calendar date" - ], - "jdtojulian": [ - "string jdtojulian(int juliandaycount)", - "Convert a julian day count to a julian calendar date" - ], - "jdtounix": [ - "int jdtounix(int jday)", - "Convert Julian Day to UNIX timestamp" - ], - "jewishtojd": [ - "int jewishtojd(int month, int day, int year)", - "Converts a jewish calendar date to a julian day count" - ], - "join": [ - "string join([string glue,] array pieces)", - "Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element" - ], - "jpeg2wbmp": [ - "bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", - "Convert JPEG image to WBMP image" - ], - "json_decode": [ - "mixed json_decode(string json [, bool assoc [, long depth]])", - "Decodes the JSON representation into a PHP value" - ], - "json_encode": [ - "string json_encode(mixed data [, int options])", - "Returns the JSON representation of a value" - ], - "json_last_error": [ - "int json_last_error()", - "Returns the error code of the last json_decode()." - ], - "juliantojd": [ - "int juliantojd(int month, int day, int year)", - "Converts a julian calendar date to julian day count" - ], - "key": [ - "mixed key(array array_arg)", - "Return the key of the element currently pointed to by the internal array pointer" - ], - "krsort": [ - "bool krsort(array &array_arg [, int sort_flags])", - "Sort an array by key value in reverse order" - ], - "ksort": [ - "bool ksort(array &array_arg [, int sort_flags])", - "Sort an array by key" - ], - "lcfirst": [ - "string lcfirst(string str)", - "Make a string's first character lowercase" - ], - "lcg_value": [ - "float lcg_value()", - "Returns a value from the combined linear congruential generator" - ], - "lchgrp": [ - "bool lchgrp(string filename, mixed group)", - "Change symlink group" - ], - "ldap_8859_to_t61": [ - "string ldap_8859_to_t61(string value)", - "Translate 8859 characters to t61 characters" - ], - "ldap_add": [ - "bool ldap_add(resource link, string dn, array entry)", - "Add entries to LDAP directory" - ], - "ldap_bind": [ - "bool ldap_bind(resource link [, string dn [, string password]])", - "Bind to LDAP directory" - ], - "ldap_compare": [ - "bool ldap_compare(resource link, string dn, string attr, string value)", - "Determine if an entry has a specific value for one of its attributes" - ], - "ldap_connect": [ - "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", - "Connect to an LDAP server" - ], - "ldap_count_entries": [ - "int ldap_count_entries(resource link, resource result)", - "Count the number of entries in a search result" - ], - "ldap_delete": [ - "bool ldap_delete(resource link, string dn)", - "Delete an entry from a directory" - ], - "ldap_dn2ufn": [ - "string ldap_dn2ufn(string dn)", - "Convert DN to User Friendly Naming format" - ], - "ldap_err2str": [ - "string ldap_err2str(int errno)", - "Convert error number to error string" - ], - "ldap_errno": [ - "int ldap_errno(resource link)", - "Get the current ldap error number" - ], - "ldap_error": [ - "string ldap_error(resource link)", - "Get the current ldap error string" - ], - "ldap_explode_dn": [ - "array ldap_explode_dn(string dn, int with_attrib)", - "Splits DN into its component parts" - ], - "ldap_first_attribute": [ - "string ldap_first_attribute(resource link, resource result_entry)", - "Return first attribute" - ], - "ldap_first_entry": [ - "resource ldap_first_entry(resource link, resource result)", - "Return first result id" - ], - "ldap_first_reference": [ - "resource ldap_first_reference(resource link, resource result)", - "Return first reference" - ], - "ldap_free_result": [ - "bool ldap_free_result(resource result)", - "Free result memory" - ], - "ldap_get_attributes": [ - "array ldap_get_attributes(resource link, resource result_entry)", - "Get attributes from a search result entry" - ], - "ldap_get_dn": [ - "string ldap_get_dn(resource link, resource result_entry)", - "Get the DN of a result entry" - ], - "ldap_get_entries": [ - "array ldap_get_entries(resource link, resource result)", - "Get all result entries" - ], - "ldap_get_option": [ - "bool ldap_get_option(resource link, int option, mixed retval)", - "Get the current value of various session-wide parameters" - ], - "ldap_get_values_len": [ - "array ldap_get_values_len(resource link, resource result_entry, string attribute)", - "Get all values with lengths from a result entry" - ], - "ldap_list": [ - "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Single-level search" - ], - "ldap_mod_add": [ - "bool ldap_mod_add(resource link, string dn, array entry)", - "Add attribute values to current" - ], - "ldap_mod_del": [ - "bool ldap_mod_del(resource link, string dn, array entry)", - "Delete attribute values" - ], - "ldap_mod_replace": [ - "bool ldap_mod_replace(resource link, string dn, array entry)", - "Replace attribute values with new ones" - ], - "ldap_next_attribute": [ - "string ldap_next_attribute(resource link, resource result_entry)", - "Get the next attribute in result" - ], - "ldap_next_entry": [ - "resource ldap_next_entry(resource link, resource result_entry)", - "Get next result entry" - ], - "ldap_next_reference": [ - "resource ldap_next_reference(resource link, resource reference_entry)", - "Get next reference" - ], - "ldap_parse_reference": [ - "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", - "Extract information from reference entry" - ], - "ldap_parse_result": [ - "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", - "Extract information from result" - ], - "ldap_read": [ - "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Read an entry" - ], - "ldap_rename": [ - "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)", - "Modify the name of an entry" - ], - "ldap_sasl_bind": [ - "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", - "Bind to LDAP directory using SASL" - ], - "ldap_search": [ - "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Search LDAP tree under base_dn" - ], - "ldap_set_option": [ - "bool ldap_set_option(resource link, int option, mixed newval)", - "Set the value of various session-wide parameters" - ], - "ldap_set_rebind_proc": [ - "bool ldap_set_rebind_proc(resource link, string callback)", - "Set a callback function to do re-binds on referral chasing." - ], - "ldap_sort": [ - "bool ldap_sort(resource link, resource result, string sortfilter)", - "Sort LDAP result entries" - ], - "ldap_start_tls": [ - "bool ldap_start_tls(resource link)", - "Start TLS" - ], - "ldap_t61_to_8859": [ - "string ldap_t61_to_8859(string value)", - "Translate t61 characters to 8859 characters" - ], - "ldap_unbind": [ - "bool ldap_unbind(resource link)", - "Unbind from LDAP directory" - ], - "leak": [ - "void leak(int num_bytes=3)", - "Cause an intentional memory leak, for testing/debugging purposes" - ], - "levenshtein": [ - "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", - "Calculate Levenshtein distance between two strings" - ], - "libxml_clear_errors": [ - "void libxml_clear_errors()", - "Clear last error from libxml" - ], - "libxml_disable_entity_loader": [ - "bool libxml_disable_entity_loader([bool disable])", - "Disable/Enable ability to load external entities" - ], - "libxml_get_errors": [ - "object libxml_get_errors()", - "Retrieve array of errors" - ], - "libxml_get_last_error": [ - "object libxml_get_last_error()", - "Retrieve last error from libxml" - ], - "libxml_set_streams_context": [ - "void libxml_set_streams_context(resource streams_context)", - "Set the streams context for the next libxml document load or write" - ], - "libxml_use_internal_errors": [ - "bool libxml_use_internal_errors([bool use_errors])", - "Disable libxml errors and allow user to fetch error information as needed" - ], - "link": [ - "int link(string target, string link)", - "Create a hard link" - ], - "linkinfo": [ - "int linkinfo(string filename)", - "Returns the st_dev field of the UNIX C stat structure describing the link" - ], - "litespeed_request_headers": [ - "array litespeed_request_headers()", - "Fetch all HTTP request headers" - ], - "litespeed_response_headers": [ - "array litespeed_response_headers()", - "Fetch all HTTP response headers" - ], - "locale_accept_from_http": [ - "string locale_accept_from_http(string $http_accept)", - null - ], - "locale_canonicalize": [ - "static string locale_canonicalize(Locale $loc, string $locale)", - "* @param string $locale The locale string to canonicalize" - ], - "locale_filter_matches": [ - "bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", - "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" - ], - "locale_get_all_variants": [ - "static array locale_get_all_variants($locale)", - "* gets an array containing the list of variants, or null" - ], - "locale_get_default": [ - "static string locale_get_default( )", - "Get default locale" - ], - "locale_get_keywords": [ - "static array locale_get_keywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array" - ], - "locale_get_primary_language": [ - "static string locale_get_primary_language($locale)", - "* gets the primary language for the $locale" - ], - "locale_get_region": [ - "static string locale_get_region($locale)", - "* gets the region for the $locale" - ], - "locale_get_script": [ - "static string locale_get_script($locale)", - "* gets the script for the $locale" - ], - "locale_lookup": [ - "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", - "* Searchs the items in $langtag for the best match to the language * range" - ], - "locale_set_default": [ - "static string locale_set_default( string $locale )", - "Set default locale" - ], - "localeconv": [ - "array localeconv()", - "Returns numeric formatting information based on the current locale" - ], - "localtime": [ - "array localtime([int timestamp [, bool associative_array]])", - "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" - ], - "log": [ - "float log(float number, [float base])", - "Returns the natural logarithm of the number, or the base log if base is specified" - ], - "log10": [ - "float log10(float number)", - "Returns the base-10 logarithm of the number" - ], - "log1p": [ - "float log1p(float number)", - "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" - ], - "long2ip": [ - "string long2ip(int proper_address)", - "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" - ], - "lstat": [ - "array lstat(string filename)", - "Give information about a file or symbolic link" - ], - "ltrim": [ - "string ltrim(string str [, string character_mask])", - "Strips whitespace from the beginning of a string" - ], - "mail": [ - "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", - "Send an email message" - ], - "max": [ - "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", - "Return the highest value in an array or a series of arguments" - ], - "mb_check_encoding": [ - "bool mb_check_encoding([string var[, string encoding]])", - "Check if the string is valid for the specified encoding" - ], - "mb_convert_case": [ - "string mb_convert_case(string sourcestring, int mode [, string encoding])", - "Returns a case-folded version of sourcestring" - ], - "mb_convert_encoding": [ - "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", - "Returns converted string in desired encoding" - ], - "mb_convert_kana": [ - "string mb_convert_kana(string str [, string option] [, string encoding])", - "Conversion between full-width character and half-width character (Japanese)" - ], - "mb_convert_variables": [ - "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", - "Converts the string resource in variables to desired encoding" - ], - "mb_decode_mimeheader": [ - "string mb_decode_mimeheader(string string)", - "Decodes the MIME \"encoded-word\" in the string" - ], - "mb_decode_numericentity": [ - "string mb_decode_numericentity(string string, array convmap [, string encoding])", - "Converts HTML numeric entities to character code" - ], - "mb_detect_encoding": [ - "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", - "Encodings of the given string is returned (as a string)" - ], - "mb_detect_order": [ - "bool|array mb_detect_order([mixed encoding-list])", - "Sets the current detect_order or Return the current detect_order as a array" - ], - "mb_encode_mimeheader": [ - "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", - "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" - ], - "mb_encode_numericentity": [ - "string mb_encode_numericentity(string string, array convmap [, string encoding])", - "Converts specified characters to HTML numeric entities" - ], - "mb_encoding_aliases": [ - "array mb_encoding_aliases(string encoding)", - "Returns an array of the aliases of a given encoding name" - ], - "mb_ereg": [ - "int mb_ereg(string pattern, string string [, array registers])", - "Regular expression match for multibyte string" - ], - "mb_ereg_match": [ - "bool mb_ereg_match(string pattern, string string [,string option])", - "Regular expression match for multibyte string" - ], - "mb_ereg_replace": [ - "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", - "Replace regular expression for multibyte string" - ], - "mb_ereg_search": [ - "bool mb_ereg_search([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_getpos": [ - "int mb_ereg_search_getpos()", - "Get search start position" - ], - "mb_ereg_search_getregs": [ - "array mb_ereg_search_getregs()", - "Get matched substring of the last time" - ], - "mb_ereg_search_init": [ - "bool mb_ereg_search_init(string string [, string pattern[, string option]])", - "Initialize string and regular expression for search." - ], - "mb_ereg_search_pos": [ - "array mb_ereg_search_pos([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_regs": [ - "array mb_ereg_search_regs([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_setpos": [ - "bool mb_ereg_search_setpos(int position)", - "Set search start position" - ], - "mb_eregi": [ - "int mb_eregi(string pattern, string string [, array registers])", - "Case-insensitive regular expression match for multibyte string" - ], - "mb_eregi_replace": [ - "string mb_eregi_replace(string pattern, string replacement, string string)", - "Case insensitive replace regular expression for multibyte string" - ], - "mb_get_info": [ - "mixed mb_get_info([string type])", - "Returns the current settings of mbstring" - ], - "mb_http_input": [ - "mixed mb_http_input([string type])", - "Returns the input encoding" - ], - "mb_http_output": [ - "string mb_http_output([string encoding])", - "Sets the current output_encoding or returns the current output_encoding as a string" - ], - "mb_internal_encoding": [ - "string mb_internal_encoding([string encoding])", - "Sets the current internal encoding or Returns the current internal encoding as a string" - ], - "mb_language": [ - "string mb_language([string language])", - "Sets the current language or Returns the current language as a string" - ], - "mb_list_encodings": [ - "mixed mb_list_encodings()", - "Returns an array of all supported entity encodings" - ], - "mb_output_handler": [ - "string mb_output_handler(string contents, int status)", - "Returns string in output buffer converted to the http_output encoding" - ], - "mb_parse_str": [ - "bool mb_parse_str(string encoded_string [, array result])", - "Parses GET/POST/COOKIE data and sets global variables" - ], - "mb_preferred_mime_name": [ - "string mb_preferred_mime_name(string encoding)", - "Return the preferred MIME name (charset) as a string" - ], - "mb_regex_encoding": [ - "string mb_regex_encoding([string encoding])", - "Returns the current encoding for regex as a string." - ], - "mb_regex_set_options": [ - "string mb_regex_set_options([string options])", - "Set or get the default options for mbregex functions" - ], - "mb_send_mail": [ - "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", - "* Sends an email message with MIME scheme" - ], - "mb_split": [ - "array mb_split(string pattern, string string [, int limit])", - "split multibyte string into array by regular expression" - ], - "mb_strcut": [ - "string mb_strcut(string str, int start [, int length [, string encoding]])", - "Returns part of a string" - ], - "mb_strimwidth": [ - "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", - "Trim the string in terminal width" - ], - "mb_stripos": [ - "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", - "Finds position of first occurrence of a string within another, case insensitive" - ], - "mb_stristr": [ - "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", - "Finds first occurrence of a string within another, case insensitive" - ], - "mb_strlen": [ - "int mb_strlen(string str [, string encoding])", - "Get character numbers of a string" - ], - "mb_strpos": [ - "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", - "Find position of first occurrence of a string within another" - ], - "mb_strrchr": [ - "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", - "Finds the last occurrence of a character in a string within another" - ], - "mb_strrichr": [ - "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", - "Finds the last occurrence of a character in a string within another, case insensitive" - ], - "mb_strripos": [ - "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", - "Finds position of last occurrence of a string within another, case insensitive" - ], - "mb_strrpos": [ - "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", - "Find position of last occurrence of a string within another" - ], - "mb_strstr": [ - "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", - "Finds first occurrence of a string within another" - ], - "mb_strtolower": [ - "string mb_strtolower(string sourcestring [, string encoding])", - "* Returns a lowercased version of sourcestring" - ], - "mb_strtoupper": [ - "string mb_strtoupper(string sourcestring [, string encoding])", - "* Returns a uppercased version of sourcestring" - ], - "mb_strwidth": [ - "int mb_strwidth(string str [, string encoding])", - "Gets terminal width of a string" - ], - "mb_substitute_character": [ - "mixed mb_substitute_character([mixed substchar])", - "Sets the current substitute_character or returns the current substitute_character" - ], - "mb_substr": [ - "string mb_substr(string str, int start [, int length [, string encoding]])", - "Returns part of a string" - ], - "mb_substr_count": [ - "int mb_substr_count(string haystack, string needle [, string encoding])", - "Count the number of substring occurrences" - ], - "mcrypt_cbc": [ - "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", - "CBC crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_cfb": [ - "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", - "CFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_create_iv": [ - "string mcrypt_create_iv(int size, int source)", - "Create an initialization vector (IV)" - ], - "mcrypt_decrypt": [ - "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_ecb": [ - "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", - "ECB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_enc_get_algorithms_name": [ - "string mcrypt_enc_get_algorithms_name(resource td)", - "Returns the name of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_block_size": [ - "int mcrypt_enc_get_block_size(resource td)", - "Returns the block size of the cipher specified by the descriptor td" - ], - "mcrypt_enc_get_iv_size": [ - "int mcrypt_enc_get_iv_size(resource td)", - "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_key_size": [ - "int mcrypt_enc_get_key_size(resource td)", - "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_modes_name": [ - "string mcrypt_enc_get_modes_name(resource td)", - "Returns the name of the mode specified by the descriptor td" - ], - "mcrypt_enc_get_supported_key_sizes": [ - "array mcrypt_enc_get_supported_key_sizes(resource td)", - "This function decrypts the crypttext" - ], - "mcrypt_enc_is_block_algorithm": [ - "bool mcrypt_enc_is_block_algorithm(resource td)", - "Returns TRUE if the alrogithm is a block algorithms" - ], - "mcrypt_enc_is_block_algorithm_mode": [ - "bool mcrypt_enc_is_block_algorithm_mode(resource td)", - "Returns TRUE if the mode is for use with block algorithms" - ], - "mcrypt_enc_is_block_mode": [ - "bool mcrypt_enc_is_block_mode(resource td)", - "Returns TRUE if the mode outputs blocks" - ], - "mcrypt_enc_self_test": [ - "int mcrypt_enc_self_test(resource td)", - "This function runs the self test on the algorithm specified by the descriptor td" - ], - "mcrypt_encrypt": [ - "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_generic": [ - "string mcrypt_generic(resource td, string data)", - "This function encrypts the plaintext" - ], - "mcrypt_generic_deinit": [ - "bool mcrypt_generic_deinit(resource td)", - "This function terminates encrypt specified by the descriptor td" - ], - "mcrypt_generic_init": [ - "int mcrypt_generic_init(resource td, string key, string iv)", - "This function initializes all buffers for the specific module" - ], - "mcrypt_get_block_size": [ - "int mcrypt_get_block_size(string cipher, string module)", - "Get the key size of cipher" - ], - "mcrypt_get_cipher_name": [ - "string mcrypt_get_cipher_name(string cipher)", - "Get the key size of cipher" - ], - "mcrypt_get_iv_size": [ - "int mcrypt_get_iv_size(string cipher, string module)", - "Get the IV size of cipher (Usually the same as the blocksize)" - ], - "mcrypt_get_key_size": [ - "int mcrypt_get_key_size(string cipher, string module)", - "Get the key size of cipher" - ], - "mcrypt_list_algorithms": [ - "array mcrypt_list_algorithms([string lib_dir])", - "List all algorithms in \"module_dir\"" - ], - "mcrypt_list_modes": [ - "array mcrypt_list_modes([string lib_dir])", - "List all modes \"module_dir\"" - ], - "mcrypt_module_close": [ - "bool mcrypt_module_close(resource td)", - "Free the descriptor td" - ], - "mcrypt_module_get_algo_block_size": [ - "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", - "Returns the block size of the algorithm" - ], - "mcrypt_module_get_algo_key_size": [ - "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", - "Returns the maximum supported key size of the algorithm" - ], - "mcrypt_module_get_supported_key_sizes": [ - "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", - "This function decrypts the crypttext" - ], - "mcrypt_module_is_block_algorithm": [ - "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", - "Returns TRUE if the algorithm is a block algorithm" - ], - "mcrypt_module_is_block_algorithm_mode": [ - "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", - "Returns TRUE if the mode is for use with block algorithms" - ], - "mcrypt_module_is_block_mode": [ - "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", - "Returns TRUE if the mode outputs blocks of bytes" - ], - "mcrypt_module_open": [ - "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", - "Opens the module of the algorithm and the mode to be used" - ], - "mcrypt_module_self_test": [ - "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", - "Does a self test of the module \"module\"" - ], - "mcrypt_ofb": [ - "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "md5": [ - "string md5(string str, [ bool raw_output])", - "Calculate the md5 hash of a string" - ], - "md5_file": [ - "string md5_file(string filename [, bool raw_output])", - "Calculate the md5 hash of given filename" - ], - "mdecrypt_generic": [ - "string mdecrypt_generic(resource td, string data)", - "This function decrypts the plaintext" - ], - "memory_get_peak_usage": [ - "int memory_get_peak_usage([real_usage])", - "Returns the peak allocated by PHP memory" - ], - "memory_get_usage": [ - "int memory_get_usage([real_usage])", - "Returns the allocated by PHP memory" - ], - "metaphone": [ - "string metaphone(string text[, int phones])", - "Break english phrases down into their phonemes" - ], - "method_exists": [ - "bool method_exists(object object, string method)", - "Checks if the class method exists" - ], - "mhash": [ - "string mhash(int hash, string data [, string key])", - "Hash data with hash" - ], - "mhash_count": [ - "int mhash_count()", - "Gets the number of available hashes" - ], - "mhash_get_block_size": [ - "int mhash_get_block_size(int hash)", - "Gets the block size of hash" - ], - "mhash_get_hash_name": [ - "string mhash_get_hash_name(int hash)", - "Gets the name of hash" - ], - "mhash_keygen_s2k": [ - "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", - "Generates a key using hash functions" - ], - "microtime": [ - "mixed microtime([bool get_as_float])", - "Returns either a string or a float containing the current time in seconds and microseconds" - ], - "mime_content_type": [ - "string mime_content_type(string filename|resource stream)", - "Return content-type for file" - ], - "min": [ - "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", - "Return the lowest value in an array or a series of arguments" - ], - "mkdir": [ - "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", - "Create a directory" - ], - "mktime": [ - "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", - "Get UNIX timestamp for a date" - ], - "money_format": [ - "string money_format(string format , float value)", - "Convert monetary value(s) to string" - ], - "move_uploaded_file": [ - "bool move_uploaded_file(string path, string new_path)", - "Move a file if and only if it was created by an upload" - ], - "msg_get_queue": [ - "resource msg_get_queue(int key [, int perms])", - "Attach to a message queue" - ], - "msg_queue_exists": [ - "bool msg_queue_exists(int key)", - "Check whether a message queue exists" - ], - "msg_receive": [ - "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", - "Send a message of type msgtype (must be > 0) to a message queue" - ], - "msg_remove_queue": [ - "bool msg_remove_queue(resource queue)", - "Destroy the queue" - ], - "msg_send": [ - "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", - "Send a message of type msgtype (must be > 0) to a message queue" - ], - "msg_set_queue": [ - "bool msg_set_queue(resource queue, array data)", - "Set information for a message queue" - ], - "msg_stat_queue": [ - "array msg_stat_queue(resource queue)", - "Returns information about a message queue" - ], - "msgfmt_create": [ - "MessageFormatter msgfmt_create( string $locale, string $pattern )", - "* Create formatter." - ], - "msgfmt_format": [ - "mixed msgfmt_format( MessageFormatter $nf, array $args )", - "* Format a message." - ], - "msgfmt_format_message": [ - "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", - "* Format a message." - ], - "msgfmt_get_error_code": [ - "int msgfmt_get_error_code( MessageFormatter $nf )", - "* Get formatter's last error code." - ], - "msgfmt_get_error_message": [ - "string msgfmt_get_error_message( MessageFormatter $coll )", - "* Get text description for formatter's last error code." - ], - "msgfmt_get_locale": [ - "string msgfmt_get_locale(MessageFormatter $mf)", - "* Get formatter locale." - ], - "msgfmt_get_pattern": [ - "string msgfmt_get_pattern( MessageFormatter $mf )", - "* Get formatter pattern." - ], - "msgfmt_parse": [ - "array msgfmt_parse( MessageFormatter $nf, string $source )", - "* Parse a message." - ], - "msgfmt_set_pattern": [ - "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", - "* Set formatter pattern." - ], - "mssql_bind": [ - "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", - "Adds a parameter to a stored procedure or a remote stored procedure" - ], - "mssql_close": [ - "bool mssql_close([resource conn_id])", - "Closes a connection to a MS-SQL server" - ], - "mssql_connect": [ - "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", - "Establishes a connection to a MS-SQL server" - ], - "mssql_data_seek": [ - "bool mssql_data_seek(resource result_id, int offset)", - "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" - ], - "mssql_execute": [ - "mixed mssql_execute(resource stmt [, bool skip_results = false])", - "Executes a stored procedure on a MS-SQL server database" - ], - "mssql_fetch_array": [ - "array mssql_fetch_array(resource result_id [, int result_type])", - "Returns an associative array of the current row in the result set specified by result_id" - ], - "mssql_fetch_assoc": [ - "array mssql_fetch_assoc(resource result_id)", - "Returns an associative array of the current row in the result set specified by result_id" - ], - "mssql_fetch_batch": [ - "int mssql_fetch_batch(resource result_index)", - "Returns the next batch of records" - ], - "mssql_fetch_field": [ - "object mssql_fetch_field(resource result_id [, int offset])", - "Gets information about certain fields in a query result" - ], - "mssql_fetch_object": [ - "object mssql_fetch_object(resource result_id)", - "Returns a pseudo-object of the current row in the result set specified by result_id" - ], - "mssql_fetch_row": [ - "array mssql_fetch_row(resource result_id)", - "Returns an array of the current row in the result set specified by result_id" - ], - "mssql_field_length": [ - "int mssql_field_length(resource result_id [, int offset])", - "Get the length of a MS-SQL field" - ], - "mssql_field_name": [ - "string mssql_field_name(resource result_id [, int offset])", - "Returns the name of the field given by offset in the result set given by result_id" - ], - "mssql_field_seek": [ - "bool mssql_field_seek(resource result_id, int offset)", - "Seeks to the specified field offset" - ], - "mssql_field_type": [ - "string mssql_field_type(resource result_id [, int offset])", - "Returns the type of a field" - ], - "mssql_free_result": [ - "bool mssql_free_result(resource result_index)", - "Free a MS-SQL result index" - ], - "mssql_free_statement": [ - "bool mssql_free_statement(resource result_index)", - "Free a MS-SQL statement index" - ], - "mssql_get_last_message": [ - "string mssql_get_last_message()", - "Gets the last message from the MS-SQL server" - ], - "mssql_guid_string": [ - "string mssql_guid_string(string binary [,bool short_format])", - "Converts a 16 byte binary GUID to a string" - ], - "mssql_init": [ - "int mssql_init(string sp_name [, resource conn_id])", - "Initializes a stored procedure or a remote stored procedure" - ], - "mssql_min_error_severity": [ - "void mssql_min_error_severity(int severity)", - "Sets the lower error severity" - ], - "mssql_min_message_severity": [ - "void mssql_min_message_severity(int severity)", - "Sets the lower message severity" - ], - "mssql_next_result": [ - "bool mssql_next_result(resource result_id)", - "Move the internal result pointer to the next result" - ], - "mssql_num_fields": [ - "int mssql_num_fields(resource mssql_result_index)", - "Returns the number of fields fetched in from the result id specified" - ], - "mssql_num_rows": [ - "int mssql_num_rows(resource mssql_result_index)", - "Returns the number of rows fetched in from the result id specified" - ], - "mssql_pconnect": [ - "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", - "Establishes a persistent connection to a MS-SQL server" - ], - "mssql_query": [ - "resource mssql_query(string query [, resource conn_id [, int batch_size]])", - "Perform an SQL query on a MS-SQL server database" - ], - "mssql_result": [ - "string mssql_result(resource result_id, int row, mixed field)", - "Returns the contents of one cell from a MS-SQL result set" - ], - "mssql_rows_affected": [ - "int mssql_rows_affected(resource conn_id)", - "Returns the number of records affected by the query" - ], - "mssql_select_db": [ - "bool mssql_select_db(string database_name [, resource conn_id])", - "Select a MS-SQL database" - ], - "mt_getrandmax": [ - "int mt_getrandmax()", - "Returns the maximum value a random number from Mersenne Twister can have" - ], - "mt_rand": [ - "int mt_rand([int min, int max])", - "Returns a random number from Mersenne Twister" - ], - "mt_srand": [ - "void mt_srand([int seed])", - "Seeds Mersenne Twister random number generator" - ], - "mysql_affected_rows": [ - "int mysql_affected_rows([int link_identifier])", - "Gets number of affected rows in previous MySQL operation" - ], - "mysql_client_encoding": [ - "string mysql_client_encoding([int link_identifier])", - "Returns the default character set for the current connection" - ], - "mysql_close": [ - "bool mysql_close([int link_identifier])", - "Close a MySQL connection" - ], - "mysql_connect": [ - "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", - "Opens a connection to a MySQL Server" - ], - "mysql_create_db": [ - "bool mysql_create_db(string database_name [, int link_identifier])", - "Create a MySQL database" - ], - "mysql_data_seek": [ - "bool mysql_data_seek(resource result, int row_number)", - "Move internal result pointer" - ], - "mysql_db_query": [ - "resource mysql_db_query(string database_name, string query [, int link_identifier])", - "Sends an SQL query to MySQL" - ], - "mysql_drop_db": [ - "bool mysql_drop_db(string database_name [, int link_identifier])", - "Drops (delete) a MySQL database" - ], - "mysql_errno": [ - "int mysql_errno([int link_identifier])", - "Returns the number of the error message from previous MySQL operation" - ], - "mysql_error": [ - "string mysql_error([int link_identifier])", - "Returns the text of the error message from previous MySQL operation" - ], - "mysql_escape_string": [ - "string mysql_escape_string(string to_be_escaped)", - "Escape string for mysql query" - ], - "mysql_fetch_array": [ - "array mysql_fetch_array(resource result [, int result_type])", - "Fetch a result row as an array (associative, numeric or both)" - ], - "mysql_fetch_assoc": [ - "array mysql_fetch_assoc(resource result)", - "Fetch a result row as an associative array" - ], - "mysql_fetch_field": [ - "object mysql_fetch_field(resource result [, int field_offset])", - "Gets column information from a result and return as an object" - ], - "mysql_fetch_lengths": [ - "array mysql_fetch_lengths(resource result)", - "Gets max data size of each column in a result" - ], - "mysql_fetch_object": [ - "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", - "Fetch a result row as an object" - ], - "mysql_fetch_row": [ - "array mysql_fetch_row(resource result)", - "Gets a result row as an enumerated array" - ], - "mysql_field_flags": [ - "string mysql_field_flags(resource result, int field_offset)", - "Gets the flags associated with the specified field in a result" - ], - "mysql_field_len": [ - "int mysql_field_len(resource result, int field_offset)", - "Returns the length of the specified field" - ], - "mysql_field_name": [ - "string mysql_field_name(resource result, int field_index)", - "Gets the name of the specified field in a result" - ], - "mysql_field_seek": [ - "bool mysql_field_seek(resource result, int field_offset)", - "Sets result pointer to a specific field offset" - ], - "mysql_field_table": [ - "string mysql_field_table(resource result, int field_offset)", - "Gets name of the table the specified field is in" - ], - "mysql_field_type": [ - "string mysql_field_type(resource result, int field_offset)", - "Gets the type of the specified field in a result" - ], - "mysql_free_result": [ - "bool mysql_free_result(resource result)", - "Free result memory" - ], - "mysql_get_client_info": [ - "string mysql_get_client_info()", - "Returns a string that represents the client library version" - ], - "mysql_get_host_info": [ - "string mysql_get_host_info([int link_identifier])", - "Returns a string describing the type of connection in use, including the server host name" - ], - "mysql_get_proto_info": [ - "int mysql_get_proto_info([int link_identifier])", - "Returns the protocol version used by current connection" - ], - "mysql_get_server_info": [ - "string mysql_get_server_info([int link_identifier])", - "Returns a string that represents the server version number" - ], - "mysql_info": [ - "string mysql_info([int link_identifier])", - "Returns a string containing information about the most recent query" - ], - "mysql_insert_id": [ - "int mysql_insert_id([int link_identifier])", - "Gets the ID generated from the previous INSERT operation" - ], - "mysql_list_dbs": [ - "resource mysql_list_dbs([int link_identifier])", - "List databases available on a MySQL server" - ], - "mysql_list_fields": [ - "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", - "List MySQL result fields" - ], - "mysql_list_processes": [ - "resource mysql_list_processes([int link_identifier])", - "Returns a result set describing the current server threads" - ], - "mysql_list_tables": [ - "resource mysql_list_tables(string database_name [, int link_identifier])", - "List tables in a MySQL database" - ], - "mysql_num_fields": [ - "int mysql_num_fields(resource result)", - "Gets number of fields in a result" - ], - "mysql_num_rows": [ - "int mysql_num_rows(resource result)", - "Gets number of rows in a result" - ], - "mysql_pconnect": [ - "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", - "Opens a persistent connection to a MySQL Server" - ], - "mysql_ping": [ - "bool mysql_ping([int link_identifier])", - "Ping a server connection. If no connection then reconnect." - ], - "mysql_query": [ - "resource mysql_query(string query [, int link_identifier])", - "Sends an SQL query to MySQL" - ], - "mysql_real_escape_string": [ - "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", - "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" - ], - "mysql_result": [ - "mixed mysql_result(resource result, int row [, mixed field])", - "Gets result data" - ], - "mysql_select_db": [ - "bool mysql_select_db(string database_name [, int link_identifier])", - "Selects a MySQL database" - ], - "mysql_set_charset": [ - "bool mysql_set_charset(string csname [, int link_identifier])", - "sets client character set" - ], - "mysql_stat": [ - "string mysql_stat([int link_identifier])", - "Returns a string containing status information" - ], - "mysql_thread_id": [ - "int mysql_thread_id([int link_identifier])", - "Returns the thread id of current connection" - ], - "mysql_unbuffered_query": [ - "resource mysql_unbuffered_query(string query [, int link_identifier])", - "Sends an SQL query to MySQL, without fetching and buffering the result rows" - ], - "mysqli_affected_rows": [ - "mixed mysqli_affected_rows(object link)", - "Get number of affected rows in previous MySQL operation" - ], - "mysqli_autocommit": [ - "bool mysqli_autocommit(object link, bool mode)", - "Turn auto commit on or of" - ], - "mysqli_cache_stats": [ - "array mysqli_cache_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_change_user": [ - "bool mysqli_change_user(object link, string user, string password, string database)", - "Change logged-in user of the active connection" - ], - "mysqli_character_set_name": [ - "string mysqli_character_set_name(object link)", - "Returns the name of the character set used for this connection" - ], - "mysqli_close": [ - "bool mysqli_close(object link)", - "Close connection" - ], - "mysqli_commit": [ - "bool mysqli_commit(object link)", - "Commit outstanding actions and close transaction" - ], - "mysqli_connect": [ - "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", - "Open a connection to a mysql server" - ], - "mysqli_connect_errno": [ - "int mysqli_connect_errno()", - "Returns the numerical value of the error message from last connect command" - ], - "mysqli_connect_error": [ - "string mysqli_connect_error()", - "Returns the text of the error message from previous MySQL operation" - ], - "mysqli_data_seek": [ - "bool mysqli_data_seek(object result, int offset)", - "Move internal result pointer" - ], - "mysqli_debug": [ - "void mysqli_debug(string debug)", - "" - ], - "mysqli_dump_debug_info": [ - "bool mysqli_dump_debug_info(object link)", - "" - ], - "mysqli_embedded_server_end": [ - "void mysqli_embedded_server_end()", - "" - ], - "mysqli_embedded_server_start": [ - "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", - "initialize and start embedded server" - ], - "mysqli_errno": [ - "int mysqli_errno(object link)", - "Returns the numerical value of the error message from previous MySQL operation" - ], - "mysqli_error": [ - "string mysqli_error(object link)", - "Returns the text of the error message from previous MySQL operation" - ], - "mysqli_fetch_all": [ - "mixed mysqli_fetch_all(object result [,int resulttype])", - "Fetches all result rows as an associative array, a numeric array, or both" - ], - "mysqli_fetch_array": [ - "mixed mysqli_fetch_array(object result [,int resulttype])", - "Fetch a result row as an associative array, a numeric array, or both" - ], - "mysqli_fetch_assoc": [ - "mixed mysqli_fetch_assoc(object result)", - "Fetch a result row as an associative array" - ], - "mysqli_fetch_field": [ - "mixed mysqli_fetch_field(object result)", - "Get column information from a result and return as an object" - ], - "mysqli_fetch_field_direct": [ - "mixed mysqli_fetch_field_direct(object result, int offset)", - "Fetch meta-data for a single field" - ], - "mysqli_fetch_fields": [ - "mixed mysqli_fetch_fields(object result)", - "Return array of objects containing field meta-data" - ], - "mysqli_fetch_lengths": [ - "mixed mysqli_fetch_lengths(object result)", - "Get the length of each output in a result" - ], - "mysqli_fetch_object": [ - "mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])", - "Fetch a result row as an object" - ], - "mysqli_fetch_row": [ - "array mysqli_fetch_row(object result)", - "Get a result row as an enumerated array" - ], - "mysqli_field_count": [ - "int mysqli_field_count(object link)", - "Fetch the number of fields returned by the last query for the given link" - ], - "mysqli_field_seek": [ - "int mysqli_field_seek(object result, int fieldnr)", - "Set result pointer to a specified field offset" - ], - "mysqli_field_tell": [ - "int mysqli_field_tell(object result)", - "Get current field offset of result pointer" - ], - "mysqli_free_result": [ - "void mysqli_free_result(object result)", - "Free query result memory for the given result handle" - ], - "mysqli_get_charset": [ - "object mysqli_get_charset(object link)", - "returns a character set object" - ], - "mysqli_get_client_info": [ - "string mysqli_get_client_info()", - "Get MySQL client info" - ], - "mysqli_get_client_stats": [ - "array mysqli_get_client_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_get_client_version": [ - "int mysqli_get_client_version()", - "Get MySQL client info" - ], - "mysqli_get_connection_stats": [ - "array mysqli_get_connection_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_get_host_info": [ - "string mysqli_get_host_info(object link)", - "Get MySQL host info" - ], - "mysqli_get_proto_info": [ - "int mysqli_get_proto_info(object link)", - "Get MySQL protocol information" - ], - "mysqli_get_server_info": [ - "string mysqli_get_server_info(object link)", - "Get MySQL server info" - ], - "mysqli_get_server_version": [ - "int mysqli_get_server_version(object link)", - "Return the MySQL version for the server referenced by the given link" - ], - "mysqli_get_warnings": [ - "object mysqli_get_warnings(object link)", - "" - ], - "mysqli_info": [ - "string mysqli_info(object link)", - "Get information about the most recent query" - ], - "mysqli_init": [ - "resource mysqli_init()", - "Initialize mysqli and return a resource for use with mysql_real_connect" - ], - "mysqli_insert_id": [ - "mixed mysqli_insert_id(object link)", - "Get the ID generated from the previous INSERT operation" - ], - "mysqli_kill": [ - "bool mysqli_kill(object link, int processid)", - "Kill a mysql process on the server" - ], - "mysqli_link_construct": [ - "object mysqli_link_construct()", - "" - ], - "mysqli_more_results": [ - "bool mysqli_more_results(object link)", - "check if there any more query results from a multi query" - ], - "mysqli_multi_query": [ - "bool mysqli_multi_query(object link, string query)", - "allows to execute multiple queries" - ], - "mysqli_next_result": [ - "bool mysqli_next_result(object link)", - "read next result from multi_query" - ], - "mysqli_num_fields": [ - "int mysqli_num_fields(object result)", - "Get number of fields in result" - ], - "mysqli_num_rows": [ - "mixed mysqli_num_rows(object result)", - "Get number of rows in result" - ], - "mysqli_options": [ - "bool mysqli_options(object link, int flags, mixed values)", - "Set options" - ], - "mysqli_ping": [ - "bool mysqli_ping(object link)", - "Ping a server connection or reconnect if there is no connection" - ], - "mysqli_poll": [ - "int mysqli_poll(array read, array write, array error, long sec [, long usec])", - "Poll connections" - ], - "mysqli_prepare": [ - "mixed mysqli_prepare(object link, string query)", - "Prepare a SQL statement for execution" - ], - "mysqli_query": [ - "mixed mysqli_query(object link, string query [,int resultmode])", - "" - ], - "mysqli_real_connect": [ - "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", - "Open a connection to a mysql server" - ], - "mysqli_real_escape_string": [ - "string mysqli_real_escape_string(object link, string escapestr)", - "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" - ], - "mysqli_real_query": [ - "bool mysqli_real_query(object link, string query)", - "Binary-safe version of mysql_query()" - ], - "mysqli_reap_async_query": [ - "int mysqli_reap_async_query(object link)", - "Poll connections" - ], - "mysqli_refresh": [ - "bool mysqli_refresh(object link, long options)", - "Flush tables or caches, or reset replication server information" - ], - "mysqli_report": [ - "bool mysqli_report(int flags)", - "sets report level" - ], - "mysqli_rollback": [ - "bool mysqli_rollback(object link)", - "Undo actions from current transaction" - ], - "mysqli_select_db": [ - "bool mysqli_select_db(object link, string dbname)", - "Select a MySQL database" - ], - "mysqli_set_charset": [ - "bool mysqli_set_charset(object link, string csname)", - "sets client character set" - ], - "mysqli_set_local_infile_default": [ - "void mysqli_set_local_infile_default(object link)", - "unsets user defined handler for load local infile command" - ], - "mysqli_set_local_infile_handler": [ - "bool mysqli_set_local_infile_handler(object link, callback read_func)", - "Set callback functions for LOAD DATA LOCAL INFILE" - ], - "mysqli_sqlstate": [ - "string mysqli_sqlstate(object link)", - "Returns the SQLSTATE error from previous MySQL operation" - ], - "mysqli_ssl_set": [ - "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", - "" - ], - "mysqli_stat": [ - "mixed mysqli_stat(object link)", - "Get current system status" - ], - "mysqli_stmt_affected_rows": [ - "mixed mysqli_stmt_affected_rows(object stmt)", - "Return the number of rows affected in the last query for the given link" - ], - "mysqli_stmt_attr_get": [ - "int mysqli_stmt_attr_get(object stmt, long attr)", - "" - ], - "mysqli_stmt_attr_set": [ - "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", - "" - ], - "mysqli_stmt_bind_param": [ - "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", - "Bind variables to a prepared statement as parameters" - ], - "mysqli_stmt_bind_result": [ - "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", - "Bind variables to a prepared statement for result storage" - ], - "mysqli_stmt_close": [ - "bool mysqli_stmt_close(object stmt)", - "Close statement" - ], - "mysqli_stmt_data_seek": [ - "void mysqli_stmt_data_seek(object stmt, int offset)", - "Move internal result pointer" - ], - "mysqli_stmt_errno": [ - "int mysqli_stmt_errno(object stmt)", - "" - ], - "mysqli_stmt_error": [ - "string mysqli_stmt_error(object stmt)", - "" - ], - "mysqli_stmt_execute": [ - "bool mysqli_stmt_execute(object stmt)", - "Execute a prepared statement" - ], - "mysqli_stmt_fetch": [ - "mixed mysqli_stmt_fetch(object stmt)", - "Fetch results from a prepared statement into the bound variables" - ], - "mysqli_stmt_field_count": [ - "int mysqli_stmt_field_count(object stmt) {", - "Return the number of result columns for the given statement" - ], - "mysqli_stmt_free_result": [ - "void mysqli_stmt_free_result(object stmt)", - "Free stored result memory for the given statement handle" - ], - "mysqli_stmt_get_result": [ - "object mysqli_stmt_get_result(object link)", - "Buffer result set on client" - ], - "mysqli_stmt_get_warnings": [ - "object mysqli_stmt_get_warnings(object link)", - "" - ], - "mysqli_stmt_init": [ - "mixed mysqli_stmt_init(object link)", - "Initialize statement object" - ], - "mysqli_stmt_insert_id": [ - "mixed mysqli_stmt_insert_id(object stmt)", - "Get the ID generated from the previous INSERT operation" - ], - "mysqli_stmt_next_result": [ - "bool mysqli_stmt_next_result(object link)", - "read next result from multi_query" - ], - "mysqli_stmt_num_rows": [ - "mixed mysqli_stmt_num_rows(object stmt)", - "Return the number of rows in statements result set" - ], - "mysqli_stmt_param_count": [ - "int mysqli_stmt_param_count(object stmt)", - "Return the number of parameter for the given statement" - ], - "mysqli_stmt_prepare": [ - "bool mysqli_stmt_prepare(object stmt, string query)", - "prepare server side statement with query" - ], - "mysqli_stmt_reset": [ - "bool mysqli_stmt_reset(object stmt)", - "reset a prepared statement" - ], - "mysqli_stmt_result_metadata": [ - "mixed mysqli_stmt_result_metadata(object stmt)", - "return result set from statement" - ], - "mysqli_stmt_send_long_data": [ - "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", - "" - ], - "mysqli_stmt_sqlstate": [ - "string mysqli_stmt_sqlstate(object stmt)", - "" - ], - "mysqli_stmt_store_result": [ - "bool mysqli_stmt_store_result(stmt)", - "" - ], - "mysqli_store_result": [ - "object mysqli_store_result(object link)", - "Buffer result set on client" - ], - "mysqli_thread_id": [ - "int mysqli_thread_id(object link)", - "Return the current thread ID" - ], - "mysqli_thread_safe": [ - "bool mysqli_thread_safe()", - "Return whether thread safety is given or not" - ], - "mysqli_use_result": [ - "mixed mysqli_use_result(object link)", - "Directly retrieve query results - do not buffer results on client side" - ], - "mysqli_warning_count": [ - "int mysqli_warning_count(object link)", - "Return number of warnings from the last query for the given link" - ], - "natcasesort": [ - "void natcasesort(array &array_arg)", - "Sort an array using case-insensitive natural sort" - ], - "natsort": [ - "void natsort(array &array_arg)", - "Sort an array using natural sort" - ], - "next": [ - "mixed next(array array_arg)", - "Move array argument's internal pointer to the next element and return it" - ], - "ngettext": [ - "string ngettext(string MSGID1, string MSGID2, int N)", - "Plural version of gettext()" - ], - "nl2br": [ - "string nl2br(string str [, bool is_xhtml])", - "Converts newlines to HTML line breaks" - ], - "nl_langinfo": [ - "string nl_langinfo(int item)", - "Query language and locale information" - ], - "normalizer_is_normalize": [ - "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", - "* Test if a string is in a given normalization form." - ], - "normalizer_normalize": [ - "string normalizer_normalize( string $input [, string $form = FORM_C] )", - "* Normalize a string." - ], - "nsapi_request_headers": [ - "array nsapi_request_headers()", - "Get all headers from the request" - ], - "nsapi_response_headers": [ - "array nsapi_response_headers()", - "Get all headers from the response" - ], - "nsapi_virtual": [ - "bool nsapi_virtual(string uri)", - "Perform an NSAPI sub-request" - ], - "number_format": [ - "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", - "Formats a number with grouped thousands" - ], - "numfmt_create": [ - "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", - "* Create number formatter." - ], - "numfmt_format": [ - "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", - "* Format a number." - ], - "numfmt_format_currency": [ - "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", - "* Format a number as currency." - ], - "numfmt_get_attribute": [ - "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", - "* Get formatter attribute value." - ], - "numfmt_get_error_code": [ - "int numfmt_get_error_code( NumberFormatter $nf )", - "* Get formatter's last error code." - ], - "numfmt_get_error_message": [ - "string numfmt_get_error_message( NumberFormatter $nf )", - "* Get text description for formatter's last error code." - ], - "numfmt_get_locale": [ - "string numfmt_get_locale( NumberFormatter $nf[, int type] )", - "* Get formatter locale." - ], - "numfmt_get_pattern": [ - "string numfmt_get_pattern( NumberFormatter $nf )", - "* Get formatter pattern." - ], - "numfmt_get_symbol": [ - "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", - "* Get formatter symbol value." - ], - "numfmt_get_text_attribute": [ - "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", - "* Get formatter attribute value." - ], - "numfmt_parse": [ - "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", - "* Parse a number." - ], - "numfmt_parse_currency": [ - "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", - "* Parse a number as currency." - ], - "numfmt_parse_message": [ - "array numfmt_parse_message( string $locale, string $pattern, string $source )", - "* Parse a message." - ], - "numfmt_set_attribute": [ - "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", - "* Get formatter attribute value." - ], - "numfmt_set_pattern": [ - "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", - "* Set formatter pattern." - ], - "numfmt_set_symbol": [ - "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", - "* Set formatter symbol value." - ], - "numfmt_set_text_attribute": [ - "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", - "* Get formatter attribute value." - ], - "ob_clean": [ - "bool ob_clean()", - "Clean (delete) the current output buffer" - ], - "ob_end_clean": [ - "bool ob_end_clean()", - "Clean the output buffer, and delete current output buffer" - ], - "ob_end_flush": [ - "bool ob_end_flush()", - "Flush (send) the output buffer, and delete current output buffer" - ], - "ob_flush": [ - "bool ob_flush()", - "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" - ], - "ob_get_clean": [ - "bool ob_get_clean()", - "Get current buffer contents and delete current output buffer" - ], - "ob_get_contents": [ - "string ob_get_contents()", - "Return the contents of the output buffer" - ], - "ob_get_flush": [ - "bool ob_get_flush()", - "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" - ], - "ob_get_length": [ - "int ob_get_length()", - "Return the length of the output buffer" - ], - "ob_get_level": [ - "int ob_get_level()", - "Return the nesting level of the output buffer" - ], - "ob_get_status": [ - "false|array ob_get_status([bool full_status])", - "Return the status of the active or all output buffers" - ], - "ob_gzhandler": [ - "string ob_gzhandler(string str, int mode)", - "Encode str based on accept-encoding setting - designed to be called from ob_start()" - ], - "ob_iconv_handler": [ - "string ob_iconv_handler(string contents, int status)", - "Returns str in output buffer converted to the iconv.output_encoding character set" - ], - "ob_implicit_flush": [ - "void ob_implicit_flush([int flag])", - "Turn implicit flush on/off and is equivalent to calling flush() after every output call" - ], - "ob_list_handlers": [ - "false|array ob_list_handlers()", - "* List all output_buffers in an array" - ], - "ob_start": [ - "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", - "Turn on Output Buffering (specifying an optional output handler)." - ], - "oci_bind_array_by_name": [ - "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", - "Bind a PHP array to an Oracle PL/SQL type by name" - ], - "oci_bind_by_name": [ - "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", - "Bind a PHP variable to an Oracle placeholder by name" - ], - "oci_cancel": [ - "bool oci_cancel(resource stmt)", - "Cancel reading from a cursor" - ], - "oci_close": [ - "bool oci_close(resource connection)", - "Disconnect from database" - ], - "oci_collection_append": [ - "bool oci_collection_append(string value)", - "Append an object to the collection" - ], - "oci_collection_assign": [ - "bool oci_collection_assign(object from)", - "Assign a collection from another existing collection" - ], - "oci_collection_element_assign": [ - "bool oci_collection_element_assign(int index, string val)", - "Assign element val to collection at index ndx" - ], - "oci_collection_element_get": [ - "string oci_collection_element_get(int ndx)", - "Retrieve the value at collection index ndx" - ], - "oci_collection_max": [ - "int oci_collection_max()", - "Return the max value of a collection. For a varray this is the maximum length of the array" - ], - "oci_collection_size": [ - "int oci_collection_size()", - "Return the size of a collection" - ], - "oci_collection_trim": [ - "bool oci_collection_trim(int num)", - "Trim num elements from the end of a collection" - ], - "oci_commit": [ - "bool oci_commit(resource connection)", - "Commit the current context" - ], - "oci_connect": [ - "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", - "Connect to an Oracle database and log on. Returns a new session." - ], - "oci_define_by_name": [ - "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", - "Define a PHP variable to an Oracle column by name" - ], - "oci_error": [ - "array oci_error([resource stmt|connection|global])", - "Return the last error of stmt|connection|global. If no error happened returns false." - ], - "oci_execute": [ - "bool oci_execute(resource stmt [, int mode])", - "Execute a parsed statement" - ], - "oci_fetch": [ - "bool oci_fetch(resource stmt)", - "Prepare a new row of data for reading" - ], - "oci_fetch_all": [ - "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", - "Fetch all rows of result data into an array" - ], - "oci_fetch_array": [ - "array oci_fetch_array( resource stmt [, int mode ])", - "Fetch a result row as an array" - ], - "oci_fetch_assoc": [ - "array oci_fetch_assoc( resource stmt )", - "Fetch a result row as an associative array" - ], - "oci_fetch_object": [ - "object oci_fetch_object( resource stmt )", - "Fetch a result row as an object" - ], - "oci_fetch_row": [ - "array oci_fetch_row( resource stmt )", - "Fetch a result row as an enumerated array" - ], - "oci_field_is_null": [ - "bool oci_field_is_null(resource stmt, int col)", - "Tell whether a column is NULL" - ], - "oci_field_name": [ - "string oci_field_name(resource stmt, int col)", - "Tell the name of a column" - ], - "oci_field_precision": [ - "int oci_field_precision(resource stmt, int col)", - "Tell the precision of a column" - ], - "oci_field_scale": [ - "int oci_field_scale(resource stmt, int col)", - "Tell the scale of a column" - ], - "oci_field_size": [ - "int oci_field_size(resource stmt, int col)", - "Tell the maximum data size of a column" - ], - "oci_field_type": [ - "mixed oci_field_type(resource stmt, int col)", - "Tell the data type of a column" - ], - "oci_field_type_raw": [ - "int oci_field_type_raw(resource stmt, int col)", - "Tell the raw oracle data type of a column" - ], - "oci_free_collection": [ - "bool oci_free_collection()", - "Deletes collection object" - ], - "oci_free_descriptor": [ - "bool oci_free_descriptor()", - "Deletes large object description" - ], - "oci_free_statement": [ - "bool oci_free_statement(resource stmt)", - "Free all resources associated with a statement" - ], - "oci_internal_debug": [ - "void oci_internal_debug(int onoff)", - "Toggle internal debugging output for the OCI extension" - ], - "oci_lob_append": [ - "bool oci_lob_append( object lob )", - "Appends data from a LOB to another LOB" - ], - "oci_lob_close": [ - "bool oci_lob_close()", - "Closes lob descriptor" - ], - "oci_lob_copy": [ - "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", - "Copies data from a LOB to another LOB" - ], - "oci_lob_eof": [ - "bool oci_lob_eof()", - "Checks if EOF is reached" - ], - "oci_lob_erase": [ - "int oci_lob_erase( [ int offset [, int length ] ] )", - "Erases a specified portion of the internal LOB, starting at a specified offset" - ], - "oci_lob_export": [ - "bool oci_lob_export([string filename [, int start [, int length]]])", - "Writes a large object into a file" - ], - "oci_lob_flush": [ - "bool oci_lob_flush( [ int flag ] )", - "Flushes the LOB buffer" - ], - "oci_lob_import": [ - "bool oci_lob_import( string filename )", - "Loads file into a LOB" - ], - "oci_lob_is_equal": [ - "bool oci_lob_is_equal( object lob1, object lob2 )", - "Tests to see if two LOB/FILE locators are equal" - ], - "oci_lob_load": [ - "string oci_lob_load()", - "Loads a large object" - ], - "oci_lob_read": [ - "string oci_lob_read( int length )", - "Reads particular part of a large object" - ], - "oci_lob_rewind": [ - "bool oci_lob_rewind()", - "Rewind pointer of a LOB" - ], - "oci_lob_save": [ - "bool oci_lob_save( string data [, int offset ])", - "Saves a large object" - ], - "oci_lob_seek": [ - "bool oci_lob_seek( int offset [, int whence ])", - "Moves the pointer of a LOB" - ], - "oci_lob_size": [ - "int oci_lob_size()", - "Returns size of a large object" - ], - "oci_lob_tell": [ - "int oci_lob_tell()", - "Tells LOB pointer position" - ], - "oci_lob_truncate": [ - "bool oci_lob_truncate( [ int length ])", - "Truncates a LOB" - ], - "oci_lob_write": [ - "int oci_lob_write( string string [, int length ])", - "Writes data to current position of a LOB" - ], - "oci_lob_write_temporary": [ - "bool oci_lob_write_temporary(string var [, int lob_type])", - "Writes temporary blob" - ], - "oci_new_collection": [ - "object oci_new_collection(resource connection, string tdo [, string schema])", - "Initialize a new collection" - ], - "oci_new_connect": [ - "resource oci_new_connect(string user, string pass [, string db])", - "Connect to an Oracle database and log on. Returns a new session." - ], - "oci_new_cursor": [ - "resource oci_new_cursor(resource connection)", - "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" - ], - "oci_new_descriptor": [ - "object oci_new_descriptor(resource connection [, int type])", - "Initialize a new empty descriptor LOB/FILE (LOB is default)" - ], - "oci_num_fields": [ - "int oci_num_fields(resource stmt)", - "Return the number of result columns in a statement" - ], - "oci_num_rows": [ - "int oci_num_rows(resource stmt)", - "Return the row count of an OCI statement" - ], - "oci_parse": [ - "resource oci_parse(resource connection, string query)", - "Parse a query and return a statement" - ], - "oci_password_change": [ - "bool oci_password_change(resource connection, string username, string old_password, string new_password)", - "Changes the password of an account" - ], - "oci_pconnect": [ - "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", - "Connect to an Oracle database using a persistent connection and log on. Returns a new session." - ], - "oci_result": [ - "string oci_result(resource stmt, mixed column)", - "Return a single column of result data" - ], - "oci_rollback": [ - "bool oci_rollback(resource connection)", - "Rollback the current context" - ], - "oci_server_version": [ - "string oci_server_version(resource connection)", - "Return a string containing server version information" - ], - "oci_set_action": [ - "bool oci_set_action(resource connection, string value)", - "Sets the action attribute on the connection" - ], - "oci_set_client_identifier": [ - "bool oci_set_client_identifier(resource connection, string value)", - "Sets the client identifier attribute on the connection" - ], - "oci_set_client_info": [ - "bool oci_set_client_info(resource connection, string value)", - "Sets the client info attribute on the connection" - ], - "oci_set_edition": [ - "bool oci_set_edition(string value)", - "Sets the edition attribute for all subsequent connections created" - ], - "oci_set_module_name": [ - "bool oci_set_module_name(resource connection, string value)", - "Sets the module attribute on the connection" - ], - "oci_set_prefetch": [ - "bool oci_set_prefetch(resource stmt, int prefetch_rows)", - "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" - ], - "oci_statement_type": [ - "string oci_statement_type(resource stmt)", - "Return the query type of an OCI statement" - ], - "ocifetchinto": [ - "int ocifetchinto(resource stmt, array &output [, int mode])", - "Fetch a row of result data into an array" - ], - "ocigetbufferinglob": [ - "bool ocigetbufferinglob()", - "Returns current state of buffering for a LOB" - ], - "ocisetbufferinglob": [ - "bool ocisetbufferinglob( bool flag )", - "Enables/disables buffering for a LOB" - ], - "octdec": [ - "int octdec(string octal_number)", - "Returns the decimal equivalent of an octal string" - ], - "odbc_autocommit": [ - "mixed odbc_autocommit(resource connection_id [, int OnOff])", - "Toggle autocommit mode or get status" - ], - "odbc_binmode": [ - "bool odbc_binmode(int result_id, int mode)", - "Handle binary column data" - ], - "odbc_close": [ - "void odbc_close(resource connection_id)", - "Close an ODBC connection" - ], - "odbc_close_all": [ - "void odbc_close_all()", - "Close all ODBC connections" - ], - "odbc_columnprivileges": [ - "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", - "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" - ], - "odbc_columns": [ - "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", - "Returns a result identifier that can be used to fetch a list of column names in specified tables" - ], - "odbc_commit": [ - "bool odbc_commit(resource connection_id)", - "Commit an ODBC transaction" - ], - "odbc_connect": [ - "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", - "Connect to a datasource" - ], - "odbc_cursor": [ - "string odbc_cursor(resource result_id)", - "Get cursor name" - ], - "odbc_data_source": [ - "array odbc_data_source(resource connection_id, int fetch_type)", - "Return information about the currently connected data source" - ], - "odbc_error": [ - "string odbc_error([resource connection_id])", - "Get the last error code" - ], - "odbc_errormsg": [ - "string odbc_errormsg([resource connection_id])", - "Get the last error message" - ], - "odbc_exec": [ - "resource odbc_exec(resource connection_id, string query [, int flags])", - "Prepare and execute an SQL statement" - ], - "odbc_execute": [ - "bool odbc_execute(resource result_id [, array parameters_array])", - "Execute a prepared statement" - ], - "odbc_fetch_array": [ - "array odbc_fetch_array(int result [, int rownumber])", - "Fetch a result row as an associative array" - ], - "odbc_fetch_into": [ - "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", - "Fetch one result row into an array" - ], - "odbc_fetch_object": [ - "object odbc_fetch_object(int result [, int rownumber])", - "Fetch a result row as an object" - ], - "odbc_fetch_row": [ - "bool odbc_fetch_row(resource result_id [, int row_number])", - "Fetch a row" - ], - "odbc_field_len": [ - "int odbc_field_len(resource result_id, int field_number)", - "Get the length (precision) of a column" - ], - "odbc_field_name": [ - "string odbc_field_name(resource result_id, int field_number)", - "Get a column name" - ], - "odbc_field_num": [ - "int odbc_field_num(resource result_id, string field_name)", - "Return column number" - ], - "odbc_field_scale": [ - "int odbc_field_scale(resource result_id, int field_number)", - "Get the scale of a column" - ], - "odbc_field_type": [ - "string odbc_field_type(resource result_id, int field_number)", - "Get the datatype of a column" - ], - "odbc_foreignkeys": [ - "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", - "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" - ], - "odbc_free_result": [ - "bool odbc_free_result(resource result_id)", - "Free resources associated with a result" - ], - "odbc_gettypeinfo": [ - "resource odbc_gettypeinfo(resource connection_id [, int data_type])", - "Returns a result identifier containing information about data types supported by the data source" - ], - "odbc_longreadlen": [ - "bool odbc_longreadlen(int result_id, int length)", - "Handle LONG columns" - ], - "odbc_next_result": [ - "bool odbc_next_result(resource result_id)", - "Checks if multiple results are avaiable" - ], - "odbc_num_fields": [ - "int odbc_num_fields(resource result_id)", - "Get number of columns in a result" - ], - "odbc_num_rows": [ - "int odbc_num_rows(resource result_id)", - "Get number of rows in a result" - ], - "odbc_pconnect": [ - "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", - "Establish a persistent connection to a datasource" - ], - "odbc_prepare": [ - "resource odbc_prepare(resource connection_id, string query)", - "Prepares a statement for execution" - ], - "odbc_primarykeys": [ - "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", - "Returns a result identifier listing the column names that comprise the primary key for a table" - ], - "odbc_procedurecolumns": [ - "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", - "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" - ], - "odbc_procedures": [ - "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", - "Returns a result identifier containg the list of procedure names in a datasource" - ], - "odbc_result": [ - "mixed odbc_result(resource result_id, mixed field)", - "Get result data" - ], - "odbc_result_all": [ - "int odbc_result_all(resource result_id [, string format])", - "Print result as HTML table" - ], - "odbc_rollback": [ - "bool odbc_rollback(resource connection_id)", - "Rollback a transaction" - ], - "odbc_setoption": [ - "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", - "Sets connection or statement options" - ], - "odbc_specialcolumns": [ - "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", - "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" - ], - "odbc_statistics": [ - "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", - "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" - ], - "odbc_tableprivileges": [ - "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", - "Returns a result identifier containing a list of tables and the privileges associated with each table" - ], - "odbc_tables": [ - "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", - "Call the SQLTables function" - ], - "opendir": [ - "mixed opendir(string path[, resource context])", - "Open a directory and return a dir_handle" - ], - "openlog": [ - "bool openlog(string ident, int option, int facility)", - "Open connection to system logger" - ], - "openssl_csr_export": [ - "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", - "Exports a CSR to file or a var" - ], - "openssl_csr_export_to_file": [ - "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", - "Exports a CSR to file" - ], - "openssl_csr_get_public_key": [ - "mixed openssl_csr_get_public_key(mixed csr)", - "Returns the subject of a CERT or FALSE on error" - ], - "openssl_csr_get_subject": [ - "mixed openssl_csr_get_subject(mixed csr)", - "Returns the subject of a CERT or FALSE on error" - ], - "openssl_csr_new": [ - "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", - "Generates a privkey and CSR" - ], - "openssl_csr_sign": [ - "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", - "Signs a cert with another CERT" - ], - "openssl_decrypt": [ - "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", - "Takes raw or base64 encoded string and dectupt it using given method and key" - ], - "openssl_dh_compute_key": [ - "string openssl_dh_compute_key(string pub_key, resource dh_key)", - "Computes shared sicret for public value of remote DH key and local DH key" - ], - "openssl_digest": [ - "string openssl_digest(string data, string method [, bool raw_output=false])", - "Computes digest hash value for given data using given method, returns raw or binhex encoded string" - ], - "openssl_encrypt": [ - "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", - "Encrypts given data with given method and key, returns raw or base64 encoded string" - ], - "openssl_error_string": [ - "mixed openssl_error_string()", - "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" - ], - "openssl_get_cipher_methods": [ - "array openssl_get_cipher_methods([bool aliases = false])", - "Return array of available cipher methods" - ], - "openssl_get_md_methods": [ - "array openssl_get_md_methods([bool aliases = false])", - "Return array of available digest methods" - ], - "openssl_open": [ - "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", - "Opens data" - ], - "openssl_pkcs12_export": [ - "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", - "Creates and exports a PKCS12 to a var" - ], - "openssl_pkcs12_export_to_file": [ - "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", - "Creates and exports a PKCS to file" - ], - "openssl_pkcs12_read": [ - "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", - "Parses a PKCS12 to an array" - ], - "openssl_pkcs7_decrypt": [ - "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", - "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" - ], - "openssl_pkcs7_encrypt": [ - "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", - "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" - ], - "openssl_pkcs7_sign": [ - "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", - "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" - ], - "openssl_pkcs7_verify": [ - "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", - "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" - ], - "openssl_pkey_export": [ - "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", - "Gets an exportable representation of a key into a string or file" - ], - "openssl_pkey_export_to_file": [ - "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", - "Gets an exportable representation of a key into a file" - ], - "openssl_pkey_free": [ - "void openssl_pkey_free(int key)", - "Frees a key" - ], - "openssl_pkey_get_details": [ - "resource openssl_pkey_get_details(resource key)", - "returns an array with the key details (bits, pkey, type)" - ], - "openssl_pkey_get_private": [ - "int openssl_pkey_get_private(string key [, string passphrase])", - "Gets private keys" - ], - "openssl_pkey_get_public": [ - "int openssl_pkey_get_public(mixed cert)", - "Gets public key from X.509 certificate" - ], - "openssl_pkey_new": [ - "resource openssl_pkey_new([array configargs])", - "Generates a new private key" - ], - "openssl_private_decrypt": [ - "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", - "Decrypts data with private key" - ], - "openssl_private_encrypt": [ - "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", - "Encrypts data with private key" - ], - "openssl_public_decrypt": [ - "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", - "Decrypts data with public key" - ], - "openssl_public_encrypt": [ - "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", - "Encrypts data with public key" - ], - "openssl_random_pseudo_bytes": [ - "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", - "Returns a string of the length specified filled with random pseudo bytes" - ], - "openssl_seal": [ - "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", - "Seals data" - ], - "openssl_sign": [ - "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", - "Signs data" - ], - "openssl_verify": [ - "int openssl_verify(string data, string signature, mixed key[, mixed method])", - "Verifys data" - ], - "openssl_x509_check_private_key": [ - "bool openssl_x509_check_private_key(mixed cert, mixed key)", - "Checks if a private key corresponds to a CERT" - ], - "openssl_x509_checkpurpose": [ - "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", - "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" - ], - "openssl_x509_export": [ - "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", - "Exports a CERT to file or a var" - ], - "openssl_x509_export_to_file": [ - "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", - "Exports a CERT to file or a var" - ], - "openssl_x509_free": [ - "void openssl_x509_free(resource x509)", - "Frees X.509 certificates" - ], - "openssl_x509_parse": [ - "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", - "Returns an array of the fields/values of the CERT" - ], - "openssl_x509_read": [ - "resource openssl_x509_read(mixed cert)", - "Reads X.509 certificates" - ], - "ord": [ - "int ord(string character)", - "Returns ASCII value of character" - ], - "output_add_rewrite_var": [ - "bool output_add_rewrite_var(string name, string value)", - "Add URL rewriter values" - ], - "output_reset_rewrite_vars": [ - "bool output_reset_rewrite_vars()", - "Reset(clear) URL rewriter values" - ], - "pack": [ - "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", - "Takes one or more arguments and packs them into a binary string according to the format argument" - ], - "parse_ini_file": [ - "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", - "Parse configuration file" - ], - "parse_ini_string": [ - "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", - "Parse configuration string" - ], - "parse_locale": [ - "static array parse_locale($locale)", - "* parses a locale-id into an array the different parts of it" - ], - "parse_str": [ - "void parse_str(string encoded_string [, array result])", - "Parses GET/POST/COOKIE data and sets global variables" - ], - "parse_url": [ - "mixed parse_url(string url, [int url_component])", - "Parse a URL and return its components" - ], - "passthru": [ - "void passthru(string command [, int &return_value])", - "Execute an external program and display raw output" - ], - "pathinfo": [ - "array pathinfo(string path[, int options])", - "Returns information about a certain string" - ], - "pclose": [ - "int pclose(resource fp)", - "Close a file pointer opened by popen()" - ], - "pcnlt_sigwaitinfo": [ - "int pcnlt_sigwaitinfo(array set[, array &siginfo])", - "Synchronously wait for queued signals" - ], - "pcntl_alarm": [ - "int pcntl_alarm(int seconds)", - "Set an alarm clock for delivery of a signal" - ], - "pcntl_exec": [ - "bool pcntl_exec(string path [, array args [, array envs]])", - "Executes specified program in current process space as defined by exec(2)" - ], - "pcntl_fork": [ - "int pcntl_fork()", - "Forks the currently running process following the same behavior as the UNIX fork() system call" - ], - "pcntl_getpriority": [ - "int pcntl_getpriority([int pid [, int process_identifier]])", - "Get the priority of any process" - ], - "pcntl_setpriority": [ - "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", - "Change the priority of any process" - ], - "pcntl_signal": [ - "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", - "Assigns a system signal handler to a PHP function" - ], - "pcntl_signal_dispatch": [ - "bool pcntl_signal_dispatch()", - "Dispatch signals to signal handlers" - ], - "pcntl_sigprocmask": [ - "bool pcntl_sigprocmask(int how, array set[, array &oldset])", - "Examine and change blocked signals" - ], - "pcntl_sigtimedwait": [ - "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", - "Wait for queued signals" - ], - "pcntl_wait": [ - "int pcntl_wait(int &status)", - "Waits on or returns the status of a forked child as defined by the waitpid() system call" - ], - "pcntl_waitpid": [ - "int pcntl_waitpid(int pid, int &status, int options)", - "Waits on or returns the status of a forked child as defined by the waitpid() system call" - ], - "pcntl_wexitstatus": [ - "int pcntl_wexitstatus(int status)", - "Returns the status code of a child's exit" - ], - "pcntl_wifexited": [ - "bool pcntl_wifexited(int status)", - "Returns true if the child status code represents a successful exit" - ], - "pcntl_wifsignaled": [ - "bool pcntl_wifsignaled(int status)", - "Returns true if the child status code represents a process that was terminated due to a signal" - ], - "pcntl_wifstopped": [ - "bool pcntl_wifstopped(int status)", - "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" - ], - "pcntl_wstopsig": [ - "int pcntl_wstopsig(int status)", - "Returns the number of the signal that caused the process to stop who's status code is passed" - ], - "pcntl_wtermsig": [ - "int pcntl_wtermsig(int status)", - "Returns the number of the signal that terminated the process who's status code is passed" - ], - "pdo_drivers": [ - "array pdo_drivers()", - "Return array of available PDO drivers" - ], - "pfsockopen": [ - "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", - "Open persistent Internet or Unix domain socket connection" - ], - "pg_affected_rows": [ - "int pg_affected_rows(resource result)", - "Returns the number of affected tuples" - ], - "pg_cancel_query": [ - "bool pg_cancel_query(resource connection)", - "Cancel request" - ], - "pg_client_encoding": [ - "string pg_client_encoding([resource connection])", - "Get the current client encoding" - ], - "pg_close": [ - "bool pg_close([resource connection])", - "Close a PostgreSQL connection" - ], - "pg_connect": [ - "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", - "Open a PostgreSQL connection" - ], - "pg_connection_busy": [ - "bool pg_connection_busy(resource connection)", - "Get connection is busy or not" - ], - "pg_connection_reset": [ - "bool pg_connection_reset(resource connection)", - "Reset connection (reconnect)" - ], - "pg_connection_status": [ - "int pg_connection_status(resource connnection)", - "Get connection status" - ], - "pg_convert": [ - "array pg_convert(resource db, string table, array values[, int options])", - "Check and convert values for PostgreSQL SQL statement" - ], - "pg_copy_from": [ - "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", - "Copy table from array" - ], - "pg_copy_to": [ - "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", - "Copy table to array" - ], - "pg_dbname": [ - "string pg_dbname([resource connection])", - "Get the database name" - ], - "pg_delete": [ - "mixed pg_delete(resource db, string table, array ids[, int options])", - "Delete records has ids (id => value)" - ], - "pg_end_copy": [ - "bool pg_end_copy([resource connection])", - "Sync with backend. Completes the Copy command" - ], - "pg_escape_bytea": [ - "string pg_escape_bytea([resource connection,] string data)", - "Escape binary for bytea type" - ], - "pg_escape_string": [ - "string pg_escape_string([resource connection,] string data)", - "Escape string for text/char type" - ], - "pg_execute": [ - "resource pg_execute([resource connection,] string stmtname, array params)", - "Execute a prepared query" - ], - "pg_fetch_all": [ - "array pg_fetch_all(resource result)", - "Fetch all rows into array" - ], - "pg_fetch_all_columns": [ - "array pg_fetch_all_columns(resource result [, int column_number])", - "Fetch all rows into array" - ], - "pg_fetch_array": [ - "array pg_fetch_array(resource result [, int row [, int result_type]])", - "Fetch a row as an array" - ], - "pg_fetch_assoc": [ - "array pg_fetch_assoc(resource result [, int row])", - "Fetch a row as an assoc array" - ], - "pg_fetch_object": [ - "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", - "Fetch a row as an object" - ], - "pg_fetch_result": [ - "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", - "Returns values from a result identifier" - ], - "pg_fetch_row": [ - "array pg_fetch_row(resource result [, int row [, int result_type]])", - "Get a row as an enumerated array" - ], - "pg_field_is_null": [ - "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", - "Test if a field is NULL" - ], - "pg_field_name": [ - "string pg_field_name(resource result, int field_number)", - "Returns the name of the field" - ], - "pg_field_num": [ - "int pg_field_num(resource result, string field_name)", - "Returns the field number of the named field" - ], - "pg_field_prtlen": [ - "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", - "Returns the printed length" - ], - "pg_field_size": [ - "int pg_field_size(resource result, int field_number)", - "Returns the internal size of the field" - ], - "pg_field_table": [ - "mixed pg_field_table(resource result, int field_number[, bool oid_only])", - "Returns the name of the table field belongs to, or table's oid if oid_only is true" - ], - "pg_field_type": [ - "string pg_field_type(resource result, int field_number)", - "Returns the type name for the given field" - ], - "pg_field_type_oid": [ - "string pg_field_type_oid(resource result, int field_number)", - "Returns the type oid for the given field" - ], - "pg_free_result": [ - "bool pg_free_result(resource result)", - "Free result memory" - ], - "pg_get_notify": [ - "array pg_get_notify([resource connection[, result_type]])", - "Get asynchronous notification" - ], - "pg_get_pid": [ - "int pg_get_pid([resource connection)", - "Get backend(server) pid" - ], - "pg_get_result": [ - "resource pg_get_result(resource connection)", - "Get asynchronous query result" - ], - "pg_host": [ - "string pg_host([resource connection])", - "Returns the host name associated with the connection" - ], - "pg_insert": [ - "mixed pg_insert(resource db, string table, array values[, int options])", - "Insert values (filed => value) to table" - ], - "pg_last_error": [ - "string pg_last_error([resource connection])", - "Get the error message string" - ], - "pg_last_notice": [ - "string pg_last_notice(resource connection)", - "Returns the last notice set by the backend" - ], - "pg_last_oid": [ - "string pg_last_oid(resource result)", - "Returns the last object identifier" - ], - "pg_lo_close": [ - "bool pg_lo_close(resource large_object)", - "Close a large object" - ], - "pg_lo_create": [ - "mixed pg_lo_create([resource connection],[mixed large_object_oid])", - "Create a large object" - ], - "pg_lo_export": [ - "bool pg_lo_export([resource connection, ] int objoid, string filename)", - "Export large object direct to filesystem" - ], - "pg_lo_import": [ - "int pg_lo_import([resource connection, ] string filename [, mixed oid])", - "Import large object direct from filesystem" - ], - "pg_lo_open": [ - "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", - "Open a large object and return fd" - ], - "pg_lo_read": [ - "string pg_lo_read(resource large_object [, int len])", - "Read a large object" - ], - "pg_lo_read_all": [ - "int pg_lo_read_all(resource large_object)", - "Read a large object and send straight to browser" - ], - "pg_lo_seek": [ - "bool pg_lo_seek(resource large_object, int offset [, int whence])", - "Seeks position of large object" - ], - "pg_lo_tell": [ - "int pg_lo_tell(resource large_object)", - "Returns current position of large object" - ], - "pg_lo_unlink": [ - "bool pg_lo_unlink([resource connection,] string large_object_oid)", - "Delete a large object" - ], - "pg_lo_write": [ - "int pg_lo_write(resource large_object, string buf [, int len])", - "Write a large object" - ], - "pg_meta_data": [ - "array pg_meta_data(resource db, string table)", - "Get meta_data" - ], - "pg_num_fields": [ - "int pg_num_fields(resource result)", - "Return the number of fields in the result" - ], - "pg_num_rows": [ - "int pg_num_rows(resource result)", - "Return the number of rows in the result" - ], - "pg_options": [ - "string pg_options([resource connection])", - "Get the options associated with the connection" - ], - "pg_parameter_status": [ - "string|false pg_parameter_status([resource connection,] string param_name)", - "Returns the value of a server parameter" - ], - "pg_pconnect": [ - "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", - "Open a persistent PostgreSQL connection" - ], - "pg_ping": [ - "bool pg_ping([resource connection])", - "Ping database. If connection is bad, try to reconnect." - ], - "pg_port": [ - "int pg_port([resource connection])", - "Return the port number associated with the connection" - ], - "pg_prepare": [ - "resource pg_prepare([resource connection,] string stmtname, string query)", - "Prepare a query for future execution" - ], - "pg_put_line": [ - "bool pg_put_line([resource connection,] string query)", - "Send null-terminated string to backend server" - ], - "pg_query": [ - "resource pg_query([resource connection,] string query)", - "Execute a query" - ], - "pg_query_params": [ - "resource pg_query_params([resource connection,] string query, array params)", - "Execute a query" - ], - "pg_result_error": [ - "string pg_result_error(resource result)", - "Get error message associated with result" - ], - "pg_result_error_field": [ - "string pg_result_error_field(resource result, int fieldcode)", - "Get error message field associated with result" - ], - "pg_result_seek": [ - "bool pg_result_seek(resource result, int offset)", - "Set internal row offset" - ], - "pg_result_status": [ - "mixed pg_result_status(resource result[, long result_type])", - "Get status of query result" - ], - "pg_select": [ - "mixed pg_select(resource db, string table, array ids[, int options])", - "Select records that has ids (id => value)" - ], - "pg_send_execute": [ - "bool pg_send_execute(resource connection, string stmtname, array params)", - "Executes prevriously prepared stmtname asynchronously" - ], - "pg_send_prepare": [ - "bool pg_send_prepare(resource connection, string stmtname, string query)", - "Asynchronously prepare a query for future execution" - ], - "pg_send_query": [ - "bool pg_send_query(resource connection, string query)", - "Send asynchronous query" - ], - "pg_send_query_params": [ - "bool pg_send_query_params(resource connection, string query, array params)", - "Send asynchronous parameterized query" - ], - "pg_set_client_encoding": [ - "int pg_set_client_encoding([resource connection,] string encoding)", - "Set client encoding" - ], - "pg_set_error_verbosity": [ - "int pg_set_error_verbosity([resource connection,] int verbosity)", - "Set error verbosity" - ], - "pg_trace": [ - "bool pg_trace(string filename [, string mode [, resource connection]])", - "Enable tracing a PostgreSQL connection" - ], - "pg_transaction_status": [ - "int pg_transaction_status(resource connnection)", - "Get transaction status" - ], - "pg_tty": [ - "string pg_tty([resource connection])", - "Return the tty name associated with the connection" - ], - "pg_unescape_bytea": [ - "string pg_unescape_bytea(string data)", - "Unescape binary for bytea type" - ], - "pg_untrace": [ - "bool pg_untrace([resource connection])", - "Disable tracing of a PostgreSQL connection" - ], - "pg_update": [ - "mixed pg_update(resource db, string table, array fields, array ids[, int options])", - "Update table using values (field => value) and ids (id => value)" - ], - "pg_version": [ - "array pg_version([resource connection])", - "Returns an array with client, protocol and server version (when available)" - ], - "php_egg_logo_guid": [ - "string php_egg_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_ini_loaded_file": [ - "string php_ini_loaded_file()", - "Return the actual loaded ini filename" - ], - "php_ini_scanned_files": [ - "string php_ini_scanned_files()", - "Return comma-separated string of .ini files parsed from the additional ini dir" - ], - "php_logo_guid": [ - "string php_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_real_logo_guid": [ - "string php_real_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_sapi_name": [ - "string php_sapi_name()", - "Return the current SAPI module name" - ], - "php_snmpv3": [ - "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", - "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" - ], - "php_strip_whitespace": [ - "string php_strip_whitespace(string file_name)", - "Return source with stripped comments and whitespace" - ], - "php_uname": [ - "string php_uname()", - "Return information about the system PHP was built on" - ], - "phpcredits": [ - "void phpcredits([int flag])", - "Prints the list of people who've contributed to the PHP project" - ], - "phpinfo": [ - "void phpinfo([int what])", - "Output a page of useful information about PHP and the current request" - ], - "phpversion": [ - "string phpversion([string extension])", - "Return the current PHP version" - ], - "pi": [ - "float pi()", - "Returns an approximation of pi" - ], - "png2wbmp": [ - "bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", - "Convert PNG image to WBMP image" - ], - "popen": [ - "resource popen(string command, string mode)", - "Execute a command and open either a read or a write pipe to it" - ], - "posix_access": [ - "bool posix_access(string file [, int mode])", - "Determine accessibility of a file (POSIX.1 5.6.3)" - ], - "posix_ctermid": [ - "string posix_ctermid()", - "Generate terminal path name (POSIX.1, 4.7.1)" - ], - "posix_get_last_error": [ - "int posix_get_last_error()", - "Retrieve the error number set by the last posix function which failed." - ], - "posix_getcwd": [ - "string posix_getcwd()", - "Get working directory pathname (POSIX.1, 5.2.2)" - ], - "posix_getegid": [ - "int posix_getegid()", - "Get the current effective group id (POSIX.1, 4.2.1)" - ], - "posix_geteuid": [ - "int posix_geteuid()", - "Get the current effective user id (POSIX.1, 4.2.1)" - ], - "posix_getgid": [ - "int posix_getgid()", - "Get the current group id (POSIX.1, 4.2.1)" - ], - "posix_getgrgid": [ - "array posix_getgrgid(long gid)", - "Group database access (POSIX.1, 9.2.1)" - ], - "posix_getgrnam": [ - "array posix_getgrnam(string groupname)", - "Group database access (POSIX.1, 9.2.1)" - ], - "posix_getgroups": [ - "array posix_getgroups()", - "Get supplementary group id's (POSIX.1, 4.2.3)" - ], - "posix_getlogin": [ - "string posix_getlogin()", - "Get user name (POSIX.1, 4.2.4)" - ], - "posix_getpgid": [ - "int posix_getpgid()", - "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" - ], - "posix_getpgrp": [ - "int posix_getpgrp()", - "Get current process group id (POSIX.1, 4.3.1)" - ], - "posix_getpid": [ - "int posix_getpid()", - "Get the current process id (POSIX.1, 4.1.1)" - ], - "posix_getppid": [ - "int posix_getppid()", - "Get the parent process id (POSIX.1, 4.1.1)" - ], - "posix_getpwnam": [ - "array posix_getpwnam(string groupname)", - "User database access (POSIX.1, 9.2.2)" - ], - "posix_getpwuid": [ - "array posix_getpwuid(long uid)", - "User database access (POSIX.1, 9.2.2)" - ], - "posix_getrlimit": [ - "array posix_getrlimit()", - "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" - ], - "posix_getsid": [ - "int posix_getsid()", - "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" - ], - "posix_getuid": [ - "int posix_getuid()", - "Get the current user id (POSIX.1, 4.2.1)" - ], - "posix_initgroups": [ - "bool posix_initgroups(string name, int base_group_id)", - "Calculate the group access list for the user specified in name." - ], - "posix_isatty": [ - "bool posix_isatty(int fd)", - "Determine if filedesc is a tty (POSIX.1, 4.7.1)" - ], - "posix_kill": [ - "bool posix_kill(int pid, int sig)", - "Send a signal to a process (POSIX.1, 3.3.2)" - ], - "posix_mkfifo": [ - "bool posix_mkfifo(string pathname, int mode)", - "Make a FIFO special file (POSIX.1, 5.4.2)" - ], - "posix_mknod": [ - "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", - "Make a special or ordinary file (POSIX.1)" - ], - "posix_setegid": [ - "bool posix_setegid(long uid)", - "Set effective group id" - ], - "posix_seteuid": [ - "bool posix_seteuid(long uid)", - "Set effective user id" - ], - "posix_setgid": [ - "bool posix_setgid(int uid)", - "Set group id (POSIX.1, 4.2.2)" - ], - "posix_setpgid": [ - "bool posix_setpgid(int pid, int pgid)", - "Set process group id for job control (POSIX.1, 4.3.3)" - ], - "posix_setsid": [ - "int posix_setsid()", - "Create session and set process group id (POSIX.1, 4.3.2)" - ], - "posix_setuid": [ - "bool posix_setuid(long uid)", - "Set user id (POSIX.1, 4.2.2)" - ], - "posix_strerror": [ - "string posix_strerror(int errno)", - "Retrieve the system error message associated with the given errno." - ], - "posix_times": [ - "array posix_times()", - "Get process times (POSIX.1, 4.5.2)" - ], - "posix_ttyname": [ - "string posix_ttyname(int fd)", - "Determine terminal device name (POSIX.1, 4.7.2)" - ], - "posix_uname": [ - "array posix_uname()", - "Get system name (POSIX.1, 4.4.1)" - ], - "pow": [ - "number pow(number base, number exponent)", - "Returns base raised to the power of exponent. Returns integer result when possible" - ], - "preg_filter": [ - "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement and only return matches." - ], - "preg_grep": [ - "array preg_grep(string regex, array input [, int flags])", - "Searches array and returns entries which match regex" - ], - "preg_last_error": [ - "int preg_last_error()", - "Returns the error code of the last regexp execution." - ], - "preg_match": [ - "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", - "Perform a Perl-style regular expression match" - ], - "preg_match_all": [ - "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", - "Perform a Perl-style global regular expression match" - ], - "preg_quote": [ - "string preg_quote(string str [, string delim_char])", - "Quote regular expression characters plus an optional character" - ], - "preg_replace": [ - "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement." - ], - "preg_replace_callback": [ - "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement using replacement callback." - ], - "preg_split": [ - "array preg_split(string pattern, string subject [, int limit [, int flags]])", - "Split string into an array using a perl-style regular expression as a delimiter" - ], - "prev": [ - "mixed prev(array array_arg)", - "Move array argument's internal pointer to the previous element and return it" - ], - "print": [ - "int print(string arg)", - "Output a string" - ], - "print_r": [ - "mixed print_r(mixed var [, bool return])", - "Prints out or returns information about the specified variable" - ], - "printf": [ - "int printf(string format [, mixed arg1 [, mixed ...]])", - "Output a formatted string" - ], - "proc_close": [ - "int proc_close(resource process)", - "close a process opened by proc_open" - ], - "proc_get_status": [ - "array proc_get_status(resource process)", - "get information about a process opened by proc_open" - ], - "proc_nice": [ - "bool proc_nice(int priority)", - "Change the priority of the current process" - ], - "proc_open": [ - "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", - "Run a process with more control over it's file descriptors" - ], - "proc_terminate": [ - "bool proc_terminate(resource process [, long signal])", - "kill a process opened by proc_open" - ], - "property_exists": [ - "bool property_exists(mixed object_or_class, string property_name)", - "Checks if the object or class has a property" - ], - "pspell_add_to_personal": [ - "bool pspell_add_to_personal(int pspell, string word)", - "Adds a word to a personal list" - ], - "pspell_add_to_session": [ - "bool pspell_add_to_session(int pspell, string word)", - "Adds a word to the current session" - ], - "pspell_check": [ - "bool pspell_check(int pspell, string word)", - "Returns true if word is valid" - ], - "pspell_clear_session": [ - "bool pspell_clear_session(int pspell)", - "Clears the current session" - ], - "pspell_config_create": [ - "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", - "Create a new config to be used later to create a manager" - ], - "pspell_config_data_dir": [ - "bool pspell_config_data_dir(int conf, string directory)", - "location of language data files" - ], - "pspell_config_dict_dir": [ - "bool pspell_config_dict_dir(int conf, string directory)", - "location of the main word list" - ], - "pspell_config_ignore": [ - "bool pspell_config_ignore(int conf, int ignore)", - "Ignore words <= n chars" - ], - "pspell_config_mode": [ - "bool pspell_config_mode(int conf, long mode)", - "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" - ], - "pspell_config_personal": [ - "bool pspell_config_personal(int conf, string personal)", - "Use a personal dictionary for this config" - ], - "pspell_config_repl": [ - "bool pspell_config_repl(int conf, string repl)", - "Use a personal dictionary with replacement pairs for this config" - ], - "pspell_config_runtogether": [ - "bool pspell_config_runtogether(int conf, bool runtogether)", - "Consider run-together words as valid components" - ], - "pspell_config_save_repl": [ - "bool pspell_config_save_repl(int conf, bool save)", - "Save replacement pairs when personal list is saved for this config" - ], - "pspell_new": [ - "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", - "Load a dictionary" - ], - "pspell_new_config": [ - "int pspell_new_config(int config)", - "Load a dictionary based on the given config" - ], - "pspell_new_personal": [ - "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", - "Load a dictionary with a personal wordlist" - ], - "pspell_save_wordlist": [ - "bool pspell_save_wordlist(int pspell)", - "Saves the current (personal) wordlist" - ], - "pspell_store_replacement": [ - "bool pspell_store_replacement(int pspell, string misspell, string correct)", - "Notify the dictionary of a user-selected replacement" - ], - "pspell_suggest": [ - "array pspell_suggest(int pspell, string word)", - "Returns array of suggestions" - ], - "putenv": [ - "bool putenv(string setting)", - "Set the value of an environment variable" - ], - "quoted_printable_decode": [ - "string quoted_printable_decode(string str)", - "Convert a quoted-printable string to an 8 bit string" - ], - "quoted_printable_encode": [ - "string quoted_printable_encode(string str)", - "" - ], - "quotemeta": [ - "string quotemeta(string str)", - "Quotes meta characters" - ], - "rad2deg": [ - "float rad2deg(float number)", - "Converts the radian number to the equivalent number in degrees" - ], - "rand": [ - "int rand([int min, int max])", - "Returns a random number" - ], - "range": [ - "array range(mixed low, mixed high[, int step])", - "Create an array containing the range of integers or characters from low to high (inclusive)" - ], - "rawurldecode": [ - "string rawurldecode(string str)", - "Decodes URL-encodes string" - ], - "rawurlencode": [ - "string rawurlencode(string str)", - "URL-encodes string" - ], - "readdir": [ - "string readdir([resource dir_handle])", - "Read directory entry from dir_handle" - ], - "readfile": [ - "int readfile(string filename [, bool use_include_path[, resource context]])", - "Output a file or a URL" - ], - "readgzfile": [ - "int readgzfile(string filename [, int use_include_path])", - "Output a .gz-file" - ], - "readline": [ - "string readline([string prompt])", - "Reads a line" - ], - "readline_add_history": [ - "bool readline_add_history(string prompt)", - "Adds a line to the history" - ], - "readline_callback_handler_install": [ - "void readline_callback_handler_install(string prompt, mixed callback)", - "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" - ], - "readline_callback_handler_remove": [ - "bool readline_callback_handler_remove()", - "Removes a previously installed callback handler and restores terminal settings" - ], - "readline_callback_read_char": [ - "void readline_callback_read_char()", - "Informs the readline callback interface that a character is ready for input" - ], - "readline_clear_history": [ - "bool readline_clear_history()", - "Clears the history" - ], - "readline_completion_function": [ - "bool readline_completion_function(string funcname)", - "Readline completion function?" - ], - "readline_info": [ - "mixed readline_info([string varname [, string newvalue]])", - "Gets/sets various internal readline variables." - ], - "readline_list_history": [ - "array readline_list_history()", - "Lists the history" - ], - "readline_on_new_line": [ - "void readline_on_new_line()", - "Inform readline that the cursor has moved to a new line" - ], - "readline_read_history": [ - "bool readline_read_history([string filename])", - "Reads the history" - ], - "readline_redisplay": [ - "void readline_redisplay()", - "Ask readline to redraw the display" - ], - "readline_write_history": [ - "bool readline_write_history([string filename])", - "Writes the history" - ], - "readlink": [ - "string readlink(string filename)", - "Return the target of a symbolic link" - ], - "realpath": [ - "string realpath(string path)", - "Return the resolved path" - ], - "realpath_cache_get": [ - "bool realpath_cache_get()", - "Get current size of realpath cache" - ], - "realpath_cache_size": [ - "bool realpath_cache_size()", - "Get current size of realpath cache" - ], - "recode_file": [ - "bool recode_file(string request, resource input, resource output)", - "Recode file input into file output according to request" - ], - "recode_string": [ - "string recode_string(string request, string str)", - "Recode string str according to request string" - ], - "register_shutdown_function": [ - "void register_shutdown_function(string function_name)", - "Register a user-level function to be called on request termination" - ], - "register_tick_function": [ - "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", - "Registers a tick callback function" - ], - "rename": [ - "bool rename(string old_name, string new_name[, resource context])", - "Rename a file" - ], - "require": [ - "bool require(string path)", - "Includes and evaluates the specified file, erroring if the file cannot be included" - ], - "require_once": [ - "bool require_once(string path)", - "Includes and evaluates the specified file, erroring if the file cannot be included" - ], - "reset": [ - "mixed reset(array array_arg)", - "Set array argument's internal pointer to the first element and return it" - ], - "restore_error_handler": [ - "void restore_error_handler()", - "Restores the previously defined error handler function" - ], - "restore_exception_handler": [ - "void restore_exception_handler()", - "Restores the previously defined exception handler function" - ], - "restore_include_path": [ - "void restore_include_path()", - "Restore the value of the include_path configuration option" - ], - "rewind": [ - "bool rewind(resource fp)", - "Rewind the position of a file pointer" - ], - "rewinddir": [ - "void rewinddir([resource dir_handle])", - "Rewind dir_handle back to the start" - ], - "rmdir": [ - "bool rmdir(string dirname[, resource context])", - "Remove a directory" - ], - "round": [ - "float round(float number [, int precision [, int mode]])", - "Returns the number rounded to specified precision" - ], - "rsort": [ - "bool rsort(array &array_arg [, int sort_flags])", - "Sort an array in reverse order" - ], - "rtrim": [ - "string rtrim(string str [, string character_mask])", - "Removes trailing whitespace" - ], - "scandir": [ - "array scandir(string dir [, int sorting_order [, resource context]])", - "List files & directories inside the specified path" - ], - "sem_acquire": [ - "bool sem_acquire(resource id)", - "Acquires the semaphore with the given id, blocking if necessary" - ], - "sem_get": [ - "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", - "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" - ], - "sem_release": [ - "bool sem_release(resource id)", - "Releases the semaphore with the given id" - ], - "sem_remove": [ - "bool sem_remove(resource id)", - "Removes semaphore from Unix systems" - ], - "serialize": [ - "string serialize(mixed variable)", - "Returns a string representation of variable (which can later be unserialized)" - ], - "session_cache_expire": [ - "int session_cache_expire([int new_cache_expire])", - "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" - ], - "session_cache_limiter": [ - "string session_cache_limiter([string new_cache_limiter])", - "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" - ], - "session_decode": [ - "bool session_decode(string data)", - "Deserializes data and reinitializes the variables" - ], - "session_destroy": [ - "bool session_destroy()", - "Destroy the current session and all data associated with it" - ], - "session_encode": [ - "string session_encode()", - "Serializes the current setup and returns the serialized representation" - ], - "session_get_cookie_params": [ - "array session_get_cookie_params()", - "Return the session cookie parameters" - ], - "session_id": [ - "string session_id([string newid])", - "Return the current session id. If newid is given, the session id is replaced with newid" - ], - "session_is_registered": [ - "bool session_is_registered(string varname)", - "Checks if a variable is registered in session" - ], - "session_module_name": [ - "string session_module_name([string newname])", - "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" - ], - "session_name": [ - "string session_name([string newname])", - "Return the current session name. If newname is given, the session name is replaced with newname" - ], - "session_regenerate_id": [ - "bool session_regenerate_id([bool delete_old_session])", - "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." - ], - "session_register": [ - "bool session_register(mixed var_names [, mixed ...])", - "Adds varname(s) to the list of variables which are freezed at the session end" - ], - "session_save_path": [ - "string session_save_path([string newname])", - "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" - ], - "session_set_cookie_params": [ - "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", - "Set session cookie parameters" - ], - "session_set_save_handler": [ - "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", - "Sets user-level functions" - ], - "session_start": [ - "bool session_start()", - "Begin session - reinitializes freezed variables, registers browsers etc" - ], - "session_unregister": [ - "bool session_unregister(string varname)", - "Removes varname from the list of variables which are freezed at the session end" - ], - "session_unset": [ - "void session_unset()", - "Unset all registered variables" - ], - "session_write_close": [ - "void session_write_close()", - "Write session data and end session" - ], - "set_error_handler": [ - "string set_error_handler(string error_handler [, int error_types])", - "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" - ], - "set_exception_handler": [ - "string set_exception_handler(callable exception_handler)", - "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" - ], - "set_include_path": [ - "string set_include_path(string new_include_path)", - "Sets the include_path configuration option" - ], - "set_magic_quotes_runtime": [ - "bool set_magic_quotes_runtime(int new_setting)", - "Set the current active configuration setting of magic_quotes_runtime and return previous" - ], - "set_time_limit": [ - "bool set_time_limit(int seconds)", - "Sets the maximum time a script can run" - ], - "setcookie": [ - "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", - "Send a cookie" - ], - "setlocale": [ - "string setlocale(mixed category, string locale [, string ...])", - "Set locale information" - ], - "setrawcookie": [ - "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", - "Send a cookie with no url encoding of the value" - ], - "settype": [ - "bool settype(mixed var, string type)", - "Set the type of the variable" - ], - "sha1": [ - "string sha1(string str [, bool raw_output])", - "Calculate the sha1 hash of a string" - ], - "sha1_file": [ - "string sha1_file(string filename [, bool raw_output])", - "Calculate the sha1 hash of given filename" - ], - "shell_exec": [ - "string shell_exec(string cmd)", - "Execute command via shell and return complete output as string" - ], - "shm_attach": [ - "int shm_attach(int key [, int memsize [, int perm]])", - "Creates or open a shared memory segment" - ], - "shm_detach": [ - "bool shm_detach(resource shm_identifier)", - "Disconnects from shared memory segment" - ], - "shm_get_var": [ - "mixed shm_get_var(resource id, int variable_key)", - "Returns a variable from shared memory" - ], - "shm_has_var": [ - "bool shm_has_var(resource id, int variable_key)", - "Checks whether a specific entry exists" - ], - "shm_put_var": [ - "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", - "Inserts or updates a variable in shared memory" - ], - "shm_remove": [ - "bool shm_remove(resource shm_identifier)", - "Removes shared memory from Unix systems" - ], - "shm_remove_var": [ - "bool shm_remove_var(resource id, int variable_key)", - "Removes variable from shared memory" - ], - "shmop_close": [ - "void shmop_close(int shmid)", - "closes a shared memory segment" - ], - "shmop_delete": [ - "bool shmop_delete(int shmid)", - "mark segment for deletion" - ], - "shmop_open": [ - "int shmop_open(int key, string flags, int mode, int size)", - "gets and attaches a shared memory segment" - ], - "shmop_read": [ - "string shmop_read(int shmid, int start, int count)", - "reads from a shm segment" - ], - "shmop_size": [ - "int shmop_size(int shmid)", - "returns the shm size" - ], - "shmop_write": [ - "int shmop_write(int shmid, string data, int offset)", - "writes to a shared memory segment" - ], - "shuffle": [ - "bool shuffle(array array_arg)", - "Randomly shuffle the contents of an array" - ], - "similar_text": [ - "int similar_text(string str1, string str2 [, float percent])", - "Calculates the similarity between two strings" - ], - "simplexml_import_dom": [ - "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", - "Get a simplexml_element object from dom to allow for processing" - ], - "simplexml_load_file": [ - "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", - "Load a filename and return a simplexml_element object to allow for processing" - ], - "simplexml_load_string": [ - "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", - "Load a string and return a simplexml_element object to allow for processing" - ], - "sin": [ - "float sin(float number)", - "Returns the sine of the number in radians" - ], - "sinh": [ - "float sinh(float number)", - "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" - ], - "sleep": [ - "void sleep(int seconds)", - "Delay for a given number of seconds" - ], - "smfi_addheader": [ - "bool smfi_addheader(string headerf, string headerv)", - "Adds a header to the current message." - ], - "smfi_addrcpt": [ - "bool smfi_addrcpt(string rcpt)", - "Add a recipient to the message envelope." - ], - "smfi_chgheader": [ - "bool smfi_chgheader(string headerf, string headerv)", - "Changes a header's value for the current message." - ], - "smfi_delrcpt": [ - "bool smfi_delrcpt(string rcpt)", - "Removes the named recipient from the current message's envelope." - ], - "smfi_getsymval": [ - "string smfi_getsymval(string macro)", - "Returns the value of the given macro or NULL if the macro is not defined." - ], - "smfi_replacebody": [ - "bool smfi_replacebody(string body)", - "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." - ], - "smfi_setflags": [ - "void smfi_setflags(long flags)", - "Sets the flags describing the actions the filter may take." - ], - "smfi_setreply": [ - "bool smfi_setreply(string rcode, string xcode, string message)", - "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." - ], - "smfi_settimeout": [ - "void smfi_settimeout(long timeout)", - "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." - ], - "snmp2_get": [ - "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmp2_getnext": [ - "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmp2_real_walk": [ - "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects including their respective object id withing the specified one" - ], - "snmp2_set": [ - "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Set the value of a SNMP object" - ], - "snmp2_walk": [ - "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects under the specified object id" - ], - "snmp3_get": [ - "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_getnext": [ - "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_real_walk": [ - "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_set": [ - "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_walk": [ - "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp_get_quick_print": [ - "bool snmp_get_quick_print()", - "Return the current status of quick_print" - ], - "snmp_get_valueretrieval": [ - "int snmp_get_valueretrieval()", - "Return the method how the SNMP values will be returned" - ], - "snmp_read_mib": [ - "int snmp_read_mib(string filename)", - "Reads and parses a MIB file into the active MIB tree." - ], - "snmp_set_enum_print": [ - "void snmp_set_enum_print(int enum_print)", - "Return all values that are enums with their enum value instead of the raw integer" - ], - "snmp_set_oid_output_format": [ - "void snmp_set_oid_output_format(int oid_format)", - "Set the OID output format." - ], - "snmp_set_quick_print": [ - "void snmp_set_quick_print(int quick_print)", - "Return all objects including their respective object id withing the specified one" - ], - "snmp_set_valueretrieval": [ - "void snmp_set_valueretrieval(int method)", - "Specify the method how the SNMP values will be returned" - ], - "snmpget": [ - "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmpgetnext": [ - "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmprealwalk": [ - "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects including their respective object id withing the specified one" - ], - "snmpset": [ - "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Set the value of a SNMP object" - ], - "snmpwalk": [ - "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects under the specified object id" - ], - "socket_accept": [ - "resource socket_accept(resource socket)", - "Accepts a connection on the listening socket fd" - ], - "socket_bind": [ - "bool socket_bind(resource socket, string addr [, int port])", - "Binds an open socket to a listening port, port is only specified in AF_INET family." - ], - "socket_clear_error": [ - "void socket_clear_error([resource socket])", - "Clears the error on the socket or the last error code." - ], - "socket_close": [ - "void socket_close(resource socket)", - "Closes a file descriptor" - ], - "socket_connect": [ - "bool socket_connect(resource socket, string addr [, int port])", - "Opens a connection to addr:port on the socket specified by socket" - ], - "socket_create": [ - "resource socket_create(int domain, int type, int protocol)", - "Creates an endpoint for communication in the domain specified by domain, of type specified by type" - ], - "socket_create_listen": [ - "resource socket_create_listen(int port[, int backlog])", - "Opens a socket on port to accept connections" - ], - "socket_create_pair": [ - "bool socket_create_pair(int domain, int type, int protocol, array &fd)", - "Creates a pair of indistinguishable sockets and stores them in fds." - ], - "socket_get_option": [ - "mixed socket_get_option(resource socket, int level, int optname)", - "Gets socket options for the socket" - ], - "socket_getpeername": [ - "bool socket_getpeername(resource socket, string &addr[, int &port])", - "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." - ], - "socket_getsockname": [ - "bool socket_getsockname(resource socket, string &addr[, int &port])", - "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." - ], - "socket_last_error": [ - "int socket_last_error([resource socket])", - "Returns the last socket error (either the last used or the provided socket resource)" - ], - "socket_listen": [ - "bool socket_listen(resource socket[, int backlog])", - "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" - ], - "socket_read": [ - "string socket_read(resource socket, int length [, int type])", - "Reads a maximum of length bytes from socket" - ], - "socket_recv": [ - "int socket_recv(resource socket, string &buf, int len, int flags)", - "Receives data from a connected socket" - ], - "socket_recvfrom": [ - "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", - "Receives data from a socket, connected or not" - ], - "socket_select": [ - "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", - "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" - ], - "socket_send": [ - "int socket_send(resource socket, string buf, int len, int flags)", - "Sends data to a connected socket" - ], - "socket_sendto": [ - "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", - "Sends a message to a socket, whether it is connected or not" - ], - "socket_set_block": [ - "bool socket_set_block(resource socket)", - "Sets blocking mode on a socket resource" - ], - "socket_set_nonblock": [ - "bool socket_set_nonblock(resource socket)", - "Sets nonblocking mode on a socket resource" - ], - "socket_set_option": [ - "bool socket_set_option(resource socket, int level, int optname, int|array optval)", - "Sets socket options for the socket" - ], - "socket_shutdown": [ - "bool socket_shutdown(resource socket[, int how])", - "Shuts down a socket for receiving, sending, or both." - ], - "socket_strerror": [ - "string socket_strerror(int errno)", - "Returns a string describing an error" - ], - "socket_write": [ - "int socket_write(resource socket, string buf[, int length])", - "Writes the buffer to the socket resource, length is optional" - ], - "solid_fetch_prev": [ - "bool solid_fetch_prev(resource result_id)", - "" - ], - "sort": [ - "bool sort(array &array_arg [, int sort_flags])", - "Sort an array" - ], - "soundex": [ - "string soundex(string str)", - "Calculate the soundex key of a string" - ], - "spl_autoload": [ - "void spl_autoload(string class_name [, string file_extensions])", - "Default implementation for __autoload()" - ], - "spl_autoload_call": [ - "void spl_autoload_call(string class_name)", - "Try all registerd autoload function to load the requested class" - ], - "spl_autoload_extensions": [ - "string spl_autoload_extensions([string file_extensions])", - "Register and return default file extensions for spl_autoload" - ], - "spl_autoload_functions": [ - "false|array spl_autoload_functions()", - "Return all registered __autoload() functionns" - ], - "spl_autoload_register": [ - "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", - "Register given function as __autoload() implementation" - ], - "spl_autoload_unregister": [ - "bool spl_autoload_unregister(mixed autoload_function)", - "Unregister given function as __autoload() implementation" - ], - "spl_classes": [ - "array spl_classes()", - "Return an array containing the names of all clsses and interfaces defined in SPL" - ], - "spl_object_hash": [ - "string spl_object_hash(object obj)", - "Return hash id for given object" - ], - "split": [ - "array split(string pattern, string string [, int limit])", - "Split string into array by regular expression" - ], - "spliti": [ - "array spliti(string pattern, string string [, int limit])", - "Split string into array by regular expression case-insensitive" - ], - "sprintf": [ - "string sprintf(string format [, mixed arg1 [, mixed ...]])", - "Return a formatted string" - ], - "sql_regcase": [ - "string sql_regcase(string string)", - "Make regular expression for case insensitive match" - ], - "sqlite_array_query": [ - "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", - "Executes a query against a given database and returns an array of arrays." - ], - "sqlite_busy_timeout": [ - "void sqlite_busy_timeout(resource db, int ms)", - "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." - ], - "sqlite_changes": [ - "int sqlite_changes(resource db)", - "Returns the number of rows that were changed by the most recent SQL statement." - ], - "sqlite_close": [ - "void sqlite_close(resource db)", - "Closes an open sqlite database." - ], - "sqlite_column": [ - "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", - "Fetches a column from the current row of a result set." - ], - "sqlite_create_aggregate": [ - "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", - "Registers an aggregate function for queries." - ], - "sqlite_create_function": [ - "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", - "Registers a \"regular\" function for queries." - ], - "sqlite_current": [ - "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", - "Fetches the current row from a result set as an array." - ], - "sqlite_error_string": [ - "string sqlite_error_string(int error_code)", - "Returns the textual description of an error code." - ], - "sqlite_escape_string": [ - "string sqlite_escape_string(string item)", - "Escapes a string for use as a query parameter." - ], - "sqlite_exec": [ - "bool sqlite_exec(string query, resource db[, string &error_message])", - "Executes a result-less query against a given database" - ], - "sqlite_factory": [ - "object sqlite_factory(string filename [, int mode [, string &error_message]])", - "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." - ], - "sqlite_fetch_all": [ - "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", - "Fetches all rows from a result set as an array of arrays." - ], - "sqlite_fetch_array": [ - "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", - "Fetches the next row from a result set as an array." - ], - "sqlite_fetch_column_types": [ - "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", - "Return an array of column types from a particular table." - ], - "sqlite_fetch_object": [ - "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", - "Fetches the next row from a result set as an object." - ], - "sqlite_fetch_single": [ - "string sqlite_fetch_single(resource result [, bool decode_binary])", - "Fetches the first column of a result set as a string." - ], - "sqlite_field_name": [ - "string sqlite_field_name(resource result, int field_index)", - "Returns the name of a particular field of a result set." - ], - "sqlite_has_prev": [ - "bool sqlite_has_prev(resource result)", - "* Returns whether a previous row is available." - ], - "sqlite_key": [ - "int sqlite_key(resource result)", - "Return the current row index of a buffered result." - ], - "sqlite_last_error": [ - "int sqlite_last_error(resource db)", - "Returns the error code of the last error for a database." - ], - "sqlite_last_insert_rowid": [ - "int sqlite_last_insert_rowid(resource db)", - "Returns the rowid of the most recently inserted row." - ], - "sqlite_libencoding": [ - "string sqlite_libencoding()", - "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." - ], - "sqlite_libversion": [ - "string sqlite_libversion()", - "Returns the version of the linked SQLite library." - ], - "sqlite_next": [ - "bool sqlite_next(resource result)", - "Seek to the next row number of a result set." - ], - "sqlite_num_fields": [ - "int sqlite_num_fields(resource result)", - "Returns the number of fields in a result set." - ], - "sqlite_num_rows": [ - "int sqlite_num_rows(resource result)", - "Returns the number of rows in a buffered result set." - ], - "sqlite_open": [ - "resource sqlite_open(string filename [, int mode [, string &error_message]])", - "Opens a SQLite database. Will create the database if it does not exist." - ], - "sqlite_popen": [ - "resource sqlite_popen(string filename [, int mode [, string &error_message]])", - "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." - ], - "sqlite_prev": [ - "bool sqlite_prev(resource result)", - "* Seek to the previous row number of a result set." - ], - "sqlite_query": [ - "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", - "Executes a query against a given database and returns a result handle." - ], - "sqlite_rewind": [ - "bool sqlite_rewind(resource result)", - "Seek to the first row number of a buffered result set." - ], - "sqlite_seek": [ - "bool sqlite_seek(resource result, int row)", - "Seek to a particular row number of a buffered result set." - ], - "sqlite_single_query": [ - "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", - "Executes a query and returns either an array for one single column or the value of the first row." - ], - "sqlite_udf_decode_binary": [ - "string sqlite_udf_decode_binary(string data)", - "Decode binary encoding on a string parameter passed to an UDF." - ], - "sqlite_udf_encode_binary": [ - "string sqlite_udf_encode_binary(string data)", - "Apply binary encoding (if required) to a string to return from an UDF." - ], - "sqlite_unbuffered_query": [ - "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", - "Executes a query that does not prefetch and buffer all data." - ], - "sqlite_valid": [ - "bool sqlite_valid(resource result)", - "Returns whether more rows are available." - ], - "sqrt": [ - "float sqrt(float number)", - "Returns the square root of the number" - ], - "srand": [ - "void srand([int seed])", - "Seeds random number generator" - ], - "sscanf": [ - "mixed sscanf(string str, string format [, string ...])", - "Implements an ANSI C compatible sscanf" - ], - "stat": [ - "array stat(string filename)", - "Give information about a file" - ], - "str_getcsv": [ - "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", - "Parse a CSV string into an array" - ], - "str_ireplace": [ - "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", - "Replaces all occurrences of search in haystack with replace / case-insensitive" - ], - "str_pad": [ - "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", - "Returns input string padded on the left or right to specified length with pad_string" - ], - "str_repeat": [ - "string str_repeat(string input, int mult)", - "Returns the input string repeat mult times" - ], - "str_replace": [ - "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", - "Replaces all occurrences of search in haystack with replace" - ], - "str_rot13": [ - "string str_rot13(string str)", - "Perform the rot13 transform on a string" - ], - "str_shuffle": [ - "void str_shuffle(string str)", - "Shuffles string. One permutation of all possible is created" - ], - "str_split": [ - "array str_split(string str [, int split_length])", - "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." - ], - "str_word_count": [ - "mixed str_word_count(string str, [int format [, string charlist]])", - "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." - ], - "strcasecmp": [ - "int strcasecmp(string str1, string str2)", - "Binary safe case-insensitive string comparison" - ], - "strchr": [ - "string strchr(string haystack, string needle)", - "An alias for strstr" - ], - "strcmp": [ - "int strcmp(string str1, string str2)", - "Binary safe string comparison" - ], - "strcoll": [ - "int strcoll(string str1, string str2)", - "Compares two strings using the current locale" - ], - "strcspn": [ - "int strcspn(string str, string mask [, start [, len]])", - "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" - ], - "stream_bucket_append": [ - "void stream_bucket_append(resource brigade, resource bucket)", - "Append bucket to brigade" - ], - "stream_bucket_make_writeable": [ - "object stream_bucket_make_writeable(resource brigade)", - "Return a bucket object from the brigade for operating on" - ], - "stream_bucket_new": [ - "resource stream_bucket_new(resource stream, string buffer)", - "Create a new bucket for use on the current stream" - ], - "stream_bucket_prepend": [ - "void stream_bucket_prepend(resource brigade, resource bucket)", - "Prepend bucket to brigade" - ], - "stream_context_create": [ - "resource stream_context_create([array options[, array params]])", - "Create a file context and optionally set parameters" - ], - "stream_context_get_default": [ - "resource stream_context_get_default([array options])", - "Get a handle on the default file/stream context and optionally set parameters" - ], - "stream_context_get_options": [ - "array stream_context_get_options(resource context|resource stream)", - "Retrieve options for a stream/wrapper/context" - ], - "stream_context_get_params": [ - "array stream_context_get_params(resource context|resource stream)", - "Get parameters of a file context" - ], - "stream_context_set_default": [ - "resource stream_context_set_default(array options)", - "Set default file/stream context, returns the context as a resource" - ], - "stream_context_set_option": [ - "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", - "Set an option for a wrapper" - ], - "stream_context_set_params": [ - "bool stream_context_set_params(resource context|resource stream, array options)", - "Set parameters for a file context" - ], - "stream_copy_to_stream": [ - "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", - "Reads up to maxlen bytes from source stream and writes them to dest stream." - ], - "stream_filter_append": [ - "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", - "Append a filter to a stream" - ], - "stream_filter_prepend": [ - "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", - "Prepend a filter to a stream" - ], - "stream_filter_register": [ - "bool stream_filter_register(string filtername, string classname)", - "Registers a custom filter handler class" - ], - "stream_filter_remove": [ - "bool stream_filter_remove(resource stream_filter)", - "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" - ], - "stream_get_contents": [ - "string stream_get_contents(resource source [, long maxlen [, long offset]])", - "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." - ], - "stream_get_filters": [ - "array stream_get_filters()", - "Returns a list of registered filters" - ], - "stream_get_line": [ - "string stream_get_line(resource stream, int maxlen [, string ending])", - "Read up to maxlen bytes from a stream or until the ending string is found" - ], - "stream_get_meta_data": [ - "array stream_get_meta_data(resource fp)", - "Retrieves header/meta data from streams/file pointers" - ], - "stream_get_transports": [ - "array stream_get_transports()", - "Retrieves list of registered socket transports" - ], - "stream_get_wrappers": [ - "array stream_get_wrappers()", - "Retrieves list of registered stream wrappers" - ], - "stream_is_local": [ - "bool stream_is_local(resource stream|string url)", - "" - ], - "stream_resolve_include_path": [ - "string stream_resolve_include_path(string filename)", - "Determine what file will be opened by calls to fopen() with a relative path" - ], - "stream_select": [ - "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", - "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" - ], - "stream_set_blocking": [ - "bool stream_set_blocking(resource socket, int mode)", - "Set blocking/non-blocking mode on a socket or stream" - ], - "stream_set_timeout": [ - "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", - "Set timeout on stream read to seconds + microseonds" - ], - "stream_set_write_buffer": [ - "int stream_set_write_buffer(resource fp, int buffer)", - "Set file write buffer" - ], - "stream_socket_accept": [ - "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", - "Accept a client connection from a server socket" - ], - "stream_socket_client": [ - "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", - "Open a client connection to a remote address" - ], - "stream_socket_enable_crypto": [ - "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", - "Enable or disable a specific kind of crypto on the stream" - ], - "stream_socket_get_name": [ - "string stream_socket_get_name(resource stream, bool want_peer)", - "Returns either the locally bound or remote name for a socket stream" - ], - "stream_socket_pair": [ - "array stream_socket_pair(int domain, int type, int protocol)", - "Creates a pair of connected, indistinguishable socket streams" - ], - "stream_socket_recvfrom": [ - "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", - "Receives data from a socket stream" - ], - "stream_socket_sendto": [ - "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", - "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" - ], - "stream_socket_server": [ - "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", - "Create a server socket bound to localaddress" - ], - "stream_socket_shutdown": [ - "int stream_socket_shutdown(resource stream, int how)", - "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." - ], - "stream_supports_lock": [ - "bool stream_supports_lock(resource stream)", - "Tells whether the stream supports locking through flock()." - ], - "stream_wrapper_register": [ - "bool stream_wrapper_register(string protocol, string classname[, integer flags])", - "Registers a custom URL protocol handler class" - ], - "stream_wrapper_restore": [ - "bool stream_wrapper_restore(string protocol)", - "Restore the original protocol handler, overriding if necessary" - ], - "stream_wrapper_unregister": [ - "bool stream_wrapper_unregister(string protocol)", - "Unregister a wrapper for the life of the current request." - ], - "strftime": [ - "string strftime(string format [, int timestamp])", - "Format a local time/date according to locale settings" - ], - "strip_tags": [ - "string strip_tags(string str [, string allowable_tags])", - "Strips HTML and PHP tags from a string" - ], - "stripcslashes": [ - "string stripcslashes(string str)", - "Strips backslashes from a string. Uses C-style conventions" - ], - "stripos": [ - "int stripos(string haystack, string needle [, int offset])", - "Finds position of first occurrence of a string within another, case insensitive" - ], - "stripslashes": [ - "string stripslashes(string str)", - "Strips backslashes from a string" - ], - "stristr": [ - "string stristr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another, case insensitive" - ], - "strlen": [ - "int strlen(string str)", - "Get string length" - ], - "strnatcasecmp": [ - "int strnatcasecmp(string s1, string s2)", - "Returns the result of case-insensitive string comparison using 'natural' algorithm" - ], - "strnatcmp": [ - "int strnatcmp(string s1, string s2)", - "Returns the result of string comparison using 'natural' algorithm" - ], - "strncasecmp": [ - "int strncasecmp(string str1, string str2, int len)", - "Binary safe string comparison" - ], - "strncmp": [ - "int strncmp(string str1, string str2, int len)", - "Binary safe string comparison" - ], - "strpbrk": [ - "array strpbrk(string haystack, string char_list)", - "Search a string for any of a set of characters" - ], - "strpos": [ - "int strpos(string haystack, string needle [, int offset])", - "Finds position of first occurrence of a string within another" - ], - "strptime": [ - "string strptime(string timestamp, string format)", - "Parse a time/date generated with strftime()" - ], - "strrchr": [ - "string strrchr(string haystack, string needle)", - "Finds the last occurrence of a character in a string within another" - ], - "strrev": [ - "string strrev(string str)", - "Reverse a string" - ], - "strripos": [ - "int strripos(string haystack, string needle [, int offset])", - "Finds position of last occurrence of a string within another string" - ], - "strrpos": [ - "int strrpos(string haystack, string needle [, int offset])", - "Finds position of last occurrence of a string within another string" - ], - "strspn": [ - "int strspn(string str, string mask [, start [, len]])", - "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" - ], - "strstr": [ - "string strstr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "strtok": [ - "string strtok([string str,] string token)", - "Tokenize a string" - ], - "strtolower": [ - "string strtolower(string str)", - "Makes a string lowercase" - ], - "strtotime": [ - "int strtotime(string time [, int now ])", - "Convert string representation of date and time to a timestamp" - ], - "strtoupper": [ - "string strtoupper(string str)", - "Makes a string uppercase" - ], - "strtr": [ - "string strtr(string str, string from[, string to])", - "Translates characters in str using given translation tables" - ], - "strval": [ - "string strval(mixed var)", - "Get the string value of a variable" - ], - "substr": [ - "string substr(string str, int start [, int length])", - "Returns part of a string" - ], - "substr_compare": [ - "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", - "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" - ], - "substr_count": [ - "int substr_count(string haystack, string needle [, int offset [, int length]])", - "Returns the number of times a substring occurs in the string" - ], - "substr_replace": [ - "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", - "Replaces part of a string with another string" - ], - "sybase_affected_rows": [ - "int sybase_affected_rows([resource link_id])", - "Get number of affected rows in last query" - ], - "sybase_close": [ - "bool sybase_close([resource link_id])", - "Close Sybase connection" - ], - "sybase_connect": [ - "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", - "Open Sybase server connection" - ], - "sybase_data_seek": [ - "bool sybase_data_seek(resource result, int offset)", - "Move internal row pointer" - ], - "sybase_deadlock_retry_count": [ - "void sybase_deadlock_retry_count(int retry_count)", - "Sets deadlock retry count" - ], - "sybase_fetch_array": [ - "array sybase_fetch_array(resource result)", - "Fetch row as array" - ], - "sybase_fetch_assoc": [ - "array sybase_fetch_assoc(resource result)", - "Fetch row as array without numberic indices" - ], - "sybase_fetch_field": [ - "object sybase_fetch_field(resource result [, int offset])", - "Get field information" - ], - "sybase_fetch_object": [ - "object sybase_fetch_object(resource result [, mixed object])", - "Fetch row as object" - ], - "sybase_fetch_row": [ - "array sybase_fetch_row(resource result)", - "Get row as enumerated array" - ], - "sybase_field_seek": [ - "bool sybase_field_seek(resource result, int offset)", - "Set field offset" - ], - "sybase_free_result": [ - "bool sybase_free_result(resource result)", - "Free result memory" - ], - "sybase_get_last_message": [ - "string sybase_get_last_message()", - "Returns the last message from server (over min_message_severity)" - ], - "sybase_min_client_severity": [ - "void sybase_min_client_severity(int severity)", - "Sets minimum client severity" - ], - "sybase_min_server_severity": [ - "void sybase_min_server_severity(int severity)", - "Sets minimum server severity" - ], - "sybase_num_fields": [ - "int sybase_num_fields(resource result)", - "Get number of fields in result" - ], - "sybase_num_rows": [ - "int sybase_num_rows(resource result)", - "Get number of rows in result" - ], - "sybase_pconnect": [ - "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", - "Open persistent Sybase connection" - ], - "sybase_query": [ - "int sybase_query(string query [, resource link_id])", - "Send Sybase query" - ], - "sybase_result": [ - "string sybase_result(resource result, int row, mixed field)", - "Get result data" - ], - "sybase_select_db": [ - "bool sybase_select_db(string database [, resource link_id])", - "Select Sybase database" - ], - "sybase_set_message_handler": [ - "bool sybase_set_message_handler(mixed error_func [, resource connection])", - "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" - ], - "sybase_unbuffered_query": [ - "int sybase_unbuffered_query(string query [, resource link_id])", - "Send Sybase query" - ], - "symlink": [ - "int symlink(string target, string link)", - "Create a symbolic link" - ], - "sys_get_temp_dir": [ - "string sys_get_temp_dir()", - "Returns directory path used for temporary files" - ], - "sys_getloadavg": [ - "array sys_getloadavg()", - "" - ], - "syslog": [ - "bool syslog(int priority, string message)", - "Generate a system log message" - ], - "system": [ - "int system(string command [, int &return_value])", - "Execute an external program and display output" - ], - "tan": [ - "float tan(float number)", - "Returns the tangent of the number in radians" - ], - "tanh": [ - "float tanh(float number)", - "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" - ], - "tempnam": [ - "string tempnam(string dir, string prefix)", - "Create a unique filename in a directory" - ], - "textdomain": [ - "string textdomain(string domain)", - "Set the textdomain to \"domain\". Returns the current domain" - ], - "tidy_access_count": [ - "int tidy_access_count()", - "Returns the Number of Tidy accessibility warnings encountered for specified document." - ], - "tidy_clean_repair": [ - "bool tidy_clean_repair()", - "Execute configured cleanup and repair operations on parsed markup" - ], - "tidy_config_count": [ - "int tidy_config_count()", - "Returns the Number of Tidy configuration errors encountered for specified document." - ], - "tidy_diagnose": [ - "bool tidy_diagnose()", - "Run configured diagnostics on parsed and repaired markup." - ], - "tidy_error_count": [ - "int tidy_error_count()", - "Returns the Number of Tidy errors encountered for specified document." - ], - "tidy_get_body": [ - "TidyNode tidy_get_body(resource tidy)", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_config": [ - "array tidy_get_config()", - "Get current Tidy configuarion" - ], - "tidy_get_error_buffer": [ - "string tidy_get_error_buffer([bool detailed])", - "Return warnings and errors which occured parsing the specified document" - ], - "tidy_get_head": [ - "TidyNode tidy_get_head()", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_html": [ - "TidyNode tidy_get_html()", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_html_ver": [ - "int tidy_get_html_ver()", - "Get the Detected HTML version for the specified document." - ], - "tidy_get_opt_doc": [ - "string tidy_get_opt_doc(tidy resource, string optname)", - "Returns the documentation for the given option name" - ], - "tidy_get_output": [ - "string tidy_get_output()", - "Return a string representing the parsed tidy markup" - ], - "tidy_get_release": [ - "string tidy_get_release()", - "Get release date (version) for Tidy library" - ], - "tidy_get_root": [ - "TidyNode tidy_get_root()", - "Returns a TidyNode Object representing the root of the tidy parse tree" - ], - "tidy_get_status": [ - "int tidy_get_status()", - "Get status of specfied document." - ], - "tidy_getopt": [ - "mixed tidy_getopt(string option)", - "Returns the value of the specified configuration option for the tidy document." - ], - "tidy_is_xhtml": [ - "bool tidy_is_xhtml()", - "Indicates if the document is a XHTML document." - ], - "tidy_is_xml": [ - "bool tidy_is_xml()", - "Indicates if the document is a generic (non HTML/XHTML) XML document." - ], - "tidy_parse_file": [ - "bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", - "Parse markup in file or URI" - ], - "tidy_parse_string": [ - "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", - "Parse a document stored in a string" - ], - "tidy_repair_file": [ - "bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", - "Repair a file using an optionally provided configuration file" - ], - "tidy_repair_string": [ - "bool tidy_repair_string(string data [, mixed config_file [, string encoding]])", - "Repair a string using an optionally provided configuration file" - ], - "tidy_warning_count": [ - "int tidy_warning_count()", - "Returns the Number of Tidy warnings encountered for specified document." - ], - "time": [ - "int time()", - "Return current UNIX timestamp" - ], - "time_nanosleep": [ - "mixed time_nanosleep(long seconds, long nanoseconds)", - "Delay for a number of seconds and nano seconds" - ], - "time_sleep_until": [ - "mixed time_sleep_until(float timestamp)", - "Make the script sleep until the specified time" - ], - "timezone_abbreviations_list": [ - "array timezone_abbreviations_list()", - "Returns associative array containing dst, offset and the timezone name" - ], - "timezone_identifiers_list": [ - "array timezone_identifiers_list([long what[, string country]])", - "Returns numerically index array with all timezone identifiers." - ], - "timezone_location_get": [ - "array timezone_location_get()", - "Returns location information for a timezone, including country code, latitude/longitude and comments" - ], - "timezone_name_from_abbr": [ - "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", - "Returns the timezone name from abbrevation" - ], - "timezone_name_get": [ - "string timezone_name_get(DateTimeZone object)", - "Returns the name of the timezone." - ], - "timezone_offset_get": [ - "long timezone_offset_get(DateTimeZone object, DateTime object)", - "Returns the timezone offset." - ], - "timezone_open": [ - "DateTimeZone timezone_open(string timezone)", - "Returns new DateTimeZone object" - ], - "timezone_transitions_get": [ - "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", - "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." - ], - "timezone_version_get": [ - "array timezone_version_get()", - "Returns the Olson database version number." - ], - "tmpfile": [ - "resource tmpfile()", - "Create a temporary file that will be deleted automatically after use" - ], - "token_get_all": [ - "array token_get_all(string source)", - "" - ], - "token_name": [ - "string token_name(int type)", - "" - ], - "touch": [ - "bool touch(string filename [, int time [, int atime]])", - "Set modification time of file" - ], - "trigger_error": [ - "void trigger_error(string messsage [, int error_type])", - "Generates a user-level error/warning/notice message" - ], - "trim": [ - "string trim(string str [, string character_mask])", - "Strips whitespace from the beginning and end of a string" - ], - "uasort": [ - "bool uasort(array array_arg, string cmp_function)", - "Sort an array with a user-defined comparison function and maintain index association" - ], - "ucfirst": [ - "string ucfirst(string str)", - "Make a string's first character lowercase" - ], - "ucwords": [ - "string ucwords(string str)", - "Uppercase the first character of every word in a string" - ], - "uksort": [ - "bool uksort(array array_arg, string cmp_function)", - "Sort an array by keys using a user-defined comparison function" - ], - "umask": [ - "int umask([int mask])", - "Return or change the umask" - ], - "uniqid": [ - "string uniqid([string prefix [, bool more_entropy]])", - "Generates a unique ID" - ], - "unixtojd": [ - "int unixtojd([int timestamp])", - "Convert UNIX timestamp to Julian Day" - ], - "unlink": [ - "bool unlink(string filename[, context context])", - "Delete a file" - ], - "unpack": [ - "array unpack(string format, string input)", - "Unpack binary string into named array elements according to format argument" - ], - "unregister_tick_function": [ - "void unregister_tick_function(string function_name)", - "Unregisters a tick callback function" - ], - "unserialize": [ - "mixed unserialize(string variable_representation)", - "Takes a string representation of variable and recreates it" - ], - "unset": [ - "void unset(mixed var [, mixed var])", - "Unset a given variable" - ], - "urldecode": [ - "string urldecode(string str)", - "Decodes URL-encoded string" - ], - "urlencode": [ - "string urlencode(string str)", - "URL-encodes string" - ], - "usleep": [ - "void usleep(int micro_seconds)", - "Delay for a given number of micro seconds" - ], - "usort": [ - "bool usort(array array_arg, string cmp_function)", - "Sort an array by values using a user-defined comparison function" - ], - "utf8_decode": [ - "string utf8_decode(string data)", - "Converts a UTF-8 encoded string to ISO-8859-1" - ], - "utf8_encode": [ - "string utf8_encode(string data)", - "Encodes an ISO-8859-1 string to UTF-8" - ], - "var_dump": [ - "void var_dump(mixed var)", - "Dumps a string representation of variable to output" - ], - "var_export": [ - "string var_export(mixed var [, bool return])", - "Outputs or returns a string representation of a variable" - ], - "variant_abs": [ - "mixed variant_abs(mixed left)", - "Returns the absolute value of a variant" - ], - "variant_add": [ - "mixed variant_add(mixed left, mixed right)", - "\"Adds\" two variant values together and returns the result" - ], - "variant_and": [ - "mixed variant_and(mixed left, mixed right)", - "performs a bitwise AND operation between two variants and returns the result" - ], - "variant_cast": [ - "object variant_cast(object variant, int type)", - "Convert a variant into a new variant object of another type" - ], - "variant_cat": [ - "mixed variant_cat(mixed left, mixed right)", - "concatenates two variant values together and returns the result" - ], - "variant_cmp": [ - "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", - "Compares two variants" - ], - "variant_date_from_timestamp": [ - "object variant_date_from_timestamp(int timestamp)", - "Returns a variant date representation of a unix timestamp" - ], - "variant_date_to_timestamp": [ - "int variant_date_to_timestamp(object variant)", - "Converts a variant date/time value to unix timestamp" - ], - "variant_div": [ - "mixed variant_div(mixed left, mixed right)", - "Returns the result from dividing two variants" - ], - "variant_eqv": [ - "mixed variant_eqv(mixed left, mixed right)", - "Performs a bitwise equivalence on two variants" - ], - "variant_fix": [ - "mixed variant_fix(mixed left)", - "Returns the integer part ? of a variant" - ], - "variant_get_type": [ - "int variant_get_type(object variant)", - "Returns the VT_XXX type code for a variant" - ], - "variant_idiv": [ - "mixed variant_idiv(mixed left, mixed right)", - "Converts variants to integers and then returns the result from dividing them" - ], - "variant_imp": [ - "mixed variant_imp(mixed left, mixed right)", - "Performs a bitwise implication on two variants" - ], - "variant_int": [ - "mixed variant_int(mixed left)", - "Returns the integer portion of a variant" - ], - "variant_mod": [ - "mixed variant_mod(mixed left, mixed right)", - "Divides two variants and returns only the remainder" - ], - "variant_mul": [ - "mixed variant_mul(mixed left, mixed right)", - "multiplies the values of the two variants and returns the result" - ], - "variant_neg": [ - "mixed variant_neg(mixed left)", - "Performs logical negation on a variant" - ], - "variant_not": [ - "mixed variant_not(mixed left)", - "Performs bitwise not negation on a variant" - ], - "variant_or": [ - "mixed variant_or(mixed left, mixed right)", - "Performs a logical disjunction on two variants" - ], - "variant_pow": [ - "mixed variant_pow(mixed left, mixed right)", - "Returns the result of performing the power function with two variants" - ], - "variant_round": [ - "mixed variant_round(mixed left, int decimals)", - "Rounds a variant to the specified number of decimal places" - ], - "variant_set": [ - "void variant_set(object variant, mixed value)", - "Assigns a new value for a variant object" - ], - "variant_set_type": [ - "void variant_set_type(object variant, int type)", - "Convert a variant into another type. Variant is modified \"in-place\"" - ], - "variant_sub": [ - "mixed variant_sub(mixed left, mixed right)", - "subtracts the value of the right variant from the left variant value and returns the result" - ], - "variant_xor": [ - "mixed variant_xor(mixed left, mixed right)", - "Performs a logical exclusion on two variants" - ], - "version_compare": [ - "int version_compare(string ver1, string ver2 [, string oper])", - "Compares two \"PHP-standardized\" version number strings" - ], - "vfprintf": [ - "int vfprintf(resource stream, string format, array args)", - "Output a formatted string into a stream" - ], - "virtual": [ - "bool virtual(string filename)", - "Perform an Apache sub-request" - ], - "vprintf": [ - "int vprintf(string format, array args)", - "Output a formatted string" - ], - "vsprintf": [ - "string vsprintf(string format, array args)", - "Return a formatted string" - ], - "wddx_add_vars": [ - "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", - "Serializes given variables and adds them to packet given by packet_id" - ], - "wddx_deserialize": [ - "mixed wddx_deserialize(mixed packet)", - "Deserializes given packet and returns a PHP value" - ], - "wddx_packet_end": [ - "string wddx_packet_end(resource packet_id)", - "Ends specified WDDX packet and returns the string containing the packet" - ], - "wddx_packet_start": [ - "resource wddx_packet_start([string comment])", - "Starts a WDDX packet with optional comment and returns the packet id" - ], - "wddx_serialize_value": [ - "string wddx_serialize_value(mixed var [, string comment])", - "Creates a new packet and serializes the given value" - ], - "wddx_serialize_vars": [ - "string wddx_serialize_vars(mixed var_name [, mixed ...])", - "Creates a new packet and serializes given variables into a struct" - ], - "wordwrap": [ - "string wordwrap(string str [, int width [, string break [, bool cut]]])", - "Wraps buffer to selected number of characters using string break char" - ], - "xml_error_string": [ - "string xml_error_string(int code)", - "Get XML parser error string" - ], - "xml_get_current_byte_index": [ - "int xml_get_current_byte_index(resource parser)", - "Get current byte index for an XML parser" - ], - "xml_get_current_column_number": [ - "int xml_get_current_column_number(resource parser)", - "Get current column number for an XML parser" - ], - "xml_get_current_line_number": [ - "int xml_get_current_line_number(resource parser)", - "Get current line number for an XML parser" - ], - "xml_get_error_code": [ - "int xml_get_error_code(resource parser)", - "Get XML parser error code" - ], - "xml_parse": [ - "int xml_parse(resource parser, string data [, int isFinal])", - "Start parsing an XML document" - ], - "xml_parse_into_struct": [ - "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", - "Parsing a XML document" - ], - "xml_parser_create": [ - "resource xml_parser_create([string encoding])", - "Create an XML parser" - ], - "xml_parser_create_ns": [ - "resource xml_parser_create_ns([string encoding [, string sep]])", - "Create an XML parser" - ], - "xml_parser_free": [ - "int xml_parser_free(resource parser)", - "Free an XML parser" - ], - "xml_parser_get_option": [ - "int xml_parser_get_option(resource parser, int option)", - "Get options from an XML parser" - ], - "xml_parser_set_option": [ - "int xml_parser_set_option(resource parser, int option, mixed value)", - "Set options in an XML parser" - ], - "xml_set_character_data_handler": [ - "int xml_set_character_data_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_default_handler": [ - "int xml_set_default_handler(resource parser, string hdl)", - "Set up default handler" - ], - "xml_set_element_handler": [ - "int xml_set_element_handler(resource parser, string shdl, string ehdl)", - "Set up start and end element handlers" - ], - "xml_set_end_namespace_decl_handler": [ - "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_external_entity_ref_handler": [ - "int xml_set_external_entity_ref_handler(resource parser, string hdl)", - "Set up external entity reference handler" - ], - "xml_set_notation_decl_handler": [ - "int xml_set_notation_decl_handler(resource parser, string hdl)", - "Set up notation declaration handler" - ], - "xml_set_object": [ - "int xml_set_object(resource parser, object &obj)", - "Set up object which should be used for callbacks" - ], - "xml_set_processing_instruction_handler": [ - "int xml_set_processing_instruction_handler(resource parser, string hdl)", - "Set up processing instruction (PI) handler" - ], - "xml_set_start_namespace_decl_handler": [ - "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_unparsed_entity_decl_handler": [ - "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", - "Set up unparsed entity declaration handler" - ], - "xmlrpc_decode": [ - "array xmlrpc_decode(string xml [, string encoding])", - "Decodes XML into native PHP types" - ], - "xmlrpc_decode_request": [ - "array xmlrpc_decode_request(string xml, string& method [, string encoding])", - "Decodes XML into native PHP types" - ], - "xmlrpc_encode": [ - "string xmlrpc_encode(mixed value)", - "Generates XML for a PHP value" - ], - "xmlrpc_encode_request": [ - "string xmlrpc_encode_request(string method, mixed params [, array output_options])", - "Generates XML for a method request" - ], - "xmlrpc_get_type": [ - "string xmlrpc_get_type(mixed value)", - "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" - ], - "xmlrpc_is_fault": [ - "bool xmlrpc_is_fault(array)", - "Determines if an array value represents an XMLRPC fault." - ], - "xmlrpc_parse_method_descriptions": [ - "array xmlrpc_parse_method_descriptions(string xml)", - "Decodes XML into a list of method descriptions" - ], - "xmlrpc_server_add_introspection_data": [ - "int xmlrpc_server_add_introspection_data(resource server, array desc)", - "Adds introspection documentation" - ], - "xmlrpc_server_call_method": [ - "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", - "Parses XML requests and call methods" - ], - "xmlrpc_server_create": [ - "resource xmlrpc_server_create()", - "Creates an xmlrpc server" - ], - "xmlrpc_server_destroy": [ - "int xmlrpc_server_destroy(resource server)", - "Destroys server resources" - ], - "xmlrpc_server_register_introspection_callback": [ - "bool xmlrpc_server_register_introspection_callback(resource server, string function)", - "Register a PHP function to generate documentation" - ], - "xmlrpc_server_register_method": [ - "bool xmlrpc_server_register_method(resource server, string method_name, string function)", - "Register a PHP function to handle method matching method_name" - ], - "xmlrpc_set_type": [ - "bool xmlrpc_set_type(string value, string type)", - "Sets xmlrpc type, base64 or datetime, for a PHP string value" - ], - "xmlwriter_end_attribute": [ - "bool xmlwriter_end_attribute(resource xmlwriter)", - "End attribute - returns FALSE on error" - ], - "xmlwriter_end_cdata": [ - "bool xmlwriter_end_cdata(resource xmlwriter)", - "End current CDATA - returns FALSE on error" - ], - "xmlwriter_end_comment": [ - "bool xmlwriter_end_comment(resource xmlwriter)", - "Create end comment - returns FALSE on error" - ], - "xmlwriter_end_document": [ - "bool xmlwriter_end_document(resource xmlwriter)", - "End current document - returns FALSE on error" - ], - "xmlwriter_end_dtd": [ - "bool xmlwriter_end_dtd(resource xmlwriter)", - "End current DTD - returns FALSE on error" - ], - "xmlwriter_end_dtd_attlist": [ - "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", - "End current DTD AttList - returns FALSE on error" - ], - "xmlwriter_end_dtd_element": [ - "bool xmlwriter_end_dtd_element(resource xmlwriter)", - "End current DTD element - returns FALSE on error" - ], - "xmlwriter_end_dtd_entity": [ - "bool xmlwriter_end_dtd_entity(resource xmlwriter)", - "End current DTD Entity - returns FALSE on error" - ], - "xmlwriter_end_element": [ - "bool xmlwriter_end_element(resource xmlwriter)", - "End current element - returns FALSE on error" - ], - "xmlwriter_end_pi": [ - "bool xmlwriter_end_pi(resource xmlwriter)", - "End current PI - returns FALSE on error" - ], - "xmlwriter_flush": [ - "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", - "Output current buffer" - ], - "xmlwriter_full_end_element": [ - "bool xmlwriter_full_end_element(resource xmlwriter)", - "End current element - returns FALSE on error" - ], - "xmlwriter_open_memory": [ - "resource xmlwriter_open_memory()", - "Create new xmlwriter using memory for string output" - ], - "xmlwriter_open_uri": [ - "resource xmlwriter_open_uri(resource xmlwriter, string source)", - "Create new xmlwriter using source uri for output" - ], - "xmlwriter_output_memory": [ - "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", - "Output current buffer as string" - ], - "xmlwriter_set_indent": [ - "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", - "Toggle indentation on/off - returns FALSE on error" - ], - "xmlwriter_set_indent_string": [ - "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", - "Set string used for indenting - returns FALSE on error" - ], - "xmlwriter_start_attribute": [ - "bool xmlwriter_start_attribute(resource xmlwriter, string name)", - "Create start attribute - returns FALSE on error" - ], - "xmlwriter_start_attribute_ns": [ - "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", - "Create start namespaced attribute - returns FALSE on error" - ], - "xmlwriter_start_cdata": [ - "bool xmlwriter_start_cdata(resource xmlwriter)", - "Create start CDATA tag - returns FALSE on error" - ], - "xmlwriter_start_comment": [ - "bool xmlwriter_start_comment(resource xmlwriter)", - "Create start comment - returns FALSE on error" - ], - "xmlwriter_start_document": [ - "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", - "Create document tag - returns FALSE on error" - ], - "xmlwriter_start_dtd": [ - "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", - "Create start DTD tag - returns FALSE on error" - ], - "xmlwriter_start_dtd_attlist": [ - "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", - "Create start DTD AttList - returns FALSE on error" - ], - "xmlwriter_start_dtd_element": [ - "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", - "Create start DTD element - returns FALSE on error" - ], - "xmlwriter_start_dtd_entity": [ - "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", - "Create start DTD Entity - returns FALSE on error" - ], - "xmlwriter_start_element": [ - "bool xmlwriter_start_element(resource xmlwriter, string name)", - "Create start element tag - returns FALSE on error" - ], - "xmlwriter_start_element_ns": [ - "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", - "Create start namespaced element tag - returns FALSE on error" - ], - "xmlwriter_start_pi": [ - "bool xmlwriter_start_pi(resource xmlwriter, string target)", - "Create start PI tag - returns FALSE on error" - ], - "xmlwriter_text": [ - "bool xmlwriter_text(resource xmlwriter, string content)", - "Write text - returns FALSE on error" - ], - "xmlwriter_write_attribute": [ - "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", - "Write full attribute - returns FALSE on error" - ], - "xmlwriter_write_attribute_ns": [ - "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", - "Write full namespaced attribute - returns FALSE on error" - ], - "xmlwriter_write_cdata": [ - "bool xmlwriter_write_cdata(resource xmlwriter, string content)", - "Write full CDATA tag - returns FALSE on error" - ], - "xmlwriter_write_comment": [ - "bool xmlwriter_write_comment(resource xmlwriter, string content)", - "Write full comment tag - returns FALSE on error" - ], - "xmlwriter_write_dtd": [ - "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", - "Write full DTD tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_attlist": [ - "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", - "Write full DTD AttList tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_element": [ - "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", - "Write full DTD element tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_entity": [ - "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", - "Write full DTD Entity tag - returns FALSE on error" - ], - "xmlwriter_write_element": [ - "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", - "Write full element tag - returns FALSE on error" - ], - "xmlwriter_write_element_ns": [ - "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", - "Write full namespaced element tag - returns FALSE on error" - ], - "xmlwriter_write_pi": [ - "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", - "Write full PI tag - returns FALSE on error" - ], - "xmlwriter_write_raw": [ - "bool xmlwriter_write_raw(resource xmlwriter, string content)", - "Write text - returns FALSE on error" - ], - "xsl_xsltprocessor_get_parameter": [ - "string xsl_xsltprocessor_get_parameter(string namespace, string name)", - "" - ], - "xsl_xsltprocessor_has_exslt_support": [ - "bool xsl_xsltprocessor_has_exslt_support()", - "" - ], - "xsl_xsltprocessor_import_stylesheet": [ - "void xsl_xsltprocessor_import_stylesheet(domdocument doc)", - "" - ], - "xsl_xsltprocessor_register_php_functions": [ - "void xsl_xsltprocessor_register_php_functions([mixed $restrict])", - "" - ], - "xsl_xsltprocessor_remove_parameter": [ - "bool xsl_xsltprocessor_remove_parameter(string namespace, string name)", - "" - ], - "xsl_xsltprocessor_set_parameter": [ - "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])", - "" - ], - "xsl_xsltprocessor_set_profiling": [ - "bool xsl_xsltprocessor_set_profiling(string filename)", - "" - ], - "xsl_xsltprocessor_transform_to_doc": [ - "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)", - "" - ], - "xsl_xsltprocessor_transform_to_uri": [ - "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)", - "" - ], - "xsl_xsltprocessor_transform_to_xml": [ - "string xsl_xsltprocessor_transform_to_xml(domdocument doc)", - "" - ], - "zend_logo_guid": [ - "string zend_logo_guid()", - "Return the special ID used to request the Zend logo in phpinfo screens" - ], - "zend_version": [ - "string zend_version()", - "Get the version of the Zend Engine" - ], - "zip_close": [ - "void zip_close(resource zip)", - "Close a Zip archive" - ], - "zip_entry_close": [ - "void zip_entry_close(resource zip_ent)", - "Close a zip entry" - ], - "zip_entry_compressedsize": [ - "int zip_entry_compressedsize(resource zip_entry)", - "Return the compressed size of a ZZip entry" - ], - "zip_entry_compressionmethod": [ - "string zip_entry_compressionmethod(resource zip_entry)", - "Return a string containing the compression method used on a particular entry" - ], - "zip_entry_filesize": [ - "int zip_entry_filesize(resource zip_entry)", - "Return the actual filesize of a ZZip entry" - ], - "zip_entry_name": [ - "string zip_entry_name(resource zip_entry)", - "Return the name given a ZZip entry" - ], - "zip_entry_open": [ - "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", - "Open a Zip File, pointed by the resource entry" - ], - "zip_entry_read": [ - "mixed zip_entry_read(resource zip_entry [, int len])", - "Read from an open directory entry" - ], - "zip_open": [ - "resource zip_open(string filename)", - "Create new zip using source uri for output" - ], - "zip_read": [ - "resource zip_read(resource zip)", - "Returns the next file in the archive" - ], - "zlib_get_coding_type": [ - "string zlib_get_coding_type()", - "Returns the coding type used for output compression" - ] -}; - -var variableMap = { - "$_COOKIE": { - type: "array" - }, - "$_ENV": { - type: "array" - }, - "$_FILES": { - type: "array" - }, - "$_GET": { - type: "array" - }, - "$_POST": { - type: "array" - }, - "$_REQUEST": { - type: "array" - }, - "$_SERVER": { - type: "array", - value: { - "DOCUMENT_ROOT": 1, - "GATEWAY_INTERFACE": 1, - "HTTP_ACCEPT": 1, - "HTTP_ACCEPT_CHARSET": 1, - "HTTP_ACCEPT_ENCODING": 1 , - "HTTP_ACCEPT_LANGUAGE": 1, - "HTTP_CONNECTION": 1, - "HTTP_HOST": 1, - "HTTP_REFERER": 1, - "HTTP_USER_AGENT": 1, - "PATH_TRANSLATED": 1, - "PHP_SELF": 1, - "QUERY_STRING": 1, - "REMOTE_ADDR": 1, - "REMOTE_PORT": 1, - "REQUEST_METHOD": 1, - "REQUEST_URI": 1, - "SCRIPT_FILENAME": 1, - "SCRIPT_NAME": 1, - "SERVER_ADMIN": 1, - "SERVER_NAME": 1, - "SERVER_PORT": 1, - "SERVER_PROTOCOL": 1, - "SERVER_SIGNATURE": 1, - "SERVER_SOFTWARE": 1, - "argv": 1, - "argc": 1 - } - }, - "$_SESSION": { - type: "array" - }, - "$GLOBALS": { - type: "array" - }, - '$argv': { - type: "array" - }, - '$argc': { - type: "int" - } -}; - -function is(token, type) { - return token.type.lastIndexOf(type) > -1; -} - -var PhpCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - - if (token.type==='support.php_tag' && token.value===' 0) { - var prevToken = session.getTokenAt(pos.row, token.start); - if (prevToken.type==='support.php_tag') { - return this.getTagCompletions(state, session, pos, prefix); - } - } - return this.getFunctionCompletions(state, session, pos, prefix); - } - if (is(token, "variable")) - return this.getVariableCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (token.type==='string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) - return this.getArrayKeyCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return [{ - caption: 'php', - value: 'php', - meta: "php tag", - score: 1000000 - }, { - caption: '=', - value: '=', - meta: "php tag", - score: 1000000 - }]; - }; - - this.getFunctionCompletions = function(state, session, pos, prefix) { - var functions = Object.keys(functionMap); - return functions.map(function(func){ - return { - caption: func, - snippet: func + '($0)', - meta: "php function", - score: 1000000, - docHTML: functionMap[func][1] - }; - }); - }; - - this.getVariableCompletions = function(state, session, pos, prefix) { - var variables = Object.keys(variableMap); - return variables.map(function(variable){ - return { - caption: variable, - value: variable, - meta: "php variable", - score: 1000000 - }; - }); - }; - - this.getArrayKeyCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; - - if (!variableMap[variable]) { - return []; - } - - var keys = []; - if (variableMap[variable].type==='array' && variableMap[variable].value) - keys = Object.keys(variableMap[variable].value); - - return keys.map(function(key) { - return { - caption: key, - value: key, - meta: "php array key", - score: 1000000 - }; - }); - }; - -}).call(PhpCompletions.prototype); - -exports.PhpCompletions = PhpCompletions; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; -var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var PhpCompletions = require("./php_completions").PhpCompletions; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var unicode = require("../unicode"); -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; - -var PhpMode = function(opts) { - this.HighlightRules = PhpLangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.$completer = new PhpCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(PhpMode, TextMode); - -(function() { - - this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); - - this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState != "doc-start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/php-inline"; -}).call(PhpMode.prototype); - -var Mode = function(opts) { - if (opts && opts.inline) { - var mode = new PhpMode(); - mode.createWorker = this.createWorker; - mode.inlinePhp = true; - return mode; - } - HtmlMode.call(this); - this.HighlightRules = PhpHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "php-": PhpMode - }); - this.foldingRules.subModes["php-"] = new CStyleFoldMode(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); - worker.attachToDocument(session.getDocument()); - - if (this.inlinePhp) - worker.call("setOptions", [{inline: true}]); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/php"; - this.snippetFileId = "ace/snippets/php"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/php"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-php_laravel_blade.js b/src-noconflict/mode-php_laravel_blade.js deleted file mode 100644 index f902f18..0000000 --- a/src-noconflict/mode-php_laravel_blade.js +++ /dev/null @@ -1,13311 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var PhpLangHighlightRules = function() { - var docComment = DocCommentHighlightRules; - var builtinFunctions = lang.arrayToMap( -'abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|\ -aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|\ -apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|\ -apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|\ -apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|\ -apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|\ -apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|\ -apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|\ -array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|\ -array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|\ -array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|\ -array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|\ -array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|\ -array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|\ -atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|\ -bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|\ -bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|\ -bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|\ -bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|\ -bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|\ -cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|\ -cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|\ -cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|\ -cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|\ -cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|\ -cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|\ -cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|\ -cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|\ -cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|\ -cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|\ -cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|\ -cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|\ -cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|\ -cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|\ -cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|\ -cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|\ -cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|\ -cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|\ -cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|\ -cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|\ -cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|\ -cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|\ -cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|\ -cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|\ -cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|\ -cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|\ -cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|\ -cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|\ -chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|\ -class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|\ -classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|\ -com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|\ -com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|\ -convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|\ -counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|\ -crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|\ -ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|\ -cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|\ -cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|\ -cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|\ -cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|\ -cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|\ -cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|\ -cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|\ -cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|\ -cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|\ -cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|\ -cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|\ -curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|\ -curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|\ -curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|\ -date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|\ -date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|\ -date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|\ -dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|\ -db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|\ -db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|\ -db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|\ -db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|\ -db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|\ -db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|\ -dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|\ -dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|\ -dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|\ -dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|\ -dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|\ -dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|\ -dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|\ -dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|\ -dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|\ -define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|\ -dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|\ -dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|\ -domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|\ -domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|\ -domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|\ -domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|\ -domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|\ -domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|\ -domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|\ -domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|\ -domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|\ -domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|\ -domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|\ -domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|\ -domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|\ -domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|\ -domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|\ -domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|\ -domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|\ -enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|\ -enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|\ -enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|\ -enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|\ -eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|\ -event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|\ -event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|\ -event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|\ -event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|\ -expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|\ -fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|\ -fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|\ -fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|\ -fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|\ -fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|\ -fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|\ -fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|\ -fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|\ -fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|\ -fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|\ -fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|\ -fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|\ -fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|\ -file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|\ -filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|\ -filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|\ -finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|\ -forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|\ -ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|\ -ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|\ -ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|\ -func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|\ -gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|\ -geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|\ -geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|\ -get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|\ -get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|\ -get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|\ -get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|\ -getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|\ -gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|\ -getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|\ -getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|\ -gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|\ -gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|\ -gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|\ -gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|\ -gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|\ -gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|\ -gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|\ -grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|\ -gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|\ -gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|\ -gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|\ -gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|\ -gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|\ -gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|\ -gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|\ -gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|\ -gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|\ -gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|\ -halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|\ -haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|\ -harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|\ -harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|\ -harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|\ -harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|\ -harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|\ -harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|\ -harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|\ -harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|\ -haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|\ -harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|\ -harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|\ -haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|\ -haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|\ -harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|\ -harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|\ -harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|\ -harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|\ -harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|\ -harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|\ -harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|\ -harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|\ -harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|\ -harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|\ -harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|\ -harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|\ -harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|\ -harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|\ -hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|\ -header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|\ -html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|\ -http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|\ -http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|\ -http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|\ -http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|\ -http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|\ -http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|\ -http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|\ -http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|\ -httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|\ -httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|\ -httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|\ -httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|\ -httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|\ -httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|\ -httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|\ -httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|\ -httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|\ -httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|\ -httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|\ -httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|\ -httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|\ -httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|\ -httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|\ -httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|\ -httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|\ -httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|\ -httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|\ -httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|\ -httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|\ -httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|\ -httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|\ -httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|\ -httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|\ -httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|\ -httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|\ -httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|\ -httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|\ -hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|\ -hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|\ -hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|\ -hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|\ -hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|\ -hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|\ -hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|\ -hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|\ -hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|\ -hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|\ -hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|\ -hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|\ -hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|\ -hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|\ -ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|\ -ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|\ -ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|\ -ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|\ -ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|\ -ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|\ -ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|\ -iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|\ -id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|\ -idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|\ -ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|\ -ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|\ -ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|\ -ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|\ -iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|\ -iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|\ -iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|\ -imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|\ -imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|\ -imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|\ -imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|\ -imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|\ -imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|\ -imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|\ -imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|\ -imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|\ -imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|\ -imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|\ -imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|\ -imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|\ -imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|\ -imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|\ -imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|\ -imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|\ -imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|\ -imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|\ -imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|\ -imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|\ -imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|\ -imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|\ -imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|\ -imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|\ -imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|\ -imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|\ -imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|\ -imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|\ -imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|\ -imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|\ -imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|\ -imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|\ -imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|\ -imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|\ -imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|\ -imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|\ -imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|\ -imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|\ -imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|\ -imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|\ -imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|\ -imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|\ -imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|\ -imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|\ -imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|\ -imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|\ -imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|\ -imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|\ -imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|\ -imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|\ -imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|\ -imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|\ -imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|\ -imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|\ -imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|\ -imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|\ -imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|\ -imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|\ -imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|\ -imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|\ -imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|\ -imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|\ -imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|\ -imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|\ -imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|\ -imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|\ -imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|\ -imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|\ -imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|\ -imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|\ -imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|\ -imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|\ -imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|\ -imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|\ -imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|\ -imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|\ -imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|\ -imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|\ -imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|\ -imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|\ -imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|\ -imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|\ -imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|\ -imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|\ -imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|\ -imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|\ -imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|\ -imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|\ -imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|\ -imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|\ -imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|\ -imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|\ -imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|\ -imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|\ -imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|\ -imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|\ -imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|\ -imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|\ -imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|\ -imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|\ -imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|\ -imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|\ -imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|\ -imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|\ -imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|\ -imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|\ -imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|\ -imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|\ -imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|\ -include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|\ -ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|\ -ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|\ -ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|\ -ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|\ -ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|\ -inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|\ -intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|\ -is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|\ -is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|\ -iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|\ -iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|\ -jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|\ -json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|\ -kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|\ -kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|\ -ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|\ -ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|\ -ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|\ -ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|\ -ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|\ -libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|\ -limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|\ -lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|\ -m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|\ -m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|\ -m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|\ -m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|\ -mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|\ -mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|\ -mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|\ -maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|\ -maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|\ -maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|\ -maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|\ -maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|\ -maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|\ -maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|\ -maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|\ -maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|\ -maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|\ -maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|\ -maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|\ -maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|\ -maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|\ -maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|\ -mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|\ -mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|\ -mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|\ -mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|\ -mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|\ -mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|\ -mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|\ -mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|\ -mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|\ -mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|\ -mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|\ -mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|\ -mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|\ -mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|\ -mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|\ -ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|\ -mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|\ -mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|\ -mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|\ -mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|\ -mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|\ -msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|\ -msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|\ -msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|\ -msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|\ -msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|\ -msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|\ -msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|\ -mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|\ -mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|\ -mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|\ -mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|\ -mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|\ -mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|\ -mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|\ -mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|\ -mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|\ -mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|\ -mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|\ -mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|\ -mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|\ -mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|\ -mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|\ -mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|\ -mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|\ -mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|\ -mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|\ -mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|\ -mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|\ -mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|\ -mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|\ -mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|\ -mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|\ -mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|\ -mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|\ -mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|\ -mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|\ -mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|\ -mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|\ -mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|\ -ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|\ -ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|\ -ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|\ -ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|\ -ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|\ -ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|\ -ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|\ -ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|\ -ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|\ -ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|\ -ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|\ -ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|\ -ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|\ -ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|\ -ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|\ -ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|\ -ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|\ -ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|\ -ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|\ -ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|\ -ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|\ -ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|\ -newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|\ -newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|\ -newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|\ -newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|\ -newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|\ -newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|\ -newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|\ -newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|\ -newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|\ -newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|\ -newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|\ -newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|\ -newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|\ -newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|\ -newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|\ -newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|\ -newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|\ -newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|\ -newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|\ -notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|\ -notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|\ -numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|\ -ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|\ -ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|\ -oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|\ -oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|\ -oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|\ -oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|\ -oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|\ -oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|\ -oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|\ -oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|\ -oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|\ -ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|\ -ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|\ -ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|\ -ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|\ -ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|\ -octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|\ -odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|\ -odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|\ -odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|\ -odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|\ -odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|\ -openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|\ -openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|\ -openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|\ -openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|\ -openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|\ -openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|\ -openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|\ -openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|\ -openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|\ -openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|\ -openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|\ -outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|\ -ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|\ -ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|\ -ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|\ -parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|\ -pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|\ -pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|\ -pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|\ -pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|\ -pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|\ -pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|\ -pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|\ -pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|\ -pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|\ -pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|\ -pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|\ -pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|\ -pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|\ -pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|\ -pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|\ -pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|\ -pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|\ -pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|\ -pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|\ -pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|\ -pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|\ -pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|\ -pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|\ -pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|\ -pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|\ -pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|\ -pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|\ -pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|\ -pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|\ -pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|\ -pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|\ -pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|\ -pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|\ -pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|\ -pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|\ -php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|\ -png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|\ -posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|\ -posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|\ -posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|\ -preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|\ -printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|\ -printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|\ -printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|\ -printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|\ -printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|\ -ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|\ -ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|\ -ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|\ -ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|\ -ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|\ -ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|\ -ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|\ -ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|\ -ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|\ -pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|\ -pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|\ -pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|\ -px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|\ -px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|\ -px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|\ -radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|\ -radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|\ -radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|\ -radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|\ -rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|\ -readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|\ -readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|\ -readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|\ -recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|\ -recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|\ -reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|\ -regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|\ -resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|\ -rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|\ -rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|\ -runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|\ -runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|\ -runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|\ -runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|\ -samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|\ -samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|\ -sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|\ -sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|\ -sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|\ -sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|\ -sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|\ -sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|\ -sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|\ -sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|\ -sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|\ -sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|\ -sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|\ -sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|\ -sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|\ -sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|\ -sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|\ -sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|\ -sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|\ -sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|\ -sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|\ -sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|\ -session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|\ -session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|\ -session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|\ -session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|\ -set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|\ -setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|\ -shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|\ -similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|\ -snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|\ -snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|\ -snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|\ -soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|\ -socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|\ -socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|\ -socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|\ -solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|\ -solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|\ -solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|\ -spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|\ -splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|\ -splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|\ -sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|\ -sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|\ -sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|\ -sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|\ -sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|\ -sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|\ -ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|\ -ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|\ -ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|\ -ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|\ -stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|\ -stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|\ -stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|\ -stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|\ -stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|\ -stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|\ -stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|\ -stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|\ -stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|\ -stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|\ -stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|\ -stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|\ -str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|\ -stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|\ -stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|\ -stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|\ -stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|\ -stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|\ -stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|\ -stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|\ -stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|\ -stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|\ -strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|\ -svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|\ -svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|\ -svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|\ -svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|\ -svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|\ -svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|\ -swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|\ -swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|\ -swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|\ -swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|\ -swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|\ -swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|\ -swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|\ -swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|\ -swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|\ -swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|\ -swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|\ -swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|\ -swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|\ -sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|\ -sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|\ -sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|\ -sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|\ -tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|\ -tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|\ -time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|\ -timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|\ -tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|\ -ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|\ -udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|\ -udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|\ -uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|\ -urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|\ -variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|\ -variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|\ -variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|\ -vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|\ -vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|\ -vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|\ -w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|\ -wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|\ -win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|\ -win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|\ -wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|\ -wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|\ -wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|\ -wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|\ -xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|\ -xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|\ -xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|\ -xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|\ -xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|\ -xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|\ -xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|\ -xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|\ -xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|\ -xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|\ -xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|\ -xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|\ -xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|\ -xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|\ -xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|\ -xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|\ -xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|\ -xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|\ -xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|\ -xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|\ -xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|\ -xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|\ -yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|\ -yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|\ -yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|\ -yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|\ -zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|\ -ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|\ -ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|\ -ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|\ -ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|\ -ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|\ -ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type'.split('|') - ); - var keywords = lang.arrayToMap( -'abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|\ -endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|\ -public|static|switch|throw|trait|try|use|var|while|xor|yield'.split('|') - ); - var languageConstructs = lang.arrayToMap( - ('__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|') - ); - - var builtinConstants = lang.arrayToMap( - ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__').split('|') - ); - - var builtinVariables = lang.arrayToMap( -'$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|\ -$http_response_header|$argc|$argv'.split('|') - ); - var builtinFunctionsDeprecated = lang.arrayToMap( -'key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|\ -com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|\ -cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|\ -hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|\ -maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|\ -mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|\ -mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|\ -mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|\ -mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|\ -mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|\ -mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|\ -ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|\ -ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|\ -ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|\ -ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|\ -ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|\ -PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|\ -PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|\ -PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|\ -PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|\ -PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|\ -PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|\ -PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|\ -PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|\ -px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister\ -set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|\ -sql_regcase'.split('|') - ); - - var keywordsDeprecated = lang.arrayToMap( - ('cfunction|old_function').split('|') - ); - - var futureReserved = lang.arrayToMap([]); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ - }, - docComment.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" - }, { - token : "string", // " string start - regex : '"', - next : "qqstring" - }, { - token : "string", // ' string start - regex : "'", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language", // constants - regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + - "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + - "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + - "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + - "VERSION))|__COMPILER_HALT_OFFSET__)\\b" - }, { - token : ["keyword", "text", "support.class"], - regex : "\\b(new)(\\s+)(\\w+)" - }, { - token : ["support.class", "keyword.operator"], - regex : "\\b(\\w+)(::)" - }, { - token : "constant.language", // constants - regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + - "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + - "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + - "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + - "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + - "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + - "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + - "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + - "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + - "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + - "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + - "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + - "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + - "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (futureReserved.hasOwnProperty(value)) - return "invalid.illegal"; - else if (builtinFunctions.hasOwnProperty(value)) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) - return "variable"; - return "identifier"; - }, - regex : /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ - }, { - onMatch : function(value, currentSate, state) { - value = value.substr(3); - if (value[0] == "'" || value[0] == '"') - value = value.slice(1, -1); - state.unshift(this.next, value); - return "markup.list"; - }, - regex : /<<<(?:\w+|'\w+'|"\w+")$/, - next: "heredoc" - }, { - token : "keyword.operator", - regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : /[,;]/ - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "heredoc" : [ - { - onMatch : function(value, currentSate, stack) { - if (stack[1] != value) - return "string"; - stack.shift(); - stack.shift(); - return "markup.list"; - }, - regex : "^\\w+(?=;?$)", - next: "start" - }, { - token: "string", - regex : ".*" - } - ], - "comment" : [ - { - token : "comment", - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' - }, { - token : "variable", - regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ - }, { - token : "variable", - regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now - }, - {token : "string", regex : '"', next : "start"}, - {defaultToken : "string"} - ], - "qstring" : [ - {token : "constant.language.escape", regex : /\\['\\]/}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(PhpLangHighlightRules, TextHighlightRules); - - -var PhpHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - token : "support.php_tag", // php open tag - regex : "<\\?(?:php|=)?", - push : "php-start" - } - ]; - - var endRules = [ - { - token : "support.php_tag", // php close tag - regex : "\\?>", - next : "pop" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); - - this.normalizeRules(); -}; - -oop.inherits(PhpHighlightRules, HtmlHighlightRules); - -exports.PhpHighlightRules = PhpHighlightRules; -exports.PhpLangHighlightRules = PhpLangHighlightRules; -}); - -ace.define("ace/mode/php_laravel_blade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/php_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; - -var PHPLaravelBladeHighlightRules = function() { - PhpHighlightRules.call(this); - - var bladeRules = { - start: [{ - include: "comments" - }, { - include: "directives" - }, { - include: "parenthesis" - }], - comments: [{ - token: "punctuation.definition.comment.blade", - regex: "(\\/\\/(.)*)|(\\#(.)*)", - next: "pop" - }, { - token: "punctuation.definition.comment.begin.php", - regex: "(?:\\/\\*)", - push: [{ - token: "punctuation.definition.comment.end.php", - regex: "(?:\\*\\/)", - next: "pop" - }, { - defaultToken: "comment.block.blade" - }] - }, { - token: "punctuation.definition.comment.begin.blade", - regex: "(?:\\{\\{\\-\\-)", - push: [{ - token: "punctuation.definition.comment.end.blade", - regex: "(?:\\-\\-\\}\\})", - next: "pop" - }, { - defaultToken: "comment.block.blade" - }] - }], - parenthesis: [{ - token: "parenthesis.begin.blade", - regex: "\\(", - push: [{ - token: "parenthesis.end.blade", - regex: "\\)", - next: "pop" - }, { - include: "strings" - }, { - include: "variables" - }, { - include: "lang" - }, { - include: "parenthesis" - }, { - defaultToken: "source.blade" - }] - }], - directives: [{ - token: ["directive.declaration.blade", "keyword.directives.blade"], - regex: "(@)(endunless|endisset|endempty|endauth|endguest|endcomponent|endslot|endalert|endverbatim|endsection|show|php|endphp|endpush|endprepend|endenv|endforelse|isset|empty|component|slot|alert|json|verbatim|section|auth|guest|hasSection|forelse|includeIf|includeWhen|includeFirst|each|push|stack|prepend|inject|env|elseenv|unless|yield|extends|parent|include|acfrepeater|block|can|cannot|choice|debug|elsecan|elsecannot|embed|hipchat|lang|layout|macro|macrodef|minify|partial|render|servers|set|slack|story|task|unset|wpposts|acfend|after|append|breakpoint|endafter|endcan|endcannot|endembed|endmacro|endmarkdown|endminify|endpartial|endsetup|endstory|endtask|endunless|markdown|overwrite|setup|stop|wpempty|wpend|wpquery)" - - }, { - token: ["directive.declaration.blade", "keyword.control.blade"], - regex: "(@)(if|else|elseif|endif|foreach|endforeach|switch|case|break|default|endswitch|for|endfor|while|endwhile|continue)" - }, { - token: ["directive.ignore.blade", "injections.begin.blade"], - regex: "(@?)(\\{\\{)", - push: [{ - token: "injections.end.blade", - regex: "\\}\\}", - next: "pop" - }, { - include: "strings" - }, { - include: "variables" - }, { - defaultToken: "source.blade" - }] - }, { - token: "injections.unescaped.begin.blade", - regex: "\\{\\!\\!", - push: [{ - token: "injections.unescaped.end.blade", - regex: "\\!\\!\\}", - next: "pop" - }, { - include: "strings" - }, { - include: "variables" - }, { - defaultToken: "source.blade" - }] - } - - ], - - lang: [{ - token: "keyword.operator.blade", - regex: "(?:!=|!|<=|>=|<|>|===|==|=|\\+\\+|\\;|\\,|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod|as)\\b" - }, { - token: "constant.language.blade", - regex: "\\b(?:TRUE|FALSE|true|false)\\b" - }], - strings: [{ - token: "punctuation.definition.string.begin.blade", - regex: "\"", - push: [{ - token: "punctuation.definition.string.end.blade", - regex: "\"", - next: "pop" - }, { - token: "string.character.escape.blade", - regex: "\\\\." - }, { - defaultToken: "string.quoted.single.blade" - }] - }, { - token: "punctuation.definition.string.begin.blade", - regex: "'", - push: [{ - token: "punctuation.definition.string.end.blade", - regex: "'", - next: "pop" - }, { - token: "string.character.escape.blade", - regex: "\\\\." - }, { - defaultToken: "string.quoted.double.blade" - }] - }], - variables: [{ - token: "variable.blade", - regex: "\\$([a-zA-Z_][a-zA-Z0-9_]*)\\b" - }, { - token: ["keyword.operator.blade", "constant.other.property.blade"], - regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b" - }, { - token: ["keyword.operator.blade", - "meta.function-call.object.blade", - "punctuation.definition.variable.blade", - "variable.blade", - "punctuation.definition.variable.blade" - ], - regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))" - }] - }; - - var bladeStart = bladeRules.start; - - for (var rule in this.$rules) { - this.$rules[rule].unshift.apply(this.$rules[rule], bladeStart); - } - - Object.keys(bladeRules).forEach(function(x) { - if (!this.$rules[x]) - this.$rules[x] = bladeRules[x]; - }, this); - - this.normalizeRules(); -}; - - -oop.inherits(PHPLaravelBladeHighlightRules, PhpHighlightRules); - -exports.PHPLaravelBladeHighlightRules = PHPLaravelBladeHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var functionMap = { - "abs": [ - "int abs(int number)", - "Return the absolute value of the number" - ], - "acos": [ - "float acos(float number)", - "Return the arc cosine of the number in radians" - ], - "acosh": [ - "float acosh(float number)", - "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" - ], - "addGlob": [ - "bool addGlob(string pattern[,int flags [, array options]])", - "Add files matching the glob pattern. See php's glob for the pattern syntax." - ], - "addPattern": [ - "bool addPattern(string pattern[, string path [, array options]])", - "Add files matching the pcre pattern. See php's pcre for the pattern syntax." - ], - "addcslashes": [ - "string addcslashes(string str, string charlist)", - "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" - ], - "addslashes": [ - "string addslashes(string str)", - "Escapes single quote, double quotes and backslash characters in a string with backslashes" - ], - "apache_child_terminate": [ - "bool apache_child_terminate()", - "Terminate apache process after this request" - ], - "apache_get_modules": [ - "array apache_get_modules()", - "Get a list of loaded Apache modules" - ], - "apache_get_version": [ - "string apache_get_version()", - "Fetch Apache version" - ], - "apache_getenv": [ - "bool apache_getenv(string variable [, bool walk_to_top])", - "Get an Apache subprocess_env variable" - ], - "apache_lookup_uri": [ - "object apache_lookup_uri(string URI)", - "Perform a partial request of the given URI to obtain information about it" - ], - "apache_note": [ - "string apache_note(string note_name [, string note_value])", - "Get and set Apache request notes" - ], - "apache_request_auth_name": [ - "string apache_request_auth_name()", - "" - ], - "apache_request_auth_type": [ - "string apache_request_auth_type()", - "" - ], - "apache_request_discard_request_body": [ - "long apache_request_discard_request_body()", - "" - ], - "apache_request_err_headers_out": [ - "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", - "* fetch all headers that go out in case of an error or a subrequest" - ], - "apache_request_headers": [ - "array apache_request_headers()", - "Fetch all HTTP request headers" - ], - "apache_request_headers_in": [ - "array apache_request_headers_in()", - "* fetch all incoming request headers" - ], - "apache_request_headers_out": [ - "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", - "* fetch all outgoing request headers" - ], - "apache_request_is_initial_req": [ - "bool apache_request_is_initial_req()", - "" - ], - "apache_request_log_error": [ - "bool apache_request_log_error(string message, [long facility])", - "" - ], - "apache_request_meets_conditions": [ - "long apache_request_meets_conditions()", - "" - ], - "apache_request_remote_host": [ - "int apache_request_remote_host([int type])", - "" - ], - "apache_request_run": [ - "long apache_request_run()", - "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." - ], - "apache_request_satisfies": [ - "long apache_request_satisfies()", - "" - ], - "apache_request_server_port": [ - "int apache_request_server_port()", - "" - ], - "apache_request_set_etag": [ - "void apache_request_set_etag()", - "" - ], - "apache_request_set_last_modified": [ - "void apache_request_set_last_modified()", - "" - ], - "apache_request_some_auth_required": [ - "bool apache_request_some_auth_required()", - "" - ], - "apache_request_sub_req_lookup_file": [ - "object apache_request_sub_req_lookup_file(string file)", - "Returns sub-request for the specified file. You would need to run it yourself with run()." - ], - "apache_request_sub_req_lookup_uri": [ - "object apache_request_sub_req_lookup_uri(string uri)", - "Returns sub-request for the specified uri. You would need to run it yourself with run()" - ], - "apache_request_sub_req_method_uri": [ - "object apache_request_sub_req_method_uri(string method, string uri)", - "Returns sub-request for the specified file. You would need to run it yourself with run()." - ], - "apache_request_update_mtime": [ - "long apache_request_update_mtime([int dependency_mtime])", - "" - ], - "apache_reset_timeout": [ - "bool apache_reset_timeout()", - "Reset the Apache write timer" - ], - "apache_response_headers": [ - "array apache_response_headers()", - "Fetch all HTTP response headers" - ], - "apache_setenv": [ - "bool apache_setenv(string variable, string value [, bool walk_to_top])", - "Set an Apache subprocess_env variable" - ], - "array_change_key_case": [ - "array array_change_key_case(array input [, int case=CASE_LOWER])", - "Retuns an array with all string keys lowercased [or uppercased]" - ], - "array_chunk": [ - "array array_chunk(array input, int size [, bool preserve_keys])", - "Split array into chunks" - ], - "array_combine": [ - "array array_combine(array keys, array values)", - "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" - ], - "array_count_values": [ - "array array_count_values(array input)", - "Return the value as key and the frequency of that value in input as value" - ], - "array_diff": [ - "array array_diff(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are not present in any of the others arguments." - ], - "array_diff_assoc": [ - "array array_diff_assoc(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" - ], - "array_diff_key": [ - "array array_diff_key(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." - ], - "array_diff_uassoc": [ - "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." - ], - "array_diff_ukey": [ - "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", - "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." - ], - "array_fill": [ - "array array_fill(int start_key, int num, mixed val)", - "Create an array containing num elements starting with index start_key each initialized to val" - ], - "array_fill_keys": [ - "array array_fill_keys(array keys, mixed val)", - "Create an array using the elements of the first parameter as keys each initialized to val" - ], - "array_filter": [ - "array array_filter(array input [, mixed callback])", - "Filters elements from the array via the callback." - ], - "array_flip": [ - "array array_flip(array input)", - "Return array with key <-> value flipped" - ], - "array_intersect": [ - "array array_intersect(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are present in all the other arguments" - ], - "array_intersect_assoc": [ - "array array_intersect_assoc(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" - ], - "array_intersect_key": [ - "array array_intersect_key(array arr1, array arr2 [, array ...])", - "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." - ], - "array_intersect_uassoc": [ - "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." - ], - "array_intersect_ukey": [ - "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", - "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." - ], - "array_key_exists": [ - "bool array_key_exists(mixed key, array search)", - "Checks if the given key or index exists in the array" - ], - "array_keys": [ - "array array_keys(array input [, mixed search_value[, bool strict]])", - "Return just the keys from the input array, optionally only for the specified search_value" - ], - "array_key_first": [ - "mixed array_key_first(array arr)", - "Returns the first key of arr if the array is not empty; NULL otherwise" - ], - "array_key_last": [ - "mixed array_key_last(array arr)", - "Returns the last key of arr if the array is not empty; NULL otherwise" - ], - "array_map": [ - "array array_map(mixed callback, array input1 [, array input2 ,...])", - "Applies the callback to the elements in given arrays." - ], - "array_merge": [ - "array array_merge(array arr1, array arr2 [, array ...])", - "Merges elements from passed arrays into one array" - ], - "array_merge_recursive": [ - "array array_merge_recursive(array arr1, array arr2 [, array ...])", - "Recursively merges elements from passed arrays into one array" - ], - "array_multisort": [ - "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", - "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" - ], - "array_pad": [ - "array array_pad(array input, int pad_size, mixed pad_value)", - "Returns a copy of input array padded with pad_value to size pad_size" - ], - "array_pop": [ - "mixed array_pop(array stack)", - "Pops an element off the end of the array" - ], - "array_product": [ - "mixed array_product(array input)", - "Returns the product of the array entries" - ], - "array_push": [ - "int array_push(array stack, mixed var [, mixed ...])", - "Pushes elements onto the end of the array" - ], - "array_rand": [ - "mixed array_rand(array input [, int num_req])", - "Return key/keys for random entry/entries in the array" - ], - "array_reduce": [ - "mixed array_reduce(array input, mixed callback [, mixed initial])", - "Iteratively reduce the array to a single value via the callback." - ], - "array_replace": [ - "array array_replace(array arr1, array arr2 [, array ...])", - "Replaces elements from passed arrays into one array" - ], - "array_replace_recursive": [ - "array array_replace_recursive(array arr1, array arr2 [, array ...])", - "Recursively replaces elements from passed arrays into one array" - ], - "array_reverse": [ - "array array_reverse(array input [, bool preserve keys])", - "Return input as a new array with the order of the entries reversed" - ], - "array_search": [ - "mixed array_search(mixed needle, array haystack [, bool strict])", - "Searches the array for a given value and returns the corresponding key if successful" - ], - "array_shift": [ - "mixed array_shift(array stack)", - "Pops an element off the beginning of the array" - ], - "array_slice": [ - "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", - "Returns elements specified by offset and length" - ], - "array_splice": [ - "array array_splice(array input, int offset [, int length [, array replacement]])", - "Removes the elements designated by offset and length and replace them with supplied array" - ], - "array_sum": [ - "mixed array_sum(array input)", - "Returns the sum of the array entries" - ], - "array_udiff": [ - "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." - ], - "array_udiff_assoc": [ - "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." - ], - "array_udiff_uassoc": [ - "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", - "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." - ], - "array_uintersect": [ - "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." - ], - "array_uintersect_assoc": [ - "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." - ], - "array_uintersect_uassoc": [ - "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", - "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." - ], - "array_unique": [ - "array array_unique(array input [, int sort_flags])", - "Removes duplicate values from array" - ], - "array_unshift": [ - "int array_unshift(array stack, mixed var [, mixed ...])", - "Pushes elements onto the beginning of the array" - ], - "array_values": [ - "array array_values(array input)", - "Return just the values from the input array" - ], - "array_walk": [ - "bool array_walk(array input, string funcname [, mixed userdata])", - "Apply a user function to every member of an array" - ], - "array_walk_recursive": [ - "bool array_walk_recursive(array input, string funcname [, mixed userdata])", - "Apply a user function recursively to every member of an array" - ], - "arsort": [ - "bool arsort(array &array_arg [, int sort_flags])", - "Sort an array in reverse order and maintain index association" - ], - "asin": [ - "float asin(float number)", - "Returns the arc sine of the number in radians" - ], - "asinh": [ - "float asinh(float number)", - "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" - ], - "asort": [ - "bool asort(array &array_arg [, int sort_flags])", - "Sort an array and maintain index association" - ], - "assert": [ - "int assert(string|bool assertion)", - "Checks if assertion is false" - ], - "assert_options": [ - "mixed assert_options(int what [, mixed value])", - "Set/get the various assert flags" - ], - "atan": [ - "float atan(float number)", - "Returns the arc tangent of the number in radians" - ], - "atan2": [ - "float atan2(float y, float x)", - "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" - ], - "atanh": [ - "float atanh(float number)", - "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" - ], - "attachIterator": [ - "void attachIterator(Iterator iterator[, mixed info])", - "Attach a new iterator" - ], - "base64_decode": [ - "string base64_decode(string str[, bool strict])", - "Decodes string using MIME base64 algorithm" - ], - "base64_encode": [ - "string base64_encode(string str)", - "Encodes string using MIME base64 algorithm" - ], - "base_convert": [ - "string base_convert(string number, int frombase, int tobase)", - "Converts a number in a string from any base <= 36 to any base <= 36" - ], - "basename": [ - "string basename(string path [, string suffix])", - "Returns the filename component of the path" - ], - "bcadd": [ - "string bcadd(string left_operand, string right_operand [, int scale])", - "Returns the sum of two arbitrary precision numbers" - ], - "bccomp": [ - "int bccomp(string left_operand, string right_operand [, int scale])", - "Compares two arbitrary precision numbers" - ], - "bcdiv": [ - "string bcdiv(string left_operand, string right_operand [, int scale])", - "Returns the quotient of two arbitrary precision numbers (division)" - ], - "bcmod": [ - "string bcmod(string left_operand, string right_operand)", - "Returns the modulus of the two arbitrary precision operands" - ], - "bcmul": [ - "string bcmul(string left_operand, string right_operand [, int scale])", - "Returns the multiplication of two arbitrary precision numbers" - ], - "bcpow": [ - "string bcpow(string x, string y [, int scale])", - "Returns the value of an arbitrary precision number raised to the power of another" - ], - "bcpowmod": [ - "string bcpowmod(string x, string y, string mod [, int scale])", - "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" - ], - "bcscale": [ - "bool bcscale(int scale)", - "Sets default scale parameter for all bc math functions" - ], - "bcsqrt": [ - "string bcsqrt(string operand [, int scale])", - "Returns the square root of an arbitray precision number" - ], - "bcsub": [ - "string bcsub(string left_operand, string right_operand [, int scale])", - "Returns the difference between two arbitrary precision numbers" - ], - "bin2hex": [ - "string bin2hex(string data)", - "Converts the binary representation of data to hex" - ], - "bind_textdomain_codeset": [ - "string bind_textdomain_codeset (string domain, string codeset)", - "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." - ], - "bindec": [ - "int bindec(string binary_number)", - "Returns the decimal equivalent of the binary number" - ], - "bindtextdomain": [ - "string bindtextdomain(string domain_name, string dir)", - "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" - ], - "birdstep_autocommit": [ - "bool birdstep_autocommit(int index)", - "" - ], - "birdstep_close": [ - "bool birdstep_close(int id)", - "" - ], - "birdstep_commit": [ - "bool birdstep_commit(int index)", - "" - ], - "birdstep_connect": [ - "int birdstep_connect(string server, string user, string pass)", - "" - ], - "birdstep_exec": [ - "int birdstep_exec(int index, string exec_str)", - "" - ], - "birdstep_fetch": [ - "bool birdstep_fetch(int index)", - "" - ], - "birdstep_fieldname": [ - "string birdstep_fieldname(int index, int col)", - "" - ], - "birdstep_fieldnum": [ - "int birdstep_fieldnum(int index)", - "" - ], - "birdstep_freeresult": [ - "bool birdstep_freeresult(int index)", - "" - ], - "birdstep_off_autocommit": [ - "bool birdstep_off_autocommit(int index)", - "" - ], - "birdstep_result": [ - "mixed birdstep_result(int index, mixed col)", - "" - ], - "birdstep_rollback": [ - "bool birdstep_rollback(int index)", - "" - ], - "bzcompress": [ - "string bzcompress(string source [, int blocksize100k [, int workfactor]])", - "Compresses a string into BZip2 encoded data" - ], - "bzdecompress": [ - "string bzdecompress(string source [, int small])", - "Decompresses BZip2 compressed data" - ], - "bzerrno": [ - "int bzerrno(resource bz)", - "Returns the error number" - ], - "bzerror": [ - "array bzerror(resource bz)", - "Returns the error number and error string in an associative array" - ], - "bzerrstr": [ - "string bzerrstr(resource bz)", - "Returns the error string" - ], - "bzopen": [ - "resource bzopen(string|int file|fp, string mode)", - "Opens a new BZip2 stream" - ], - "bzread": [ - "string bzread(resource bz[, int length])", - "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" - ], - "cal_days_in_month": [ - "int cal_days_in_month(int calendar, int month, int year)", - "Returns the number of days in a month for a given year and calendar" - ], - "cal_from_jd": [ - "array cal_from_jd(int jd, int calendar)", - "Converts from Julian Day Count to a supported calendar and return extended information" - ], - "cal_info": [ - "array cal_info([int calendar])", - "Returns information about a particular calendar" - ], - "cal_to_jd": [ - "int cal_to_jd(int calendar, int month, int day, int year)", - "Converts from a supported calendar to Julian Day Count" - ], - "call_user_func": [ - "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", - "Call a user function which is the first parameter" - ], - "call_user_func_array": [ - "mixed call_user_func_array(string function_name, array parameters)", - "Call a user function which is the first parameter with the arguments contained in array" - ], - "call_user_method": [ - "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", - "Call a user method on a specific object or class" - ], - "call_user_method_array": [ - "mixed call_user_method_array(string method_name, mixed object, array params)", - "Call a user method on a specific object or class using a parameter array" - ], - "ceil": [ - "float ceil(float number)", - "Returns the next highest integer value of the number" - ], - "chdir": [ - "bool chdir(string directory)", - "Change the current directory" - ], - "checkdate": [ - "bool checkdate(int month, int day, int year)", - "Returns true(1) if it is a valid date in gregorian calendar" - ], - "chgrp": [ - "bool chgrp(string filename, mixed group)", - "Change file group" - ], - "chmod": [ - "bool chmod(string filename, int mode)", - "Change file mode" - ], - "chown": [ - "bool chown(string filename, mixed user)", - "Change file owner" - ], - "chr": [ - "string chr(int ascii)", - "Converts ASCII code to a character" - ], - "chroot": [ - "bool chroot(string directory)", - "Change root directory" - ], - "chunk_split": [ - "string chunk_split(string str [, int chunklen [, string ending]])", - "Returns split line" - ], - "class_alias": [ - "bool class_alias(string user_class_name , string alias_name [, bool autoload])", - "Creates an alias for user defined class" - ], - "class_exists": [ - "bool class_exists(string classname [, bool autoload])", - "Checks if the class exists" - ], - "class_implements": [ - "array class_implements(mixed what [, bool autoload ])", - "Return all classes and interfaces implemented by SPL" - ], - "class_parents": [ - "array class_parents(object instance [, bool autoload = true])", - "Return an array containing the names of all parent classes" - ], - "clearstatcache": [ - "void clearstatcache([bool clear_realpath_cache[, string filename]])", - "Clear file stat cache" - ], - "closedir": [ - "void closedir([resource dir_handle])", - "Close directory connection identified by the dir_handle" - ], - "closelog": [ - "bool closelog()", - "Close connection to system logger" - ], - "collator_asort": [ - "bool collator_asort( Collator $coll, array(string) $arr )", - "* Sort array using specified collator, maintaining index association." - ], - "collator_compare": [ - "int collator_compare( Collator $coll, string $str1, string $str2 )", - "* Compare two strings." - ], - "collator_create": [ - "Collator collator_create( string $locale )", - "* Create collator." - ], - "collator_get_attribute": [ - "int collator_get_attribute( Collator $coll, int $attr )", - "* Get collation attribute value." - ], - "collator_get_error_code": [ - "int collator_get_error_code( Collator $coll )", - "* Get collator's last error code." - ], - "collator_get_error_message": [ - "string collator_get_error_message( Collator $coll )", - "* Get text description for collator's last error code." - ], - "collator_get_locale": [ - "string collator_get_locale( Collator $coll, int $type )", - "* Gets the locale name of the collator." - ], - "collator_get_sort_key": [ - "bool collator_get_sort_key( Collator $coll, string $str )", - "* Get a sort key for a string from a Collator. }}}" - ], - "collator_get_strength": [ - "int collator_get_strength(Collator coll)", - "* Returns the current collation strength." - ], - "collator_set_attribute": [ - "bool collator_set_attribute( Collator $coll, int $attr, int $val )", - "* Set collation attribute." - ], - "collator_set_strength": [ - "bool collator_set_strength(Collator coll, int strength)", - "* Set the collation strength." - ], - "collator_sort": [ - "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", - "* Sort array using specified collator." - ], - "collator_sort_with_sort_keys": [ - "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", - "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." - ], - "com_create_guid": [ - "string com_create_guid()", - "Generate a globally unique identifier (GUID)" - ], - "com_event_sink": [ - "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", - "Connect events from a COM object to a PHP object" - ], - "com_get_active_object": [ - "object com_get_active_object(string progid [, int code_page ])", - "Returns a handle to an already running instance of a COM object" - ], - "com_load_typelib": [ - "bool com_load_typelib(string typelib_name [, int case_insensitive])", - "Loads a Typelibrary and registers its constants" - ], - "com_message_pump": [ - "bool com_message_pump([int timeoutms])", - "Process COM messages, sleeping for up to timeoutms milliseconds" - ], - "com_print_typeinfo": [ - "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", - "Print out a PHP class definition for a dispatchable interface" - ], - "compact": [ - "array compact(mixed var_names [, mixed ...])", - "Creates a hash containing variables and their values" - ], - "compose_locale": [ - "static string compose_locale($array)", - "* Creates a locale by combining the parts of locale-ID passed * }}}" - ], - "confirm_extname_compiled": [ - "string confirm_extname_compiled(string arg)", - "Return a string to confirm that the module is compiled in" - ], - "connection_aborted": [ - "int connection_aborted()", - "Returns true if client disconnected" - ], - "connection_status": [ - "int connection_status()", - "Returns the connection status bitfield" - ], - "constant": [ - "mixed constant(string const_name)", - "Given the name of a constant this function will return the constant's associated value" - ], - "convert_cyr_string": [ - "string convert_cyr_string(string str, string from, string to)", - "Convert from one Cyrillic character set to another" - ], - "convert_uudecode": [ - "string convert_uudecode(string data)", - "decode a uuencoded string" - ], - "convert_uuencode": [ - "string convert_uuencode(string data)", - "uuencode a string" - ], - "copy": [ - "bool copy(string source_file, string destination_file [, resource context])", - "Copy a file" - ], - "cos": [ - "float cos(float number)", - "Returns the cosine of the number in radians" - ], - "cosh": [ - "float cosh(float number)", - "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" - ], - "count": [ - "int count(mixed var [, int mode])", - "Count the number of elements in a variable (usually an array)" - ], - "count_chars": [ - "mixed count_chars(string input [, int mode])", - "Returns info about what characters are used in input" - ], - "crc32": [ - "string crc32(string str)", - "Calculate the crc32 polynomial of a string" - ], - "create_function": [ - "string create_function(string args, string code)", - "Creates an anonymous function, and returns its name" - ], - "crypt": [ - "string crypt(string str [, string salt])", - "Hash a string" - ], - "ctype_alnum": [ - "bool ctype_alnum(mixed c)", - "Checks for alphanumeric character(s)" - ], - "ctype_alpha": [ - "bool ctype_alpha(mixed c)", - "Checks for alphabetic character(s)" - ], - "ctype_cntrl": [ - "bool ctype_cntrl(mixed c)", - "Checks for control character(s)" - ], - "ctype_digit": [ - "bool ctype_digit(mixed c)", - "Checks for numeric character(s)" - ], - "ctype_graph": [ - "bool ctype_graph(mixed c)", - "Checks for any printable character(s) except space" - ], - "ctype_lower": [ - "bool ctype_lower(mixed c)", - "Checks for lowercase character(s)" - ], - "ctype_print": [ - "bool ctype_print(mixed c)", - "Checks for printable character(s)" - ], - "ctype_punct": [ - "bool ctype_punct(mixed c)", - "Checks for any printable character which is not whitespace or an alphanumeric character" - ], - "ctype_space": [ - "bool ctype_space(mixed c)", - "Checks for whitespace character(s)" - ], - "ctype_upper": [ - "bool ctype_upper(mixed c)", - "Checks for uppercase character(s)" - ], - "ctype_xdigit": [ - "bool ctype_xdigit(mixed c)", - "Checks for character(s) representing a hexadecimal digit" - ], - "curl_close": [ - "void curl_close(resource ch)", - "Close a cURL session" - ], - "curl_copy_handle": [ - "resource curl_copy_handle(resource ch)", - "Copy a cURL handle along with all of it's preferences" - ], - "curl_errno": [ - "int curl_errno(resource ch)", - "Return an integer containing the last error number" - ], - "curl_error": [ - "string curl_error(resource ch)", - "Return a string contain the last error for the current session" - ], - "curl_exec": [ - "bool curl_exec(resource ch)", - "Perform a cURL session" - ], - "curl_getinfo": [ - "mixed curl_getinfo(resource ch [, int option])", - "Get information regarding a specific transfer" - ], - "curl_init": [ - "resource curl_init([string url])", - "Initialize a cURL session" - ], - "curl_multi_add_handle": [ - "int curl_multi_add_handle(resource mh, resource ch)", - "Add a normal cURL handle to a cURL multi handle" - ], - "curl_multi_close": [ - "void curl_multi_close(resource mh)", - "Close a set of cURL handles" - ], - "curl_multi_exec": [ - "int curl_multi_exec(resource mh, int &still_running)", - "Run the sub-connections of the current cURL handle" - ], - "curl_multi_getcontent": [ - "string curl_multi_getcontent(resource ch)", - "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" - ], - "curl_multi_info_read": [ - "array curl_multi_info_read(resource mh [, long msgs_in_queue])", - "Get information about the current transfers" - ], - "curl_multi_init": [ - "resource curl_multi_init()", - "Returns a new cURL multi handle" - ], - "curl_multi_remove_handle": [ - "int curl_multi_remove_handle(resource mh, resource ch)", - "Remove a multi handle from a set of cURL handles" - ], - "curl_multi_select": [ - "int curl_multi_select(resource mh[, double timeout])", - "Get all the sockets associated with the cURL extension, which can then be \"selected\"" - ], - "curl_setopt": [ - "bool curl_setopt(resource ch, int option, mixed value)", - "Set an option for a cURL transfer" - ], - "curl_setopt_array": [ - "bool curl_setopt_array(resource ch, array options)", - "Set an array of option for a cURL transfer" - ], - "curl_version": [ - "array curl_version([int version])", - "Return cURL version information." - ], - "current": [ - "mixed current(array array_arg)", - "Return the element currently pointed to by the internal array pointer" - ], - "date": [ - "string date(string format [, long timestamp])", - "Format a local date/time" - ], - "date_add": [ - "DateTime date_add(DateTime object, DateInterval interval)", - "Adds an interval to the current date in object." - ], - "date_create": [ - "DateTime date_create([string time[, DateTimeZone object]])", - "Returns new DateTime object" - ], - "date_create_from_format": [ - "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", - "Returns new DateTime object formatted according to the specified format" - ], - "date_date_set": [ - "DateTime date_date_set(DateTime object, long year, long month, long day)", - "Sets the date." - ], - "date_default_timezone_get": [ - "string date_default_timezone_get()", - "Gets the default timezone used by all date/time functions in a script" - ], - "date_default_timezone_set": [ - "bool date_default_timezone_set(string timezone_identifier)", - "Sets the default timezone used by all date/time functions in a script" - ], - "date_diff": [ - "DateInterval date_diff(DateTime object [, bool absolute])", - "Returns the difference between two DateTime objects." - ], - "date_format": [ - "string date_format(DateTime object, string format)", - "Returns date formatted according to given format" - ], - "date_get_last_errors": [ - "array date_get_last_errors()", - "Returns the warnings and errors found while parsing a date/time string." - ], - "date_interval_create_from_date_string": [ - "DateInterval date_interval_create_from_date_string(string time)", - "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" - ], - "date_interval_format": [ - "string date_interval_format(DateInterval object, string format)", - "Formats the interval." - ], - "date_isodate_set": [ - "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", - "Sets the ISO date." - ], - "date_modify": [ - "DateTime date_modify(DateTime object, string modify)", - "Alters the timestamp." - ], - "date_offset_get": [ - "long date_offset_get(DateTime object)", - "Returns the DST offset." - ], - "date_parse": [ - "array date_parse(string date)", - "Returns associative array with detailed info about given date" - ], - "date_parse_from_format": [ - "array date_parse_from_format(string format, string date)", - "Returns associative array with detailed info about given date" - ], - "date_sub": [ - "DateTime date_sub(DateTime object, DateInterval interval)", - "Subtracts an interval to the current date in object." - ], - "date_sun_info": [ - "array date_sun_info(long time, float latitude, float longitude)", - "Returns an array with information about sun set/rise and twilight begin/end" - ], - "date_sunrise": [ - "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", - "Returns time of sunrise for a given day and location" - ], - "date_sunset": [ - "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", - "Returns time of sunset for a given day and location" - ], - "date_time_set": [ - "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", - "Sets the time." - ], - "date_timestamp_get": [ - "long date_timestamp_get(DateTime object)", - "Gets the Unix timestamp." - ], - "date_timestamp_set": [ - "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", - "Sets the date and time based on an Unix timestamp." - ], - "date_timezone_get": [ - "DateTimeZone date_timezone_get(DateTime object)", - "Return new DateTimeZone object relative to give DateTime" - ], - "date_timezone_set": [ - "DateTime date_timezone_set(DateTime object, DateTimeZone object)", - "Sets the timezone for the DateTime object." - ], - "datefmt_create": [ - "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", - "* Create formatter." - ], - "datefmt_format": [ - "string datefmt_format( [mixed]int $args or array $args )", - "* Format the time value as a string. }}}" - ], - "datefmt_get_calendar": [ - "string datefmt_get_calendar( IntlDateFormatter $mf )", - "* Get formatter calendar." - ], - "datefmt_get_datetype": [ - "string datefmt_get_datetype( IntlDateFormatter $mf )", - "* Get formatter datetype." - ], - "datefmt_get_error_code": [ - "int datefmt_get_error_code( IntlDateFormatter $nf )", - "* Get formatter's last error code." - ], - "datefmt_get_error_message": [ - "string datefmt_get_error_message( IntlDateFormatter $coll )", - "* Get text description for formatter's last error code." - ], - "datefmt_get_locale": [ - "string datefmt_get_locale(IntlDateFormatter $mf)", - "* Get formatter locale." - ], - "datefmt_get_pattern": [ - "string datefmt_get_pattern( IntlDateFormatter $mf )", - "* Get formatter pattern." - ], - "datefmt_get_timetype": [ - "string datefmt_get_timetype( IntlDateFormatter $mf )", - "* Get formatter timetype." - ], - "datefmt_get_timezone_id": [ - "string datefmt_get_timezone_id( IntlDateFormatter $mf )", - "* Get formatter timezone_id." - ], - "datefmt_isLenient": [ - "string datefmt_isLenient(IntlDateFormatter $mf)", - "* Get formatter locale." - ], - "datefmt_localtime": [ - "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", - "* Parse the string $value to a localtime array }}}" - ], - "datefmt_parse": [ - "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", - "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" - ], - "datefmt_setLenient": [ - "string datefmt_setLenient(IntlDateFormatter $mf)", - "* Set formatter lenient." - ], - "datefmt_set_calendar": [ - "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", - "* Set formatter calendar." - ], - "datefmt_set_pattern": [ - "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", - "* Set formatter pattern." - ], - "datefmt_set_timezone_id": [ - "bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", - "* Set formatter timezone_id." - ], - "dba_close": [ - "void dba_close(resource handle)", - "Closes database" - ], - "dba_delete": [ - "bool dba_delete(string key, resource handle)", - "Deletes the entry associated with key If inifile: remove all other key lines" - ], - "dba_exists": [ - "bool dba_exists(string key, resource handle)", - "Checks, if the specified key exists" - ], - "dba_fetch": [ - "string dba_fetch(string key, [int skip ,] resource handle)", - "Fetches the data associated with key" - ], - "dba_firstkey": [ - "string dba_firstkey(resource handle)", - "Resets the internal key pointer and returns the first key" - ], - "dba_handlers": [ - "array dba_handlers([bool full_info])", - "List configured database handlers" - ], - "dba_insert": [ - "bool dba_insert(string key, string value, resource handle)", - "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" - ], - "dba_key_split": [ - "array|false dba_key_split(string key)", - "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" - ], - "dba_list": [ - "array dba_list()", - "List opened databases" - ], - "dba_nextkey": [ - "string dba_nextkey(resource handle)", - "Returns the next key" - ], - "dba_open": [ - "resource dba_open(string path, string mode [, string handlername, string ...])", - "Opens path using the specified handler in mode" - ], - "dba_optimize": [ - "bool dba_optimize(resource handle)", - "Optimizes (e.g. clean up, vacuum) database" - ], - "dba_popen": [ - "resource dba_popen(string path, string mode [, string handlername, string ...])", - "Opens path using the specified handler in mode persistently" - ], - "dba_replace": [ - "bool dba_replace(string key, string value, resource handle)", - "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" - ], - "dba_sync": [ - "bool dba_sync(resource handle)", - "Synchronizes database" - ], - "dcgettext": [ - "string dcgettext(string domain_name, string msgid, long category)", - "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" - ], - "dcngettext": [ - "string dcngettext(string domain, string msgid1, string msgid2, int n, int category)", - "Plural version of dcgettext()" - ], - "debug_backtrace": [ - "array debug_backtrace([bool provide_object])", - "Return backtrace as array" - ], - "debug_print_backtrace": [ - "void debug_print_backtrace()", - "Prints a PHP backtrace" - ], - "debug_zval_dump": [ - "void debug_zval_dump(mixed var)", - "Dumps a string representation of an internal Zend value to output" - ], - "decbin": [ - "string decbin(int decimal_number)", - "Returns a string containing a binary representation of the number" - ], - "dechex": [ - "string dechex(int decimal_number)", - "Returns a string containing a hexadecimal representation of the given number" - ], - "decoct": [ - "string decoct(int decimal_number)", - "Returns a string containing an octal representation of the given number" - ], - "define": [ - "bool define(string constant_name, mixed value, bool case_insensitive=false)", - "Define a new constant" - ], - "define_syslog_variables": [ - "void define_syslog_variables()", - "Initializes all syslog-related variables" - ], - "defined": [ - "bool defined(string constant_name)", - "Check whether a constant exists" - ], - "deg2rad": [ - "float deg2rad(float number)", - "Converts the number in degrees to the radian equivalent" - ], - "dgettext": [ - "string dgettext(string domain_name, string msgid)", - "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" - ], - "die": [ - "void die([mixed status])", - "Output a message and terminate the current script" - ], - "dir": [ - "object dir(string directory[, resource context])", - "Directory class with properties, handle and class and methods read, rewind and close" - ], - "dirname": [ - "string dirname(string path)", - "Returns the directory name component of the path" - ], - "disk_free_space": [ - "float disk_free_space(string path)", - "Get free disk space for filesystem that path is on" - ], - "disk_total_space": [ - "float disk_total_space(string path)", - "Get total disk space for filesystem that path is on" - ], - "display_disabled_function": [ - "void display_disabled_function()", - "Dummy function which displays an error when a disabled function is called." - ], - "dl": [ - "int dl(string extension_filename)", - "Load a PHP extension at runtime" - ], - "dngettext": [ - "string dngettext(string domain, string msgid1, string msgid2, int count)", - "Plural version of dgettext()" - ], - "dns_check_record": [ - "bool dns_check_record(string host [, string type])", - "Check DNS records corresponding to a given Internet host name or IP address" - ], - "dns_get_mx": [ - "bool dns_get_mx(string hostname, array mxhosts [, array weight])", - "Get MX records corresponding to a given Internet host name" - ], - "dns_get_record": [ - "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", - "Get any Resource Record corresponding to a given Internet host name" - ], - "dom_attr_is_id": [ - "bool dom_attr_is_id()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" - ], - "dom_characterdata_append_data": [ - "void dom_characterdata_append_data(string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" - ], - "dom_characterdata_delete_data": [ - "void dom_characterdata_delete_data(int offset, int count)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" - ], - "dom_characterdata_insert_data": [ - "void dom_characterdata_insert_data(int offset, string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" - ], - "dom_characterdata_replace_data": [ - "void dom_characterdata_replace_data(int offset, int count, string arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" - ], - "dom_characterdata_substring_data": [ - "string dom_characterdata_substring_data(int offset, int count)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" - ], - "dom_document_adopt_node": [ - "DOMNode dom_document_adopt_node(DOMNode source)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" - ], - "dom_document_create_attribute": [ - "DOMAttr dom_document_create_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" - ], - "dom_document_create_attribute_ns": [ - "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" - ], - "dom_document_create_cdatasection": [ - "DOMCdataSection dom_document_create_cdatasection(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" - ], - "dom_document_create_comment": [ - "DOMComment dom_document_create_comment(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" - ], - "dom_document_create_document_fragment": [ - "DOMDocumentFragment dom_document_create_document_fragment()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" - ], - "dom_document_create_element": [ - "DOMElement dom_document_create_element(string tagName [, string value])", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" - ], - "dom_document_create_element_ns": [ - "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" - ], - "dom_document_create_entity_reference": [ - "DOMEntityReference dom_document_create_entity_reference(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" - ], - "dom_document_create_processing_instruction": [ - "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" - ], - "dom_document_create_text_node": [ - "DOMText dom_document_create_text_node(string data)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" - ], - "dom_document_get_element_by_id": [ - "DOMElement dom_document_get_element_by_id(string elementId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" - ], - "dom_document_get_elements_by_tag_name": [ - "DOMNodeList dom_document_get_elements_by_tag_name(string tagname)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" - ], - "dom_document_get_elements_by_tag_name_ns": [ - "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" - ], - "dom_document_import_node": [ - "DOMNode dom_document_import_node(DOMNode importedNode, bool deep)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" - ], - "dom_document_load": [ - "DOMNode dom_document_load(string source [, int options])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" - ], - "dom_document_load_html": [ - "DOMNode dom_document_load_html(string source)", - "Since: DOM extended" - ], - "dom_document_load_html_file": [ - "DOMNode dom_document_load_html_file(string source)", - "Since: DOM extended" - ], - "dom_document_loadxml": [ - "DOMNode dom_document_loadxml(string source [, int options])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" - ], - "dom_document_normalize_document": [ - "void dom_document_normalize_document()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" - ], - "dom_document_relaxNG_validate_file": [ - "bool dom_document_relaxNG_validate_file(string filename); */", - "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" - ], - "dom_document_relaxNG_validate_xml": [ - "bool dom_document_relaxNG_validate_xml(string source); */", - "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" - ], - "dom_document_rename_node": [ - "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" - ], - "dom_document_save": [ - "int dom_document_save(string file)", - "Convenience method to save to file" - ], - "dom_document_save_html": [ - "string dom_document_save_html()", - "Convenience method to output as html" - ], - "dom_document_save_html_file": [ - "int dom_document_save_html_file(string file)", - "Convenience method to save to file as html" - ], - "dom_document_savexml": [ - "string dom_document_savexml([node n])", - "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" - ], - "dom_document_schema_validate": [ - "bool dom_document_schema_validate(string source); */", - "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" - ], - "dom_document_schema_validate_file": [ - "bool dom_document_schema_validate_file(string filename); */", - "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" - ], - "dom_document_validate": [ - "bool dom_document_validate()", - "Since: DOM extended" - ], - "dom_document_xinclude": [ - "int dom_document_xinclude([int options])", - "Substitutues xincludes in a DomDocument" - ], - "dom_domconfiguration_can_set_parameter": [ - "bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" - ], - "dom_domconfiguration_get_parameter": [ - "domdomuserdata dom_domconfiguration_get_parameter(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" - ], - "dom_domconfiguration_set_parameter": [ - "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" - ], - "dom_domerrorhandler_handle_error": [ - "dom_bool dom_domerrorhandler_handle_error(domerror error)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" - ], - "dom_domimplementation_create_document": [ - "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" - ], - "dom_domimplementation_create_document_type": [ - "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" - ], - "dom_domimplementation_get_feature": [ - "DOMNode dom_domimplementation_get_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" - ], - "dom_domimplementation_has_feature": [ - "bool dom_domimplementation_has_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" - ], - "dom_domimplementationlist_item": [ - "domdomimplementation dom_domimplementationlist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" - ], - "dom_domimplementationsource_get_domimplementation": [ - "domdomimplementation dom_domimplementationsource_get_domimplementation(string features)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" - ], - "dom_domimplementationsource_get_domimplementations": [ - "domimplementationlist dom_domimplementationsource_get_domimplementations(string features)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" - ], - "dom_domstringlist_item": [ - "domstring dom_domstringlist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" - ], - "dom_element_get_attribute": [ - "string dom_element_get_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" - ], - "dom_element_get_attribute_node": [ - "DOMAttr dom_element_get_attribute_node(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" - ], - "dom_element_get_attribute_node_ns": [ - "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" - ], - "dom_element_get_attribute_ns": [ - "string dom_element_get_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" - ], - "dom_element_get_elements_by_tag_name": [ - "DOMNodeList dom_element_get_elements_by_tag_name(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" - ], - "dom_element_get_elements_by_tag_name_ns": [ - "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" - ], - "dom_element_has_attribute": [ - "bool dom_element_has_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" - ], - "dom_element_has_attribute_ns": [ - "bool dom_element_has_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" - ], - "dom_element_remove_attribute": [ - "void dom_element_remove_attribute(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" - ], - "dom_element_remove_attribute_node": [ - "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" - ], - "dom_element_remove_attribute_ns": [ - "void dom_element_remove_attribute_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" - ], - "dom_element_set_attribute": [ - "void dom_element_set_attribute(string name, string value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" - ], - "dom_element_set_attribute_node": [ - "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" - ], - "dom_element_set_attribute_node_ns": [ - "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" - ], - "dom_element_set_attribute_ns": [ - "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" - ], - "dom_element_set_id_attribute": [ - "void dom_element_set_id_attribute(string name, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" - ], - "dom_element_set_id_attribute_node": [ - "void dom_element_set_id_attribute_node(attr idAttr, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" - ], - "dom_element_set_id_attribute_ns": [ - "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" - ], - "dom_import_simplexml": [ - "somNode dom_import_simplexml(sxeobject node)", - "Get a simplexml_element object from dom to allow for processing" - ], - "dom_namednodemap_get_named_item": [ - "DOMNode dom_namednodemap_get_named_item(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" - ], - "dom_namednodemap_get_named_item_ns": [ - "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" - ], - "dom_namednodemap_item": [ - "DOMNode dom_namednodemap_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" - ], - "dom_namednodemap_remove_named_item": [ - "DOMNode dom_namednodemap_remove_named_item(string name)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" - ], - "dom_namednodemap_remove_named_item_ns": [ - "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" - ], - "dom_namednodemap_set_named_item": [ - "DOMNode dom_namednodemap_set_named_item(DOMNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" - ], - "dom_namednodemap_set_named_item_ns": [ - "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" - ], - "dom_namelist_get_name": [ - "string dom_namelist_get_name(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" - ], - "dom_namelist_get_namespace_uri": [ - "string dom_namelist_get_namespace_uri(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" - ], - "dom_node_append_child": [ - "DomNode dom_node_append_child(DomNode newChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" - ], - "dom_node_clone_node": [ - "DomNode dom_node_clone_node(bool deep)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" - ], - "dom_node_compare_document_position": [ - "short dom_node_compare_document_position(DomNode other)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" - ], - "dom_node_get_feature": [ - "DomNode dom_node_get_feature(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" - ], - "dom_node_get_user_data": [ - "mixed dom_node_get_user_data(string key)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" - ], - "dom_node_has_attributes": [ - "bool dom_node_has_attributes()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" - ], - "dom_node_has_child_nodes": [ - "bool dom_node_has_child_nodes()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" - ], - "dom_node_insert_before": [ - "domnode dom_node_insert_before(DomNode newChild, DomNode refChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" - ], - "dom_node_is_default_namespace": [ - "bool dom_node_is_default_namespace(string namespaceURI)", - "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" - ], - "dom_node_is_equal_node": [ - "bool dom_node_is_equal_node(DomNode arg)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" - ], - "dom_node_is_same_node": [ - "bool dom_node_is_same_node(DomNode other)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" - ], - "dom_node_is_supported": [ - "bool dom_node_is_supported(string feature, string version)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" - ], - "dom_node_lookup_namespace_uri": [ - "string dom_node_lookup_namespace_uri(string prefix)", - "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" - ], - "dom_node_lookup_prefix": [ - "string dom_node_lookup_prefix(string namespaceURI)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" - ], - "dom_node_normalize": [ - "void dom_node_normalize()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" - ], - "dom_node_remove_child": [ - "DomNode dom_node_remove_child(DomNode oldChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" - ], - "dom_node_replace_child": [ - "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" - ], - "dom_node_set_user_data": [ - "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" - ], - "dom_nodelist_item": [ - "DOMNode dom_nodelist_item(int index)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" - ], - "dom_string_extend_find_offset16": [ - "int dom_string_extend_find_offset16(int offset32)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" - ], - "dom_string_extend_find_offset32": [ - "int dom_string_extend_find_offset32(int offset16)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" - ], - "dom_text_is_whitespace_in_element_content": [ - "bool dom_text_is_whitespace_in_element_content()", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" - ], - "dom_text_replace_whole_text": [ - "DOMText dom_text_replace_whole_text(string content)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" - ], - "dom_text_split_text": [ - "DOMText dom_text_split_text(int offset)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" - ], - "dom_userdatahandler_handle": [ - "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" - ], - "dom_xpath_evaluate": [ - "mixed dom_xpath_evaluate(string expr [,DOMNode context])", - "" - ], - "dom_xpath_query": [ - "DOMNodeList dom_xpath_query(string expr [,DOMNode context])", - "" - ], - "dom_xpath_register_ns": [ - "bool dom_xpath_register_ns(string prefix, string uri)", - "" - ], - "dom_xpath_register_php_functions": [ - "void dom_xpath_register_php_functions()", - "" - ], - "each": [ - "array each(array arr)", - "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" - ], - "easter_date": [ - "int easter_date([int year])", - "Return the timestamp of midnight on Easter of a given year (defaults to current year)" - ], - "easter_days": [ - "int easter_days([int year, [int method]])", - "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" - ], - "echo": [ - "void echo(string arg1 [, string ...])", - "Output one or more strings" - ], - "empty": [ - "bool empty(mixed var)", - "Determine whether a variable is empty" - ], - "enchant_broker_describe": [ - "array enchant_broker_describe(resource broker)", - "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" - ], - "enchant_broker_dict_exists": [ - "bool enchant_broker_dict_exists(resource broker, string tag)", - "Whether a dictionary exists or not. Using non-empty tag" - ], - "enchant_broker_free": [ - "bool enchant_broker_free(resource broker)", - "Destroys the broker object and its dictionnaries" - ], - "enchant_broker_free_dict": [ - "resource enchant_broker_free_dict(resource dict)", - "Free the dictionary resource" - ], - "enchant_broker_get_dict_path": [ - "string enchant_broker_get_dict_path(resource broker, int dict_type)", - "Get the directory path for a given backend, works with ispell and myspell" - ], - "enchant_broker_get_error": [ - "string enchant_broker_get_error(resource broker)", - "Returns the last error of the broker" - ], - "enchant_broker_init": [ - "resource enchant_broker_init()", - "create a new broker object capable of requesting" - ], - "enchant_broker_list_dicts": [ - "string enchant_broker_list_dicts(resource broker)", - "Lists the dictionaries available for the given broker" - ], - "enchant_broker_request_dict": [ - "resource enchant_broker_request_dict(resource broker, string tag)", - "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" - ], - "enchant_broker_request_pwl_dict": [ - "resource enchant_broker_request_pwl_dict(resource broker, string filename)", - "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." - ], - "enchant_broker_set_dict_path": [ - "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", - "Set the directory path for a given backend, works with ispell and myspell" - ], - "enchant_broker_set_ordering": [ - "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", - "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." - ], - "enchant_dict_add_to_personal": [ - "void enchant_dict_add_to_personal(resource dict, string word)", - "add 'word' to personal word list" - ], - "enchant_dict_add_to_session": [ - "void enchant_dict_add_to_session(resource dict, string word)", - "add 'word' to this spell-checking session" - ], - "enchant_dict_check": [ - "bool enchant_dict_check(resource dict, string word)", - "If the word is correctly spelled return true, otherwise return false" - ], - "enchant_dict_describe": [ - "array enchant_dict_describe(resource dict)", - "Describes an individual dictionary 'dict'" - ], - "enchant_dict_get_error": [ - "string enchant_dict_get_error(resource dict)", - "Returns the last error of the current spelling-session" - ], - "enchant_dict_is_in_session": [ - "bool enchant_dict_is_in_session(resource dict, string word)", - "whether or not 'word' exists in this spelling-session" - ], - "enchant_dict_quick_check": [ - "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", - "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." - ], - "enchant_dict_store_replacement": [ - "void enchant_dict_store_replacement(resource dict, string mis, string cor)", - "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." - ], - "enchant_dict_suggest": [ - "array enchant_dict_suggest(resource dict, string word)", - "Will return a list of values if any of those pre-conditions are not met." - ], - "end": [ - "mixed end(array array_arg)", - "Advances array argument's internal pointer to the last element and return it" - ], - "ereg": [ - "int ereg(string pattern, string string [, array registers])", - "Regular expression match" - ], - "ereg_replace": [ - "string ereg_replace(string pattern, string replacement, string string)", - "Replace regular expression" - ], - "eregi": [ - "int eregi(string pattern, string string [, array registers])", - "Case-insensitive regular expression match" - ], - "eregi_replace": [ - "string eregi_replace(string pattern, string replacement, string string)", - "Case insensitive replace regular expression" - ], - "error_get_last": [ - "array error_get_last()", - "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." - ], - "error_log": [ - "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", - "Send an error message somewhere" - ], - "error_reporting": [ - "int error_reporting([int new_error_level])", - "Return the current error_reporting level, and if an argument was passed - change to the new level" - ], - "escapeshellarg": [ - "string escapeshellarg(string arg)", - "Quote and escape an argument for use in a shell command" - ], - "escapeshellcmd": [ - "string escapeshellcmd(string command)", - "Escape shell metacharacters" - ], - "exec": [ - "string exec(string command [, array &output [, int &return_value]])", - "Execute an external program" - ], - "exif_imagetype": [ - "int exif_imagetype(string imagefile)", - "Get the type of an image" - ], - "exif_read_data": [ - "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", - "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" - ], - "exif_tagname": [ - "string exif_tagname(index)", - "Get headername for index or false if not defined" - ], - "exif_thumbnail": [ - "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", - "Reads the embedded thumbnail" - ], - "exit": [ - "void exit([mixed status])", - "Output a message and terminate the current script" - ], - "exp": [ - "float exp(float number)", - "Returns e raised to the power of the number" - ], - "explode": [ - "array explode(string separator, string str [, int limit])", - "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." - ], - "expm1": [ - "float expm1(float number)", - "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" - ], - "extension_loaded": [ - "bool extension_loaded(string extension_name)", - "Returns true if the named extension is loaded" - ], - "extract": [ - "int extract(array var_array [, int extract_type [, string prefix]])", - "Imports variables into symbol table from an array" - ], - "ezmlm_hash": [ - "int ezmlm_hash(string addr)", - "Calculate EZMLM list hash value." - ], - "fclose": [ - "bool fclose(resource fp)", - "Close an open file pointer" - ], - "feof": [ - "bool feof(resource fp)", - "Test for end-of-file on a file pointer" - ], - "fflush": [ - "bool fflush(resource fp)", - "Flushes output" - ], - "fgetc": [ - "string fgetc(resource fp)", - "Get a character from file pointer" - ], - "fgetcsv": [ - "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", - "Get line from file pointer and parse for CSV fields" - ], - "fgets": [ - "string fgets(resource fp[, int length])", - "Get a line from file pointer" - ], - "fgetss": [ - "string fgetss(resource fp [, int length [, string allowable_tags]])", - "Get a line from file pointer and strip HTML tags" - ], - "file": [ - "array file(string filename [, int flags[, resource context]])", - "Read entire file into an array" - ], - "file_exists": [ - "bool file_exists(string filename)", - "Returns true if filename exists" - ], - "file_get_contents": [ - "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", - "Read the entire file into a string" - ], - "file_put_contents": [ - "int file_put_contents(string file, mixed data [, int flags [, resource context]])", - "Write/Create a file with contents data and return the number of bytes written" - ], - "fileatime": [ - "int fileatime(string filename)", - "Get last access time of file" - ], - "filectime": [ - "int filectime(string filename)", - "Get inode modification time of file" - ], - "filegroup": [ - "int filegroup(string filename)", - "Get file group" - ], - "fileinode": [ - "int fileinode(string filename)", - "Get file inode" - ], - "filemtime": [ - "int filemtime(string filename)", - "Get last modification time of file" - ], - "fileowner": [ - "int fileowner(string filename)", - "Get file owner" - ], - "fileperms": [ - "int fileperms(string filename)", - "Get file permissions" - ], - "filesize": [ - "int filesize(string filename)", - "Get file size" - ], - "filetype": [ - "string filetype(string filename)", - "Get file type" - ], - "filter_has_var": [ - "mixed filter_has_var(constant type, string variable_name)", - "* Returns true if the variable with the name 'name' exists in source." - ], - "filter_input": [ - "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", - "* Returns the filtered variable 'name'* from source `type`." - ], - "filter_input_array": [ - "mixed filter_input_array(constant type, [, mixed options]])", - "* Returns an array with all arguments defined in 'definition'." - ], - "filter_var": [ - "mixed filter_var(mixed variable [, long filter [, mixed options]])", - "* Returns the filtered version of the vriable." - ], - "filter_var_array": [ - "mixed filter_var_array(array data, [, mixed options]])", - "* Returns an array with all arguments defined in 'definition'." - ], - "finfo_buffer": [ - "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", - "Return infromation about a string buffer." - ], - "finfo_close": [ - "resource finfo_close(resource finfo)", - "Close fileinfo resource." - ], - "finfo_file": [ - "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", - "Return information about a file." - ], - "finfo_open": [ - "resource finfo_open([int options [, string arg]])", - "Create a new fileinfo resource." - ], - "finfo_set_flags": [ - "bool finfo_set_flags(resource finfo, int options)", - "Set libmagic configuration options." - ], - "floatval": [ - "float floatval(mixed var)", - "Get the float value of a variable" - ], - "flock": [ - "bool flock(resource fp, int operation [, int &wouldblock])", - "Portable file locking" - ], - "floor": [ - "float floor(float number)", - "Returns the next lowest integer value from the number" - ], - "flush": [ - "void flush()", - "Flush the output buffer" - ], - "fmod": [ - "float fmod(float x, float y)", - "Returns the remainder of dividing x by y as a float" - ], - "fnmatch": [ - "bool fnmatch(string pattern, string filename [, int flags])", - "Match filename against pattern" - ], - "fopen": [ - "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", - "Open a file or a URL and return a file pointer" - ], - "forward_static_call": [ - "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", - "Call a user function which is the first parameter" - ], - "fpassthru": [ - "int fpassthru(resource fp)", - "Output all remaining data from a file pointer" - ], - "fprintf": [ - "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", - "Output a formatted string into a stream" - ], - "fputcsv": [ - "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", - "Format line as CSV and write to file pointer" - ], - "fread": [ - "string fread(resource fp, int length)", - "Binary-safe file read" - ], - "frenchtojd": [ - "int frenchtojd(int month, int day, int year)", - "Converts a french republic calendar date to julian day count" - ], - "fscanf": [ - "mixed fscanf(resource stream, string format [, string ...])", - "Implements a mostly ANSI compatible fscanf()" - ], - "fseek": [ - "int fseek(resource fp, int offset [, int whence])", - "Seek on a file pointer" - ], - "fsockopen": [ - "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", - "Open Internet or Unix domain socket connection" - ], - "fstat": [ - "array fstat(resource fp)", - "Stat() on a filehandle" - ], - "ftell": [ - "int ftell(resource fp)", - "Get file pointer's read/write position" - ], - "ftok": [ - "int ftok(string pathname, string proj)", - "Convert a pathname and a project identifier to a System V IPC key" - ], - "ftp_alloc": [ - "bool ftp_alloc(resource stream, int size[, &response])", - "Attempt to allocate space on the remote FTP server" - ], - "ftp_cdup": [ - "bool ftp_cdup(resource stream)", - "Changes to the parent directory" - ], - "ftp_chdir": [ - "bool ftp_chdir(resource stream, string directory)", - "Changes directories" - ], - "ftp_chmod": [ - "int ftp_chmod(resource stream, int mode, string filename)", - "Sets permissions on a file" - ], - "ftp_close": [ - "bool ftp_close(resource stream)", - "Closes the FTP stream" - ], - "ftp_connect": [ - "resource ftp_connect(string host [, int port [, int timeout]])", - "Opens a FTP stream" - ], - "ftp_delete": [ - "bool ftp_delete(resource stream, string file)", - "Deletes a file" - ], - "ftp_exec": [ - "bool ftp_exec(resource stream, string command)", - "Requests execution of a program on the FTP server" - ], - "ftp_fget": [ - "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", - "Retrieves a file from the FTP server and writes it to an open file" - ], - "ftp_fput": [ - "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", - "Stores a file from an open file to the FTP server" - ], - "ftp_get": [ - "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", - "Retrieves a file from the FTP server and writes it to a local file" - ], - "ftp_get_option": [ - "mixed ftp_get_option(resource stream, int option)", - "Gets an FTP option" - ], - "ftp_login": [ - "bool ftp_login(resource stream, string username, string password)", - "Logs into the FTP server" - ], - "ftp_mdtm": [ - "int ftp_mdtm(resource stream, string filename)", - "Returns the last modification time of the file, or -1 on error" - ], - "ftp_mkdir": [ - "string ftp_mkdir(resource stream, string directory)", - "Creates a directory and returns the absolute path for the new directory or false on error" - ], - "ftp_nb_continue": [ - "int ftp_nb_continue(resource stream)", - "Continues retrieving/sending a file nbronously" - ], - "ftp_nb_fget": [ - "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", - "Retrieves a file from the FTP server asynchronly and writes it to an open file" - ], - "ftp_nb_fput": [ - "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", - "Stores a file from an open file to the FTP server nbronly" - ], - "ftp_nb_get": [ - "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", - "Retrieves a file from the FTP server nbhronly and writes it to a local file" - ], - "ftp_nb_put": [ - "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", - "Stores a file on the FTP server" - ], - "ftp_nlist": [ - "array ftp_nlist(resource stream, string directory)", - "Returns an array of filenames in the given directory" - ], - "ftp_pasv": [ - "bool ftp_pasv(resource stream, bool pasv)", - "Turns passive mode on or off" - ], - "ftp_put": [ - "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", - "Stores a file on the FTP server" - ], - "ftp_pwd": [ - "string ftp_pwd(resource stream)", - "Returns the present working directory" - ], - "ftp_raw": [ - "array ftp_raw(resource stream, string command)", - "Sends a literal command to the FTP server" - ], - "ftp_rawlist": [ - "array ftp_rawlist(resource stream, string directory [, bool recursive])", - "Returns a detailed listing of a directory as an array of output lines" - ], - "ftp_rename": [ - "bool ftp_rename(resource stream, string src, string dest)", - "Renames the given file to a new path" - ], - "ftp_rmdir": [ - "bool ftp_rmdir(resource stream, string directory)", - "Removes a directory" - ], - "ftp_set_option": [ - "bool ftp_set_option(resource stream, int option, mixed value)", - "Sets an FTP option" - ], - "ftp_site": [ - "bool ftp_site(resource stream, string cmd)", - "Sends a SITE command to the server" - ], - "ftp_size": [ - "int ftp_size(resource stream, string filename)", - "Returns the size of the file, or -1 on error" - ], - "ftp_ssl_connect": [ - "resource ftp_ssl_connect(string host [, int port [, int timeout]])", - "Opens a FTP-SSL stream" - ], - "ftp_systype": [ - "string ftp_systype(resource stream)", - "Returns the system type identifier" - ], - "ftruncate": [ - "bool ftruncate(resource fp, int size)", - "Truncate file to 'size' length" - ], - "func_get_arg": [ - "mixed func_get_arg(int arg_num)", - "Get the $arg_num'th argument that was passed to the function" - ], - "func_get_args": [ - "array func_get_args()", - "Get an array of the arguments that were passed to the function" - ], - "func_num_args": [ - "int func_num_args()", - "Get the number of arguments that were passed to the function" - ], - "function ": ["", ""], - "foreach ": ["", ""], - "function_exists": [ - "bool function_exists(string function_name)", - "Checks if the function exists" - ], - "fwrite": [ - "int fwrite(resource fp, string str [, int length])", - "Binary-safe file write" - ], - "gc_collect_cycles": [ - "int gc_collect_cycles()", - "Forces collection of any existing garbage cycles. Returns number of freed zvals" - ], - "gc_disable": [ - "void gc_disable()", - "Deactivates the circular reference collector" - ], - "gc_enable": [ - "void gc_enable()", - "Activates the circular reference collector" - ], - "gc_enabled": [ - "void gc_enabled()", - "Returns status of the circular reference collector" - ], - "gd_info": [ - "array gd_info()", - "" - ], - "getKeywords": [ - "static array getKeywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}" - ], - "get_browser": [ - "mixed get_browser([string browser_name [, bool return_array]])", - "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." - ], - "get_called_class": [ - "string get_called_class()", - "Retrieves the \"Late Static Binding\" class name" - ], - "get_cfg_var": [ - "mixed get_cfg_var(string option_name)", - "Get the value of a PHP configuration option" - ], - "get_class": [ - "string get_class([object object])", - "Retrieves the class name" - ], - "get_class_methods": [ - "array get_class_methods(mixed class)", - "Returns an array of method names for class or class instance." - ], - "get_class_vars": [ - "array get_class_vars(string class_name)", - "Returns an array of default properties of the class." - ], - "get_current_user": [ - "string get_current_user()", - "Get the name of the owner of the current PHP script" - ], - "get_declared_classes": [ - "array get_declared_classes()", - "Returns an array of all declared classes." - ], - "get_declared_interfaces": [ - "array get_declared_interfaces()", - "Returns an array of all declared interfaces." - ], - "get_defined_constants": [ - "array get_defined_constants([bool categorize])", - "Return an array containing the names and values of all defined constants" - ], - "get_defined_functions": [ - "array get_defined_functions()", - "Returns an array of all defined functions" - ], - "get_defined_vars": [ - "array get_defined_vars()", - "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" - ], - "get_display_language": [ - "static string get_display_language($locale[, $in_locale = null])", - "* gets the language for the $locale in $in_locale or default_locale" - ], - "get_display_name": [ - "static string get_display_name($locale[, $in_locale = null])", - "* gets the name for the $locale in $in_locale or default_locale" - ], - "get_display_region": [ - "static string get_display_region($locale, $in_locale = null)", - "* gets the region for the $locale in $in_locale or default_locale" - ], - "get_display_script": [ - "static string get_display_script($locale, $in_locale = null)", - "* gets the script for the $locale in $in_locale or default_locale" - ], - "get_extension_funcs": [ - "array get_extension_funcs(string extension_name)", - "Returns an array with the names of functions belonging to the named extension" - ], - "get_headers": [ - "array get_headers(string url[, int format])", - "fetches all the headers sent by the server in response to a HTTP request" - ], - "get_html_translation_table": [ - "array get_html_translation_table([int table [, int quote_style]])", - "Returns the internal translation table used by htmlspecialchars and htmlentities" - ], - "get_include_path": [ - "string get_include_path()", - "Get the current include_path configuration option" - ], - "get_included_files": [ - "array get_included_files()", - "Returns an array with the file names that were include_once()'d" - ], - "get_loaded_extensions": [ - "array get_loaded_extensions([bool zend_extensions])", - "Return an array containing names of loaded extensions" - ], - "get_magic_quotes_gpc": [ - "int get_magic_quotes_gpc()", - "Get the current active configuration setting of magic_quotes_gpc" - ], - "get_magic_quotes_runtime": [ - "int get_magic_quotes_runtime()", - "Get the current active configuration setting of magic_quotes_runtime" - ], - "get_meta_tags": [ - "array get_meta_tags(string filename [, bool use_include_path])", - "Extracts all meta tag content attributes from a file and returns an array" - ], - "get_object_vars": [ - "array get_object_vars(object obj)", - "Returns an array of object properties" - ], - "get_parent_class": [ - "string get_parent_class([mixed object])", - "Retrieves the parent class name for object or class or current scope." - ], - "get_resource_type": [ - "string get_resource_type(resource res)", - "Get the resource type name for a given resource" - ], - "getallheaders": [ - "array getallheaders()", - "" - ], - "getcwd": [ - "mixed getcwd()", - "Gets the current directory" - ], - "getdate": [ - "array getdate([int timestamp])", - "Get date/time information" - ], - "getenv": [ - "string getenv(string varname)", - "Get the value of an environment variable" - ], - "gethostbyaddr": [ - "string gethostbyaddr(string ip_address)", - "Get the Internet host name corresponding to a given IP address" - ], - "gethostbyname": [ - "string gethostbyname(string hostname)", - "Get the IP address corresponding to a given Internet host name" - ], - "gethostbynamel": [ - "array gethostbynamel(string hostname)", - "Return a list of IP addresses that a given hostname resolves to." - ], - "gethostname": [ - "string gethostname()", - "Get the host name of the current machine" - ], - "getimagesize": [ - "array getimagesize(string imagefile [, array info])", - "Get the size of an image as 4-element array" - ], - "getlastmod": [ - "int getlastmod()", - "Get time of last page modification" - ], - "getmygid": [ - "int getmygid()", - "Get PHP script owner's GID" - ], - "getmyinode": [ - "int getmyinode()", - "Get the inode of the current script being parsed" - ], - "getmypid": [ - "int getmypid()", - "Get current process ID" - ], - "getmyuid": [ - "int getmyuid()", - "Get PHP script owner's UID" - ], - "getopt": [ - "array getopt(string options [, array longopts])", - "Get options from the command line argument list" - ], - "getprotobyname": [ - "int getprotobyname(string name)", - "Returns protocol number associated with name as per /etc/protocols" - ], - "getprotobynumber": [ - "string getprotobynumber(int proto)", - "Returns protocol name associated with protocol number proto" - ], - "getrandmax": [ - "int getrandmax()", - "Returns the maximum value a random number can have" - ], - "getrusage": [ - "array getrusage([int who])", - "Returns an array of usage statistics" - ], - "getservbyname": [ - "int getservbyname(string service, string protocol)", - "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" - ], - "getservbyport": [ - "string getservbyport(int port, string protocol)", - "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" - ], - "gettext": [ - "string gettext(string msgid)", - "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" - ], - "gettimeofday": [ - "array gettimeofday([bool get_as_float])", - "Returns the current time as array" - ], - "gettype": [ - "string gettype(mixed var)", - "Returns the type of the variable" - ], - "glob": [ - "array glob(string pattern [, int flags])", - "Find pathnames matching a pattern" - ], - "gmdate": [ - "string gmdate(string format [, long timestamp])", - "Format a GMT date/time" - ], - "gmmktime": [ - "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", - "Get UNIX timestamp for a GMT date" - ], - "gmp_abs": [ - "resource gmp_abs(resource a)", - "Calculates absolute value" - ], - "gmp_add": [ - "resource gmp_add(resource a, resource b)", - "Add a and b" - ], - "gmp_and": [ - "resource gmp_and(resource a, resource b)", - "Calculates logical AND of a and b" - ], - "gmp_clrbit": [ - "void gmp_clrbit(resource &a, int index)", - "Clears bit in a" - ], - "gmp_cmp": [ - "int gmp_cmp(resource a, resource b)", - "Compares two numbers" - ], - "gmp_com": [ - "resource gmp_com(resource a)", - "Calculates one's complement of a" - ], - "gmp_div_q": [ - "resource gmp_div_q(resource a, resource b [, int round])", - "Divide a by b, returns quotient only" - ], - "gmp_div_qr": [ - "array gmp_div_qr(resource a, resource b [, int round])", - "Divide a by b, returns quotient and reminder" - ], - "gmp_div_r": [ - "resource gmp_div_r(resource a, resource b [, int round])", - "Divide a by b, returns reminder only" - ], - "gmp_divexact": [ - "resource gmp_divexact(resource a, resource b)", - "Divide a by b using exact division algorithm" - ], - "gmp_fact": [ - "resource gmp_fact(int a)", - "Calculates factorial function" - ], - "gmp_gcd": [ - "resource gmp_gcd(resource a, resource b)", - "Computes greatest common denominator (gcd) of a and b" - ], - "gmp_gcdext": [ - "array gmp_gcdext(resource a, resource b)", - "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" - ], - "gmp_hamdist": [ - "int gmp_hamdist(resource a, resource b)", - "Calculates hamming distance between a and b" - ], - "gmp_init": [ - "resource gmp_init(mixed number [, int base])", - "Initializes GMP number" - ], - "gmp_intval": [ - "int gmp_intval(resource gmpnumber)", - "Gets signed long value of GMP number" - ], - "gmp_invert": [ - "resource gmp_invert(resource a, resource b)", - "Computes the inverse of a modulo b" - ], - "gmp_jacobi": [ - "int gmp_jacobi(resource a, resource b)", - "Computes Jacobi symbol" - ], - "gmp_legendre": [ - "int gmp_legendre(resource a, resource b)", - "Computes Legendre symbol" - ], - "gmp_mod": [ - "resource gmp_mod(resource a, resource b)", - "Computes a modulo b" - ], - "gmp_mul": [ - "resource gmp_mul(resource a, resource b)", - "Multiply a and b" - ], - "gmp_neg": [ - "resource gmp_neg(resource a)", - "Negates a number" - ], - "gmp_nextprime": [ - "resource gmp_nextprime(resource a)", - "Finds next prime of a" - ], - "gmp_or": [ - "resource gmp_or(resource a, resource b)", - "Calculates logical OR of a and b" - ], - "gmp_perfect_square": [ - "bool gmp_perfect_square(resource a)", - "Checks if a is an exact square" - ], - "gmp_popcount": [ - "int gmp_popcount(resource a)", - "Calculates the population count of a" - ], - "gmp_pow": [ - "resource gmp_pow(resource base, int exp)", - "Raise base to power exp" - ], - "gmp_powm": [ - "resource gmp_powm(resource base, resource exp, resource mod)", - "Raise base to power exp and take result modulo mod" - ], - "gmp_prob_prime": [ - "int gmp_prob_prime(resource a[, int reps])", - "Checks if a is \"probably prime\"" - ], - "gmp_random": [ - "resource gmp_random([int limiter])", - "Gets random number" - ], - "gmp_scan0": [ - "int gmp_scan0(resource a, int start)", - "Finds first zero bit" - ], - "gmp_scan1": [ - "int gmp_scan1(resource a, int start)", - "Finds first non-zero bit" - ], - "gmp_setbit": [ - "void gmp_setbit(resource &a, int index[, bool set_clear])", - "Sets or clear bit in a" - ], - "gmp_sign": [ - "int gmp_sign(resource a)", - "Gets the sign of the number" - ], - "gmp_sqrt": [ - "resource gmp_sqrt(resource a)", - "Takes integer part of square root of a" - ], - "gmp_sqrtrem": [ - "array gmp_sqrtrem(resource a)", - "Square root with remainder" - ], - "gmp_strval": [ - "string gmp_strval(resource gmpnumber [, int base])", - "Gets string representation of GMP number" - ], - "gmp_sub": [ - "resource gmp_sub(resource a, resource b)", - "Subtract b from a" - ], - "gmp_testbit": [ - "bool gmp_testbit(resource a, int index)", - "Tests if bit is set in a" - ], - "gmp_xor": [ - "resource gmp_xor(resource a, resource b)", - "Calculates logical exclusive OR of a and b" - ], - "gmstrftime": [ - "string gmstrftime(string format [, int timestamp])", - "Format a GMT/UCT time/date according to locale settings" - ], - "grapheme_extract": [ - "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", - "Function to extract a sequence of default grapheme clusters" - ], - "grapheme_stripos": [ - "int grapheme_stripos(string haystack, string needle [, int offset ])", - "Find position of first occurrence of a string within another, ignoring case differences" - ], - "grapheme_stristr": [ - "string grapheme_stristr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "grapheme_strlen": [ - "int grapheme_strlen(string str)", - "Get number of graphemes in a string" - ], - "grapheme_strpos": [ - "int grapheme_strpos(string haystack, string needle [, int offset ])", - "Find position of first occurrence of a string within another" - ], - "grapheme_strripos": [ - "int grapheme_strripos(string haystack, string needle [, int offset])", - "Find position of last occurrence of a string within another, ignoring case" - ], - "grapheme_strrpos": [ - "int grapheme_strrpos(string haystack, string needle [, int offset])", - "Find position of last occurrence of a string within another" - ], - "grapheme_strstr": [ - "string grapheme_strstr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "grapheme_substr": [ - "string grapheme_substr(string str, int start [, int length])", - "Returns part of a string" - ], - "gregoriantojd": [ - "int gregoriantojd(int month, int day, int year)", - "Converts a gregorian calendar date to julian day count" - ], - "gzcompress": [ - "string gzcompress(string data [, int level])", - "Gzip-compress a string" - ], - "gzdeflate": [ - "string gzdeflate(string data [, int level])", - "Gzip-compress a string" - ], - "gzencode": [ - "string gzencode(string data [, int level [, int encoding_mode]])", - "GZ encode a string" - ], - "gzfile": [ - "array gzfile(string filename [, int use_include_path])", - "Read und uncompress entire .gz-file into an array" - ], - "gzinflate": [ - "string gzinflate(string data [, int length])", - "Unzip a gzip-compressed string" - ], - "gzopen": [ - "resource gzopen(string filename, string mode [, int use_include_path])", - "Open a .gz-file and return a .gz-file pointer" - ], - "gzuncompress": [ - "string gzuncompress(string data [, int length])", - "Unzip a gzip-compressed string" - ], - "hash": [ - "string hash(string algo, string data[, bool raw_output = false])", - "Generate a hash of a given input string Returns lowercase hexits by default" - ], - "hash_algos": [ - "array hash_algos()", - "Return a list of registered hashing algorithms" - ], - "hash_copy": [ - "resource hash_copy(resource context)", - "Copy hash resource" - ], - "hash_file": [ - "string hash_file(string algo, string filename[, bool raw_output = false])", - "Generate a hash of a given file Returns lowercase hexits by default" - ], - "hash_final": [ - "string hash_final(resource context[, bool raw_output=false])", - "Output resulting digest" - ], - "hash_hmac": [ - "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", - "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" - ], - "hash_hmac_file": [ - "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", - "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" - ], - "hash_init": [ - "resource hash_init(string algo[, int options, string key])", - "Initialize a hashing context" - ], - "hash_update": [ - "bool hash_update(resource context, string data)", - "Pump data into the hashing algorithm" - ], - "hash_update_file": [ - "bool hash_update_file(resource context, string filename[, resource context])", - "Pump data into the hashing algorithm from a file" - ], - "hash_update_stream": [ - "int hash_update_stream(resource context, resource handle[, integer length])", - "Pump data into the hashing algorithm from an open stream" - ], - "header": [ - "void header(string header [, bool replace, [int http_response_code]])", - "Sends a raw HTTP header" - ], - "header_remove": [ - "void header_remove([string name])", - "Removes an HTTP header previously set using header()" - ], - "headers_list": [ - "array headers_list()", - "Return list of headers to be sent / already sent" - ], - "headers_sent": [ - "bool headers_sent([string &$file [, int &$line]])", - "Returns true if headers have already been sent, false otherwise" - ], - "hebrev": [ - "string hebrev(string str [, int max_chars_per_line])", - "Converts logical Hebrew text to visual text" - ], - "hebrevc": [ - "string hebrevc(string str [, int max_chars_per_line])", - "Converts logical Hebrew text to visual text with newline conversion" - ], - "hexdec": [ - "int hexdec(string hexadecimal_number)", - "Returns the decimal equivalent of the hexadecimal number" - ], - "highlight_file": [ - "bool highlight_file(string file_name [, bool return] )", - "Syntax highlight a source file" - ], - "highlight_string": [ - "bool highlight_string(string string [, bool return] )", - "Syntax highlight a string or optionally return it" - ], - "html_entity_decode": [ - "string html_entity_decode(string string [, int quote_style][, string charset])", - "Convert all HTML entities to their applicable characters" - ], - "htmlentities": [ - "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", - "Convert all applicable characters to HTML entities" - ], - "htmlspecialchars": [ - "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", - "Convert special characters to HTML entities" - ], - "htmlspecialchars_decode": [ - "string htmlspecialchars_decode(string string [, int quote_style])", - "Convert special HTML entities back to characters" - ], - "http_build_query": [ - "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", - "Generates a form-encoded query string from an associative array or object." - ], - "hypot": [ - "float hypot(float num1, float num2)", - "Returns sqrt(num1*num1 + num2*num2)" - ], - "ibase_add_user": [ - "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Add a user to security database" - ], - "ibase_affected_rows": [ - "int ibase_affected_rows( [ resource link_identifier ] )", - "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" - ], - "ibase_backup": [ - "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", - "Initiates a backup task in the service manager and returns immediately" - ], - "ibase_blob_add": [ - "bool ibase_blob_add(resource blob_handle, string data)", - "Add data into created blob" - ], - "ibase_blob_cancel": [ - "bool ibase_blob_cancel(resource blob_handle)", - "Cancel creating blob" - ], - "ibase_blob_close": [ - "string ibase_blob_close(resource blob_handle)", - "Close blob" - ], - "ibase_blob_create": [ - "resource ibase_blob_create([resource link_identifier])", - "Create blob for adding data" - ], - "ibase_blob_echo": [ - "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", - "Output blob contents to browser" - ], - "ibase_blob_get": [ - "string ibase_blob_get(resource blob_handle, int len)", - "Get len bytes data from open blob" - ], - "ibase_blob_import": [ - "string ibase_blob_import([ resource link_identifier, ] resource file)", - "Create blob, copy file in it, and close it" - ], - "ibase_blob_info": [ - "array ibase_blob_info([ resource link_identifier, ] string blob_id)", - "Return blob length and other useful info" - ], - "ibase_blob_open": [ - "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", - "Open blob for retrieving data parts" - ], - "ibase_close": [ - "bool ibase_close([resource link_identifier])", - "Close an InterBase connection" - ], - "ibase_commit": [ - "bool ibase_commit( resource link_identifier )", - "Commit transaction" - ], - "ibase_commit_ret": [ - "bool ibase_commit_ret( resource link_identifier )", - "Commit transaction and retain the transaction context" - ], - "ibase_connect": [ - "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", - "Open a connection to an InterBase database" - ], - "ibase_db_info": [ - "string ibase_db_info(resource service_handle, string db, int action [, int argument])", - "Request statistics about a database" - ], - "ibase_delete_user": [ - "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Delete a user from security database" - ], - "ibase_drop_db": [ - "bool ibase_drop_db([resource link_identifier])", - "Drop an InterBase database" - ], - "ibase_errcode": [ - "int ibase_errcode()", - "Return error code" - ], - "ibase_errmsg": [ - "string ibase_errmsg()", - "Return error message" - ], - "ibase_execute": [ - "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", - "Execute a previously prepared query" - ], - "ibase_fetch_assoc": [ - "array ibase_fetch_assoc(resource result [, int fetch_flags])", - "Fetch a row from the results of a query" - ], - "ibase_fetch_object": [ - "object ibase_fetch_object(resource result [, int fetch_flags])", - "Fetch a object from the results of a query" - ], - "ibase_fetch_row": [ - "array ibase_fetch_row(resource result [, int fetch_flags])", - "Fetch a row from the results of a query" - ], - "ibase_field_info": [ - "array ibase_field_info(resource query_result, int field_number)", - "Get information about a field" - ], - "ibase_free_event_handler": [ - "bool ibase_free_event_handler(resource event)", - "Frees the event handler set by ibase_set_event_handler()" - ], - "ibase_free_query": [ - "bool ibase_free_query(resource query)", - "Free memory used by a query" - ], - "ibase_free_result": [ - "bool ibase_free_result(resource result)", - "Free the memory used by a result" - ], - "ibase_gen_id": [ - "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", - "Increments the named generator and returns its new value" - ], - "ibase_maintain_db": [ - "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", - "Execute a maintenance command on the database server" - ], - "ibase_modify_user": [ - "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", - "Modify a user in security database" - ], - "ibase_name_result": [ - "bool ibase_name_result(resource result, string name)", - "Assign a name to a result for use with ... WHERE CURRENT OF statements" - ], - "ibase_num_fields": [ - "int ibase_num_fields(resource query_result)", - "Get the number of fields in result" - ], - "ibase_num_params": [ - "int ibase_num_params(resource query)", - "Get the number of params in a prepared query" - ], - "ibase_num_rows": [ - "int ibase_num_rows( resource result_identifier )", - "Return the number of rows that are available in a result" - ], - "ibase_param_info": [ - "array ibase_param_info(resource query, int field_number)", - "Get information about a parameter" - ], - "ibase_pconnect": [ - "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", - "Open a persistent connection to an InterBase database" - ], - "ibase_prepare": [ - "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", - "Prepare a query for later execution" - ], - "ibase_query": [ - "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", - "Execute a query" - ], - "ibase_restore": [ - "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", - "Initiates a restore task in the service manager and returns immediately" - ], - "ibase_rollback": [ - "bool ibase_rollback( resource link_identifier )", - "Rollback transaction" - ], - "ibase_rollback_ret": [ - "bool ibase_rollback_ret( resource link_identifier )", - "Rollback transaction and retain the transaction context" - ], - "ibase_server_info": [ - "string ibase_server_info(resource service_handle, int action)", - "Request information about a database server" - ], - "ibase_service_attach": [ - "resource ibase_service_attach(string host, string dba_username, string dba_password)", - "Connect to the service manager" - ], - "ibase_service_detach": [ - "bool ibase_service_detach(resource service_handle)", - "Disconnect from the service manager" - ], - "ibase_set_event_handler": [ - "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", - "Register the callback for handling each of the named events" - ], - "ibase_trans": [ - "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", - "Start a transaction over one or several databases" - ], - "ibase_wait_event": [ - "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", - "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" - ], - "iconv": [ - "string iconv(string in_charset, string out_charset, string str)", - "Returns str converted to the out_charset character set" - ], - "iconv_get_encoding": [ - "mixed iconv_get_encoding([string type])", - "Get internal encoding and output encoding for ob_iconv_handler()" - ], - "iconv_mime_decode": [ - "string iconv_mime_decode(string encoded_string [, int mode, string charset])", - "Decodes a mime header field" - ], - "iconv_mime_decode_headers": [ - "array iconv_mime_decode_headers(string headers [, int mode, string charset])", - "Decodes multiple mime header fields" - ], - "iconv_mime_encode": [ - "string iconv_mime_encode(string field_name, string field_value [, array preference])", - "Composes a mime header field with field_name and field_value in a specified scheme" - ], - "iconv_set_encoding": [ - "bool iconv_set_encoding(string type, string charset)", - "Sets internal encoding and output encoding for ob_iconv_handler()" - ], - "iconv_strlen": [ - "int iconv_strlen(string str [, string charset])", - "Returns the character count of str" - ], - "iconv_strpos": [ - "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", - "Finds position of first occurrence of needle within part of haystack beginning with offset" - ], - "iconv_strrpos": [ - "int iconv_strrpos(string haystack, string needle [, string charset])", - "Finds position of last occurrence of needle within part of haystack beginning with offset" - ], - "iconv_substr": [ - "string iconv_substr(string str, int offset, [int length, string charset])", - "Returns specified part of a string" - ], - "idate": [ - "int idate(string format [, int timestamp])", - "Format a local time/date as integer" - ], - "idn_to_ascii": [ - "int idn_to_ascii(string domain[, int options])", - "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" - ], - "idn_to_utf8": [ - "int idn_to_utf8(string domain[, int options])", - "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" - ], - "ignore_user_abort": [ - "int ignore_user_abort([string value])", - "Set whether we want to ignore a user abort event or not" - ], - "image2wbmp": [ - "bool image2wbmp(resource im [, string filename [, int threshold]])", - "Output WBMP image to browser or file" - ], - "image_type_to_extension": [ - "string image_type_to_extension(int imagetype [, bool include_dot])", - "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" - ], - "image_type_to_mime_type": [ - "string image_type_to_mime_type(int imagetype)", - "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" - ], - "imagealphablending": [ - "bool imagealphablending(resource im, bool on)", - "Turn alpha blending mode on or off for the given image" - ], - "imageantialias": [ - "bool imageantialias(resource im, bool on)", - "Should antialiased functions used or not" - ], - "imagearc": [ - "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", - "Draw a partial ellipse" - ], - "imagechar": [ - "bool imagechar(resource im, int font, int x, int y, string c, int col)", - "Draw a character" - ], - "imagecharup": [ - "bool imagecharup(resource im, int font, int x, int y, string c, int col)", - "Draw a character rotated 90 degrees counter-clockwise" - ], - "imagecolorallocate": [ - "int imagecolorallocate(resource im, int red, int green, int blue)", - "Allocate a color for an image" - ], - "imagecolorallocatealpha": [ - "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", - "Allocate a color with an alpha level. Works for true color and palette based images" - ], - "imagecolorat": [ - "int imagecolorat(resource im, int x, int y)", - "Get the index of the color of a pixel" - ], - "imagecolorclosest": [ - "int imagecolorclosest(resource im, int red, int green, int blue)", - "Get the index of the closest color to the specified color" - ], - "imagecolorclosestalpha": [ - "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", - "Find the closest matching colour with alpha transparency" - ], - "imagecolorclosesthwb": [ - "int imagecolorclosesthwb(resource im, int red, int green, int blue)", - "Get the index of the color which has the hue, white and blackness nearest to the given color" - ], - "imagecolordeallocate": [ - "bool imagecolordeallocate(resource im, int index)", - "De-allocate a color for an image" - ], - "imagecolorexact": [ - "int imagecolorexact(resource im, int red, int green, int blue)", - "Get the index of the specified color" - ], - "imagecolorexactalpha": [ - "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", - "Find exact match for colour with transparency" - ], - "imagecolormatch": [ - "bool imagecolormatch(resource im1, resource im2)", - "Makes the colors of the palette version of an image more closely match the true color version" - ], - "imagecolorresolve": [ - "int imagecolorresolve(resource im, int red, int green, int blue)", - "Get the index of the specified color or its closest possible alternative" - ], - "imagecolorresolvealpha": [ - "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", - "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" - ], - "imagecolorset": [ - "void imagecolorset(resource im, int col, int red, int green, int blue)", - "Set the color for the specified palette index" - ], - "imagecolorsforindex": [ - "array imagecolorsforindex(resource im, int col)", - "Get the colors for an index" - ], - "imagecolorstotal": [ - "int imagecolorstotal(resource im)", - "Find out the number of colors in an image's palette" - ], - "imagecolortransparent": [ - "int imagecolortransparent(resource im [, int col])", - "Define a color as transparent" - ], - "imageconvolution": [ - "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", - "Apply a 3x3 convolution matrix, using coefficient div and offset" - ], - "imagecopy": [ - "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", - "Copy part of an image" - ], - "imagecopymerge": [ - "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", - "Merge one part of an image with another" - ], - "imagecopymergegray": [ - "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", - "Merge one part of an image with another" - ], - "imagecopyresampled": [ - "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", - "Copy and resize part of an image using resampling to help ensure clarity" - ], - "imagecopyresized": [ - "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", - "Copy and resize part of an image" - ], - "imagecreate": [ - "resource imagecreate(int x_size, int y_size)", - "Create a new image" - ], - "imagecreatefromgd": [ - "resource imagecreatefromgd(string filename)", - "Create a new image from GD file or URL" - ], - "imagecreatefromgd2": [ - "resource imagecreatefromgd2(string filename)", - "Create a new image from GD2 file or URL" - ], - "imagecreatefromgd2part": [ - "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", - "Create a new image from a given part of GD2 file or URL" - ], - "imagecreatefromgif": [ - "resource imagecreatefromgif(string filename)", - "Create a new image from GIF file or URL" - ], - "imagecreatefromjpeg": [ - "resource imagecreatefromjpeg(string filename)", - "Create a new image from JPEG file or URL" - ], - "imagecreatefrompng": [ - "resource imagecreatefrompng(string filename)", - "Create a new image from PNG file or URL" - ], - "imagecreatefromstring": [ - "resource imagecreatefromstring(string image)", - "Create a new image from the image stream in the string" - ], - "imagecreatefromwbmp": [ - "resource imagecreatefromwbmp(string filename)", - "Create a new image from WBMP file or URL" - ], - "imagecreatefromxbm": [ - "resource imagecreatefromxbm(string filename)", - "Create a new image from XBM file or URL" - ], - "imagecreatefromxpm": [ - "resource imagecreatefromxpm(string filename)", - "Create a new image from XPM file or URL" - ], - "imagecreatetruecolor": [ - "resource imagecreatetruecolor(int x_size, int y_size)", - "Create a new true color image" - ], - "imagedashedline": [ - "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a dashed line" - ], - "imagedestroy": [ - "bool imagedestroy(resource im)", - "Destroy an image" - ], - "imageellipse": [ - "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", - "Draw an ellipse" - ], - "imagefill": [ - "bool imagefill(resource im, int x, int y, int col)", - "Flood fill" - ], - "imagefilledarc": [ - "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", - "Draw a filled partial ellipse" - ], - "imagefilledellipse": [ - "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", - "Draw an ellipse" - ], - "imagefilledpolygon": [ - "bool imagefilledpolygon(resource im, array point, int num_points, int col)", - "Draw a filled polygon" - ], - "imagefilledrectangle": [ - "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a filled rectangle" - ], - "imagefilltoborder": [ - "bool imagefilltoborder(resource im, int x, int y, int border, int col)", - "Flood fill to specific color" - ], - "imagefilter": [ - "bool imagefilter(resource src_im, int filtertype, [args] )", - "Applies Filter an image using a custom angle" - ], - "imagefontheight": [ - "int imagefontheight(int font)", - "Get font height" - ], - "imagefontwidth": [ - "int imagefontwidth(int font)", - "Get font width" - ], - "imageftbbox": [ - "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", - "Give the bounding box of a text using fonts via freetype2" - ], - "imagefttext": [ - "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", - "Write text to the image using fonts via freetype2" - ], - "imagegammacorrect": [ - "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", - "Apply a gamma correction to a GD image" - ], - "imagegd": [ - "bool imagegd(resource im [, string filename])", - "Output GD image to browser or file" - ], - "imagegd2": [ - "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", - "Output GD2 image to browser or file" - ], - "imagegif": [ - "bool imagegif(resource im [, string filename])", - "Output GIF image to browser or file" - ], - "imagegrabscreen": [ - "resource imagegrabscreen()", - "Grab a screenshot" - ], - "imagegrabwindow": [ - "resource imagegrabwindow(int window_handle [, int client_area])", - "Grab a window or its client area using a windows handle (HWND property in COM instance)" - ], - "imageinterlace": [ - "int imageinterlace(resource im [, int interlace])", - "Enable or disable interlace" - ], - "imageistruecolor": [ - "bool imageistruecolor(resource im)", - "return true if the image uses truecolor" - ], - "imagejpeg": [ - "bool imagejpeg(resource im [, string filename [, int quality]])", - "Output JPEG image to browser or file" - ], - "imagelayereffect": [ - "bool imagelayereffect(resource im, int effect)", - "Set the alpha blending flag to use the bundled libgd layering effects" - ], - "imageline": [ - "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a line" - ], - "imageloadfont": [ - "int imageloadfont(string filename)", - "Load a new font" - ], - "imagepalettecopy": [ - "void imagepalettecopy(resource dst, resource src)", - "Copy the palette from the src image onto the dst image" - ], - "imagepng": [ - "bool imagepng(resource im [, string filename])", - "Output PNG image to browser or file" - ], - "imagepolygon": [ - "bool imagepolygon(resource im, array point, int num_points, int col)", - "Draw a polygon" - ], - "imagepsbbox": [ - "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", - "Return the bounding box needed by a string if rasterized" - ], - "imagepscopyfont": [ - "int imagepscopyfont(int font_index)", - "Make a copy of a font for purposes like extending or reenconding" - ], - "imagepsencodefont": [ - "bool imagepsencodefont(resource font_index, string filename)", - "To change a fonts character encoding vector" - ], - "imagepsextendfont": [ - "bool imagepsextendfont(resource font_index, float extend)", - "Extend or or condense if (extend < 1) a font" - ], - "imagepsfreefont": [ - "bool imagepsfreefont(resource font_index)", - "Free memory used by a font" - ], - "imagepsloadfont": [ - "resource imagepsloadfont(string pathname)", - "Load a new font from specified file" - ], - "imagepsslantfont": [ - "bool imagepsslantfont(resource font_index, float slant)", - "Slant a font" - ], - "imagepstext": [ - "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", - "Rasterize a string over an image" - ], - "imagerectangle": [ - "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", - "Draw a rectangle" - ], - "imagerotate": [ - "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", - "Rotate an image using a custom angle" - ], - "imagesavealpha": [ - "bool imagesavealpha(resource im, bool on)", - "Include alpha channel to a saved image" - ], - "imagesetbrush": [ - "bool imagesetbrush(resource image, resource brush)", - "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" - ], - "imagesetpixel": [ - "bool imagesetpixel(resource im, int x, int y, int col)", - "Set a single pixel" - ], - "imagesetstyle": [ - "bool imagesetstyle(resource im, array styles)", - "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." - ], - "imagesetthickness": [ - "bool imagesetthickness(resource im, int thickness)", - "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." - ], - "imagesettile": [ - "bool imagesettile(resource image, resource tile)", - "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" - ], - "imagestring": [ - "bool imagestring(resource im, int font, int x, int y, string str, int col)", - "Draw a string horizontally" - ], - "imagestringup": [ - "bool imagestringup(resource im, int font, int x, int y, string str, int col)", - "Draw a string vertically - rotated 90 degrees counter-clockwise" - ], - "imagesx": [ - "int imagesx(resource im)", - "Get image width" - ], - "imagesy": [ - "int imagesy(resource im)", - "Get image height" - ], - "imagetruecolortopalette": [ - "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", - "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." - ], - "imagettfbbox": [ - "array imagettfbbox(float size, float angle, string font_file, string text)", - "Give the bounding box of a text using TrueType fonts" - ], - "imagettftext": [ - "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", - "Write text to the image using a TrueType font" - ], - "imagetypes": [ - "int imagetypes()", - "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" - ], - "imagewbmp": [ - "bool imagewbmp(resource im [, string filename, [, int foreground]])", - "Output WBMP image to browser or file" - ], - "imagexbm": [ - "int imagexbm(int im, string filename [, int foreground])", - "Output XBM image to browser or file" - ], - "imap_8bit": [ - "string imap_8bit(string text)", - "Convert an 8-bit string to a quoted-printable string" - ], - "imap_alerts": [ - "array imap_alerts()", - "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." - ], - "imap_append": [ - "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", - "Append a new message to a specified mailbox" - ], - "imap_base64": [ - "string imap_base64(string text)", - "Decode BASE64 encoded text" - ], - "imap_binary": [ - "string imap_binary(string text)", - "Convert an 8bit string to a base64 string" - ], - "imap_body": [ - "string imap_body(resource stream_id, int msg_no [, int options])", - "Read the message body" - ], - "imap_bodystruct": [ - "object imap_bodystruct(resource stream_id, int msg_no, string section)", - "Read the structure of a specified body section of a specific message" - ], - "imap_check": [ - "object imap_check(resource stream_id)", - "Get mailbox properties" - ], - "imap_clearflag_full": [ - "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", - "Clears flags on messages" - ], - "imap_close": [ - "bool imap_close(resource stream_id [, int options])", - "Close an IMAP stream" - ], - "imap_createmailbox": [ - "bool imap_createmailbox(resource stream_id, string mailbox)", - "Create a new mailbox" - ], - "imap_delete": [ - "bool imap_delete(resource stream_id, int msg_no [, int options])", - "Mark a message for deletion" - ], - "imap_deletemailbox": [ - "bool imap_deletemailbox(resource stream_id, string mailbox)", - "Delete a mailbox" - ], - "imap_errors": [ - "array imap_errors()", - "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." - ], - "imap_expunge": [ - "bool imap_expunge(resource stream_id)", - "Permanently delete all messages marked for deletion" - ], - "imap_fetch_overview": [ - "array imap_fetch_overview(resource stream_id, string sequence [, int options])", - "Read an overview of the information in the headers of the given message sequence" - ], - "imap_fetchbody": [ - "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", - "Get a specific body section" - ], - "imap_fetchheader": [ - "string imap_fetchheader(resource stream_id, int msg_no [, int options])", - "Get the full unfiltered header for a message" - ], - "imap_fetchstructure": [ - "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", - "Read the full structure of a message" - ], - "imap_gc": [ - "bool imap_gc(resource stream_id, int flags)", - "This function garbage collects (purges) the cache of entries of a specific type." - ], - "imap_get_quota": [ - "array imap_get_quota(resource stream_id, string qroot)", - "Returns the quota set to the mailbox account qroot" - ], - "imap_get_quotaroot": [ - "array imap_get_quotaroot(resource stream_id, string mbox)", - "Returns the quota set to the mailbox account mbox" - ], - "imap_getacl": [ - "array imap_getacl(resource stream_id, string mailbox)", - "Gets the ACL for a given mailbox" - ], - "imap_getmailboxes": [ - "array imap_getmailboxes(resource stream_id, string ref, string pattern)", - "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" - ], - "imap_getsubscribed": [ - "array imap_getsubscribed(resource stream_id, string ref, string pattern)", - "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" - ], - "imap_headerinfo": [ - "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", - "Read the headers of the message" - ], - "imap_headers": [ - "array imap_headers(resource stream_id)", - "Returns headers for all messages in a mailbox" - ], - "imap_last_error": [ - "string imap_last_error()", - "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." - ], - "imap_list": [ - "array imap_list(resource stream_id, string ref, string pattern)", - "Read the list of mailboxes" - ], - "imap_listscan": [ - "array imap_listscan(resource stream_id, string ref, string pattern, string content)", - "Read list of mailboxes containing a certain string" - ], - "imap_lsub": [ - "array imap_lsub(resource stream_id, string ref, string pattern)", - "Return a list of subscribed mailboxes" - ], - "imap_mail": [ - "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", - "Send an email message" - ], - "imap_mail_compose": [ - "string imap_mail_compose(array envelope, array body)", - "Create a MIME message based on given envelope and body sections" - ], - "imap_mail_copy": [ - "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", - "Copy specified message to a mailbox" - ], - "imap_mail_move": [ - "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", - "Move specified message to a mailbox" - ], - "imap_mailboxmsginfo": [ - "object imap_mailboxmsginfo(resource stream_id)", - "Returns info about the current mailbox" - ], - "imap_mime_header_decode": [ - "array imap_mime_header_decode(string str)", - "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" - ], - "imap_msgno": [ - "int imap_msgno(resource stream_id, int unique_msg_id)", - "Get the sequence number associated with a UID" - ], - "imap_mutf7_to_utf8": [ - "string imap_mutf7_to_utf8(string in)", - "Decode a modified UTF-7 string to UTF-8" - ], - "imap_num_msg": [ - "int imap_num_msg(resource stream_id)", - "Gives the number of messages in the current mailbox" - ], - "imap_num_recent": [ - "int imap_num_recent(resource stream_id)", - "Gives the number of recent messages in current mailbox" - ], - "imap_open": [ - "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", - "Open an IMAP stream to a mailbox" - ], - "imap_ping": [ - "bool imap_ping(resource stream_id)", - "Check if the IMAP stream is still active" - ], - "imap_qprint": [ - "string imap_qprint(string text)", - "Convert a quoted-printable string to an 8-bit string" - ], - "imap_renamemailbox": [ - "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", - "Rename a mailbox" - ], - "imap_reopen": [ - "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", - "Reopen an IMAP stream to a new mailbox" - ], - "imap_rfc822_parse_adrlist": [ - "array imap_rfc822_parse_adrlist(string address_string, string default_host)", - "Parses an address string" - ], - "imap_rfc822_parse_headers": [ - "object imap_rfc822_parse_headers(string headers [, string default_host])", - "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" - ], - "imap_rfc822_write_address": [ - "string imap_rfc822_write_address(string mailbox, string host, string personal)", - "Returns a properly formatted email address given the mailbox, host, and personal info" - ], - "imap_savebody": [ - "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", - "Save a specific body section to a file" - ], - "imap_search": [ - "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", - "Return a list of messages matching the given criteria" - ], - "imap_set_quota": [ - "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", - "Will set the quota for qroot mailbox" - ], - "imap_setacl": [ - "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", - "Sets the ACL for a given mailbox" - ], - "imap_setflag_full": [ - "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", - "Sets flags on messages" - ], - "imap_sort": [ - "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", - "Sort an array of message headers, optionally including only messages that meet specified criteria." - ], - "imap_status": [ - "object imap_status(resource stream_id, string mailbox, int options)", - "Get status info from a mailbox" - ], - "imap_subscribe": [ - "bool imap_subscribe(resource stream_id, string mailbox)", - "Subscribe to a mailbox" - ], - "imap_thread": [ - "array imap_thread(resource stream_id [, int options])", - "Return threaded by REFERENCES tree" - ], - "imap_timeout": [ - "mixed imap_timeout(int timeout_type [, int timeout])", - "Set or fetch imap timeout" - ], - "imap_uid": [ - "int imap_uid(resource stream_id, int msg_no)", - "Get the unique message id associated with a standard sequential message number" - ], - "imap_undelete": [ - "bool imap_undelete(resource stream_id, int msg_no [, int flags])", - "Remove the delete flag from a message" - ], - "imap_unsubscribe": [ - "bool imap_unsubscribe(resource stream_id, string mailbox)", - "Unsubscribe from a mailbox" - ], - "imap_utf7_decode": [ - "string imap_utf7_decode(string buf)", - "Decode a modified UTF-7 string" - ], - "imap_utf7_encode": [ - "string imap_utf7_encode(string buf)", - "Encode a string in modified UTF-7" - ], - "imap_utf8": [ - "string imap_utf8(string mime_encoded_text)", - "Convert a mime-encoded text to UTF-8" - ], - "imap_utf8_to_mutf7": [ - "string imap_utf8_to_mutf7(string in)", - "Encode a UTF-8 string to modified UTF-7" - ], - "implode": [ - "string implode([string glue,] array pieces)", - "Joins array elements placing glue string between items and return one string" - ], - "import_request_variables": [ - "bool import_request_variables(string types [, string prefix])", - "Import GET/POST/Cookie variables into the global scope" - ], - "in_array": [ - "bool in_array(mixed needle, array haystack [, bool strict])", - "Checks if the given value exists in the array" - ], - "include": [ - "bool include(string path)", - "Includes and evaluates the specified file" - ], - "include_once": [ - "bool include_once(string path)", - "Includes and evaluates the specified file" - ], - "inet_ntop": [ - "string inet_ntop(string in_addr)", - "Converts a packed inet address to a human readable IP address string" - ], - "inet_pton": [ - "string inet_pton(string ip_address)", - "Converts a human readable IP address to a packed binary string" - ], - "ini_get": [ - "string ini_get(string varname)", - "Get a configuration option" - ], - "ini_get_all": [ - "array ini_get_all([string extension[, bool details = true]])", - "Get all configuration options" - ], - "ini_restore": [ - "void ini_restore(string varname)", - "Restore the value of a configuration option specified by varname" - ], - "ini_set": [ - "string ini_set(string varname, string newvalue)", - "Set a configuration option, returns false on error and the old value of the configuration option on success" - ], - "interface_exists": [ - "bool interface_exists(string classname [, bool autoload])", - "Checks if the class exists" - ], - "intl_error_name": [ - "string intl_error_name()", - "* Return a string for a given error code. * The string will be the same as the name of the error code constant." - ], - "intl_get_error_code": [ - "int intl_get_error_code()", - "* Get code of the last occured error." - ], - "intl_get_error_message": [ - "string intl_get_error_message()", - "* Get text description of the last occured error." - ], - "intl_is_failure": [ - "bool intl_is_failure()", - "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." - ], - "intval": [ - "int intval(mixed var [, int base])", - "Get the integer value of a variable using the optional base for the conversion" - ], - "ip2long": [ - "int ip2long(string ip_address)", - "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" - ], - "iptcembed": [ - "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", - "Embed binary IPTC data into a JPEG image." - ], - "iptcparse": [ - "array iptcparse(string iptcdata)", - "Parse binary IPTC-data into associative array" - ], - "is_a": [ - "bool is_a(object object, string class_name)", - "Returns true if the object is of this class or has this class as one of its parents" - ], - "is_array": [ - "bool is_array(mixed var)", - "Returns true if variable is an array" - ], - "is_bool": [ - "bool is_bool(mixed var)", - "Returns true if variable is a boolean" - ], - "is_callable": [ - "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", - "Returns true if var is callable." - ], - "is_countable": [ - "bool is_countable(mixed var)", - "Returns true if var is countable, false otherwise" - ], - "is_dir": [ - "bool is_dir(string filename)", - "Returns true if file is directory" - ], - "is_executable": [ - "bool is_executable(string filename)", - "Returns true if file is executable" - ], - "is_file": [ - "bool is_file(string filename)", - "Returns true if file is a regular file" - ], - "is_finite": [ - "bool is_finite(float val)", - "Returns whether argument is finite" - ], - "is_float": [ - "bool is_float(mixed var)", - "Returns true if variable is float point" - ], - "is_infinite": [ - "bool is_infinite(float val)", - "Returns whether argument is infinite" - ], - "is_link": [ - "bool is_link(string filename)", - "Returns true if file is symbolic link" - ], - "is_long": [ - "bool is_long(mixed var)", - "Returns true if variable is a long (integer)" - ], - "is_nan": [ - "bool is_nan(float val)", - "Returns whether argument is not a number" - ], - "is_null": [ - "bool is_null(mixed var)", - "Returns true if variable is null" - ], - "is_numeric": [ - "bool is_numeric(mixed value)", - "Returns true if value is a number or a numeric string" - ], - "is_object": [ - "bool is_object(mixed var)", - "Returns true if variable is an object" - ], - "is_readable": [ - "bool is_readable(string filename)", - "Returns true if file can be read" - ], - "is_resource": [ - "bool is_resource(mixed var)", - "Returns true if variable is a resource" - ], - "is_scalar": [ - "bool is_scalar(mixed value)", - "Returns true if value is a scalar" - ], - "is_string": [ - "bool is_string(mixed var)", - "Returns true if variable is a string" - ], - "is_subclass_of": [ - "bool is_subclass_of(object object, string class_name)", - "Returns true if the object has this class as one of its parents" - ], - "is_uploaded_file": [ - "bool is_uploaded_file(string path)", - "Check if file was created by rfc1867 upload" - ], - "is_writable": [ - "bool is_writable(string filename)", - "Returns true if file can be written" - ], - "isset": [ - "bool isset(mixed var [, mixed var])", - "Determine whether a variable is set" - ], - "iterator_apply": [ - "int iterator_apply(Traversable iterator, callable function [, array args = null)", - "Calls a function for every element in an iterator" - ], - "iterator_count": [ - "int iterator_count(Traversable iterator)", - "Count the elements in an iterator" - ], - "iterator_to_array": [ - "array iterator_to_array(Traversable iterator [, bool use_keys = true])", - "Copy the iterator into an array" - ], - "jddayofweek": [ - "mixed jddayofweek(int juliandaycount [, int mode])", - "Returns name or number of day of week from julian day count" - ], - "jdmonthname": [ - "string jdmonthname(int juliandaycount, int mode)", - "Returns name of month for julian day count" - ], - "jdtofrench": [ - "string jdtofrench(int juliandaycount)", - "Converts a julian day count to a french republic calendar date" - ], - "jdtogregorian": [ - "string jdtogregorian(int juliandaycount)", - "Converts a julian day count to a gregorian calendar date" - ], - "jdtojewish": [ - "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", - "Converts a julian day count to a jewish calendar date" - ], - "jdtojulian": [ - "string jdtojulian(int juliandaycount)", - "Convert a julian day count to a julian calendar date" - ], - "jdtounix": [ - "int jdtounix(int jday)", - "Convert Julian Day to UNIX timestamp" - ], - "jewishtojd": [ - "int jewishtojd(int month, int day, int year)", - "Converts a jewish calendar date to a julian day count" - ], - "join": [ - "string join([string glue,] array pieces)", - "Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element" - ], - "jpeg2wbmp": [ - "bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", - "Convert JPEG image to WBMP image" - ], - "json_decode": [ - "mixed json_decode(string json [, bool assoc [, long depth]])", - "Decodes the JSON representation into a PHP value" - ], - "json_encode": [ - "string json_encode(mixed data [, int options])", - "Returns the JSON representation of a value" - ], - "json_last_error": [ - "int json_last_error()", - "Returns the error code of the last json_decode()." - ], - "juliantojd": [ - "int juliantojd(int month, int day, int year)", - "Converts a julian calendar date to julian day count" - ], - "key": [ - "mixed key(array array_arg)", - "Return the key of the element currently pointed to by the internal array pointer" - ], - "krsort": [ - "bool krsort(array &array_arg [, int sort_flags])", - "Sort an array by key value in reverse order" - ], - "ksort": [ - "bool ksort(array &array_arg [, int sort_flags])", - "Sort an array by key" - ], - "lcfirst": [ - "string lcfirst(string str)", - "Make a string's first character lowercase" - ], - "lcg_value": [ - "float lcg_value()", - "Returns a value from the combined linear congruential generator" - ], - "lchgrp": [ - "bool lchgrp(string filename, mixed group)", - "Change symlink group" - ], - "ldap_8859_to_t61": [ - "string ldap_8859_to_t61(string value)", - "Translate 8859 characters to t61 characters" - ], - "ldap_add": [ - "bool ldap_add(resource link, string dn, array entry)", - "Add entries to LDAP directory" - ], - "ldap_bind": [ - "bool ldap_bind(resource link [, string dn [, string password]])", - "Bind to LDAP directory" - ], - "ldap_compare": [ - "bool ldap_compare(resource link, string dn, string attr, string value)", - "Determine if an entry has a specific value for one of its attributes" - ], - "ldap_connect": [ - "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", - "Connect to an LDAP server" - ], - "ldap_count_entries": [ - "int ldap_count_entries(resource link, resource result)", - "Count the number of entries in a search result" - ], - "ldap_delete": [ - "bool ldap_delete(resource link, string dn)", - "Delete an entry from a directory" - ], - "ldap_dn2ufn": [ - "string ldap_dn2ufn(string dn)", - "Convert DN to User Friendly Naming format" - ], - "ldap_err2str": [ - "string ldap_err2str(int errno)", - "Convert error number to error string" - ], - "ldap_errno": [ - "int ldap_errno(resource link)", - "Get the current ldap error number" - ], - "ldap_error": [ - "string ldap_error(resource link)", - "Get the current ldap error string" - ], - "ldap_explode_dn": [ - "array ldap_explode_dn(string dn, int with_attrib)", - "Splits DN into its component parts" - ], - "ldap_first_attribute": [ - "string ldap_first_attribute(resource link, resource result_entry)", - "Return first attribute" - ], - "ldap_first_entry": [ - "resource ldap_first_entry(resource link, resource result)", - "Return first result id" - ], - "ldap_first_reference": [ - "resource ldap_first_reference(resource link, resource result)", - "Return first reference" - ], - "ldap_free_result": [ - "bool ldap_free_result(resource result)", - "Free result memory" - ], - "ldap_get_attributes": [ - "array ldap_get_attributes(resource link, resource result_entry)", - "Get attributes from a search result entry" - ], - "ldap_get_dn": [ - "string ldap_get_dn(resource link, resource result_entry)", - "Get the DN of a result entry" - ], - "ldap_get_entries": [ - "array ldap_get_entries(resource link, resource result)", - "Get all result entries" - ], - "ldap_get_option": [ - "bool ldap_get_option(resource link, int option, mixed retval)", - "Get the current value of various session-wide parameters" - ], - "ldap_get_values_len": [ - "array ldap_get_values_len(resource link, resource result_entry, string attribute)", - "Get all values with lengths from a result entry" - ], - "ldap_list": [ - "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Single-level search" - ], - "ldap_mod_add": [ - "bool ldap_mod_add(resource link, string dn, array entry)", - "Add attribute values to current" - ], - "ldap_mod_del": [ - "bool ldap_mod_del(resource link, string dn, array entry)", - "Delete attribute values" - ], - "ldap_mod_replace": [ - "bool ldap_mod_replace(resource link, string dn, array entry)", - "Replace attribute values with new ones" - ], - "ldap_next_attribute": [ - "string ldap_next_attribute(resource link, resource result_entry)", - "Get the next attribute in result" - ], - "ldap_next_entry": [ - "resource ldap_next_entry(resource link, resource result_entry)", - "Get next result entry" - ], - "ldap_next_reference": [ - "resource ldap_next_reference(resource link, resource reference_entry)", - "Get next reference" - ], - "ldap_parse_reference": [ - "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", - "Extract information from reference entry" - ], - "ldap_parse_result": [ - "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", - "Extract information from result" - ], - "ldap_read": [ - "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Read an entry" - ], - "ldap_rename": [ - "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)", - "Modify the name of an entry" - ], - "ldap_sasl_bind": [ - "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", - "Bind to LDAP directory using SASL" - ], - "ldap_search": [ - "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", - "Search LDAP tree under base_dn" - ], - "ldap_set_option": [ - "bool ldap_set_option(resource link, int option, mixed newval)", - "Set the value of various session-wide parameters" - ], - "ldap_set_rebind_proc": [ - "bool ldap_set_rebind_proc(resource link, string callback)", - "Set a callback function to do re-binds on referral chasing." - ], - "ldap_sort": [ - "bool ldap_sort(resource link, resource result, string sortfilter)", - "Sort LDAP result entries" - ], - "ldap_start_tls": [ - "bool ldap_start_tls(resource link)", - "Start TLS" - ], - "ldap_t61_to_8859": [ - "string ldap_t61_to_8859(string value)", - "Translate t61 characters to 8859 characters" - ], - "ldap_unbind": [ - "bool ldap_unbind(resource link)", - "Unbind from LDAP directory" - ], - "leak": [ - "void leak(int num_bytes=3)", - "Cause an intentional memory leak, for testing/debugging purposes" - ], - "levenshtein": [ - "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", - "Calculate Levenshtein distance between two strings" - ], - "libxml_clear_errors": [ - "void libxml_clear_errors()", - "Clear last error from libxml" - ], - "libxml_disable_entity_loader": [ - "bool libxml_disable_entity_loader([bool disable])", - "Disable/Enable ability to load external entities" - ], - "libxml_get_errors": [ - "object libxml_get_errors()", - "Retrieve array of errors" - ], - "libxml_get_last_error": [ - "object libxml_get_last_error()", - "Retrieve last error from libxml" - ], - "libxml_set_streams_context": [ - "void libxml_set_streams_context(resource streams_context)", - "Set the streams context for the next libxml document load or write" - ], - "libxml_use_internal_errors": [ - "bool libxml_use_internal_errors([bool use_errors])", - "Disable libxml errors and allow user to fetch error information as needed" - ], - "link": [ - "int link(string target, string link)", - "Create a hard link" - ], - "linkinfo": [ - "int linkinfo(string filename)", - "Returns the st_dev field of the UNIX C stat structure describing the link" - ], - "litespeed_request_headers": [ - "array litespeed_request_headers()", - "Fetch all HTTP request headers" - ], - "litespeed_response_headers": [ - "array litespeed_response_headers()", - "Fetch all HTTP response headers" - ], - "locale_accept_from_http": [ - "string locale_accept_from_http(string $http_accept)", - null - ], - "locale_canonicalize": [ - "static string locale_canonicalize(Locale $loc, string $locale)", - "* @param string $locale The locale string to canonicalize" - ], - "locale_filter_matches": [ - "bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", - "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" - ], - "locale_get_all_variants": [ - "static array locale_get_all_variants($locale)", - "* gets an array containing the list of variants, or null" - ], - "locale_get_default": [ - "static string locale_get_default( )", - "Get default locale" - ], - "locale_get_keywords": [ - "static array locale_get_keywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array" - ], - "locale_get_primary_language": [ - "static string locale_get_primary_language($locale)", - "* gets the primary language for the $locale" - ], - "locale_get_region": [ - "static string locale_get_region($locale)", - "* gets the region for the $locale" - ], - "locale_get_script": [ - "static string locale_get_script($locale)", - "* gets the script for the $locale" - ], - "locale_lookup": [ - "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", - "* Searchs the items in $langtag for the best match to the language * range" - ], - "locale_set_default": [ - "static string locale_set_default( string $locale )", - "Set default locale" - ], - "localeconv": [ - "array localeconv()", - "Returns numeric formatting information based on the current locale" - ], - "localtime": [ - "array localtime([int timestamp [, bool associative_array]])", - "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" - ], - "log": [ - "float log(float number, [float base])", - "Returns the natural logarithm of the number, or the base log if base is specified" - ], - "log10": [ - "float log10(float number)", - "Returns the base-10 logarithm of the number" - ], - "log1p": [ - "float log1p(float number)", - "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" - ], - "long2ip": [ - "string long2ip(int proper_address)", - "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" - ], - "lstat": [ - "array lstat(string filename)", - "Give information about a file or symbolic link" - ], - "ltrim": [ - "string ltrim(string str [, string character_mask])", - "Strips whitespace from the beginning of a string" - ], - "mail": [ - "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", - "Send an email message" - ], - "max": [ - "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", - "Return the highest value in an array or a series of arguments" - ], - "mb_check_encoding": [ - "bool mb_check_encoding([string var[, string encoding]])", - "Check if the string is valid for the specified encoding" - ], - "mb_convert_case": [ - "string mb_convert_case(string sourcestring, int mode [, string encoding])", - "Returns a case-folded version of sourcestring" - ], - "mb_convert_encoding": [ - "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", - "Returns converted string in desired encoding" - ], - "mb_convert_kana": [ - "string mb_convert_kana(string str [, string option] [, string encoding])", - "Conversion between full-width character and half-width character (Japanese)" - ], - "mb_convert_variables": [ - "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", - "Converts the string resource in variables to desired encoding" - ], - "mb_decode_mimeheader": [ - "string mb_decode_mimeheader(string string)", - "Decodes the MIME \"encoded-word\" in the string" - ], - "mb_decode_numericentity": [ - "string mb_decode_numericentity(string string, array convmap [, string encoding])", - "Converts HTML numeric entities to character code" - ], - "mb_detect_encoding": [ - "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", - "Encodings of the given string is returned (as a string)" - ], - "mb_detect_order": [ - "bool|array mb_detect_order([mixed encoding-list])", - "Sets the current detect_order or Return the current detect_order as a array" - ], - "mb_encode_mimeheader": [ - "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", - "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" - ], - "mb_encode_numericentity": [ - "string mb_encode_numericentity(string string, array convmap [, string encoding])", - "Converts specified characters to HTML numeric entities" - ], - "mb_encoding_aliases": [ - "array mb_encoding_aliases(string encoding)", - "Returns an array of the aliases of a given encoding name" - ], - "mb_ereg": [ - "int mb_ereg(string pattern, string string [, array registers])", - "Regular expression match for multibyte string" - ], - "mb_ereg_match": [ - "bool mb_ereg_match(string pattern, string string [,string option])", - "Regular expression match for multibyte string" - ], - "mb_ereg_replace": [ - "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", - "Replace regular expression for multibyte string" - ], - "mb_ereg_search": [ - "bool mb_ereg_search([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_getpos": [ - "int mb_ereg_search_getpos()", - "Get search start position" - ], - "mb_ereg_search_getregs": [ - "array mb_ereg_search_getregs()", - "Get matched substring of the last time" - ], - "mb_ereg_search_init": [ - "bool mb_ereg_search_init(string string [, string pattern[, string option]])", - "Initialize string and regular expression for search." - ], - "mb_ereg_search_pos": [ - "array mb_ereg_search_pos([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_regs": [ - "array mb_ereg_search_regs([string pattern[, string option]])", - "Regular expression search for multibyte string" - ], - "mb_ereg_search_setpos": [ - "bool mb_ereg_search_setpos(int position)", - "Set search start position" - ], - "mb_eregi": [ - "int mb_eregi(string pattern, string string [, array registers])", - "Case-insensitive regular expression match for multibyte string" - ], - "mb_eregi_replace": [ - "string mb_eregi_replace(string pattern, string replacement, string string)", - "Case insensitive replace regular expression for multibyte string" - ], - "mb_get_info": [ - "mixed mb_get_info([string type])", - "Returns the current settings of mbstring" - ], - "mb_http_input": [ - "mixed mb_http_input([string type])", - "Returns the input encoding" - ], - "mb_http_output": [ - "string mb_http_output([string encoding])", - "Sets the current output_encoding or returns the current output_encoding as a string" - ], - "mb_internal_encoding": [ - "string mb_internal_encoding([string encoding])", - "Sets the current internal encoding or Returns the current internal encoding as a string" - ], - "mb_language": [ - "string mb_language([string language])", - "Sets the current language or Returns the current language as a string" - ], - "mb_list_encodings": [ - "mixed mb_list_encodings()", - "Returns an array of all supported entity encodings" - ], - "mb_output_handler": [ - "string mb_output_handler(string contents, int status)", - "Returns string in output buffer converted to the http_output encoding" - ], - "mb_parse_str": [ - "bool mb_parse_str(string encoded_string [, array result])", - "Parses GET/POST/COOKIE data and sets global variables" - ], - "mb_preferred_mime_name": [ - "string mb_preferred_mime_name(string encoding)", - "Return the preferred MIME name (charset) as a string" - ], - "mb_regex_encoding": [ - "string mb_regex_encoding([string encoding])", - "Returns the current encoding for regex as a string." - ], - "mb_regex_set_options": [ - "string mb_regex_set_options([string options])", - "Set or get the default options for mbregex functions" - ], - "mb_send_mail": [ - "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", - "* Sends an email message with MIME scheme" - ], - "mb_split": [ - "array mb_split(string pattern, string string [, int limit])", - "split multibyte string into array by regular expression" - ], - "mb_strcut": [ - "string mb_strcut(string str, int start [, int length [, string encoding]])", - "Returns part of a string" - ], - "mb_strimwidth": [ - "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", - "Trim the string in terminal width" - ], - "mb_stripos": [ - "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", - "Finds position of first occurrence of a string within another, case insensitive" - ], - "mb_stristr": [ - "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", - "Finds first occurrence of a string within another, case insensitive" - ], - "mb_strlen": [ - "int mb_strlen(string str [, string encoding])", - "Get character numbers of a string" - ], - "mb_strpos": [ - "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", - "Find position of first occurrence of a string within another" - ], - "mb_strrchr": [ - "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", - "Finds the last occurrence of a character in a string within another" - ], - "mb_strrichr": [ - "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", - "Finds the last occurrence of a character in a string within another, case insensitive" - ], - "mb_strripos": [ - "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", - "Finds position of last occurrence of a string within another, case insensitive" - ], - "mb_strrpos": [ - "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", - "Find position of last occurrence of a string within another" - ], - "mb_strstr": [ - "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", - "Finds first occurrence of a string within another" - ], - "mb_strtolower": [ - "string mb_strtolower(string sourcestring [, string encoding])", - "* Returns a lowercased version of sourcestring" - ], - "mb_strtoupper": [ - "string mb_strtoupper(string sourcestring [, string encoding])", - "* Returns a uppercased version of sourcestring" - ], - "mb_strwidth": [ - "int mb_strwidth(string str [, string encoding])", - "Gets terminal width of a string" - ], - "mb_substitute_character": [ - "mixed mb_substitute_character([mixed substchar])", - "Sets the current substitute_character or returns the current substitute_character" - ], - "mb_substr": [ - "string mb_substr(string str, int start [, int length [, string encoding]])", - "Returns part of a string" - ], - "mb_substr_count": [ - "int mb_substr_count(string haystack, string needle [, string encoding])", - "Count the number of substring occurrences" - ], - "mcrypt_cbc": [ - "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", - "CBC crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_cfb": [ - "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", - "CFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_create_iv": [ - "string mcrypt_create_iv(int size, int source)", - "Create an initialization vector (IV)" - ], - "mcrypt_decrypt": [ - "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_ecb": [ - "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", - "ECB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_enc_get_algorithms_name": [ - "string mcrypt_enc_get_algorithms_name(resource td)", - "Returns the name of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_block_size": [ - "int mcrypt_enc_get_block_size(resource td)", - "Returns the block size of the cipher specified by the descriptor td" - ], - "mcrypt_enc_get_iv_size": [ - "int mcrypt_enc_get_iv_size(resource td)", - "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_key_size": [ - "int mcrypt_enc_get_key_size(resource td)", - "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" - ], - "mcrypt_enc_get_modes_name": [ - "string mcrypt_enc_get_modes_name(resource td)", - "Returns the name of the mode specified by the descriptor td" - ], - "mcrypt_enc_get_supported_key_sizes": [ - "array mcrypt_enc_get_supported_key_sizes(resource td)", - "This function decrypts the crypttext" - ], - "mcrypt_enc_is_block_algorithm": [ - "bool mcrypt_enc_is_block_algorithm(resource td)", - "Returns TRUE if the alrogithm is a block algorithms" - ], - "mcrypt_enc_is_block_algorithm_mode": [ - "bool mcrypt_enc_is_block_algorithm_mode(resource td)", - "Returns TRUE if the mode is for use with block algorithms" - ], - "mcrypt_enc_is_block_mode": [ - "bool mcrypt_enc_is_block_mode(resource td)", - "Returns TRUE if the mode outputs blocks" - ], - "mcrypt_enc_self_test": [ - "int mcrypt_enc_self_test(resource td)", - "This function runs the self test on the algorithm specified by the descriptor td" - ], - "mcrypt_encrypt": [ - "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "mcrypt_generic": [ - "string mcrypt_generic(resource td, string data)", - "This function encrypts the plaintext" - ], - "mcrypt_generic_deinit": [ - "bool mcrypt_generic_deinit(resource td)", - "This function terminates encrypt specified by the descriptor td" - ], - "mcrypt_generic_init": [ - "int mcrypt_generic_init(resource td, string key, string iv)", - "This function initializes all buffers for the specific module" - ], - "mcrypt_get_block_size": [ - "int mcrypt_get_block_size(string cipher, string module)", - "Get the key size of cipher" - ], - "mcrypt_get_cipher_name": [ - "string mcrypt_get_cipher_name(string cipher)", - "Get the key size of cipher" - ], - "mcrypt_get_iv_size": [ - "int mcrypt_get_iv_size(string cipher, string module)", - "Get the IV size of cipher (Usually the same as the blocksize)" - ], - "mcrypt_get_key_size": [ - "int mcrypt_get_key_size(string cipher, string module)", - "Get the key size of cipher" - ], - "mcrypt_list_algorithms": [ - "array mcrypt_list_algorithms([string lib_dir])", - "List all algorithms in \"module_dir\"" - ], - "mcrypt_list_modes": [ - "array mcrypt_list_modes([string lib_dir])", - "List all modes \"module_dir\"" - ], - "mcrypt_module_close": [ - "bool mcrypt_module_close(resource td)", - "Free the descriptor td" - ], - "mcrypt_module_get_algo_block_size": [ - "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", - "Returns the block size of the algorithm" - ], - "mcrypt_module_get_algo_key_size": [ - "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", - "Returns the maximum supported key size of the algorithm" - ], - "mcrypt_module_get_supported_key_sizes": [ - "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", - "This function decrypts the crypttext" - ], - "mcrypt_module_is_block_algorithm": [ - "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", - "Returns TRUE if the algorithm is a block algorithm" - ], - "mcrypt_module_is_block_algorithm_mode": [ - "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", - "Returns TRUE if the mode is for use with block algorithms" - ], - "mcrypt_module_is_block_mode": [ - "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", - "Returns TRUE if the mode outputs blocks of bytes" - ], - "mcrypt_module_open": [ - "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", - "Opens the module of the algorithm and the mode to be used" - ], - "mcrypt_module_self_test": [ - "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", - "Does a self test of the module \"module\"" - ], - "mcrypt_ofb": [ - "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", - "OFB crypt/decrypt data using key key with cipher cipher starting with iv" - ], - "md5": [ - "string md5(string str, [ bool raw_output])", - "Calculate the md5 hash of a string" - ], - "md5_file": [ - "string md5_file(string filename [, bool raw_output])", - "Calculate the md5 hash of given filename" - ], - "mdecrypt_generic": [ - "string mdecrypt_generic(resource td, string data)", - "This function decrypts the plaintext" - ], - "memory_get_peak_usage": [ - "int memory_get_peak_usage([real_usage])", - "Returns the peak allocated by PHP memory" - ], - "memory_get_usage": [ - "int memory_get_usage([real_usage])", - "Returns the allocated by PHP memory" - ], - "metaphone": [ - "string metaphone(string text[, int phones])", - "Break english phrases down into their phonemes" - ], - "method_exists": [ - "bool method_exists(object object, string method)", - "Checks if the class method exists" - ], - "mhash": [ - "string mhash(int hash, string data [, string key])", - "Hash data with hash" - ], - "mhash_count": [ - "int mhash_count()", - "Gets the number of available hashes" - ], - "mhash_get_block_size": [ - "int mhash_get_block_size(int hash)", - "Gets the block size of hash" - ], - "mhash_get_hash_name": [ - "string mhash_get_hash_name(int hash)", - "Gets the name of hash" - ], - "mhash_keygen_s2k": [ - "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", - "Generates a key using hash functions" - ], - "microtime": [ - "mixed microtime([bool get_as_float])", - "Returns either a string or a float containing the current time in seconds and microseconds" - ], - "mime_content_type": [ - "string mime_content_type(string filename|resource stream)", - "Return content-type for file" - ], - "min": [ - "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", - "Return the lowest value in an array or a series of arguments" - ], - "mkdir": [ - "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", - "Create a directory" - ], - "mktime": [ - "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", - "Get UNIX timestamp for a date" - ], - "money_format": [ - "string money_format(string format , float value)", - "Convert monetary value(s) to string" - ], - "move_uploaded_file": [ - "bool move_uploaded_file(string path, string new_path)", - "Move a file if and only if it was created by an upload" - ], - "msg_get_queue": [ - "resource msg_get_queue(int key [, int perms])", - "Attach to a message queue" - ], - "msg_queue_exists": [ - "bool msg_queue_exists(int key)", - "Check whether a message queue exists" - ], - "msg_receive": [ - "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", - "Send a message of type msgtype (must be > 0) to a message queue" - ], - "msg_remove_queue": [ - "bool msg_remove_queue(resource queue)", - "Destroy the queue" - ], - "msg_send": [ - "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", - "Send a message of type msgtype (must be > 0) to a message queue" - ], - "msg_set_queue": [ - "bool msg_set_queue(resource queue, array data)", - "Set information for a message queue" - ], - "msg_stat_queue": [ - "array msg_stat_queue(resource queue)", - "Returns information about a message queue" - ], - "msgfmt_create": [ - "MessageFormatter msgfmt_create( string $locale, string $pattern )", - "* Create formatter." - ], - "msgfmt_format": [ - "mixed msgfmt_format( MessageFormatter $nf, array $args )", - "* Format a message." - ], - "msgfmt_format_message": [ - "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", - "* Format a message." - ], - "msgfmt_get_error_code": [ - "int msgfmt_get_error_code( MessageFormatter $nf )", - "* Get formatter's last error code." - ], - "msgfmt_get_error_message": [ - "string msgfmt_get_error_message( MessageFormatter $coll )", - "* Get text description for formatter's last error code." - ], - "msgfmt_get_locale": [ - "string msgfmt_get_locale(MessageFormatter $mf)", - "* Get formatter locale." - ], - "msgfmt_get_pattern": [ - "string msgfmt_get_pattern( MessageFormatter $mf )", - "* Get formatter pattern." - ], - "msgfmt_parse": [ - "array msgfmt_parse( MessageFormatter $nf, string $source )", - "* Parse a message." - ], - "msgfmt_set_pattern": [ - "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", - "* Set formatter pattern." - ], - "mssql_bind": [ - "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", - "Adds a parameter to a stored procedure or a remote stored procedure" - ], - "mssql_close": [ - "bool mssql_close([resource conn_id])", - "Closes a connection to a MS-SQL server" - ], - "mssql_connect": [ - "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", - "Establishes a connection to a MS-SQL server" - ], - "mssql_data_seek": [ - "bool mssql_data_seek(resource result_id, int offset)", - "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" - ], - "mssql_execute": [ - "mixed mssql_execute(resource stmt [, bool skip_results = false])", - "Executes a stored procedure on a MS-SQL server database" - ], - "mssql_fetch_array": [ - "array mssql_fetch_array(resource result_id [, int result_type])", - "Returns an associative array of the current row in the result set specified by result_id" - ], - "mssql_fetch_assoc": [ - "array mssql_fetch_assoc(resource result_id)", - "Returns an associative array of the current row in the result set specified by result_id" - ], - "mssql_fetch_batch": [ - "int mssql_fetch_batch(resource result_index)", - "Returns the next batch of records" - ], - "mssql_fetch_field": [ - "object mssql_fetch_field(resource result_id [, int offset])", - "Gets information about certain fields in a query result" - ], - "mssql_fetch_object": [ - "object mssql_fetch_object(resource result_id)", - "Returns a pseudo-object of the current row in the result set specified by result_id" - ], - "mssql_fetch_row": [ - "array mssql_fetch_row(resource result_id)", - "Returns an array of the current row in the result set specified by result_id" - ], - "mssql_field_length": [ - "int mssql_field_length(resource result_id [, int offset])", - "Get the length of a MS-SQL field" - ], - "mssql_field_name": [ - "string mssql_field_name(resource result_id [, int offset])", - "Returns the name of the field given by offset in the result set given by result_id" - ], - "mssql_field_seek": [ - "bool mssql_field_seek(resource result_id, int offset)", - "Seeks to the specified field offset" - ], - "mssql_field_type": [ - "string mssql_field_type(resource result_id [, int offset])", - "Returns the type of a field" - ], - "mssql_free_result": [ - "bool mssql_free_result(resource result_index)", - "Free a MS-SQL result index" - ], - "mssql_free_statement": [ - "bool mssql_free_statement(resource result_index)", - "Free a MS-SQL statement index" - ], - "mssql_get_last_message": [ - "string mssql_get_last_message()", - "Gets the last message from the MS-SQL server" - ], - "mssql_guid_string": [ - "string mssql_guid_string(string binary [,bool short_format])", - "Converts a 16 byte binary GUID to a string" - ], - "mssql_init": [ - "int mssql_init(string sp_name [, resource conn_id])", - "Initializes a stored procedure or a remote stored procedure" - ], - "mssql_min_error_severity": [ - "void mssql_min_error_severity(int severity)", - "Sets the lower error severity" - ], - "mssql_min_message_severity": [ - "void mssql_min_message_severity(int severity)", - "Sets the lower message severity" - ], - "mssql_next_result": [ - "bool mssql_next_result(resource result_id)", - "Move the internal result pointer to the next result" - ], - "mssql_num_fields": [ - "int mssql_num_fields(resource mssql_result_index)", - "Returns the number of fields fetched in from the result id specified" - ], - "mssql_num_rows": [ - "int mssql_num_rows(resource mssql_result_index)", - "Returns the number of rows fetched in from the result id specified" - ], - "mssql_pconnect": [ - "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", - "Establishes a persistent connection to a MS-SQL server" - ], - "mssql_query": [ - "resource mssql_query(string query [, resource conn_id [, int batch_size]])", - "Perform an SQL query on a MS-SQL server database" - ], - "mssql_result": [ - "string mssql_result(resource result_id, int row, mixed field)", - "Returns the contents of one cell from a MS-SQL result set" - ], - "mssql_rows_affected": [ - "int mssql_rows_affected(resource conn_id)", - "Returns the number of records affected by the query" - ], - "mssql_select_db": [ - "bool mssql_select_db(string database_name [, resource conn_id])", - "Select a MS-SQL database" - ], - "mt_getrandmax": [ - "int mt_getrandmax()", - "Returns the maximum value a random number from Mersenne Twister can have" - ], - "mt_rand": [ - "int mt_rand([int min, int max])", - "Returns a random number from Mersenne Twister" - ], - "mt_srand": [ - "void mt_srand([int seed])", - "Seeds Mersenne Twister random number generator" - ], - "mysql_affected_rows": [ - "int mysql_affected_rows([int link_identifier])", - "Gets number of affected rows in previous MySQL operation" - ], - "mysql_client_encoding": [ - "string mysql_client_encoding([int link_identifier])", - "Returns the default character set for the current connection" - ], - "mysql_close": [ - "bool mysql_close([int link_identifier])", - "Close a MySQL connection" - ], - "mysql_connect": [ - "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", - "Opens a connection to a MySQL Server" - ], - "mysql_create_db": [ - "bool mysql_create_db(string database_name [, int link_identifier])", - "Create a MySQL database" - ], - "mysql_data_seek": [ - "bool mysql_data_seek(resource result, int row_number)", - "Move internal result pointer" - ], - "mysql_db_query": [ - "resource mysql_db_query(string database_name, string query [, int link_identifier])", - "Sends an SQL query to MySQL" - ], - "mysql_drop_db": [ - "bool mysql_drop_db(string database_name [, int link_identifier])", - "Drops (delete) a MySQL database" - ], - "mysql_errno": [ - "int mysql_errno([int link_identifier])", - "Returns the number of the error message from previous MySQL operation" - ], - "mysql_error": [ - "string mysql_error([int link_identifier])", - "Returns the text of the error message from previous MySQL operation" - ], - "mysql_escape_string": [ - "string mysql_escape_string(string to_be_escaped)", - "Escape string for mysql query" - ], - "mysql_fetch_array": [ - "array mysql_fetch_array(resource result [, int result_type])", - "Fetch a result row as an array (associative, numeric or both)" - ], - "mysql_fetch_assoc": [ - "array mysql_fetch_assoc(resource result)", - "Fetch a result row as an associative array" - ], - "mysql_fetch_field": [ - "object mysql_fetch_field(resource result [, int field_offset])", - "Gets column information from a result and return as an object" - ], - "mysql_fetch_lengths": [ - "array mysql_fetch_lengths(resource result)", - "Gets max data size of each column in a result" - ], - "mysql_fetch_object": [ - "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", - "Fetch a result row as an object" - ], - "mysql_fetch_row": [ - "array mysql_fetch_row(resource result)", - "Gets a result row as an enumerated array" - ], - "mysql_field_flags": [ - "string mysql_field_flags(resource result, int field_offset)", - "Gets the flags associated with the specified field in a result" - ], - "mysql_field_len": [ - "int mysql_field_len(resource result, int field_offset)", - "Returns the length of the specified field" - ], - "mysql_field_name": [ - "string mysql_field_name(resource result, int field_index)", - "Gets the name of the specified field in a result" - ], - "mysql_field_seek": [ - "bool mysql_field_seek(resource result, int field_offset)", - "Sets result pointer to a specific field offset" - ], - "mysql_field_table": [ - "string mysql_field_table(resource result, int field_offset)", - "Gets name of the table the specified field is in" - ], - "mysql_field_type": [ - "string mysql_field_type(resource result, int field_offset)", - "Gets the type of the specified field in a result" - ], - "mysql_free_result": [ - "bool mysql_free_result(resource result)", - "Free result memory" - ], - "mysql_get_client_info": [ - "string mysql_get_client_info()", - "Returns a string that represents the client library version" - ], - "mysql_get_host_info": [ - "string mysql_get_host_info([int link_identifier])", - "Returns a string describing the type of connection in use, including the server host name" - ], - "mysql_get_proto_info": [ - "int mysql_get_proto_info([int link_identifier])", - "Returns the protocol version used by current connection" - ], - "mysql_get_server_info": [ - "string mysql_get_server_info([int link_identifier])", - "Returns a string that represents the server version number" - ], - "mysql_info": [ - "string mysql_info([int link_identifier])", - "Returns a string containing information about the most recent query" - ], - "mysql_insert_id": [ - "int mysql_insert_id([int link_identifier])", - "Gets the ID generated from the previous INSERT operation" - ], - "mysql_list_dbs": [ - "resource mysql_list_dbs([int link_identifier])", - "List databases available on a MySQL server" - ], - "mysql_list_fields": [ - "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", - "List MySQL result fields" - ], - "mysql_list_processes": [ - "resource mysql_list_processes([int link_identifier])", - "Returns a result set describing the current server threads" - ], - "mysql_list_tables": [ - "resource mysql_list_tables(string database_name [, int link_identifier])", - "List tables in a MySQL database" - ], - "mysql_num_fields": [ - "int mysql_num_fields(resource result)", - "Gets number of fields in a result" - ], - "mysql_num_rows": [ - "int mysql_num_rows(resource result)", - "Gets number of rows in a result" - ], - "mysql_pconnect": [ - "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", - "Opens a persistent connection to a MySQL Server" - ], - "mysql_ping": [ - "bool mysql_ping([int link_identifier])", - "Ping a server connection. If no connection then reconnect." - ], - "mysql_query": [ - "resource mysql_query(string query [, int link_identifier])", - "Sends an SQL query to MySQL" - ], - "mysql_real_escape_string": [ - "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", - "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" - ], - "mysql_result": [ - "mixed mysql_result(resource result, int row [, mixed field])", - "Gets result data" - ], - "mysql_select_db": [ - "bool mysql_select_db(string database_name [, int link_identifier])", - "Selects a MySQL database" - ], - "mysql_set_charset": [ - "bool mysql_set_charset(string csname [, int link_identifier])", - "sets client character set" - ], - "mysql_stat": [ - "string mysql_stat([int link_identifier])", - "Returns a string containing status information" - ], - "mysql_thread_id": [ - "int mysql_thread_id([int link_identifier])", - "Returns the thread id of current connection" - ], - "mysql_unbuffered_query": [ - "resource mysql_unbuffered_query(string query [, int link_identifier])", - "Sends an SQL query to MySQL, without fetching and buffering the result rows" - ], - "mysqli_affected_rows": [ - "mixed mysqli_affected_rows(object link)", - "Get number of affected rows in previous MySQL operation" - ], - "mysqli_autocommit": [ - "bool mysqli_autocommit(object link, bool mode)", - "Turn auto commit on or of" - ], - "mysqli_cache_stats": [ - "array mysqli_cache_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_change_user": [ - "bool mysqli_change_user(object link, string user, string password, string database)", - "Change logged-in user of the active connection" - ], - "mysqli_character_set_name": [ - "string mysqli_character_set_name(object link)", - "Returns the name of the character set used for this connection" - ], - "mysqli_close": [ - "bool mysqli_close(object link)", - "Close connection" - ], - "mysqli_commit": [ - "bool mysqli_commit(object link)", - "Commit outstanding actions and close transaction" - ], - "mysqli_connect": [ - "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", - "Open a connection to a mysql server" - ], - "mysqli_connect_errno": [ - "int mysqli_connect_errno()", - "Returns the numerical value of the error message from last connect command" - ], - "mysqli_connect_error": [ - "string mysqli_connect_error()", - "Returns the text of the error message from previous MySQL operation" - ], - "mysqli_data_seek": [ - "bool mysqli_data_seek(object result, int offset)", - "Move internal result pointer" - ], - "mysqli_debug": [ - "void mysqli_debug(string debug)", - "" - ], - "mysqli_dump_debug_info": [ - "bool mysqli_dump_debug_info(object link)", - "" - ], - "mysqli_embedded_server_end": [ - "void mysqli_embedded_server_end()", - "" - ], - "mysqli_embedded_server_start": [ - "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", - "initialize and start embedded server" - ], - "mysqli_errno": [ - "int mysqli_errno(object link)", - "Returns the numerical value of the error message from previous MySQL operation" - ], - "mysqli_error": [ - "string mysqli_error(object link)", - "Returns the text of the error message from previous MySQL operation" - ], - "mysqli_fetch_all": [ - "mixed mysqli_fetch_all(object result [,int resulttype])", - "Fetches all result rows as an associative array, a numeric array, or both" - ], - "mysqli_fetch_array": [ - "mixed mysqli_fetch_array(object result [,int resulttype])", - "Fetch a result row as an associative array, a numeric array, or both" - ], - "mysqli_fetch_assoc": [ - "mixed mysqli_fetch_assoc(object result)", - "Fetch a result row as an associative array" - ], - "mysqli_fetch_field": [ - "mixed mysqli_fetch_field(object result)", - "Get column information from a result and return as an object" - ], - "mysqli_fetch_field_direct": [ - "mixed mysqli_fetch_field_direct(object result, int offset)", - "Fetch meta-data for a single field" - ], - "mysqli_fetch_fields": [ - "mixed mysqli_fetch_fields(object result)", - "Return array of objects containing field meta-data" - ], - "mysqli_fetch_lengths": [ - "mixed mysqli_fetch_lengths(object result)", - "Get the length of each output in a result" - ], - "mysqli_fetch_object": [ - "mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])", - "Fetch a result row as an object" - ], - "mysqli_fetch_row": [ - "array mysqli_fetch_row(object result)", - "Get a result row as an enumerated array" - ], - "mysqli_field_count": [ - "int mysqli_field_count(object link)", - "Fetch the number of fields returned by the last query for the given link" - ], - "mysqli_field_seek": [ - "int mysqli_field_seek(object result, int fieldnr)", - "Set result pointer to a specified field offset" - ], - "mysqli_field_tell": [ - "int mysqli_field_tell(object result)", - "Get current field offset of result pointer" - ], - "mysqli_free_result": [ - "void mysqli_free_result(object result)", - "Free query result memory for the given result handle" - ], - "mysqli_get_charset": [ - "object mysqli_get_charset(object link)", - "returns a character set object" - ], - "mysqli_get_client_info": [ - "string mysqli_get_client_info()", - "Get MySQL client info" - ], - "mysqli_get_client_stats": [ - "array mysqli_get_client_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_get_client_version": [ - "int mysqli_get_client_version()", - "Get MySQL client info" - ], - "mysqli_get_connection_stats": [ - "array mysqli_get_connection_stats()", - "Returns statistics about the zval cache" - ], - "mysqli_get_host_info": [ - "string mysqli_get_host_info(object link)", - "Get MySQL host info" - ], - "mysqli_get_proto_info": [ - "int mysqli_get_proto_info(object link)", - "Get MySQL protocol information" - ], - "mysqli_get_server_info": [ - "string mysqli_get_server_info(object link)", - "Get MySQL server info" - ], - "mysqli_get_server_version": [ - "int mysqli_get_server_version(object link)", - "Return the MySQL version for the server referenced by the given link" - ], - "mysqli_get_warnings": [ - "object mysqli_get_warnings(object link)", - "" - ], - "mysqli_info": [ - "string mysqli_info(object link)", - "Get information about the most recent query" - ], - "mysqli_init": [ - "resource mysqli_init()", - "Initialize mysqli and return a resource for use with mysql_real_connect" - ], - "mysqli_insert_id": [ - "mixed mysqli_insert_id(object link)", - "Get the ID generated from the previous INSERT operation" - ], - "mysqli_kill": [ - "bool mysqli_kill(object link, int processid)", - "Kill a mysql process on the server" - ], - "mysqli_link_construct": [ - "object mysqli_link_construct()", - "" - ], - "mysqli_more_results": [ - "bool mysqli_more_results(object link)", - "check if there any more query results from a multi query" - ], - "mysqli_multi_query": [ - "bool mysqli_multi_query(object link, string query)", - "allows to execute multiple queries" - ], - "mysqli_next_result": [ - "bool mysqli_next_result(object link)", - "read next result from multi_query" - ], - "mysqli_num_fields": [ - "int mysqli_num_fields(object result)", - "Get number of fields in result" - ], - "mysqli_num_rows": [ - "mixed mysqli_num_rows(object result)", - "Get number of rows in result" - ], - "mysqli_options": [ - "bool mysqli_options(object link, int flags, mixed values)", - "Set options" - ], - "mysqli_ping": [ - "bool mysqli_ping(object link)", - "Ping a server connection or reconnect if there is no connection" - ], - "mysqli_poll": [ - "int mysqli_poll(array read, array write, array error, long sec [, long usec])", - "Poll connections" - ], - "mysqli_prepare": [ - "mixed mysqli_prepare(object link, string query)", - "Prepare a SQL statement for execution" - ], - "mysqli_query": [ - "mixed mysqli_query(object link, string query [,int resultmode])", - "" - ], - "mysqli_real_connect": [ - "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", - "Open a connection to a mysql server" - ], - "mysqli_real_escape_string": [ - "string mysqli_real_escape_string(object link, string escapestr)", - "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" - ], - "mysqli_real_query": [ - "bool mysqli_real_query(object link, string query)", - "Binary-safe version of mysql_query()" - ], - "mysqli_reap_async_query": [ - "int mysqli_reap_async_query(object link)", - "Poll connections" - ], - "mysqli_refresh": [ - "bool mysqli_refresh(object link, long options)", - "Flush tables or caches, or reset replication server information" - ], - "mysqli_report": [ - "bool mysqli_report(int flags)", - "sets report level" - ], - "mysqli_rollback": [ - "bool mysqli_rollback(object link)", - "Undo actions from current transaction" - ], - "mysqli_select_db": [ - "bool mysqli_select_db(object link, string dbname)", - "Select a MySQL database" - ], - "mysqli_set_charset": [ - "bool mysqli_set_charset(object link, string csname)", - "sets client character set" - ], - "mysqli_set_local_infile_default": [ - "void mysqli_set_local_infile_default(object link)", - "unsets user defined handler for load local infile command" - ], - "mysqli_set_local_infile_handler": [ - "bool mysqli_set_local_infile_handler(object link, callback read_func)", - "Set callback functions for LOAD DATA LOCAL INFILE" - ], - "mysqli_sqlstate": [ - "string mysqli_sqlstate(object link)", - "Returns the SQLSTATE error from previous MySQL operation" - ], - "mysqli_ssl_set": [ - "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", - "" - ], - "mysqli_stat": [ - "mixed mysqli_stat(object link)", - "Get current system status" - ], - "mysqli_stmt_affected_rows": [ - "mixed mysqli_stmt_affected_rows(object stmt)", - "Return the number of rows affected in the last query for the given link" - ], - "mysqli_stmt_attr_get": [ - "int mysqli_stmt_attr_get(object stmt, long attr)", - "" - ], - "mysqli_stmt_attr_set": [ - "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", - "" - ], - "mysqli_stmt_bind_param": [ - "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", - "Bind variables to a prepared statement as parameters" - ], - "mysqli_stmt_bind_result": [ - "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", - "Bind variables to a prepared statement for result storage" - ], - "mysqli_stmt_close": [ - "bool mysqli_stmt_close(object stmt)", - "Close statement" - ], - "mysqli_stmt_data_seek": [ - "void mysqli_stmt_data_seek(object stmt, int offset)", - "Move internal result pointer" - ], - "mysqli_stmt_errno": [ - "int mysqli_stmt_errno(object stmt)", - "" - ], - "mysqli_stmt_error": [ - "string mysqli_stmt_error(object stmt)", - "" - ], - "mysqli_stmt_execute": [ - "bool mysqli_stmt_execute(object stmt)", - "Execute a prepared statement" - ], - "mysqli_stmt_fetch": [ - "mixed mysqli_stmt_fetch(object stmt)", - "Fetch results from a prepared statement into the bound variables" - ], - "mysqli_stmt_field_count": [ - "int mysqli_stmt_field_count(object stmt) {", - "Return the number of result columns for the given statement" - ], - "mysqli_stmt_free_result": [ - "void mysqli_stmt_free_result(object stmt)", - "Free stored result memory for the given statement handle" - ], - "mysqli_stmt_get_result": [ - "object mysqli_stmt_get_result(object link)", - "Buffer result set on client" - ], - "mysqli_stmt_get_warnings": [ - "object mysqli_stmt_get_warnings(object link)", - "" - ], - "mysqli_stmt_init": [ - "mixed mysqli_stmt_init(object link)", - "Initialize statement object" - ], - "mysqli_stmt_insert_id": [ - "mixed mysqli_stmt_insert_id(object stmt)", - "Get the ID generated from the previous INSERT operation" - ], - "mysqli_stmt_next_result": [ - "bool mysqli_stmt_next_result(object link)", - "read next result from multi_query" - ], - "mysqli_stmt_num_rows": [ - "mixed mysqli_stmt_num_rows(object stmt)", - "Return the number of rows in statements result set" - ], - "mysqli_stmt_param_count": [ - "int mysqli_stmt_param_count(object stmt)", - "Return the number of parameter for the given statement" - ], - "mysqli_stmt_prepare": [ - "bool mysqli_stmt_prepare(object stmt, string query)", - "prepare server side statement with query" - ], - "mysqli_stmt_reset": [ - "bool mysqli_stmt_reset(object stmt)", - "reset a prepared statement" - ], - "mysqli_stmt_result_metadata": [ - "mixed mysqli_stmt_result_metadata(object stmt)", - "return result set from statement" - ], - "mysqli_stmt_send_long_data": [ - "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", - "" - ], - "mysqli_stmt_sqlstate": [ - "string mysqli_stmt_sqlstate(object stmt)", - "" - ], - "mysqli_stmt_store_result": [ - "bool mysqli_stmt_store_result(stmt)", - "" - ], - "mysqli_store_result": [ - "object mysqli_store_result(object link)", - "Buffer result set on client" - ], - "mysqli_thread_id": [ - "int mysqli_thread_id(object link)", - "Return the current thread ID" - ], - "mysqli_thread_safe": [ - "bool mysqli_thread_safe()", - "Return whether thread safety is given or not" - ], - "mysqli_use_result": [ - "mixed mysqli_use_result(object link)", - "Directly retrieve query results - do not buffer results on client side" - ], - "mysqli_warning_count": [ - "int mysqli_warning_count(object link)", - "Return number of warnings from the last query for the given link" - ], - "natcasesort": [ - "void natcasesort(array &array_arg)", - "Sort an array using case-insensitive natural sort" - ], - "natsort": [ - "void natsort(array &array_arg)", - "Sort an array using natural sort" - ], - "next": [ - "mixed next(array array_arg)", - "Move array argument's internal pointer to the next element and return it" - ], - "ngettext": [ - "string ngettext(string MSGID1, string MSGID2, int N)", - "Plural version of gettext()" - ], - "nl2br": [ - "string nl2br(string str [, bool is_xhtml])", - "Converts newlines to HTML line breaks" - ], - "nl_langinfo": [ - "string nl_langinfo(int item)", - "Query language and locale information" - ], - "normalizer_is_normalize": [ - "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", - "* Test if a string is in a given normalization form." - ], - "normalizer_normalize": [ - "string normalizer_normalize( string $input [, string $form = FORM_C] )", - "* Normalize a string." - ], - "nsapi_request_headers": [ - "array nsapi_request_headers()", - "Get all headers from the request" - ], - "nsapi_response_headers": [ - "array nsapi_response_headers()", - "Get all headers from the response" - ], - "nsapi_virtual": [ - "bool nsapi_virtual(string uri)", - "Perform an NSAPI sub-request" - ], - "number_format": [ - "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", - "Formats a number with grouped thousands" - ], - "numfmt_create": [ - "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", - "* Create number formatter." - ], - "numfmt_format": [ - "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", - "* Format a number." - ], - "numfmt_format_currency": [ - "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", - "* Format a number as currency." - ], - "numfmt_get_attribute": [ - "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", - "* Get formatter attribute value." - ], - "numfmt_get_error_code": [ - "int numfmt_get_error_code( NumberFormatter $nf )", - "* Get formatter's last error code." - ], - "numfmt_get_error_message": [ - "string numfmt_get_error_message( NumberFormatter $nf )", - "* Get text description for formatter's last error code." - ], - "numfmt_get_locale": [ - "string numfmt_get_locale( NumberFormatter $nf[, int type] )", - "* Get formatter locale." - ], - "numfmt_get_pattern": [ - "string numfmt_get_pattern( NumberFormatter $nf )", - "* Get formatter pattern." - ], - "numfmt_get_symbol": [ - "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", - "* Get formatter symbol value." - ], - "numfmt_get_text_attribute": [ - "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", - "* Get formatter attribute value." - ], - "numfmt_parse": [ - "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", - "* Parse a number." - ], - "numfmt_parse_currency": [ - "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", - "* Parse a number as currency." - ], - "numfmt_parse_message": [ - "array numfmt_parse_message( string $locale, string $pattern, string $source )", - "* Parse a message." - ], - "numfmt_set_attribute": [ - "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", - "* Get formatter attribute value." - ], - "numfmt_set_pattern": [ - "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", - "* Set formatter pattern." - ], - "numfmt_set_symbol": [ - "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", - "* Set formatter symbol value." - ], - "numfmt_set_text_attribute": [ - "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", - "* Get formatter attribute value." - ], - "ob_clean": [ - "bool ob_clean()", - "Clean (delete) the current output buffer" - ], - "ob_end_clean": [ - "bool ob_end_clean()", - "Clean the output buffer, and delete current output buffer" - ], - "ob_end_flush": [ - "bool ob_end_flush()", - "Flush (send) the output buffer, and delete current output buffer" - ], - "ob_flush": [ - "bool ob_flush()", - "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" - ], - "ob_get_clean": [ - "bool ob_get_clean()", - "Get current buffer contents and delete current output buffer" - ], - "ob_get_contents": [ - "string ob_get_contents()", - "Return the contents of the output buffer" - ], - "ob_get_flush": [ - "bool ob_get_flush()", - "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" - ], - "ob_get_length": [ - "int ob_get_length()", - "Return the length of the output buffer" - ], - "ob_get_level": [ - "int ob_get_level()", - "Return the nesting level of the output buffer" - ], - "ob_get_status": [ - "false|array ob_get_status([bool full_status])", - "Return the status of the active or all output buffers" - ], - "ob_gzhandler": [ - "string ob_gzhandler(string str, int mode)", - "Encode str based on accept-encoding setting - designed to be called from ob_start()" - ], - "ob_iconv_handler": [ - "string ob_iconv_handler(string contents, int status)", - "Returns str in output buffer converted to the iconv.output_encoding character set" - ], - "ob_implicit_flush": [ - "void ob_implicit_flush([int flag])", - "Turn implicit flush on/off and is equivalent to calling flush() after every output call" - ], - "ob_list_handlers": [ - "false|array ob_list_handlers()", - "* List all output_buffers in an array" - ], - "ob_start": [ - "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", - "Turn on Output Buffering (specifying an optional output handler)." - ], - "oci_bind_array_by_name": [ - "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", - "Bind a PHP array to an Oracle PL/SQL type by name" - ], - "oci_bind_by_name": [ - "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", - "Bind a PHP variable to an Oracle placeholder by name" - ], - "oci_cancel": [ - "bool oci_cancel(resource stmt)", - "Cancel reading from a cursor" - ], - "oci_close": [ - "bool oci_close(resource connection)", - "Disconnect from database" - ], - "oci_collection_append": [ - "bool oci_collection_append(string value)", - "Append an object to the collection" - ], - "oci_collection_assign": [ - "bool oci_collection_assign(object from)", - "Assign a collection from another existing collection" - ], - "oci_collection_element_assign": [ - "bool oci_collection_element_assign(int index, string val)", - "Assign element val to collection at index ndx" - ], - "oci_collection_element_get": [ - "string oci_collection_element_get(int ndx)", - "Retrieve the value at collection index ndx" - ], - "oci_collection_max": [ - "int oci_collection_max()", - "Return the max value of a collection. For a varray this is the maximum length of the array" - ], - "oci_collection_size": [ - "int oci_collection_size()", - "Return the size of a collection" - ], - "oci_collection_trim": [ - "bool oci_collection_trim(int num)", - "Trim num elements from the end of a collection" - ], - "oci_commit": [ - "bool oci_commit(resource connection)", - "Commit the current context" - ], - "oci_connect": [ - "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", - "Connect to an Oracle database and log on. Returns a new session." - ], - "oci_define_by_name": [ - "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", - "Define a PHP variable to an Oracle column by name" - ], - "oci_error": [ - "array oci_error([resource stmt|connection|global])", - "Return the last error of stmt|connection|global. If no error happened returns false." - ], - "oci_execute": [ - "bool oci_execute(resource stmt [, int mode])", - "Execute a parsed statement" - ], - "oci_fetch": [ - "bool oci_fetch(resource stmt)", - "Prepare a new row of data for reading" - ], - "oci_fetch_all": [ - "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", - "Fetch all rows of result data into an array" - ], - "oci_fetch_array": [ - "array oci_fetch_array( resource stmt [, int mode ])", - "Fetch a result row as an array" - ], - "oci_fetch_assoc": [ - "array oci_fetch_assoc( resource stmt )", - "Fetch a result row as an associative array" - ], - "oci_fetch_object": [ - "object oci_fetch_object( resource stmt )", - "Fetch a result row as an object" - ], - "oci_fetch_row": [ - "array oci_fetch_row( resource stmt )", - "Fetch a result row as an enumerated array" - ], - "oci_field_is_null": [ - "bool oci_field_is_null(resource stmt, int col)", - "Tell whether a column is NULL" - ], - "oci_field_name": [ - "string oci_field_name(resource stmt, int col)", - "Tell the name of a column" - ], - "oci_field_precision": [ - "int oci_field_precision(resource stmt, int col)", - "Tell the precision of a column" - ], - "oci_field_scale": [ - "int oci_field_scale(resource stmt, int col)", - "Tell the scale of a column" - ], - "oci_field_size": [ - "int oci_field_size(resource stmt, int col)", - "Tell the maximum data size of a column" - ], - "oci_field_type": [ - "mixed oci_field_type(resource stmt, int col)", - "Tell the data type of a column" - ], - "oci_field_type_raw": [ - "int oci_field_type_raw(resource stmt, int col)", - "Tell the raw oracle data type of a column" - ], - "oci_free_collection": [ - "bool oci_free_collection()", - "Deletes collection object" - ], - "oci_free_descriptor": [ - "bool oci_free_descriptor()", - "Deletes large object description" - ], - "oci_free_statement": [ - "bool oci_free_statement(resource stmt)", - "Free all resources associated with a statement" - ], - "oci_internal_debug": [ - "void oci_internal_debug(int onoff)", - "Toggle internal debugging output for the OCI extension" - ], - "oci_lob_append": [ - "bool oci_lob_append( object lob )", - "Appends data from a LOB to another LOB" - ], - "oci_lob_close": [ - "bool oci_lob_close()", - "Closes lob descriptor" - ], - "oci_lob_copy": [ - "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", - "Copies data from a LOB to another LOB" - ], - "oci_lob_eof": [ - "bool oci_lob_eof()", - "Checks if EOF is reached" - ], - "oci_lob_erase": [ - "int oci_lob_erase( [ int offset [, int length ] ] )", - "Erases a specified portion of the internal LOB, starting at a specified offset" - ], - "oci_lob_export": [ - "bool oci_lob_export([string filename [, int start [, int length]]])", - "Writes a large object into a file" - ], - "oci_lob_flush": [ - "bool oci_lob_flush( [ int flag ] )", - "Flushes the LOB buffer" - ], - "oci_lob_import": [ - "bool oci_lob_import( string filename )", - "Loads file into a LOB" - ], - "oci_lob_is_equal": [ - "bool oci_lob_is_equal( object lob1, object lob2 )", - "Tests to see if two LOB/FILE locators are equal" - ], - "oci_lob_load": [ - "string oci_lob_load()", - "Loads a large object" - ], - "oci_lob_read": [ - "string oci_lob_read( int length )", - "Reads particular part of a large object" - ], - "oci_lob_rewind": [ - "bool oci_lob_rewind()", - "Rewind pointer of a LOB" - ], - "oci_lob_save": [ - "bool oci_lob_save( string data [, int offset ])", - "Saves a large object" - ], - "oci_lob_seek": [ - "bool oci_lob_seek( int offset [, int whence ])", - "Moves the pointer of a LOB" - ], - "oci_lob_size": [ - "int oci_lob_size()", - "Returns size of a large object" - ], - "oci_lob_tell": [ - "int oci_lob_tell()", - "Tells LOB pointer position" - ], - "oci_lob_truncate": [ - "bool oci_lob_truncate( [ int length ])", - "Truncates a LOB" - ], - "oci_lob_write": [ - "int oci_lob_write( string string [, int length ])", - "Writes data to current position of a LOB" - ], - "oci_lob_write_temporary": [ - "bool oci_lob_write_temporary(string var [, int lob_type])", - "Writes temporary blob" - ], - "oci_new_collection": [ - "object oci_new_collection(resource connection, string tdo [, string schema])", - "Initialize a new collection" - ], - "oci_new_connect": [ - "resource oci_new_connect(string user, string pass [, string db])", - "Connect to an Oracle database and log on. Returns a new session." - ], - "oci_new_cursor": [ - "resource oci_new_cursor(resource connection)", - "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" - ], - "oci_new_descriptor": [ - "object oci_new_descriptor(resource connection [, int type])", - "Initialize a new empty descriptor LOB/FILE (LOB is default)" - ], - "oci_num_fields": [ - "int oci_num_fields(resource stmt)", - "Return the number of result columns in a statement" - ], - "oci_num_rows": [ - "int oci_num_rows(resource stmt)", - "Return the row count of an OCI statement" - ], - "oci_parse": [ - "resource oci_parse(resource connection, string query)", - "Parse a query and return a statement" - ], - "oci_password_change": [ - "bool oci_password_change(resource connection, string username, string old_password, string new_password)", - "Changes the password of an account" - ], - "oci_pconnect": [ - "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", - "Connect to an Oracle database using a persistent connection and log on. Returns a new session." - ], - "oci_result": [ - "string oci_result(resource stmt, mixed column)", - "Return a single column of result data" - ], - "oci_rollback": [ - "bool oci_rollback(resource connection)", - "Rollback the current context" - ], - "oci_server_version": [ - "string oci_server_version(resource connection)", - "Return a string containing server version information" - ], - "oci_set_action": [ - "bool oci_set_action(resource connection, string value)", - "Sets the action attribute on the connection" - ], - "oci_set_client_identifier": [ - "bool oci_set_client_identifier(resource connection, string value)", - "Sets the client identifier attribute on the connection" - ], - "oci_set_client_info": [ - "bool oci_set_client_info(resource connection, string value)", - "Sets the client info attribute on the connection" - ], - "oci_set_edition": [ - "bool oci_set_edition(string value)", - "Sets the edition attribute for all subsequent connections created" - ], - "oci_set_module_name": [ - "bool oci_set_module_name(resource connection, string value)", - "Sets the module attribute on the connection" - ], - "oci_set_prefetch": [ - "bool oci_set_prefetch(resource stmt, int prefetch_rows)", - "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" - ], - "oci_statement_type": [ - "string oci_statement_type(resource stmt)", - "Return the query type of an OCI statement" - ], - "ocifetchinto": [ - "int ocifetchinto(resource stmt, array &output [, int mode])", - "Fetch a row of result data into an array" - ], - "ocigetbufferinglob": [ - "bool ocigetbufferinglob()", - "Returns current state of buffering for a LOB" - ], - "ocisetbufferinglob": [ - "bool ocisetbufferinglob( bool flag )", - "Enables/disables buffering for a LOB" - ], - "octdec": [ - "int octdec(string octal_number)", - "Returns the decimal equivalent of an octal string" - ], - "odbc_autocommit": [ - "mixed odbc_autocommit(resource connection_id [, int OnOff])", - "Toggle autocommit mode or get status" - ], - "odbc_binmode": [ - "bool odbc_binmode(int result_id, int mode)", - "Handle binary column data" - ], - "odbc_close": [ - "void odbc_close(resource connection_id)", - "Close an ODBC connection" - ], - "odbc_close_all": [ - "void odbc_close_all()", - "Close all ODBC connections" - ], - "odbc_columnprivileges": [ - "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", - "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" - ], - "odbc_columns": [ - "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", - "Returns a result identifier that can be used to fetch a list of column names in specified tables" - ], - "odbc_commit": [ - "bool odbc_commit(resource connection_id)", - "Commit an ODBC transaction" - ], - "odbc_connect": [ - "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", - "Connect to a datasource" - ], - "odbc_cursor": [ - "string odbc_cursor(resource result_id)", - "Get cursor name" - ], - "odbc_data_source": [ - "array odbc_data_source(resource connection_id, int fetch_type)", - "Return information about the currently connected data source" - ], - "odbc_error": [ - "string odbc_error([resource connection_id])", - "Get the last error code" - ], - "odbc_errormsg": [ - "string odbc_errormsg([resource connection_id])", - "Get the last error message" - ], - "odbc_exec": [ - "resource odbc_exec(resource connection_id, string query [, int flags])", - "Prepare and execute an SQL statement" - ], - "odbc_execute": [ - "bool odbc_execute(resource result_id [, array parameters_array])", - "Execute a prepared statement" - ], - "odbc_fetch_array": [ - "array odbc_fetch_array(int result [, int rownumber])", - "Fetch a result row as an associative array" - ], - "odbc_fetch_into": [ - "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", - "Fetch one result row into an array" - ], - "odbc_fetch_object": [ - "object odbc_fetch_object(int result [, int rownumber])", - "Fetch a result row as an object" - ], - "odbc_fetch_row": [ - "bool odbc_fetch_row(resource result_id [, int row_number])", - "Fetch a row" - ], - "odbc_field_len": [ - "int odbc_field_len(resource result_id, int field_number)", - "Get the length (precision) of a column" - ], - "odbc_field_name": [ - "string odbc_field_name(resource result_id, int field_number)", - "Get a column name" - ], - "odbc_field_num": [ - "int odbc_field_num(resource result_id, string field_name)", - "Return column number" - ], - "odbc_field_scale": [ - "int odbc_field_scale(resource result_id, int field_number)", - "Get the scale of a column" - ], - "odbc_field_type": [ - "string odbc_field_type(resource result_id, int field_number)", - "Get the datatype of a column" - ], - "odbc_foreignkeys": [ - "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", - "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" - ], - "odbc_free_result": [ - "bool odbc_free_result(resource result_id)", - "Free resources associated with a result" - ], - "odbc_gettypeinfo": [ - "resource odbc_gettypeinfo(resource connection_id [, int data_type])", - "Returns a result identifier containing information about data types supported by the data source" - ], - "odbc_longreadlen": [ - "bool odbc_longreadlen(int result_id, int length)", - "Handle LONG columns" - ], - "odbc_next_result": [ - "bool odbc_next_result(resource result_id)", - "Checks if multiple results are avaiable" - ], - "odbc_num_fields": [ - "int odbc_num_fields(resource result_id)", - "Get number of columns in a result" - ], - "odbc_num_rows": [ - "int odbc_num_rows(resource result_id)", - "Get number of rows in a result" - ], - "odbc_pconnect": [ - "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", - "Establish a persistent connection to a datasource" - ], - "odbc_prepare": [ - "resource odbc_prepare(resource connection_id, string query)", - "Prepares a statement for execution" - ], - "odbc_primarykeys": [ - "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", - "Returns a result identifier listing the column names that comprise the primary key for a table" - ], - "odbc_procedurecolumns": [ - "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", - "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" - ], - "odbc_procedures": [ - "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", - "Returns a result identifier containg the list of procedure names in a datasource" - ], - "odbc_result": [ - "mixed odbc_result(resource result_id, mixed field)", - "Get result data" - ], - "odbc_result_all": [ - "int odbc_result_all(resource result_id [, string format])", - "Print result as HTML table" - ], - "odbc_rollback": [ - "bool odbc_rollback(resource connection_id)", - "Rollback a transaction" - ], - "odbc_setoption": [ - "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", - "Sets connection or statement options" - ], - "odbc_specialcolumns": [ - "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", - "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" - ], - "odbc_statistics": [ - "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", - "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" - ], - "odbc_tableprivileges": [ - "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", - "Returns a result identifier containing a list of tables and the privileges associated with each table" - ], - "odbc_tables": [ - "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", - "Call the SQLTables function" - ], - "opendir": [ - "mixed opendir(string path[, resource context])", - "Open a directory and return a dir_handle" - ], - "openlog": [ - "bool openlog(string ident, int option, int facility)", - "Open connection to system logger" - ], - "openssl_csr_export": [ - "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", - "Exports a CSR to file or a var" - ], - "openssl_csr_export_to_file": [ - "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", - "Exports a CSR to file" - ], - "openssl_csr_get_public_key": [ - "mixed openssl_csr_get_public_key(mixed csr)", - "Returns the subject of a CERT or FALSE on error" - ], - "openssl_csr_get_subject": [ - "mixed openssl_csr_get_subject(mixed csr)", - "Returns the subject of a CERT or FALSE on error" - ], - "openssl_csr_new": [ - "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", - "Generates a privkey and CSR" - ], - "openssl_csr_sign": [ - "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", - "Signs a cert with another CERT" - ], - "openssl_decrypt": [ - "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", - "Takes raw or base64 encoded string and dectupt it using given method and key" - ], - "openssl_dh_compute_key": [ - "string openssl_dh_compute_key(string pub_key, resource dh_key)", - "Computes shared sicret for public value of remote DH key and local DH key" - ], - "openssl_digest": [ - "string openssl_digest(string data, string method [, bool raw_output=false])", - "Computes digest hash value for given data using given method, returns raw or binhex encoded string" - ], - "openssl_encrypt": [ - "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", - "Encrypts given data with given method and key, returns raw or base64 encoded string" - ], - "openssl_error_string": [ - "mixed openssl_error_string()", - "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" - ], - "openssl_get_cipher_methods": [ - "array openssl_get_cipher_methods([bool aliases = false])", - "Return array of available cipher methods" - ], - "openssl_get_md_methods": [ - "array openssl_get_md_methods([bool aliases = false])", - "Return array of available digest methods" - ], - "openssl_open": [ - "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", - "Opens data" - ], - "openssl_pkcs12_export": [ - "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", - "Creates and exports a PKCS12 to a var" - ], - "openssl_pkcs12_export_to_file": [ - "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", - "Creates and exports a PKCS to file" - ], - "openssl_pkcs12_read": [ - "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", - "Parses a PKCS12 to an array" - ], - "openssl_pkcs7_decrypt": [ - "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", - "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" - ], - "openssl_pkcs7_encrypt": [ - "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", - "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" - ], - "openssl_pkcs7_sign": [ - "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", - "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" - ], - "openssl_pkcs7_verify": [ - "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", - "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" - ], - "openssl_pkey_export": [ - "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", - "Gets an exportable representation of a key into a string or file" - ], - "openssl_pkey_export_to_file": [ - "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", - "Gets an exportable representation of a key into a file" - ], - "openssl_pkey_free": [ - "void openssl_pkey_free(int key)", - "Frees a key" - ], - "openssl_pkey_get_details": [ - "resource openssl_pkey_get_details(resource key)", - "returns an array with the key details (bits, pkey, type)" - ], - "openssl_pkey_get_private": [ - "int openssl_pkey_get_private(string key [, string passphrase])", - "Gets private keys" - ], - "openssl_pkey_get_public": [ - "int openssl_pkey_get_public(mixed cert)", - "Gets public key from X.509 certificate" - ], - "openssl_pkey_new": [ - "resource openssl_pkey_new([array configargs])", - "Generates a new private key" - ], - "openssl_private_decrypt": [ - "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", - "Decrypts data with private key" - ], - "openssl_private_encrypt": [ - "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", - "Encrypts data with private key" - ], - "openssl_public_decrypt": [ - "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", - "Decrypts data with public key" - ], - "openssl_public_encrypt": [ - "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", - "Encrypts data with public key" - ], - "openssl_random_pseudo_bytes": [ - "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", - "Returns a string of the length specified filled with random pseudo bytes" - ], - "openssl_seal": [ - "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", - "Seals data" - ], - "openssl_sign": [ - "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", - "Signs data" - ], - "openssl_verify": [ - "int openssl_verify(string data, string signature, mixed key[, mixed method])", - "Verifys data" - ], - "openssl_x509_check_private_key": [ - "bool openssl_x509_check_private_key(mixed cert, mixed key)", - "Checks if a private key corresponds to a CERT" - ], - "openssl_x509_checkpurpose": [ - "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", - "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" - ], - "openssl_x509_export": [ - "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", - "Exports a CERT to file or a var" - ], - "openssl_x509_export_to_file": [ - "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", - "Exports a CERT to file or a var" - ], - "openssl_x509_free": [ - "void openssl_x509_free(resource x509)", - "Frees X.509 certificates" - ], - "openssl_x509_parse": [ - "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", - "Returns an array of the fields/values of the CERT" - ], - "openssl_x509_read": [ - "resource openssl_x509_read(mixed cert)", - "Reads X.509 certificates" - ], - "ord": [ - "int ord(string character)", - "Returns ASCII value of character" - ], - "output_add_rewrite_var": [ - "bool output_add_rewrite_var(string name, string value)", - "Add URL rewriter values" - ], - "output_reset_rewrite_vars": [ - "bool output_reset_rewrite_vars()", - "Reset(clear) URL rewriter values" - ], - "pack": [ - "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", - "Takes one or more arguments and packs them into a binary string according to the format argument" - ], - "parse_ini_file": [ - "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", - "Parse configuration file" - ], - "parse_ini_string": [ - "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", - "Parse configuration string" - ], - "parse_locale": [ - "static array parse_locale($locale)", - "* parses a locale-id into an array the different parts of it" - ], - "parse_str": [ - "void parse_str(string encoded_string [, array result])", - "Parses GET/POST/COOKIE data and sets global variables" - ], - "parse_url": [ - "mixed parse_url(string url, [int url_component])", - "Parse a URL and return its components" - ], - "passthru": [ - "void passthru(string command [, int &return_value])", - "Execute an external program and display raw output" - ], - "pathinfo": [ - "array pathinfo(string path[, int options])", - "Returns information about a certain string" - ], - "pclose": [ - "int pclose(resource fp)", - "Close a file pointer opened by popen()" - ], - "pcnlt_sigwaitinfo": [ - "int pcnlt_sigwaitinfo(array set[, array &siginfo])", - "Synchronously wait for queued signals" - ], - "pcntl_alarm": [ - "int pcntl_alarm(int seconds)", - "Set an alarm clock for delivery of a signal" - ], - "pcntl_exec": [ - "bool pcntl_exec(string path [, array args [, array envs]])", - "Executes specified program in current process space as defined by exec(2)" - ], - "pcntl_fork": [ - "int pcntl_fork()", - "Forks the currently running process following the same behavior as the UNIX fork() system call" - ], - "pcntl_getpriority": [ - "int pcntl_getpriority([int pid [, int process_identifier]])", - "Get the priority of any process" - ], - "pcntl_setpriority": [ - "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", - "Change the priority of any process" - ], - "pcntl_signal": [ - "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", - "Assigns a system signal handler to a PHP function" - ], - "pcntl_signal_dispatch": [ - "bool pcntl_signal_dispatch()", - "Dispatch signals to signal handlers" - ], - "pcntl_sigprocmask": [ - "bool pcntl_sigprocmask(int how, array set[, array &oldset])", - "Examine and change blocked signals" - ], - "pcntl_sigtimedwait": [ - "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", - "Wait for queued signals" - ], - "pcntl_wait": [ - "int pcntl_wait(int &status)", - "Waits on or returns the status of a forked child as defined by the waitpid() system call" - ], - "pcntl_waitpid": [ - "int pcntl_waitpid(int pid, int &status, int options)", - "Waits on or returns the status of a forked child as defined by the waitpid() system call" - ], - "pcntl_wexitstatus": [ - "int pcntl_wexitstatus(int status)", - "Returns the status code of a child's exit" - ], - "pcntl_wifexited": [ - "bool pcntl_wifexited(int status)", - "Returns true if the child status code represents a successful exit" - ], - "pcntl_wifsignaled": [ - "bool pcntl_wifsignaled(int status)", - "Returns true if the child status code represents a process that was terminated due to a signal" - ], - "pcntl_wifstopped": [ - "bool pcntl_wifstopped(int status)", - "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" - ], - "pcntl_wstopsig": [ - "int pcntl_wstopsig(int status)", - "Returns the number of the signal that caused the process to stop who's status code is passed" - ], - "pcntl_wtermsig": [ - "int pcntl_wtermsig(int status)", - "Returns the number of the signal that terminated the process who's status code is passed" - ], - "pdo_drivers": [ - "array pdo_drivers()", - "Return array of available PDO drivers" - ], - "pfsockopen": [ - "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", - "Open persistent Internet or Unix domain socket connection" - ], - "pg_affected_rows": [ - "int pg_affected_rows(resource result)", - "Returns the number of affected tuples" - ], - "pg_cancel_query": [ - "bool pg_cancel_query(resource connection)", - "Cancel request" - ], - "pg_client_encoding": [ - "string pg_client_encoding([resource connection])", - "Get the current client encoding" - ], - "pg_close": [ - "bool pg_close([resource connection])", - "Close a PostgreSQL connection" - ], - "pg_connect": [ - "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", - "Open a PostgreSQL connection" - ], - "pg_connection_busy": [ - "bool pg_connection_busy(resource connection)", - "Get connection is busy or not" - ], - "pg_connection_reset": [ - "bool pg_connection_reset(resource connection)", - "Reset connection (reconnect)" - ], - "pg_connection_status": [ - "int pg_connection_status(resource connnection)", - "Get connection status" - ], - "pg_convert": [ - "array pg_convert(resource db, string table, array values[, int options])", - "Check and convert values for PostgreSQL SQL statement" - ], - "pg_copy_from": [ - "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", - "Copy table from array" - ], - "pg_copy_to": [ - "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", - "Copy table to array" - ], - "pg_dbname": [ - "string pg_dbname([resource connection])", - "Get the database name" - ], - "pg_delete": [ - "mixed pg_delete(resource db, string table, array ids[, int options])", - "Delete records has ids (id => value)" - ], - "pg_end_copy": [ - "bool pg_end_copy([resource connection])", - "Sync with backend. Completes the Copy command" - ], - "pg_escape_bytea": [ - "string pg_escape_bytea([resource connection,] string data)", - "Escape binary for bytea type" - ], - "pg_escape_string": [ - "string pg_escape_string([resource connection,] string data)", - "Escape string for text/char type" - ], - "pg_execute": [ - "resource pg_execute([resource connection,] string stmtname, array params)", - "Execute a prepared query" - ], - "pg_fetch_all": [ - "array pg_fetch_all(resource result)", - "Fetch all rows into array" - ], - "pg_fetch_all_columns": [ - "array pg_fetch_all_columns(resource result [, int column_number])", - "Fetch all rows into array" - ], - "pg_fetch_array": [ - "array pg_fetch_array(resource result [, int row [, int result_type]])", - "Fetch a row as an array" - ], - "pg_fetch_assoc": [ - "array pg_fetch_assoc(resource result [, int row])", - "Fetch a row as an assoc array" - ], - "pg_fetch_object": [ - "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", - "Fetch a row as an object" - ], - "pg_fetch_result": [ - "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", - "Returns values from a result identifier" - ], - "pg_fetch_row": [ - "array pg_fetch_row(resource result [, int row [, int result_type]])", - "Get a row as an enumerated array" - ], - "pg_field_is_null": [ - "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", - "Test if a field is NULL" - ], - "pg_field_name": [ - "string pg_field_name(resource result, int field_number)", - "Returns the name of the field" - ], - "pg_field_num": [ - "int pg_field_num(resource result, string field_name)", - "Returns the field number of the named field" - ], - "pg_field_prtlen": [ - "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", - "Returns the printed length" - ], - "pg_field_size": [ - "int pg_field_size(resource result, int field_number)", - "Returns the internal size of the field" - ], - "pg_field_table": [ - "mixed pg_field_table(resource result, int field_number[, bool oid_only])", - "Returns the name of the table field belongs to, or table's oid if oid_only is true" - ], - "pg_field_type": [ - "string pg_field_type(resource result, int field_number)", - "Returns the type name for the given field" - ], - "pg_field_type_oid": [ - "string pg_field_type_oid(resource result, int field_number)", - "Returns the type oid for the given field" - ], - "pg_free_result": [ - "bool pg_free_result(resource result)", - "Free result memory" - ], - "pg_get_notify": [ - "array pg_get_notify([resource connection[, result_type]])", - "Get asynchronous notification" - ], - "pg_get_pid": [ - "int pg_get_pid([resource connection)", - "Get backend(server) pid" - ], - "pg_get_result": [ - "resource pg_get_result(resource connection)", - "Get asynchronous query result" - ], - "pg_host": [ - "string pg_host([resource connection])", - "Returns the host name associated with the connection" - ], - "pg_insert": [ - "mixed pg_insert(resource db, string table, array values[, int options])", - "Insert values (filed => value) to table" - ], - "pg_last_error": [ - "string pg_last_error([resource connection])", - "Get the error message string" - ], - "pg_last_notice": [ - "string pg_last_notice(resource connection)", - "Returns the last notice set by the backend" - ], - "pg_last_oid": [ - "string pg_last_oid(resource result)", - "Returns the last object identifier" - ], - "pg_lo_close": [ - "bool pg_lo_close(resource large_object)", - "Close a large object" - ], - "pg_lo_create": [ - "mixed pg_lo_create([resource connection],[mixed large_object_oid])", - "Create a large object" - ], - "pg_lo_export": [ - "bool pg_lo_export([resource connection, ] int objoid, string filename)", - "Export large object direct to filesystem" - ], - "pg_lo_import": [ - "int pg_lo_import([resource connection, ] string filename [, mixed oid])", - "Import large object direct from filesystem" - ], - "pg_lo_open": [ - "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", - "Open a large object and return fd" - ], - "pg_lo_read": [ - "string pg_lo_read(resource large_object [, int len])", - "Read a large object" - ], - "pg_lo_read_all": [ - "int pg_lo_read_all(resource large_object)", - "Read a large object and send straight to browser" - ], - "pg_lo_seek": [ - "bool pg_lo_seek(resource large_object, int offset [, int whence])", - "Seeks position of large object" - ], - "pg_lo_tell": [ - "int pg_lo_tell(resource large_object)", - "Returns current position of large object" - ], - "pg_lo_unlink": [ - "bool pg_lo_unlink([resource connection,] string large_object_oid)", - "Delete a large object" - ], - "pg_lo_write": [ - "int pg_lo_write(resource large_object, string buf [, int len])", - "Write a large object" - ], - "pg_meta_data": [ - "array pg_meta_data(resource db, string table)", - "Get meta_data" - ], - "pg_num_fields": [ - "int pg_num_fields(resource result)", - "Return the number of fields in the result" - ], - "pg_num_rows": [ - "int pg_num_rows(resource result)", - "Return the number of rows in the result" - ], - "pg_options": [ - "string pg_options([resource connection])", - "Get the options associated with the connection" - ], - "pg_parameter_status": [ - "string|false pg_parameter_status([resource connection,] string param_name)", - "Returns the value of a server parameter" - ], - "pg_pconnect": [ - "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", - "Open a persistent PostgreSQL connection" - ], - "pg_ping": [ - "bool pg_ping([resource connection])", - "Ping database. If connection is bad, try to reconnect." - ], - "pg_port": [ - "int pg_port([resource connection])", - "Return the port number associated with the connection" - ], - "pg_prepare": [ - "resource pg_prepare([resource connection,] string stmtname, string query)", - "Prepare a query for future execution" - ], - "pg_put_line": [ - "bool pg_put_line([resource connection,] string query)", - "Send null-terminated string to backend server" - ], - "pg_query": [ - "resource pg_query([resource connection,] string query)", - "Execute a query" - ], - "pg_query_params": [ - "resource pg_query_params([resource connection,] string query, array params)", - "Execute a query" - ], - "pg_result_error": [ - "string pg_result_error(resource result)", - "Get error message associated with result" - ], - "pg_result_error_field": [ - "string pg_result_error_field(resource result, int fieldcode)", - "Get error message field associated with result" - ], - "pg_result_seek": [ - "bool pg_result_seek(resource result, int offset)", - "Set internal row offset" - ], - "pg_result_status": [ - "mixed pg_result_status(resource result[, long result_type])", - "Get status of query result" - ], - "pg_select": [ - "mixed pg_select(resource db, string table, array ids[, int options])", - "Select records that has ids (id => value)" - ], - "pg_send_execute": [ - "bool pg_send_execute(resource connection, string stmtname, array params)", - "Executes prevriously prepared stmtname asynchronously" - ], - "pg_send_prepare": [ - "bool pg_send_prepare(resource connection, string stmtname, string query)", - "Asynchronously prepare a query for future execution" - ], - "pg_send_query": [ - "bool pg_send_query(resource connection, string query)", - "Send asynchronous query" - ], - "pg_send_query_params": [ - "bool pg_send_query_params(resource connection, string query, array params)", - "Send asynchronous parameterized query" - ], - "pg_set_client_encoding": [ - "int pg_set_client_encoding([resource connection,] string encoding)", - "Set client encoding" - ], - "pg_set_error_verbosity": [ - "int pg_set_error_verbosity([resource connection,] int verbosity)", - "Set error verbosity" - ], - "pg_trace": [ - "bool pg_trace(string filename [, string mode [, resource connection]])", - "Enable tracing a PostgreSQL connection" - ], - "pg_transaction_status": [ - "int pg_transaction_status(resource connnection)", - "Get transaction status" - ], - "pg_tty": [ - "string pg_tty([resource connection])", - "Return the tty name associated with the connection" - ], - "pg_unescape_bytea": [ - "string pg_unescape_bytea(string data)", - "Unescape binary for bytea type" - ], - "pg_untrace": [ - "bool pg_untrace([resource connection])", - "Disable tracing of a PostgreSQL connection" - ], - "pg_update": [ - "mixed pg_update(resource db, string table, array fields, array ids[, int options])", - "Update table using values (field => value) and ids (id => value)" - ], - "pg_version": [ - "array pg_version([resource connection])", - "Returns an array with client, protocol and server version (when available)" - ], - "php_egg_logo_guid": [ - "string php_egg_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_ini_loaded_file": [ - "string php_ini_loaded_file()", - "Return the actual loaded ini filename" - ], - "php_ini_scanned_files": [ - "string php_ini_scanned_files()", - "Return comma-separated string of .ini files parsed from the additional ini dir" - ], - "php_logo_guid": [ - "string php_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_real_logo_guid": [ - "string php_real_logo_guid()", - "Return the special ID used to request the PHP logo in phpinfo screens" - ], - "php_sapi_name": [ - "string php_sapi_name()", - "Return the current SAPI module name" - ], - "php_snmpv3": [ - "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", - "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" - ], - "php_strip_whitespace": [ - "string php_strip_whitespace(string file_name)", - "Return source with stripped comments and whitespace" - ], - "php_uname": [ - "string php_uname()", - "Return information about the system PHP was built on" - ], - "phpcredits": [ - "void phpcredits([int flag])", - "Prints the list of people who've contributed to the PHP project" - ], - "phpinfo": [ - "void phpinfo([int what])", - "Output a page of useful information about PHP and the current request" - ], - "phpversion": [ - "string phpversion([string extension])", - "Return the current PHP version" - ], - "pi": [ - "float pi()", - "Returns an approximation of pi" - ], - "png2wbmp": [ - "bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", - "Convert PNG image to WBMP image" - ], - "popen": [ - "resource popen(string command, string mode)", - "Execute a command and open either a read or a write pipe to it" - ], - "posix_access": [ - "bool posix_access(string file [, int mode])", - "Determine accessibility of a file (POSIX.1 5.6.3)" - ], - "posix_ctermid": [ - "string posix_ctermid()", - "Generate terminal path name (POSIX.1, 4.7.1)" - ], - "posix_get_last_error": [ - "int posix_get_last_error()", - "Retrieve the error number set by the last posix function which failed." - ], - "posix_getcwd": [ - "string posix_getcwd()", - "Get working directory pathname (POSIX.1, 5.2.2)" - ], - "posix_getegid": [ - "int posix_getegid()", - "Get the current effective group id (POSIX.1, 4.2.1)" - ], - "posix_geteuid": [ - "int posix_geteuid()", - "Get the current effective user id (POSIX.1, 4.2.1)" - ], - "posix_getgid": [ - "int posix_getgid()", - "Get the current group id (POSIX.1, 4.2.1)" - ], - "posix_getgrgid": [ - "array posix_getgrgid(long gid)", - "Group database access (POSIX.1, 9.2.1)" - ], - "posix_getgrnam": [ - "array posix_getgrnam(string groupname)", - "Group database access (POSIX.1, 9.2.1)" - ], - "posix_getgroups": [ - "array posix_getgroups()", - "Get supplementary group id's (POSIX.1, 4.2.3)" - ], - "posix_getlogin": [ - "string posix_getlogin()", - "Get user name (POSIX.1, 4.2.4)" - ], - "posix_getpgid": [ - "int posix_getpgid()", - "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" - ], - "posix_getpgrp": [ - "int posix_getpgrp()", - "Get current process group id (POSIX.1, 4.3.1)" - ], - "posix_getpid": [ - "int posix_getpid()", - "Get the current process id (POSIX.1, 4.1.1)" - ], - "posix_getppid": [ - "int posix_getppid()", - "Get the parent process id (POSIX.1, 4.1.1)" - ], - "posix_getpwnam": [ - "array posix_getpwnam(string groupname)", - "User database access (POSIX.1, 9.2.2)" - ], - "posix_getpwuid": [ - "array posix_getpwuid(long uid)", - "User database access (POSIX.1, 9.2.2)" - ], - "posix_getrlimit": [ - "array posix_getrlimit()", - "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" - ], - "posix_getsid": [ - "int posix_getsid()", - "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" - ], - "posix_getuid": [ - "int posix_getuid()", - "Get the current user id (POSIX.1, 4.2.1)" - ], - "posix_initgroups": [ - "bool posix_initgroups(string name, int base_group_id)", - "Calculate the group access list for the user specified in name." - ], - "posix_isatty": [ - "bool posix_isatty(int fd)", - "Determine if filedesc is a tty (POSIX.1, 4.7.1)" - ], - "posix_kill": [ - "bool posix_kill(int pid, int sig)", - "Send a signal to a process (POSIX.1, 3.3.2)" - ], - "posix_mkfifo": [ - "bool posix_mkfifo(string pathname, int mode)", - "Make a FIFO special file (POSIX.1, 5.4.2)" - ], - "posix_mknod": [ - "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", - "Make a special or ordinary file (POSIX.1)" - ], - "posix_setegid": [ - "bool posix_setegid(long uid)", - "Set effective group id" - ], - "posix_seteuid": [ - "bool posix_seteuid(long uid)", - "Set effective user id" - ], - "posix_setgid": [ - "bool posix_setgid(int uid)", - "Set group id (POSIX.1, 4.2.2)" - ], - "posix_setpgid": [ - "bool posix_setpgid(int pid, int pgid)", - "Set process group id for job control (POSIX.1, 4.3.3)" - ], - "posix_setsid": [ - "int posix_setsid()", - "Create session and set process group id (POSIX.1, 4.3.2)" - ], - "posix_setuid": [ - "bool posix_setuid(long uid)", - "Set user id (POSIX.1, 4.2.2)" - ], - "posix_strerror": [ - "string posix_strerror(int errno)", - "Retrieve the system error message associated with the given errno." - ], - "posix_times": [ - "array posix_times()", - "Get process times (POSIX.1, 4.5.2)" - ], - "posix_ttyname": [ - "string posix_ttyname(int fd)", - "Determine terminal device name (POSIX.1, 4.7.2)" - ], - "posix_uname": [ - "array posix_uname()", - "Get system name (POSIX.1, 4.4.1)" - ], - "pow": [ - "number pow(number base, number exponent)", - "Returns base raised to the power of exponent. Returns integer result when possible" - ], - "preg_filter": [ - "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement and only return matches." - ], - "preg_grep": [ - "array preg_grep(string regex, array input [, int flags])", - "Searches array and returns entries which match regex" - ], - "preg_last_error": [ - "int preg_last_error()", - "Returns the error code of the last regexp execution." - ], - "preg_match": [ - "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", - "Perform a Perl-style regular expression match" - ], - "preg_match_all": [ - "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", - "Perform a Perl-style global regular expression match" - ], - "preg_quote": [ - "string preg_quote(string str [, string delim_char])", - "Quote regular expression characters plus an optional character" - ], - "preg_replace": [ - "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement." - ], - "preg_replace_callback": [ - "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", - "Perform Perl-style regular expression replacement using replacement callback." - ], - "preg_split": [ - "array preg_split(string pattern, string subject [, int limit [, int flags]])", - "Split string into an array using a perl-style regular expression as a delimiter" - ], - "prev": [ - "mixed prev(array array_arg)", - "Move array argument's internal pointer to the previous element and return it" - ], - "print": [ - "int print(string arg)", - "Output a string" - ], - "print_r": [ - "mixed print_r(mixed var [, bool return])", - "Prints out or returns information about the specified variable" - ], - "printf": [ - "int printf(string format [, mixed arg1 [, mixed ...]])", - "Output a formatted string" - ], - "proc_close": [ - "int proc_close(resource process)", - "close a process opened by proc_open" - ], - "proc_get_status": [ - "array proc_get_status(resource process)", - "get information about a process opened by proc_open" - ], - "proc_nice": [ - "bool proc_nice(int priority)", - "Change the priority of the current process" - ], - "proc_open": [ - "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", - "Run a process with more control over it's file descriptors" - ], - "proc_terminate": [ - "bool proc_terminate(resource process [, long signal])", - "kill a process opened by proc_open" - ], - "property_exists": [ - "bool property_exists(mixed object_or_class, string property_name)", - "Checks if the object or class has a property" - ], - "pspell_add_to_personal": [ - "bool pspell_add_to_personal(int pspell, string word)", - "Adds a word to a personal list" - ], - "pspell_add_to_session": [ - "bool pspell_add_to_session(int pspell, string word)", - "Adds a word to the current session" - ], - "pspell_check": [ - "bool pspell_check(int pspell, string word)", - "Returns true if word is valid" - ], - "pspell_clear_session": [ - "bool pspell_clear_session(int pspell)", - "Clears the current session" - ], - "pspell_config_create": [ - "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", - "Create a new config to be used later to create a manager" - ], - "pspell_config_data_dir": [ - "bool pspell_config_data_dir(int conf, string directory)", - "location of language data files" - ], - "pspell_config_dict_dir": [ - "bool pspell_config_dict_dir(int conf, string directory)", - "location of the main word list" - ], - "pspell_config_ignore": [ - "bool pspell_config_ignore(int conf, int ignore)", - "Ignore words <= n chars" - ], - "pspell_config_mode": [ - "bool pspell_config_mode(int conf, long mode)", - "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" - ], - "pspell_config_personal": [ - "bool pspell_config_personal(int conf, string personal)", - "Use a personal dictionary for this config" - ], - "pspell_config_repl": [ - "bool pspell_config_repl(int conf, string repl)", - "Use a personal dictionary with replacement pairs for this config" - ], - "pspell_config_runtogether": [ - "bool pspell_config_runtogether(int conf, bool runtogether)", - "Consider run-together words as valid components" - ], - "pspell_config_save_repl": [ - "bool pspell_config_save_repl(int conf, bool save)", - "Save replacement pairs when personal list is saved for this config" - ], - "pspell_new": [ - "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", - "Load a dictionary" - ], - "pspell_new_config": [ - "int pspell_new_config(int config)", - "Load a dictionary based on the given config" - ], - "pspell_new_personal": [ - "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", - "Load a dictionary with a personal wordlist" - ], - "pspell_save_wordlist": [ - "bool pspell_save_wordlist(int pspell)", - "Saves the current (personal) wordlist" - ], - "pspell_store_replacement": [ - "bool pspell_store_replacement(int pspell, string misspell, string correct)", - "Notify the dictionary of a user-selected replacement" - ], - "pspell_suggest": [ - "array pspell_suggest(int pspell, string word)", - "Returns array of suggestions" - ], - "putenv": [ - "bool putenv(string setting)", - "Set the value of an environment variable" - ], - "quoted_printable_decode": [ - "string quoted_printable_decode(string str)", - "Convert a quoted-printable string to an 8 bit string" - ], - "quoted_printable_encode": [ - "string quoted_printable_encode(string str)", - "" - ], - "quotemeta": [ - "string quotemeta(string str)", - "Quotes meta characters" - ], - "rad2deg": [ - "float rad2deg(float number)", - "Converts the radian number to the equivalent number in degrees" - ], - "rand": [ - "int rand([int min, int max])", - "Returns a random number" - ], - "range": [ - "array range(mixed low, mixed high[, int step])", - "Create an array containing the range of integers or characters from low to high (inclusive)" - ], - "rawurldecode": [ - "string rawurldecode(string str)", - "Decodes URL-encodes string" - ], - "rawurlencode": [ - "string rawurlencode(string str)", - "URL-encodes string" - ], - "readdir": [ - "string readdir([resource dir_handle])", - "Read directory entry from dir_handle" - ], - "readfile": [ - "int readfile(string filename [, bool use_include_path[, resource context]])", - "Output a file or a URL" - ], - "readgzfile": [ - "int readgzfile(string filename [, int use_include_path])", - "Output a .gz-file" - ], - "readline": [ - "string readline([string prompt])", - "Reads a line" - ], - "readline_add_history": [ - "bool readline_add_history(string prompt)", - "Adds a line to the history" - ], - "readline_callback_handler_install": [ - "void readline_callback_handler_install(string prompt, mixed callback)", - "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" - ], - "readline_callback_handler_remove": [ - "bool readline_callback_handler_remove()", - "Removes a previously installed callback handler and restores terminal settings" - ], - "readline_callback_read_char": [ - "void readline_callback_read_char()", - "Informs the readline callback interface that a character is ready for input" - ], - "readline_clear_history": [ - "bool readline_clear_history()", - "Clears the history" - ], - "readline_completion_function": [ - "bool readline_completion_function(string funcname)", - "Readline completion function?" - ], - "readline_info": [ - "mixed readline_info([string varname [, string newvalue]])", - "Gets/sets various internal readline variables." - ], - "readline_list_history": [ - "array readline_list_history()", - "Lists the history" - ], - "readline_on_new_line": [ - "void readline_on_new_line()", - "Inform readline that the cursor has moved to a new line" - ], - "readline_read_history": [ - "bool readline_read_history([string filename])", - "Reads the history" - ], - "readline_redisplay": [ - "void readline_redisplay()", - "Ask readline to redraw the display" - ], - "readline_write_history": [ - "bool readline_write_history([string filename])", - "Writes the history" - ], - "readlink": [ - "string readlink(string filename)", - "Return the target of a symbolic link" - ], - "realpath": [ - "string realpath(string path)", - "Return the resolved path" - ], - "realpath_cache_get": [ - "bool realpath_cache_get()", - "Get current size of realpath cache" - ], - "realpath_cache_size": [ - "bool realpath_cache_size()", - "Get current size of realpath cache" - ], - "recode_file": [ - "bool recode_file(string request, resource input, resource output)", - "Recode file input into file output according to request" - ], - "recode_string": [ - "string recode_string(string request, string str)", - "Recode string str according to request string" - ], - "register_shutdown_function": [ - "void register_shutdown_function(string function_name)", - "Register a user-level function to be called on request termination" - ], - "register_tick_function": [ - "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", - "Registers a tick callback function" - ], - "rename": [ - "bool rename(string old_name, string new_name[, resource context])", - "Rename a file" - ], - "require": [ - "bool require(string path)", - "Includes and evaluates the specified file, erroring if the file cannot be included" - ], - "require_once": [ - "bool require_once(string path)", - "Includes and evaluates the specified file, erroring if the file cannot be included" - ], - "reset": [ - "mixed reset(array array_arg)", - "Set array argument's internal pointer to the first element and return it" - ], - "restore_error_handler": [ - "void restore_error_handler()", - "Restores the previously defined error handler function" - ], - "restore_exception_handler": [ - "void restore_exception_handler()", - "Restores the previously defined exception handler function" - ], - "restore_include_path": [ - "void restore_include_path()", - "Restore the value of the include_path configuration option" - ], - "rewind": [ - "bool rewind(resource fp)", - "Rewind the position of a file pointer" - ], - "rewinddir": [ - "void rewinddir([resource dir_handle])", - "Rewind dir_handle back to the start" - ], - "rmdir": [ - "bool rmdir(string dirname[, resource context])", - "Remove a directory" - ], - "round": [ - "float round(float number [, int precision [, int mode]])", - "Returns the number rounded to specified precision" - ], - "rsort": [ - "bool rsort(array &array_arg [, int sort_flags])", - "Sort an array in reverse order" - ], - "rtrim": [ - "string rtrim(string str [, string character_mask])", - "Removes trailing whitespace" - ], - "scandir": [ - "array scandir(string dir [, int sorting_order [, resource context]])", - "List files & directories inside the specified path" - ], - "sem_acquire": [ - "bool sem_acquire(resource id)", - "Acquires the semaphore with the given id, blocking if necessary" - ], - "sem_get": [ - "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", - "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" - ], - "sem_release": [ - "bool sem_release(resource id)", - "Releases the semaphore with the given id" - ], - "sem_remove": [ - "bool sem_remove(resource id)", - "Removes semaphore from Unix systems" - ], - "serialize": [ - "string serialize(mixed variable)", - "Returns a string representation of variable (which can later be unserialized)" - ], - "session_cache_expire": [ - "int session_cache_expire([int new_cache_expire])", - "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" - ], - "session_cache_limiter": [ - "string session_cache_limiter([string new_cache_limiter])", - "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" - ], - "session_decode": [ - "bool session_decode(string data)", - "Deserializes data and reinitializes the variables" - ], - "session_destroy": [ - "bool session_destroy()", - "Destroy the current session and all data associated with it" - ], - "session_encode": [ - "string session_encode()", - "Serializes the current setup and returns the serialized representation" - ], - "session_get_cookie_params": [ - "array session_get_cookie_params()", - "Return the session cookie parameters" - ], - "session_id": [ - "string session_id([string newid])", - "Return the current session id. If newid is given, the session id is replaced with newid" - ], - "session_is_registered": [ - "bool session_is_registered(string varname)", - "Checks if a variable is registered in session" - ], - "session_module_name": [ - "string session_module_name([string newname])", - "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" - ], - "session_name": [ - "string session_name([string newname])", - "Return the current session name. If newname is given, the session name is replaced with newname" - ], - "session_regenerate_id": [ - "bool session_regenerate_id([bool delete_old_session])", - "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." - ], - "session_register": [ - "bool session_register(mixed var_names [, mixed ...])", - "Adds varname(s) to the list of variables which are freezed at the session end" - ], - "session_save_path": [ - "string session_save_path([string newname])", - "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" - ], - "session_set_cookie_params": [ - "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", - "Set session cookie parameters" - ], - "session_set_save_handler": [ - "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", - "Sets user-level functions" - ], - "session_start": [ - "bool session_start()", - "Begin session - reinitializes freezed variables, registers browsers etc" - ], - "session_unregister": [ - "bool session_unregister(string varname)", - "Removes varname from the list of variables which are freezed at the session end" - ], - "session_unset": [ - "void session_unset()", - "Unset all registered variables" - ], - "session_write_close": [ - "void session_write_close()", - "Write session data and end session" - ], - "set_error_handler": [ - "string set_error_handler(string error_handler [, int error_types])", - "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" - ], - "set_exception_handler": [ - "string set_exception_handler(callable exception_handler)", - "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" - ], - "set_include_path": [ - "string set_include_path(string new_include_path)", - "Sets the include_path configuration option" - ], - "set_magic_quotes_runtime": [ - "bool set_magic_quotes_runtime(int new_setting)", - "Set the current active configuration setting of magic_quotes_runtime and return previous" - ], - "set_time_limit": [ - "bool set_time_limit(int seconds)", - "Sets the maximum time a script can run" - ], - "setcookie": [ - "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", - "Send a cookie" - ], - "setlocale": [ - "string setlocale(mixed category, string locale [, string ...])", - "Set locale information" - ], - "setrawcookie": [ - "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", - "Send a cookie with no url encoding of the value" - ], - "settype": [ - "bool settype(mixed var, string type)", - "Set the type of the variable" - ], - "sha1": [ - "string sha1(string str [, bool raw_output])", - "Calculate the sha1 hash of a string" - ], - "sha1_file": [ - "string sha1_file(string filename [, bool raw_output])", - "Calculate the sha1 hash of given filename" - ], - "shell_exec": [ - "string shell_exec(string cmd)", - "Execute command via shell and return complete output as string" - ], - "shm_attach": [ - "int shm_attach(int key [, int memsize [, int perm]])", - "Creates or open a shared memory segment" - ], - "shm_detach": [ - "bool shm_detach(resource shm_identifier)", - "Disconnects from shared memory segment" - ], - "shm_get_var": [ - "mixed shm_get_var(resource id, int variable_key)", - "Returns a variable from shared memory" - ], - "shm_has_var": [ - "bool shm_has_var(resource id, int variable_key)", - "Checks whether a specific entry exists" - ], - "shm_put_var": [ - "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", - "Inserts or updates a variable in shared memory" - ], - "shm_remove": [ - "bool shm_remove(resource shm_identifier)", - "Removes shared memory from Unix systems" - ], - "shm_remove_var": [ - "bool shm_remove_var(resource id, int variable_key)", - "Removes variable from shared memory" - ], - "shmop_close": [ - "void shmop_close(int shmid)", - "closes a shared memory segment" - ], - "shmop_delete": [ - "bool shmop_delete(int shmid)", - "mark segment for deletion" - ], - "shmop_open": [ - "int shmop_open(int key, string flags, int mode, int size)", - "gets and attaches a shared memory segment" - ], - "shmop_read": [ - "string shmop_read(int shmid, int start, int count)", - "reads from a shm segment" - ], - "shmop_size": [ - "int shmop_size(int shmid)", - "returns the shm size" - ], - "shmop_write": [ - "int shmop_write(int shmid, string data, int offset)", - "writes to a shared memory segment" - ], - "shuffle": [ - "bool shuffle(array array_arg)", - "Randomly shuffle the contents of an array" - ], - "similar_text": [ - "int similar_text(string str1, string str2 [, float percent])", - "Calculates the similarity between two strings" - ], - "simplexml_import_dom": [ - "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", - "Get a simplexml_element object from dom to allow for processing" - ], - "simplexml_load_file": [ - "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", - "Load a filename and return a simplexml_element object to allow for processing" - ], - "simplexml_load_string": [ - "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", - "Load a string and return a simplexml_element object to allow for processing" - ], - "sin": [ - "float sin(float number)", - "Returns the sine of the number in radians" - ], - "sinh": [ - "float sinh(float number)", - "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" - ], - "sleep": [ - "void sleep(int seconds)", - "Delay for a given number of seconds" - ], - "smfi_addheader": [ - "bool smfi_addheader(string headerf, string headerv)", - "Adds a header to the current message." - ], - "smfi_addrcpt": [ - "bool smfi_addrcpt(string rcpt)", - "Add a recipient to the message envelope." - ], - "smfi_chgheader": [ - "bool smfi_chgheader(string headerf, string headerv)", - "Changes a header's value for the current message." - ], - "smfi_delrcpt": [ - "bool smfi_delrcpt(string rcpt)", - "Removes the named recipient from the current message's envelope." - ], - "smfi_getsymval": [ - "string smfi_getsymval(string macro)", - "Returns the value of the given macro or NULL if the macro is not defined." - ], - "smfi_replacebody": [ - "bool smfi_replacebody(string body)", - "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." - ], - "smfi_setflags": [ - "void smfi_setflags(long flags)", - "Sets the flags describing the actions the filter may take." - ], - "smfi_setreply": [ - "bool smfi_setreply(string rcode, string xcode, string message)", - "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." - ], - "smfi_settimeout": [ - "void smfi_settimeout(long timeout)", - "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." - ], - "snmp2_get": [ - "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmp2_getnext": [ - "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmp2_real_walk": [ - "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects including their respective object id withing the specified one" - ], - "snmp2_set": [ - "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Set the value of a SNMP object" - ], - "snmp2_walk": [ - "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects under the specified object id" - ], - "snmp3_get": [ - "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_getnext": [ - "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_real_walk": [ - "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_set": [ - "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp3_walk": [ - "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", - "Fetch the value of a SNMP object" - ], - "snmp_get_quick_print": [ - "bool snmp_get_quick_print()", - "Return the current status of quick_print" - ], - "snmp_get_valueretrieval": [ - "int snmp_get_valueretrieval()", - "Return the method how the SNMP values will be returned" - ], - "snmp_read_mib": [ - "int snmp_read_mib(string filename)", - "Reads and parses a MIB file into the active MIB tree." - ], - "snmp_set_enum_print": [ - "void snmp_set_enum_print(int enum_print)", - "Return all values that are enums with their enum value instead of the raw integer" - ], - "snmp_set_oid_output_format": [ - "void snmp_set_oid_output_format(int oid_format)", - "Set the OID output format." - ], - "snmp_set_quick_print": [ - "void snmp_set_quick_print(int quick_print)", - "Return all objects including their respective object id withing the specified one" - ], - "snmp_set_valueretrieval": [ - "void snmp_set_valueretrieval(int method)", - "Specify the method how the SNMP values will be returned" - ], - "snmpget": [ - "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmpgetnext": [ - "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", - "Fetch a SNMP object" - ], - "snmprealwalk": [ - "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects including their respective object id withing the specified one" - ], - "snmpset": [ - "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", - "Set the value of a SNMP object" - ], - "snmpwalk": [ - "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", - "Return all objects under the specified object id" - ], - "socket_accept": [ - "resource socket_accept(resource socket)", - "Accepts a connection on the listening socket fd" - ], - "socket_bind": [ - "bool socket_bind(resource socket, string addr [, int port])", - "Binds an open socket to a listening port, port is only specified in AF_INET family." - ], - "socket_clear_error": [ - "void socket_clear_error([resource socket])", - "Clears the error on the socket or the last error code." - ], - "socket_close": [ - "void socket_close(resource socket)", - "Closes a file descriptor" - ], - "socket_connect": [ - "bool socket_connect(resource socket, string addr [, int port])", - "Opens a connection to addr:port on the socket specified by socket" - ], - "socket_create": [ - "resource socket_create(int domain, int type, int protocol)", - "Creates an endpoint for communication in the domain specified by domain, of type specified by type" - ], - "socket_create_listen": [ - "resource socket_create_listen(int port[, int backlog])", - "Opens a socket on port to accept connections" - ], - "socket_create_pair": [ - "bool socket_create_pair(int domain, int type, int protocol, array &fd)", - "Creates a pair of indistinguishable sockets and stores them in fds." - ], - "socket_get_option": [ - "mixed socket_get_option(resource socket, int level, int optname)", - "Gets socket options for the socket" - ], - "socket_getpeername": [ - "bool socket_getpeername(resource socket, string &addr[, int &port])", - "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." - ], - "socket_getsockname": [ - "bool socket_getsockname(resource socket, string &addr[, int &port])", - "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." - ], - "socket_last_error": [ - "int socket_last_error([resource socket])", - "Returns the last socket error (either the last used or the provided socket resource)" - ], - "socket_listen": [ - "bool socket_listen(resource socket[, int backlog])", - "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" - ], - "socket_read": [ - "string socket_read(resource socket, int length [, int type])", - "Reads a maximum of length bytes from socket" - ], - "socket_recv": [ - "int socket_recv(resource socket, string &buf, int len, int flags)", - "Receives data from a connected socket" - ], - "socket_recvfrom": [ - "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", - "Receives data from a socket, connected or not" - ], - "socket_select": [ - "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", - "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" - ], - "socket_send": [ - "int socket_send(resource socket, string buf, int len, int flags)", - "Sends data to a connected socket" - ], - "socket_sendto": [ - "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", - "Sends a message to a socket, whether it is connected or not" - ], - "socket_set_block": [ - "bool socket_set_block(resource socket)", - "Sets blocking mode on a socket resource" - ], - "socket_set_nonblock": [ - "bool socket_set_nonblock(resource socket)", - "Sets nonblocking mode on a socket resource" - ], - "socket_set_option": [ - "bool socket_set_option(resource socket, int level, int optname, int|array optval)", - "Sets socket options for the socket" - ], - "socket_shutdown": [ - "bool socket_shutdown(resource socket[, int how])", - "Shuts down a socket for receiving, sending, or both." - ], - "socket_strerror": [ - "string socket_strerror(int errno)", - "Returns a string describing an error" - ], - "socket_write": [ - "int socket_write(resource socket, string buf[, int length])", - "Writes the buffer to the socket resource, length is optional" - ], - "solid_fetch_prev": [ - "bool solid_fetch_prev(resource result_id)", - "" - ], - "sort": [ - "bool sort(array &array_arg [, int sort_flags])", - "Sort an array" - ], - "soundex": [ - "string soundex(string str)", - "Calculate the soundex key of a string" - ], - "spl_autoload": [ - "void spl_autoload(string class_name [, string file_extensions])", - "Default implementation for __autoload()" - ], - "spl_autoload_call": [ - "void spl_autoload_call(string class_name)", - "Try all registerd autoload function to load the requested class" - ], - "spl_autoload_extensions": [ - "string spl_autoload_extensions([string file_extensions])", - "Register and return default file extensions for spl_autoload" - ], - "spl_autoload_functions": [ - "false|array spl_autoload_functions()", - "Return all registered __autoload() functionns" - ], - "spl_autoload_register": [ - "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", - "Register given function as __autoload() implementation" - ], - "spl_autoload_unregister": [ - "bool spl_autoload_unregister(mixed autoload_function)", - "Unregister given function as __autoload() implementation" - ], - "spl_classes": [ - "array spl_classes()", - "Return an array containing the names of all clsses and interfaces defined in SPL" - ], - "spl_object_hash": [ - "string spl_object_hash(object obj)", - "Return hash id for given object" - ], - "split": [ - "array split(string pattern, string string [, int limit])", - "Split string into array by regular expression" - ], - "spliti": [ - "array spliti(string pattern, string string [, int limit])", - "Split string into array by regular expression case-insensitive" - ], - "sprintf": [ - "string sprintf(string format [, mixed arg1 [, mixed ...]])", - "Return a formatted string" - ], - "sql_regcase": [ - "string sql_regcase(string string)", - "Make regular expression for case insensitive match" - ], - "sqlite_array_query": [ - "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", - "Executes a query against a given database and returns an array of arrays." - ], - "sqlite_busy_timeout": [ - "void sqlite_busy_timeout(resource db, int ms)", - "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." - ], - "sqlite_changes": [ - "int sqlite_changes(resource db)", - "Returns the number of rows that were changed by the most recent SQL statement." - ], - "sqlite_close": [ - "void sqlite_close(resource db)", - "Closes an open sqlite database." - ], - "sqlite_column": [ - "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", - "Fetches a column from the current row of a result set." - ], - "sqlite_create_aggregate": [ - "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", - "Registers an aggregate function for queries." - ], - "sqlite_create_function": [ - "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", - "Registers a \"regular\" function for queries." - ], - "sqlite_current": [ - "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", - "Fetches the current row from a result set as an array." - ], - "sqlite_error_string": [ - "string sqlite_error_string(int error_code)", - "Returns the textual description of an error code." - ], - "sqlite_escape_string": [ - "string sqlite_escape_string(string item)", - "Escapes a string for use as a query parameter." - ], - "sqlite_exec": [ - "bool sqlite_exec(string query, resource db[, string &error_message])", - "Executes a result-less query against a given database" - ], - "sqlite_factory": [ - "object sqlite_factory(string filename [, int mode [, string &error_message]])", - "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." - ], - "sqlite_fetch_all": [ - "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", - "Fetches all rows from a result set as an array of arrays." - ], - "sqlite_fetch_array": [ - "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", - "Fetches the next row from a result set as an array." - ], - "sqlite_fetch_column_types": [ - "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", - "Return an array of column types from a particular table." - ], - "sqlite_fetch_object": [ - "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", - "Fetches the next row from a result set as an object." - ], - "sqlite_fetch_single": [ - "string sqlite_fetch_single(resource result [, bool decode_binary])", - "Fetches the first column of a result set as a string." - ], - "sqlite_field_name": [ - "string sqlite_field_name(resource result, int field_index)", - "Returns the name of a particular field of a result set." - ], - "sqlite_has_prev": [ - "bool sqlite_has_prev(resource result)", - "* Returns whether a previous row is available." - ], - "sqlite_key": [ - "int sqlite_key(resource result)", - "Return the current row index of a buffered result." - ], - "sqlite_last_error": [ - "int sqlite_last_error(resource db)", - "Returns the error code of the last error for a database." - ], - "sqlite_last_insert_rowid": [ - "int sqlite_last_insert_rowid(resource db)", - "Returns the rowid of the most recently inserted row." - ], - "sqlite_libencoding": [ - "string sqlite_libencoding()", - "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." - ], - "sqlite_libversion": [ - "string sqlite_libversion()", - "Returns the version of the linked SQLite library." - ], - "sqlite_next": [ - "bool sqlite_next(resource result)", - "Seek to the next row number of a result set." - ], - "sqlite_num_fields": [ - "int sqlite_num_fields(resource result)", - "Returns the number of fields in a result set." - ], - "sqlite_num_rows": [ - "int sqlite_num_rows(resource result)", - "Returns the number of rows in a buffered result set." - ], - "sqlite_open": [ - "resource sqlite_open(string filename [, int mode [, string &error_message]])", - "Opens a SQLite database. Will create the database if it does not exist." - ], - "sqlite_popen": [ - "resource sqlite_popen(string filename [, int mode [, string &error_message]])", - "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." - ], - "sqlite_prev": [ - "bool sqlite_prev(resource result)", - "* Seek to the previous row number of a result set." - ], - "sqlite_query": [ - "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", - "Executes a query against a given database and returns a result handle." - ], - "sqlite_rewind": [ - "bool sqlite_rewind(resource result)", - "Seek to the first row number of a buffered result set." - ], - "sqlite_seek": [ - "bool sqlite_seek(resource result, int row)", - "Seek to a particular row number of a buffered result set." - ], - "sqlite_single_query": [ - "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", - "Executes a query and returns either an array for one single column or the value of the first row." - ], - "sqlite_udf_decode_binary": [ - "string sqlite_udf_decode_binary(string data)", - "Decode binary encoding on a string parameter passed to an UDF." - ], - "sqlite_udf_encode_binary": [ - "string sqlite_udf_encode_binary(string data)", - "Apply binary encoding (if required) to a string to return from an UDF." - ], - "sqlite_unbuffered_query": [ - "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", - "Executes a query that does not prefetch and buffer all data." - ], - "sqlite_valid": [ - "bool sqlite_valid(resource result)", - "Returns whether more rows are available." - ], - "sqrt": [ - "float sqrt(float number)", - "Returns the square root of the number" - ], - "srand": [ - "void srand([int seed])", - "Seeds random number generator" - ], - "sscanf": [ - "mixed sscanf(string str, string format [, string ...])", - "Implements an ANSI C compatible sscanf" - ], - "stat": [ - "array stat(string filename)", - "Give information about a file" - ], - "str_getcsv": [ - "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", - "Parse a CSV string into an array" - ], - "str_ireplace": [ - "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", - "Replaces all occurrences of search in haystack with replace / case-insensitive" - ], - "str_pad": [ - "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", - "Returns input string padded on the left or right to specified length with pad_string" - ], - "str_repeat": [ - "string str_repeat(string input, int mult)", - "Returns the input string repeat mult times" - ], - "str_replace": [ - "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", - "Replaces all occurrences of search in haystack with replace" - ], - "str_rot13": [ - "string str_rot13(string str)", - "Perform the rot13 transform on a string" - ], - "str_shuffle": [ - "void str_shuffle(string str)", - "Shuffles string. One permutation of all possible is created" - ], - "str_split": [ - "array str_split(string str [, int split_length])", - "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." - ], - "str_word_count": [ - "mixed str_word_count(string str, [int format [, string charlist]])", - "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." - ], - "strcasecmp": [ - "int strcasecmp(string str1, string str2)", - "Binary safe case-insensitive string comparison" - ], - "strchr": [ - "string strchr(string haystack, string needle)", - "An alias for strstr" - ], - "strcmp": [ - "int strcmp(string str1, string str2)", - "Binary safe string comparison" - ], - "strcoll": [ - "int strcoll(string str1, string str2)", - "Compares two strings using the current locale" - ], - "strcspn": [ - "int strcspn(string str, string mask [, start [, len]])", - "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" - ], - "stream_bucket_append": [ - "void stream_bucket_append(resource brigade, resource bucket)", - "Append bucket to brigade" - ], - "stream_bucket_make_writeable": [ - "object stream_bucket_make_writeable(resource brigade)", - "Return a bucket object from the brigade for operating on" - ], - "stream_bucket_new": [ - "resource stream_bucket_new(resource stream, string buffer)", - "Create a new bucket for use on the current stream" - ], - "stream_bucket_prepend": [ - "void stream_bucket_prepend(resource brigade, resource bucket)", - "Prepend bucket to brigade" - ], - "stream_context_create": [ - "resource stream_context_create([array options[, array params]])", - "Create a file context and optionally set parameters" - ], - "stream_context_get_default": [ - "resource stream_context_get_default([array options])", - "Get a handle on the default file/stream context and optionally set parameters" - ], - "stream_context_get_options": [ - "array stream_context_get_options(resource context|resource stream)", - "Retrieve options for a stream/wrapper/context" - ], - "stream_context_get_params": [ - "array stream_context_get_params(resource context|resource stream)", - "Get parameters of a file context" - ], - "stream_context_set_default": [ - "resource stream_context_set_default(array options)", - "Set default file/stream context, returns the context as a resource" - ], - "stream_context_set_option": [ - "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", - "Set an option for a wrapper" - ], - "stream_context_set_params": [ - "bool stream_context_set_params(resource context|resource stream, array options)", - "Set parameters for a file context" - ], - "stream_copy_to_stream": [ - "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", - "Reads up to maxlen bytes from source stream and writes them to dest stream." - ], - "stream_filter_append": [ - "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", - "Append a filter to a stream" - ], - "stream_filter_prepend": [ - "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", - "Prepend a filter to a stream" - ], - "stream_filter_register": [ - "bool stream_filter_register(string filtername, string classname)", - "Registers a custom filter handler class" - ], - "stream_filter_remove": [ - "bool stream_filter_remove(resource stream_filter)", - "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" - ], - "stream_get_contents": [ - "string stream_get_contents(resource source [, long maxlen [, long offset]])", - "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." - ], - "stream_get_filters": [ - "array stream_get_filters()", - "Returns a list of registered filters" - ], - "stream_get_line": [ - "string stream_get_line(resource stream, int maxlen [, string ending])", - "Read up to maxlen bytes from a stream or until the ending string is found" - ], - "stream_get_meta_data": [ - "array stream_get_meta_data(resource fp)", - "Retrieves header/meta data from streams/file pointers" - ], - "stream_get_transports": [ - "array stream_get_transports()", - "Retrieves list of registered socket transports" - ], - "stream_get_wrappers": [ - "array stream_get_wrappers()", - "Retrieves list of registered stream wrappers" - ], - "stream_is_local": [ - "bool stream_is_local(resource stream|string url)", - "" - ], - "stream_resolve_include_path": [ - "string stream_resolve_include_path(string filename)", - "Determine what file will be opened by calls to fopen() with a relative path" - ], - "stream_select": [ - "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", - "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" - ], - "stream_set_blocking": [ - "bool stream_set_blocking(resource socket, int mode)", - "Set blocking/non-blocking mode on a socket or stream" - ], - "stream_set_timeout": [ - "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", - "Set timeout on stream read to seconds + microseonds" - ], - "stream_set_write_buffer": [ - "int stream_set_write_buffer(resource fp, int buffer)", - "Set file write buffer" - ], - "stream_socket_accept": [ - "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", - "Accept a client connection from a server socket" - ], - "stream_socket_client": [ - "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", - "Open a client connection to a remote address" - ], - "stream_socket_enable_crypto": [ - "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", - "Enable or disable a specific kind of crypto on the stream" - ], - "stream_socket_get_name": [ - "string stream_socket_get_name(resource stream, bool want_peer)", - "Returns either the locally bound or remote name for a socket stream" - ], - "stream_socket_pair": [ - "array stream_socket_pair(int domain, int type, int protocol)", - "Creates a pair of connected, indistinguishable socket streams" - ], - "stream_socket_recvfrom": [ - "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", - "Receives data from a socket stream" - ], - "stream_socket_sendto": [ - "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", - "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" - ], - "stream_socket_server": [ - "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", - "Create a server socket bound to localaddress" - ], - "stream_socket_shutdown": [ - "int stream_socket_shutdown(resource stream, int how)", - "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." - ], - "stream_supports_lock": [ - "bool stream_supports_lock(resource stream)", - "Tells whether the stream supports locking through flock()." - ], - "stream_wrapper_register": [ - "bool stream_wrapper_register(string protocol, string classname[, integer flags])", - "Registers a custom URL protocol handler class" - ], - "stream_wrapper_restore": [ - "bool stream_wrapper_restore(string protocol)", - "Restore the original protocol handler, overriding if necessary" - ], - "stream_wrapper_unregister": [ - "bool stream_wrapper_unregister(string protocol)", - "Unregister a wrapper for the life of the current request." - ], - "strftime": [ - "string strftime(string format [, int timestamp])", - "Format a local time/date according to locale settings" - ], - "strip_tags": [ - "string strip_tags(string str [, string allowable_tags])", - "Strips HTML and PHP tags from a string" - ], - "stripcslashes": [ - "string stripcslashes(string str)", - "Strips backslashes from a string. Uses C-style conventions" - ], - "stripos": [ - "int stripos(string haystack, string needle [, int offset])", - "Finds position of first occurrence of a string within another, case insensitive" - ], - "stripslashes": [ - "string stripslashes(string str)", - "Strips backslashes from a string" - ], - "stristr": [ - "string stristr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another, case insensitive" - ], - "strlen": [ - "int strlen(string str)", - "Get string length" - ], - "strnatcasecmp": [ - "int strnatcasecmp(string s1, string s2)", - "Returns the result of case-insensitive string comparison using 'natural' algorithm" - ], - "strnatcmp": [ - "int strnatcmp(string s1, string s2)", - "Returns the result of string comparison using 'natural' algorithm" - ], - "strncasecmp": [ - "int strncasecmp(string str1, string str2, int len)", - "Binary safe string comparison" - ], - "strncmp": [ - "int strncmp(string str1, string str2, int len)", - "Binary safe string comparison" - ], - "strpbrk": [ - "array strpbrk(string haystack, string char_list)", - "Search a string for any of a set of characters" - ], - "strpos": [ - "int strpos(string haystack, string needle [, int offset])", - "Finds position of first occurrence of a string within another" - ], - "strptime": [ - "string strptime(string timestamp, string format)", - "Parse a time/date generated with strftime()" - ], - "strrchr": [ - "string strrchr(string haystack, string needle)", - "Finds the last occurrence of a character in a string within another" - ], - "strrev": [ - "string strrev(string str)", - "Reverse a string" - ], - "strripos": [ - "int strripos(string haystack, string needle [, int offset])", - "Finds position of last occurrence of a string within another string" - ], - "strrpos": [ - "int strrpos(string haystack, string needle [, int offset])", - "Finds position of last occurrence of a string within another string" - ], - "strspn": [ - "int strspn(string str, string mask [, start [, len]])", - "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" - ], - "strstr": [ - "string strstr(string haystack, string needle[, bool part])", - "Finds first occurrence of a string within another" - ], - "strtok": [ - "string strtok([string str,] string token)", - "Tokenize a string" - ], - "strtolower": [ - "string strtolower(string str)", - "Makes a string lowercase" - ], - "strtotime": [ - "int strtotime(string time [, int now ])", - "Convert string representation of date and time to a timestamp" - ], - "strtoupper": [ - "string strtoupper(string str)", - "Makes a string uppercase" - ], - "strtr": [ - "string strtr(string str, string from[, string to])", - "Translates characters in str using given translation tables" - ], - "strval": [ - "string strval(mixed var)", - "Get the string value of a variable" - ], - "substr": [ - "string substr(string str, int start [, int length])", - "Returns part of a string" - ], - "substr_compare": [ - "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", - "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" - ], - "substr_count": [ - "int substr_count(string haystack, string needle [, int offset [, int length]])", - "Returns the number of times a substring occurs in the string" - ], - "substr_replace": [ - "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", - "Replaces part of a string with another string" - ], - "sybase_affected_rows": [ - "int sybase_affected_rows([resource link_id])", - "Get number of affected rows in last query" - ], - "sybase_close": [ - "bool sybase_close([resource link_id])", - "Close Sybase connection" - ], - "sybase_connect": [ - "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", - "Open Sybase server connection" - ], - "sybase_data_seek": [ - "bool sybase_data_seek(resource result, int offset)", - "Move internal row pointer" - ], - "sybase_deadlock_retry_count": [ - "void sybase_deadlock_retry_count(int retry_count)", - "Sets deadlock retry count" - ], - "sybase_fetch_array": [ - "array sybase_fetch_array(resource result)", - "Fetch row as array" - ], - "sybase_fetch_assoc": [ - "array sybase_fetch_assoc(resource result)", - "Fetch row as array without numberic indices" - ], - "sybase_fetch_field": [ - "object sybase_fetch_field(resource result [, int offset])", - "Get field information" - ], - "sybase_fetch_object": [ - "object sybase_fetch_object(resource result [, mixed object])", - "Fetch row as object" - ], - "sybase_fetch_row": [ - "array sybase_fetch_row(resource result)", - "Get row as enumerated array" - ], - "sybase_field_seek": [ - "bool sybase_field_seek(resource result, int offset)", - "Set field offset" - ], - "sybase_free_result": [ - "bool sybase_free_result(resource result)", - "Free result memory" - ], - "sybase_get_last_message": [ - "string sybase_get_last_message()", - "Returns the last message from server (over min_message_severity)" - ], - "sybase_min_client_severity": [ - "void sybase_min_client_severity(int severity)", - "Sets minimum client severity" - ], - "sybase_min_server_severity": [ - "void sybase_min_server_severity(int severity)", - "Sets minimum server severity" - ], - "sybase_num_fields": [ - "int sybase_num_fields(resource result)", - "Get number of fields in result" - ], - "sybase_num_rows": [ - "int sybase_num_rows(resource result)", - "Get number of rows in result" - ], - "sybase_pconnect": [ - "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", - "Open persistent Sybase connection" - ], - "sybase_query": [ - "int sybase_query(string query [, resource link_id])", - "Send Sybase query" - ], - "sybase_result": [ - "string sybase_result(resource result, int row, mixed field)", - "Get result data" - ], - "sybase_select_db": [ - "bool sybase_select_db(string database [, resource link_id])", - "Select Sybase database" - ], - "sybase_set_message_handler": [ - "bool sybase_set_message_handler(mixed error_func [, resource connection])", - "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" - ], - "sybase_unbuffered_query": [ - "int sybase_unbuffered_query(string query [, resource link_id])", - "Send Sybase query" - ], - "symlink": [ - "int symlink(string target, string link)", - "Create a symbolic link" - ], - "sys_get_temp_dir": [ - "string sys_get_temp_dir()", - "Returns directory path used for temporary files" - ], - "sys_getloadavg": [ - "array sys_getloadavg()", - "" - ], - "syslog": [ - "bool syslog(int priority, string message)", - "Generate a system log message" - ], - "system": [ - "int system(string command [, int &return_value])", - "Execute an external program and display output" - ], - "tan": [ - "float tan(float number)", - "Returns the tangent of the number in radians" - ], - "tanh": [ - "float tanh(float number)", - "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" - ], - "tempnam": [ - "string tempnam(string dir, string prefix)", - "Create a unique filename in a directory" - ], - "textdomain": [ - "string textdomain(string domain)", - "Set the textdomain to \"domain\". Returns the current domain" - ], - "tidy_access_count": [ - "int tidy_access_count()", - "Returns the Number of Tidy accessibility warnings encountered for specified document." - ], - "tidy_clean_repair": [ - "bool tidy_clean_repair()", - "Execute configured cleanup and repair operations on parsed markup" - ], - "tidy_config_count": [ - "int tidy_config_count()", - "Returns the Number of Tidy configuration errors encountered for specified document." - ], - "tidy_diagnose": [ - "bool tidy_diagnose()", - "Run configured diagnostics on parsed and repaired markup." - ], - "tidy_error_count": [ - "int tidy_error_count()", - "Returns the Number of Tidy errors encountered for specified document." - ], - "tidy_get_body": [ - "TidyNode tidy_get_body(resource tidy)", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_config": [ - "array tidy_get_config()", - "Get current Tidy configuarion" - ], - "tidy_get_error_buffer": [ - "string tidy_get_error_buffer([bool detailed])", - "Return warnings and errors which occured parsing the specified document" - ], - "tidy_get_head": [ - "TidyNode tidy_get_head()", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_html": [ - "TidyNode tidy_get_html()", - "Returns a TidyNode Object starting from the tag of the tidy parse tree" - ], - "tidy_get_html_ver": [ - "int tidy_get_html_ver()", - "Get the Detected HTML version for the specified document." - ], - "tidy_get_opt_doc": [ - "string tidy_get_opt_doc(tidy resource, string optname)", - "Returns the documentation for the given option name" - ], - "tidy_get_output": [ - "string tidy_get_output()", - "Return a string representing the parsed tidy markup" - ], - "tidy_get_release": [ - "string tidy_get_release()", - "Get release date (version) for Tidy library" - ], - "tidy_get_root": [ - "TidyNode tidy_get_root()", - "Returns a TidyNode Object representing the root of the tidy parse tree" - ], - "tidy_get_status": [ - "int tidy_get_status()", - "Get status of specfied document." - ], - "tidy_getopt": [ - "mixed tidy_getopt(string option)", - "Returns the value of the specified configuration option for the tidy document." - ], - "tidy_is_xhtml": [ - "bool tidy_is_xhtml()", - "Indicates if the document is a XHTML document." - ], - "tidy_is_xml": [ - "bool tidy_is_xml()", - "Indicates if the document is a generic (non HTML/XHTML) XML document." - ], - "tidy_parse_file": [ - "bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", - "Parse markup in file or URI" - ], - "tidy_parse_string": [ - "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", - "Parse a document stored in a string" - ], - "tidy_repair_file": [ - "bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", - "Repair a file using an optionally provided configuration file" - ], - "tidy_repair_string": [ - "bool tidy_repair_string(string data [, mixed config_file [, string encoding]])", - "Repair a string using an optionally provided configuration file" - ], - "tidy_warning_count": [ - "int tidy_warning_count()", - "Returns the Number of Tidy warnings encountered for specified document." - ], - "time": [ - "int time()", - "Return current UNIX timestamp" - ], - "time_nanosleep": [ - "mixed time_nanosleep(long seconds, long nanoseconds)", - "Delay for a number of seconds and nano seconds" - ], - "time_sleep_until": [ - "mixed time_sleep_until(float timestamp)", - "Make the script sleep until the specified time" - ], - "timezone_abbreviations_list": [ - "array timezone_abbreviations_list()", - "Returns associative array containing dst, offset and the timezone name" - ], - "timezone_identifiers_list": [ - "array timezone_identifiers_list([long what[, string country]])", - "Returns numerically index array with all timezone identifiers." - ], - "timezone_location_get": [ - "array timezone_location_get()", - "Returns location information for a timezone, including country code, latitude/longitude and comments" - ], - "timezone_name_from_abbr": [ - "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", - "Returns the timezone name from abbrevation" - ], - "timezone_name_get": [ - "string timezone_name_get(DateTimeZone object)", - "Returns the name of the timezone." - ], - "timezone_offset_get": [ - "long timezone_offset_get(DateTimeZone object, DateTime object)", - "Returns the timezone offset." - ], - "timezone_open": [ - "DateTimeZone timezone_open(string timezone)", - "Returns new DateTimeZone object" - ], - "timezone_transitions_get": [ - "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", - "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." - ], - "timezone_version_get": [ - "array timezone_version_get()", - "Returns the Olson database version number." - ], - "tmpfile": [ - "resource tmpfile()", - "Create a temporary file that will be deleted automatically after use" - ], - "token_get_all": [ - "array token_get_all(string source)", - "" - ], - "token_name": [ - "string token_name(int type)", - "" - ], - "touch": [ - "bool touch(string filename [, int time [, int atime]])", - "Set modification time of file" - ], - "trigger_error": [ - "void trigger_error(string messsage [, int error_type])", - "Generates a user-level error/warning/notice message" - ], - "trim": [ - "string trim(string str [, string character_mask])", - "Strips whitespace from the beginning and end of a string" - ], - "uasort": [ - "bool uasort(array array_arg, string cmp_function)", - "Sort an array with a user-defined comparison function and maintain index association" - ], - "ucfirst": [ - "string ucfirst(string str)", - "Make a string's first character lowercase" - ], - "ucwords": [ - "string ucwords(string str)", - "Uppercase the first character of every word in a string" - ], - "uksort": [ - "bool uksort(array array_arg, string cmp_function)", - "Sort an array by keys using a user-defined comparison function" - ], - "umask": [ - "int umask([int mask])", - "Return or change the umask" - ], - "uniqid": [ - "string uniqid([string prefix [, bool more_entropy]])", - "Generates a unique ID" - ], - "unixtojd": [ - "int unixtojd([int timestamp])", - "Convert UNIX timestamp to Julian Day" - ], - "unlink": [ - "bool unlink(string filename[, context context])", - "Delete a file" - ], - "unpack": [ - "array unpack(string format, string input)", - "Unpack binary string into named array elements according to format argument" - ], - "unregister_tick_function": [ - "void unregister_tick_function(string function_name)", - "Unregisters a tick callback function" - ], - "unserialize": [ - "mixed unserialize(string variable_representation)", - "Takes a string representation of variable and recreates it" - ], - "unset": [ - "void unset(mixed var [, mixed var])", - "Unset a given variable" - ], - "urldecode": [ - "string urldecode(string str)", - "Decodes URL-encoded string" - ], - "urlencode": [ - "string urlencode(string str)", - "URL-encodes string" - ], - "usleep": [ - "void usleep(int micro_seconds)", - "Delay for a given number of micro seconds" - ], - "usort": [ - "bool usort(array array_arg, string cmp_function)", - "Sort an array by values using a user-defined comparison function" - ], - "utf8_decode": [ - "string utf8_decode(string data)", - "Converts a UTF-8 encoded string to ISO-8859-1" - ], - "utf8_encode": [ - "string utf8_encode(string data)", - "Encodes an ISO-8859-1 string to UTF-8" - ], - "var_dump": [ - "void var_dump(mixed var)", - "Dumps a string representation of variable to output" - ], - "var_export": [ - "string var_export(mixed var [, bool return])", - "Outputs or returns a string representation of a variable" - ], - "variant_abs": [ - "mixed variant_abs(mixed left)", - "Returns the absolute value of a variant" - ], - "variant_add": [ - "mixed variant_add(mixed left, mixed right)", - "\"Adds\" two variant values together and returns the result" - ], - "variant_and": [ - "mixed variant_and(mixed left, mixed right)", - "performs a bitwise AND operation between two variants and returns the result" - ], - "variant_cast": [ - "object variant_cast(object variant, int type)", - "Convert a variant into a new variant object of another type" - ], - "variant_cat": [ - "mixed variant_cat(mixed left, mixed right)", - "concatenates two variant values together and returns the result" - ], - "variant_cmp": [ - "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", - "Compares two variants" - ], - "variant_date_from_timestamp": [ - "object variant_date_from_timestamp(int timestamp)", - "Returns a variant date representation of a unix timestamp" - ], - "variant_date_to_timestamp": [ - "int variant_date_to_timestamp(object variant)", - "Converts a variant date/time value to unix timestamp" - ], - "variant_div": [ - "mixed variant_div(mixed left, mixed right)", - "Returns the result from dividing two variants" - ], - "variant_eqv": [ - "mixed variant_eqv(mixed left, mixed right)", - "Performs a bitwise equivalence on two variants" - ], - "variant_fix": [ - "mixed variant_fix(mixed left)", - "Returns the integer part ? of a variant" - ], - "variant_get_type": [ - "int variant_get_type(object variant)", - "Returns the VT_XXX type code for a variant" - ], - "variant_idiv": [ - "mixed variant_idiv(mixed left, mixed right)", - "Converts variants to integers and then returns the result from dividing them" - ], - "variant_imp": [ - "mixed variant_imp(mixed left, mixed right)", - "Performs a bitwise implication on two variants" - ], - "variant_int": [ - "mixed variant_int(mixed left)", - "Returns the integer portion of a variant" - ], - "variant_mod": [ - "mixed variant_mod(mixed left, mixed right)", - "Divides two variants and returns only the remainder" - ], - "variant_mul": [ - "mixed variant_mul(mixed left, mixed right)", - "multiplies the values of the two variants and returns the result" - ], - "variant_neg": [ - "mixed variant_neg(mixed left)", - "Performs logical negation on a variant" - ], - "variant_not": [ - "mixed variant_not(mixed left)", - "Performs bitwise not negation on a variant" - ], - "variant_or": [ - "mixed variant_or(mixed left, mixed right)", - "Performs a logical disjunction on two variants" - ], - "variant_pow": [ - "mixed variant_pow(mixed left, mixed right)", - "Returns the result of performing the power function with two variants" - ], - "variant_round": [ - "mixed variant_round(mixed left, int decimals)", - "Rounds a variant to the specified number of decimal places" - ], - "variant_set": [ - "void variant_set(object variant, mixed value)", - "Assigns a new value for a variant object" - ], - "variant_set_type": [ - "void variant_set_type(object variant, int type)", - "Convert a variant into another type. Variant is modified \"in-place\"" - ], - "variant_sub": [ - "mixed variant_sub(mixed left, mixed right)", - "subtracts the value of the right variant from the left variant value and returns the result" - ], - "variant_xor": [ - "mixed variant_xor(mixed left, mixed right)", - "Performs a logical exclusion on two variants" - ], - "version_compare": [ - "int version_compare(string ver1, string ver2 [, string oper])", - "Compares two \"PHP-standardized\" version number strings" - ], - "vfprintf": [ - "int vfprintf(resource stream, string format, array args)", - "Output a formatted string into a stream" - ], - "virtual": [ - "bool virtual(string filename)", - "Perform an Apache sub-request" - ], - "vprintf": [ - "int vprintf(string format, array args)", - "Output a formatted string" - ], - "vsprintf": [ - "string vsprintf(string format, array args)", - "Return a formatted string" - ], - "wddx_add_vars": [ - "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", - "Serializes given variables and adds them to packet given by packet_id" - ], - "wddx_deserialize": [ - "mixed wddx_deserialize(mixed packet)", - "Deserializes given packet and returns a PHP value" - ], - "wddx_packet_end": [ - "string wddx_packet_end(resource packet_id)", - "Ends specified WDDX packet and returns the string containing the packet" - ], - "wddx_packet_start": [ - "resource wddx_packet_start([string comment])", - "Starts a WDDX packet with optional comment and returns the packet id" - ], - "wddx_serialize_value": [ - "string wddx_serialize_value(mixed var [, string comment])", - "Creates a new packet and serializes the given value" - ], - "wddx_serialize_vars": [ - "string wddx_serialize_vars(mixed var_name [, mixed ...])", - "Creates a new packet and serializes given variables into a struct" - ], - "wordwrap": [ - "string wordwrap(string str [, int width [, string break [, bool cut]]])", - "Wraps buffer to selected number of characters using string break char" - ], - "xml_error_string": [ - "string xml_error_string(int code)", - "Get XML parser error string" - ], - "xml_get_current_byte_index": [ - "int xml_get_current_byte_index(resource parser)", - "Get current byte index for an XML parser" - ], - "xml_get_current_column_number": [ - "int xml_get_current_column_number(resource parser)", - "Get current column number for an XML parser" - ], - "xml_get_current_line_number": [ - "int xml_get_current_line_number(resource parser)", - "Get current line number for an XML parser" - ], - "xml_get_error_code": [ - "int xml_get_error_code(resource parser)", - "Get XML parser error code" - ], - "xml_parse": [ - "int xml_parse(resource parser, string data [, int isFinal])", - "Start parsing an XML document" - ], - "xml_parse_into_struct": [ - "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", - "Parsing a XML document" - ], - "xml_parser_create": [ - "resource xml_parser_create([string encoding])", - "Create an XML parser" - ], - "xml_parser_create_ns": [ - "resource xml_parser_create_ns([string encoding [, string sep]])", - "Create an XML parser" - ], - "xml_parser_free": [ - "int xml_parser_free(resource parser)", - "Free an XML parser" - ], - "xml_parser_get_option": [ - "int xml_parser_get_option(resource parser, int option)", - "Get options from an XML parser" - ], - "xml_parser_set_option": [ - "int xml_parser_set_option(resource parser, int option, mixed value)", - "Set options in an XML parser" - ], - "xml_set_character_data_handler": [ - "int xml_set_character_data_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_default_handler": [ - "int xml_set_default_handler(resource parser, string hdl)", - "Set up default handler" - ], - "xml_set_element_handler": [ - "int xml_set_element_handler(resource parser, string shdl, string ehdl)", - "Set up start and end element handlers" - ], - "xml_set_end_namespace_decl_handler": [ - "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_external_entity_ref_handler": [ - "int xml_set_external_entity_ref_handler(resource parser, string hdl)", - "Set up external entity reference handler" - ], - "xml_set_notation_decl_handler": [ - "int xml_set_notation_decl_handler(resource parser, string hdl)", - "Set up notation declaration handler" - ], - "xml_set_object": [ - "int xml_set_object(resource parser, object &obj)", - "Set up object which should be used for callbacks" - ], - "xml_set_processing_instruction_handler": [ - "int xml_set_processing_instruction_handler(resource parser, string hdl)", - "Set up processing instruction (PI) handler" - ], - "xml_set_start_namespace_decl_handler": [ - "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", - "Set up character data handler" - ], - "xml_set_unparsed_entity_decl_handler": [ - "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", - "Set up unparsed entity declaration handler" - ], - "xmlrpc_decode": [ - "array xmlrpc_decode(string xml [, string encoding])", - "Decodes XML into native PHP types" - ], - "xmlrpc_decode_request": [ - "array xmlrpc_decode_request(string xml, string& method [, string encoding])", - "Decodes XML into native PHP types" - ], - "xmlrpc_encode": [ - "string xmlrpc_encode(mixed value)", - "Generates XML for a PHP value" - ], - "xmlrpc_encode_request": [ - "string xmlrpc_encode_request(string method, mixed params [, array output_options])", - "Generates XML for a method request" - ], - "xmlrpc_get_type": [ - "string xmlrpc_get_type(mixed value)", - "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" - ], - "xmlrpc_is_fault": [ - "bool xmlrpc_is_fault(array)", - "Determines if an array value represents an XMLRPC fault." - ], - "xmlrpc_parse_method_descriptions": [ - "array xmlrpc_parse_method_descriptions(string xml)", - "Decodes XML into a list of method descriptions" - ], - "xmlrpc_server_add_introspection_data": [ - "int xmlrpc_server_add_introspection_data(resource server, array desc)", - "Adds introspection documentation" - ], - "xmlrpc_server_call_method": [ - "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", - "Parses XML requests and call methods" - ], - "xmlrpc_server_create": [ - "resource xmlrpc_server_create()", - "Creates an xmlrpc server" - ], - "xmlrpc_server_destroy": [ - "int xmlrpc_server_destroy(resource server)", - "Destroys server resources" - ], - "xmlrpc_server_register_introspection_callback": [ - "bool xmlrpc_server_register_introspection_callback(resource server, string function)", - "Register a PHP function to generate documentation" - ], - "xmlrpc_server_register_method": [ - "bool xmlrpc_server_register_method(resource server, string method_name, string function)", - "Register a PHP function to handle method matching method_name" - ], - "xmlrpc_set_type": [ - "bool xmlrpc_set_type(string value, string type)", - "Sets xmlrpc type, base64 or datetime, for a PHP string value" - ], - "xmlwriter_end_attribute": [ - "bool xmlwriter_end_attribute(resource xmlwriter)", - "End attribute - returns FALSE on error" - ], - "xmlwriter_end_cdata": [ - "bool xmlwriter_end_cdata(resource xmlwriter)", - "End current CDATA - returns FALSE on error" - ], - "xmlwriter_end_comment": [ - "bool xmlwriter_end_comment(resource xmlwriter)", - "Create end comment - returns FALSE on error" - ], - "xmlwriter_end_document": [ - "bool xmlwriter_end_document(resource xmlwriter)", - "End current document - returns FALSE on error" - ], - "xmlwriter_end_dtd": [ - "bool xmlwriter_end_dtd(resource xmlwriter)", - "End current DTD - returns FALSE on error" - ], - "xmlwriter_end_dtd_attlist": [ - "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", - "End current DTD AttList - returns FALSE on error" - ], - "xmlwriter_end_dtd_element": [ - "bool xmlwriter_end_dtd_element(resource xmlwriter)", - "End current DTD element - returns FALSE on error" - ], - "xmlwriter_end_dtd_entity": [ - "bool xmlwriter_end_dtd_entity(resource xmlwriter)", - "End current DTD Entity - returns FALSE on error" - ], - "xmlwriter_end_element": [ - "bool xmlwriter_end_element(resource xmlwriter)", - "End current element - returns FALSE on error" - ], - "xmlwriter_end_pi": [ - "bool xmlwriter_end_pi(resource xmlwriter)", - "End current PI - returns FALSE on error" - ], - "xmlwriter_flush": [ - "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", - "Output current buffer" - ], - "xmlwriter_full_end_element": [ - "bool xmlwriter_full_end_element(resource xmlwriter)", - "End current element - returns FALSE on error" - ], - "xmlwriter_open_memory": [ - "resource xmlwriter_open_memory()", - "Create new xmlwriter using memory for string output" - ], - "xmlwriter_open_uri": [ - "resource xmlwriter_open_uri(resource xmlwriter, string source)", - "Create new xmlwriter using source uri for output" - ], - "xmlwriter_output_memory": [ - "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", - "Output current buffer as string" - ], - "xmlwriter_set_indent": [ - "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", - "Toggle indentation on/off - returns FALSE on error" - ], - "xmlwriter_set_indent_string": [ - "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", - "Set string used for indenting - returns FALSE on error" - ], - "xmlwriter_start_attribute": [ - "bool xmlwriter_start_attribute(resource xmlwriter, string name)", - "Create start attribute - returns FALSE on error" - ], - "xmlwriter_start_attribute_ns": [ - "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", - "Create start namespaced attribute - returns FALSE on error" - ], - "xmlwriter_start_cdata": [ - "bool xmlwriter_start_cdata(resource xmlwriter)", - "Create start CDATA tag - returns FALSE on error" - ], - "xmlwriter_start_comment": [ - "bool xmlwriter_start_comment(resource xmlwriter)", - "Create start comment - returns FALSE on error" - ], - "xmlwriter_start_document": [ - "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", - "Create document tag - returns FALSE on error" - ], - "xmlwriter_start_dtd": [ - "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", - "Create start DTD tag - returns FALSE on error" - ], - "xmlwriter_start_dtd_attlist": [ - "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", - "Create start DTD AttList - returns FALSE on error" - ], - "xmlwriter_start_dtd_element": [ - "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", - "Create start DTD element - returns FALSE on error" - ], - "xmlwriter_start_dtd_entity": [ - "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", - "Create start DTD Entity - returns FALSE on error" - ], - "xmlwriter_start_element": [ - "bool xmlwriter_start_element(resource xmlwriter, string name)", - "Create start element tag - returns FALSE on error" - ], - "xmlwriter_start_element_ns": [ - "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", - "Create start namespaced element tag - returns FALSE on error" - ], - "xmlwriter_start_pi": [ - "bool xmlwriter_start_pi(resource xmlwriter, string target)", - "Create start PI tag - returns FALSE on error" - ], - "xmlwriter_text": [ - "bool xmlwriter_text(resource xmlwriter, string content)", - "Write text - returns FALSE on error" - ], - "xmlwriter_write_attribute": [ - "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", - "Write full attribute - returns FALSE on error" - ], - "xmlwriter_write_attribute_ns": [ - "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", - "Write full namespaced attribute - returns FALSE on error" - ], - "xmlwriter_write_cdata": [ - "bool xmlwriter_write_cdata(resource xmlwriter, string content)", - "Write full CDATA tag - returns FALSE on error" - ], - "xmlwriter_write_comment": [ - "bool xmlwriter_write_comment(resource xmlwriter, string content)", - "Write full comment tag - returns FALSE on error" - ], - "xmlwriter_write_dtd": [ - "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", - "Write full DTD tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_attlist": [ - "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", - "Write full DTD AttList tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_element": [ - "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", - "Write full DTD element tag - returns FALSE on error" - ], - "xmlwriter_write_dtd_entity": [ - "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", - "Write full DTD Entity tag - returns FALSE on error" - ], - "xmlwriter_write_element": [ - "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", - "Write full element tag - returns FALSE on error" - ], - "xmlwriter_write_element_ns": [ - "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", - "Write full namespaced element tag - returns FALSE on error" - ], - "xmlwriter_write_pi": [ - "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", - "Write full PI tag - returns FALSE on error" - ], - "xmlwriter_write_raw": [ - "bool xmlwriter_write_raw(resource xmlwriter, string content)", - "Write text - returns FALSE on error" - ], - "xsl_xsltprocessor_get_parameter": [ - "string xsl_xsltprocessor_get_parameter(string namespace, string name)", - "" - ], - "xsl_xsltprocessor_has_exslt_support": [ - "bool xsl_xsltprocessor_has_exslt_support()", - "" - ], - "xsl_xsltprocessor_import_stylesheet": [ - "void xsl_xsltprocessor_import_stylesheet(domdocument doc)", - "" - ], - "xsl_xsltprocessor_register_php_functions": [ - "void xsl_xsltprocessor_register_php_functions([mixed $restrict])", - "" - ], - "xsl_xsltprocessor_remove_parameter": [ - "bool xsl_xsltprocessor_remove_parameter(string namespace, string name)", - "" - ], - "xsl_xsltprocessor_set_parameter": [ - "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])", - "" - ], - "xsl_xsltprocessor_set_profiling": [ - "bool xsl_xsltprocessor_set_profiling(string filename)", - "" - ], - "xsl_xsltprocessor_transform_to_doc": [ - "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)", - "" - ], - "xsl_xsltprocessor_transform_to_uri": [ - "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)", - "" - ], - "xsl_xsltprocessor_transform_to_xml": [ - "string xsl_xsltprocessor_transform_to_xml(domdocument doc)", - "" - ], - "zend_logo_guid": [ - "string zend_logo_guid()", - "Return the special ID used to request the Zend logo in phpinfo screens" - ], - "zend_version": [ - "string zend_version()", - "Get the version of the Zend Engine" - ], - "zip_close": [ - "void zip_close(resource zip)", - "Close a Zip archive" - ], - "zip_entry_close": [ - "void zip_entry_close(resource zip_ent)", - "Close a zip entry" - ], - "zip_entry_compressedsize": [ - "int zip_entry_compressedsize(resource zip_entry)", - "Return the compressed size of a ZZip entry" - ], - "zip_entry_compressionmethod": [ - "string zip_entry_compressionmethod(resource zip_entry)", - "Return a string containing the compression method used on a particular entry" - ], - "zip_entry_filesize": [ - "int zip_entry_filesize(resource zip_entry)", - "Return the actual filesize of a ZZip entry" - ], - "zip_entry_name": [ - "string zip_entry_name(resource zip_entry)", - "Return the name given a ZZip entry" - ], - "zip_entry_open": [ - "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", - "Open a Zip File, pointed by the resource entry" - ], - "zip_entry_read": [ - "mixed zip_entry_read(resource zip_entry [, int len])", - "Read from an open directory entry" - ], - "zip_open": [ - "resource zip_open(string filename)", - "Create new zip using source uri for output" - ], - "zip_read": [ - "resource zip_read(resource zip)", - "Returns the next file in the archive" - ], - "zlib_get_coding_type": [ - "string zlib_get_coding_type()", - "Returns the coding type used for output compression" - ] -}; - -var variableMap = { - "$_COOKIE": { - type: "array" - }, - "$_ENV": { - type: "array" - }, - "$_FILES": { - type: "array" - }, - "$_GET": { - type: "array" - }, - "$_POST": { - type: "array" - }, - "$_REQUEST": { - type: "array" - }, - "$_SERVER": { - type: "array", - value: { - "DOCUMENT_ROOT": 1, - "GATEWAY_INTERFACE": 1, - "HTTP_ACCEPT": 1, - "HTTP_ACCEPT_CHARSET": 1, - "HTTP_ACCEPT_ENCODING": 1 , - "HTTP_ACCEPT_LANGUAGE": 1, - "HTTP_CONNECTION": 1, - "HTTP_HOST": 1, - "HTTP_REFERER": 1, - "HTTP_USER_AGENT": 1, - "PATH_TRANSLATED": 1, - "PHP_SELF": 1, - "QUERY_STRING": 1, - "REMOTE_ADDR": 1, - "REMOTE_PORT": 1, - "REQUEST_METHOD": 1, - "REQUEST_URI": 1, - "SCRIPT_FILENAME": 1, - "SCRIPT_NAME": 1, - "SERVER_ADMIN": 1, - "SERVER_NAME": 1, - "SERVER_PORT": 1, - "SERVER_PROTOCOL": 1, - "SERVER_SIGNATURE": 1, - "SERVER_SOFTWARE": 1, - "argv": 1, - "argc": 1 - } - }, - "$_SESSION": { - type: "array" - }, - "$GLOBALS": { - type: "array" - }, - '$argv': { - type: "array" - }, - '$argc': { - type: "int" - } -}; - -function is(token, type) { - return token.type.lastIndexOf(type) > -1; -} - -var PhpCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - - if (token.type==='support.php_tag' && token.value===' 0) { - var prevToken = session.getTokenAt(pos.row, token.start); - if (prevToken.type==='support.php_tag') { - return this.getTagCompletions(state, session, pos, prefix); - } - } - return this.getFunctionCompletions(state, session, pos, prefix); - } - if (is(token, "variable")) - return this.getVariableCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (token.type==='string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) - return this.getArrayKeyCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return [{ - caption: 'php', - value: 'php', - meta: "php tag", - score: 1000000 - }, { - caption: '=', - value: '=', - meta: "php tag", - score: 1000000 - }]; - }; - - this.getFunctionCompletions = function(state, session, pos, prefix) { - var functions = Object.keys(functionMap); - return functions.map(function(func){ - return { - caption: func, - snippet: func + '($0)', - meta: "php function", - score: 1000000, - docHTML: functionMap[func][1] - }; - }); - }; - - this.getVariableCompletions = function(state, session, pos, prefix) { - var variables = Object.keys(variableMap); - return variables.map(function(variable){ - return { - caption: variable, - value: variable, - meta: "php variable", - score: 1000000 - }; - }); - }; - - this.getArrayKeyCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; - - if (!variableMap[variable]) { - return []; - } - - var keys = []; - if (variableMap[variable].type==='array' && variableMap[variable].value) - keys = Object.keys(variableMap[variable].value); - - return keys.map(function(key) { - return { - caption: key, - value: key, - meta: "php array key", - score: 1000000 - }; - }); - }; - -}).call(PhpCompletions.prototype); - -exports.PhpCompletions = PhpCompletions; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; -var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var PhpCompletions = require("./php_completions").PhpCompletions; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var unicode = require("../unicode"); -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; - -var PhpMode = function(opts) { - this.HighlightRules = PhpLangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.$completer = new PhpCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(PhpMode, TextMode); - -(function() { - - this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); - - this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState != "doc-start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/php-inline"; -}).call(PhpMode.prototype); - -var Mode = function(opts) { - if (opts && opts.inline) { - var mode = new PhpMode(); - mode.createWorker = this.createWorker; - mode.inlinePhp = true; - return mode; - } - HtmlMode.call(this); - this.HighlightRules = PhpHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "php-": PhpMode - }); - this.foldingRules.subModes["php-"] = new CStyleFoldMode(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); - worker.attachToDocument(session.getDocument()); - - if (this.inlinePhp) - worker.call("setOptions", [{inline: true}]); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/php"; - this.snippetFileId = "ace/snippets/php"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/php_laravel_blade",["require","exports","module","ace/lib/oop","ace/mode/php_laravel_blade_highlight_rules","ace/mode/php","ace/mode/javascript","ace/mode/css","ace/mode/html"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var PHPLaravelBladeHighlightRules = require("./php_laravel_blade_highlight_rules").PHPLaravelBladeHighlightRules; - var PHPMode = require("./php").Mode; - var JavaScriptMode = require("./javascript").Mode; - var CssMode = require("./css").Mode; - var HtmlMode = require("./html").Mode; - - var Mode = function() { - PHPMode.call(this); - - this.HighlightRules = PHPLaravelBladeHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "html-": HtmlMode - }); - }; - oop.inherits(Mode, PHPMode); - - (function() { - - this.$id = "ace/mode/php_laravel_blade"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/php_laravel_blade"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-pig.js b/src-noconflict/mode-pig.js deleted file mode 100644 index ca57c54..0000000 --- a/src-noconflict/mode-pig.js +++ /dev/null @@ -1,310 +0,0 @@ -ace.define("ace/mode/pig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PigHighlightRules = function() { - - this.$rules = { - start: [{ - token: "comment.block.pig", - regex: /\/\*/, - push: [{ - token: "comment.block.pig", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.pig" - }] - }, { - token: "comment.line.double-dash.asciidoc", - regex: /--.*$/ - }, { - token: "keyword.control.pig", - regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/, - caseInsensitive: true - }, { - token: "storage.datatypes.pig", - regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/, - caseInsensitive: true - }, { - token: "support.function.storage.pig", - regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/ - }, { - token: "support.function.udf.pig", - regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/ - }, { - token: "support.function.udf.math.pig", - regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/ - }, { - token: "support.function.udf.string.pig", - regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/ - }, { - token: "support.function.udf.datetime.pig", - regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/ - }, { - token: "support.function.command.pig", - regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/ - }, { - token: "variable.pig", - regex: /\$[a_zA-Z0-9_]+/ - }, { - token: "constant.language.pig", - regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/, - caseInsensitive: true - }, { - token: "constant.numeric.pig", - regex: /\b\d+(?:\.\d+)?\b/ - }, { - token: "keyword.operator.comparison.pig", - regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/, - caseInsensitive: true - }, { - token: "keyword.operator.arithmetic.pig", - regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/ - }, { - token: "string.quoted.double.pig", - regex: /"/, - push: [{ - token: "string.quoted.double.pig", - regex: /"/, - next: "pop" - }, { - token: "constant.character.escape.pig", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.pig" - }] - }, { - token: "string.quoted.single.pig", - regex: /'/, - push: [{ - token: "string.quoted.single.pig", - regex: /'/, - next: "pop" - }, { - token: "constant.character.escape.pig", - regex: /\\./ - }, { - defaultToken: "string.quoted.single.pig" - }] - }, { - todo: { - token: [ - "text", - "keyword.parameter.pig", - "text", - "storage.type.parameter.pig" - ], - regex: /^(\s*)(set)(\s+)(\S+)/, - caseInsensitive: true, - push: [{ - token: "text", - regex: /$/, - next: "pop" - }, { - include: "$self" - }] - } - }, { - token: [ - "text", - "keyword.alias.pig", - "text", - "storage.type.alias.pig" - ], - regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/, - caseInsensitive: true, - push: [{ - token: "text", - regex: /;?$/, - next: "pop" - }] - }] - }; - - this.normalizeRules(); -}; - -PigHighlightRules.metaData = { - fileTypes: ["pig"], - name: "Pig", - scopeName: "source.pig" -}; - - -oop.inherits(PigHighlightRules, TextHighlightRules); - -exports.PigHighlightRules = PigHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/pig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pig_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PigHighlightRules = require("./pig_highlight_rules").PigHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PigHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/pig"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/pig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-plain_text.js b/src-noconflict/mode-plain_text.js deleted file mode 100644 index 66f9652..0000000 --- a/src-noconflict/mode-plain_text.js +++ /dev/null @@ -1,32 +0,0 @@ -ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var Behaviour = require("./behaviour").Behaviour; - -var Mode = function() { - this.HighlightRules = TextHighlightRules; - this.$behaviour = new Behaviour(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { - return ''; - }; - this.$id = "ace/mode/plain_text"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/plain_text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-powershell.js b/src-noconflict/mode-powershell.js deleted file mode 100644 index 94474e0..0000000 --- a/src-noconflict/mode-powershell.js +++ /dev/null @@ -1,418 +0,0 @@ -ace.define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PowershellHighlightRules = function() { - var keywords = ( - "begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|" + - "finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|" + - "process|return|sequence|switch|throw|trap|try|until|while|workflow" - ); - var builtinFunctions = ( - "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|" + - "Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|" + - "Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|" + - "Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|" + - "Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|" + - "Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|" + - "Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|" + - "Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|" + - "ConvertFrom-CIPolicy|" + - "Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|" + - "Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|" + - "Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|" + - "Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|" + - "Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|" + - "Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|" + - "Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|" + - "Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|" + - "Get-IseSnippet|Import-IseSnippet|New-IseSnippet|" + - "Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|" + - "Compress-Archive|Expand-Archive|" + - "Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|" + - "Start-Transcript|Stop-Transcript|" + - "Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|" + - "Export-ODataEndpointProxy|" + - "ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|" + - "ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|" + - "Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|" + - "Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|" + - "Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|" + - "Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|" + - "Get-NetConnectionProfile|Set-NetConnectionProfile|" + - "Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|" + - "Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|" + - "Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|" + - "Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|" + - "Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|" + - "Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|" + - "Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|" + - "Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|" + - "Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|" + - "Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|" + - "Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|" + - "Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|" + - "AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|" + - "Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|" + - "Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|" + - "Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|" + - "Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|" + - "Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|" + - "Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|" + - "PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|" + - "Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|" + - "New-PSWorkflowSession|New-PSWorkflowExecutionOption|" + - "Invoke-AsWorkflow|" + - "Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|" + - "Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|" + - "Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|" + - "Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|" + - "Get-StartApps|Export-StartLayout|Import-StartLayout|" + - "Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|" + - "Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|" + - "Get-TroubleshootingPack|Invoke-TroubleshootingPack|" + - "Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|" + - "Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|" + - "Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|" + - "Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|" + - "Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|" + - "Get-WindowsSearchSetting|Set-WindowsSearchSetting|" + - "Get-WindowsUpdateLog" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords - }, "identifier"); - var binaryOperatorsRe = ( - "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|" + - "ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|" + - "ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|" + - "and|or|xor|not|" + - "split|join|replace|f|" + - "csplit|creplace|" + - "isplit|ireplace|" + - "is|isnot|as|" + - "shl|shr" - ); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment.start", - regex : "<#", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "[$](?:[Tt]rue|[Ff]alse)\\b" - }, { - token : "constant.language", - regex : "[$][Nn]ull\\b" - }, { - token : "variable.instance", - regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" - }, { - token : "keyword.operator", - regex : "\\-(?:" + binaryOperatorsRe + ")" - }, { - token : "keyword.operator", - regex : "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.end", - regex : "#>", - next : "start" - }, { - token : "doc.comment.tag", - regex : "^\\.\\w+" - }, { - defaultToken : "comment" - } - ] - }; -}; - -oop.inherits(PowershellHighlightRules, TextHighlightRules); - -exports.PowershellHighlightRules = PowershellHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PowershellHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"}); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.blockComment = {start: "<#", end: "#>"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/powershell"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/powershell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-praat.js b/src-noconflict/mode-praat.js deleted file mode 100644 index 08d0a7a..0000000 --- a/src-noconflict/mode-praat.js +++ /dev/null @@ -1,478 +0,0 @@ -ace.define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PraatHighlightRules = function() { - - var keywords = ( - "if|then|else|elsif|elif|endif|fi|" + - "endfor|endproc|" + // related keywords specified below - "while|endwhile|" + - "repeat|until|" + - "select|plus|minus|" + - "assert|asserterror" - ); - - var predefinedVariables = ( - "macintosh|windows|unix|" + - "praatVersion|praatVersion\\$" + - "pi|undefined|" + - "newline\\$|tab\\$|" + - "shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|" + - "temporaryDirectory\\$|defaultDirectory\\$" - ); - var directives = ( - "clearinfo|endSendPraat" - ); - - var functions = ( - "writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|" + - "writeFile|writeFileLine|appendFile|appendFileLine|" + - "abs|round|floor|ceiling|min|max|imin|imax|" + - "sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|" + - "exp|ln|lnBeta|lnGamma|log10|log2|" + - "sinh|cosh|tanh|arcsinh|arccosh|arctanh|" + - "sigmoid|invSigmoid|erf|erfc|" + - "random(?:Uniform|Integer|Gauss|Poisson|Binomial)|" + - "gaussP|gaussQ|invGaussQ|incompleteGammaP|incompleteBeta|" + - "chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|" + - "fisherP|fisherQ|invFisherQ|" + - "binomialP|binomialQ|invBinomialP|invBinomialQ|" + - "hertzToBark|barkToHerz|" + - "hertzToMel|melToHertz|" + - "hertzToSemitones|semitonesToHerz|" + - "erb|hertzToErb|erbToHertz|" + - "phonToDifferenceLimens|differenceLimensToPhon|" + - "soundPressureToPhon|" + - "beta|beta2|besselI|besselK|" + - "numberOfColumns|numberOfRows|" + - "selected|selected\\$|numberOfSelected|variableExists|"+ - "index|rindex|startsWith|endsWith|"+ - "index_regex|rindex_regex|replace_regex\\$|"+ - "length|extractWord\\$|extractLine\\$|extractNumber|" + - "left\\$|right\\$|mid\\$|replace\\$|" + - "date\\$|fixed\\$|percent\\$|" + - "zero#|linear#|randomUniform#|randomInteger#|randomGauss#|" + - "beginPause|endPause|" + - "demoShow|demoWindowTitle|demoInput|demoWaitForInput|" + - "demoClicked|demoClickedIn|demoX|demoY|" + - "demoKeyPressed|demoKey\\$|" + - "demoExtraControlKeyPressed|demoShiftKeyPressed|"+ - "demoCommandKeyPressed|demoOptionKeyPressed|" + - "environment\\$|chooseReadFile\\$|" + - "chooseDirectory\\$|createDirectory|fileReadable|deleteFile|" + - "selectObject|removeObject|plusObject|minusObject|" + - "runScript|exitScript|" + - "beginSendPraat|endSendPraat|" + - "objectsAreIdentical" - ); - - var objectTypes = ( - "Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|" + - "BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|" + - "ClassificationTable|Cochleagram|Collection|Configuration|" + - "Confusion|ContingencyTable|Corpus|Correlation|Covariance|" + - "CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|" + - "Discriminant|Dissimilarity|Distance|Distributions|DurationTier|" + - "EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|" + - "FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|" + - "FormantTier|GaussianMixture|HMM|HMM_Observation|" + - "HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|" + - "ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|" + - "KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|" + - "LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|" + - "Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|" + - "OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|" + - "Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|" + - "Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|" + - "SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|" + - "SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|" + - "SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|" + - "TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|" + - "Transition|VocalTract|Weight|WordList" - ); - - this.$rules = { - "start" : [ - { - token : "string.interpolated", - regex : /'((?:\.?[a-z][a-zA-Z0-9_.]*)(?:\$|#|:[0-9]+)?)'/ - }, { - token : ["text", "text", "keyword.operator", "text", "keyword"], - regex : /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(stopwatch)/ - }, { - token : ["text", "keyword", "text", "string"], - regex : /(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/ - }, { - token : ["text", "keyword"], - regex : "(^\\s*)(" + directives + ")$" - }, { - token : ["text", "keyword.operator", "text"], - regex : /(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/ - }, { - token : ["text", "text", "keyword.operator", "text", "keyword", "text", "keyword"], - regex : /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ - }, { - token : ["text", "keyword", "text", "keyword"], - regex : /(^\s*)((?:no(?:warn|check))?)(\s*)(\b(?:editor(?::?)|endeditor)\b)/ - }, { - token : ["text", "keyword", "text", "keyword"], - regex : /(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ - }, { - token : ["text", "keyword", "text", "keyword"], - regex : /^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/ - }, { - token : ["text", "support.function", "text"], - regex : /(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/ - }, { - token : "entity.name.type", - regex : "(" + objectTypes + ")" - }, { - token : "variable.language", - regex : "(" + predefinedVariables + ")" - }, { - token : ["support.function", "text"], - regex : "((?:" + functions + ")\\$?)(\\s*(?::|\\())" - }, { - token : "keyword", - regex : /(\bfor\b)/, - next : "for" - }, { - token : "keyword", - regex : "(\\b(?:" + keywords + ")\\b)" - }, { - token : "string", - regex : /"[^"]*"/ - }, { - token : "string", - regex : /"[^"]*$/, - next : "brokenstring" - }, { - token : ["text", "keyword", "text", "entity.name.section"], - regex : /(^\s*)(\bform\b)(\s+)(.*)/, - next : "form" - }, { - token : "constant.numeric", - regex : /\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : ["keyword", "text", "entity.name.function"], - regex : /(procedure)(\s+)([^:\s]+)/ - }, { - token : ["entity.name.function", "text"], - regex : /(@\S+)(:|\s*\()/ - }, { - token : ["text", "keyword", "text", "entity.name.function"], - regex : /(^\s*)(call)(\s+)(\S+)/ - }, { - token : "comment", - regex : /(^\s*#|;).*$/ - }, { - token : "text", - regex : /\s+/ - } - ], - "form" : [ - { - token : ["keyword", "text", "constant.numeric"], - regex : /((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/ - }, { - token : ["keyword", "constant.numeric"], - regex : /((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ - }, { - token : ["keyword", "string"], - regex : /((?:option|button)\s+)(.*)/ - }, { - token : ["keyword", "text", "string"], - regex : /((?:sentence|text)\s+)(\S+\s*)(.*)/ - }, { - token : ["keyword", "text", "string", "invalid.illegal"], - regex : /(word\s+)(\S+\s*)(\S+)?(\s.*)?/ - }, { - token : ["keyword", "text", "constant.language"], - regex : /(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/ - }, { - token : ["keyword", "text", "constant.numeric"], - regex : /((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ - }, { - token : ["keyword", "string"], - regex : /(comment\s+)(.*)/ - }, { - token : "keyword", - regex : 'endform', - next : "start" - } - ], - "for" : [ - { - token : ["keyword", "text", "constant.numeric", "text"], - regex : /(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/ - }, { - token : ["keyword", "text"], - regex : /(from|to)(\s+\S+\s*)/ - }, { - token : "text", - regex : /$/, - next : "start" - } - ], - "brokenstring" : [ - { - token : ["text", "string"], - regex : /(\s*\.{3})([^"]*)/ - }, { - token : "string", - regex : /"/, - next : "start" - } - ] - }; -}; - -oop.inherits(PraatHighlightRules, TextHighlightRules); - -exports.PraatHighlightRules = PraatHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PraatHighlightRules = require("./praat_highlight_rules").PraatHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PraatHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/praat"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/praat"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-prisma.js b/src-noconflict/mode-prisma.js deleted file mode 100644 index 6323867..0000000 --- a/src-noconflict/mode-prisma.js +++ /dev/null @@ -1,489 +0,0 @@ -ace.define("ace/mode/prisma_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PrismaHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#triple_comment" - }, { - include: "#double_comment" - }, { - include: "#model_block_definition" - }, { - include: "#config_block_definition" - }, { - include: "#enum_block_definition" - }, { - include: "#type_definition" - }], - "#model_block_definition": [{ - token: [ - "source.prisma.embedded.source", - "storage.type.model.prisma", - "source.prisma.embedded.source", - "entity.name.type.model.prisma", - "source.prisma.embedded.source", - "punctuation.definition.tag.prisma" - ], - regex: /^(\s*)(model|type)(\s+)([A-Za-z][\w]*)(\s+)({)/, - push: [{ - token: "punctuation.definition.tag.prisma", - regex: /\s*\}/, - next: "pop" - }, { - include: "#triple_comment" - }, { - include: "#double_comment" - }, { - include: "#field_definition" - }, { - defaultToken: "source.prisma.embedded.source" - }] - }], - "#enum_block_definition": [{ - token: [ - "source.prisma.embedded.source", - "storage.type.enum.prisma", - "source.prisma.embedded.source", - "entity.name.type.enum.prisma", - "source.prisma.embedded.source", - "punctuation.definition.tag.prisma" - ], - regex: /^(\s*)(enum)(\s+)([A-Za-z][\w]*)(\s+)({)/, - push: [{ - token: "punctuation.definition.tag.prisma", - regex: /\s*\}/, - next: "pop" - }, { - include: "#triple_comment" - }, { - include: "#double_comment" - }, { - include: "#enum_value_definition" - }, { - defaultToken: "source.prisma.embedded.source" - }] - }], - "#config_block_definition": [{ - token: [ - "source.prisma.embedded.source", - "storage.type.config.prisma", - "source.prisma.embedded.source", - "entity.name.type.config.prisma", - "source.prisma.embedded.source", - "punctuation.definition.tag.prisma" - ], - regex: /^(\s*)(generator|datasource)(\s+)([A-Za-z][\w]*)(\s+)({)/, - push: [{ - token: "source.prisma.embedded.source", - regex: /\s*\}/, - next: "pop" - }, { - include: "#triple_comment" - }, { - include: "#double_comment" - }, { - include: "#assignment" - }, { - defaultToken: "source.prisma.embedded.source" - }] - }], - "#assignment": [{ - token: [ - "text", - "variable.other.assignment.prisma", - "text", - "keyword.operator.terraform", - "text" - ], - regex: /^(\s*)(\w+)(\s*)(=)(\s*)/, - push: [{ - token: "text", - regex: /$/, - next: "pop" - }, { - include: "#value" - }, { - include: "#double_comment_inline" - }] - }], - "#field_definition": [{ - token: [ - "text", - "variable.other.assignment.prisma", - "invalid.illegal.colon.prisma", - "text", - "support.type.primitive.prisma", - "keyword.operator.list_type.prisma", - "keyword.operator.optional_type.prisma", - "invalid.illegal.required_type.prisma" - ], - regex: /^(\s*)(\w+)((?:\s*:)?)(\s+)(\w+)((?:\[\])?)((?:\?)?)((?:\!)?)/ - }, { - include: "#attribute_with_arguments" - }, { - include: "#attribute" - }], - "#type_definition": [{ - token: [ - "text", - "storage.type.type.prisma", - "text", - "entity.name.type.type.prisma", - "text", - "support.type.primitive.prisma" - ], - regex: /^(\s*)(type)(\s+)(\w+)(\s*=\s*)(\w+)/ - }, { - include: "#attribute_with_arguments" - }, { - include: "#attribute" - }], - "#enum_value_definition": [{ - token: [ - "text", - "variable.other.assignment.prisma", - "text" - ], - regex: /^(\s*)(\w+)(\s*$)/ - }, { - include: "#attribute_with_arguments" - }, { - include: "#attribute" - }], - "#attribute_with_arguments": [{ - token: [ - "entity.name.function.attribute.prisma", - "punctuation.definition.tag.prisma" - ], - regex: /(@@?[\w\.]+)(\()/, - push: [{ - token: "punctuation.definition.tag.prisma", - regex: /\)/, - next: "pop" - }, { - include: "#named_argument" - }, { - include: "#value" - }, { - defaultToken: "source.prisma.attribute.with_arguments" - }] - }], - "#attribute": [{ - token: "entity.name.function.attribute.prisma", - regex: /@@?[\w\.]+/ - }], - "#array": [{ - token: "source.prisma.array", - regex: /\[/, - push: [{ - token: "source.prisma.array", - regex: /\]/, - next: "pop" - }, { - include: "#value" - }, { - defaultToken: "source.prisma.array" - }] - }], - "#value": [{ - include: "#array" - }, { - include: "#functional" - }, { - include: "#literal" - }], - "#functional": [{ - token: [ - "support.function.functional.prisma", - "punctuation.definition.tag.prisma" - ], - regex: /(\w+)(\()/, - push: [{ - token: "punctuation.definition.tag.prisma", - regex: /\)/, - next: "pop" - }, { - include: "#value" - }, { - defaultToken: "source.prisma.functional" - }] - }], - "#literal": [{ - include: "#boolean" - }, { - include: "#number" - }, { - include: "#double_quoted_string" - }, { - include: "#identifier" - }], - "#identifier": [{ - token: "support.constant.constant.prisma", - regex: /\b(?:\w)+\b/ - }], - "#map_key": [{ - token: [ - "variable.parameter.key.prisma", - "text", - "punctuation.definition.separator.key-value.prisma", - "text" - ], - regex: /(\w+)(\s*)(:)(\s*)/ - }], - "#named_argument": [{ - include: "#map_key" - }, { - include: "#value" - }], - "#triple_comment": [{ - token: "comment.prisma", - regex: /\/\/\//, - push: [{ - token: "comment.prisma", - regex: /$/, - next: "pop" - }, { - defaultToken: "comment.prisma" - }] - }], - "#double_comment": [{ - token: "comment.prisma", - regex: /\/\//, - push: [{ - token: "comment.prisma", - regex: /$/, - next: "pop" - }, { - defaultToken: "comment.prisma" - }] - }], - "#double_comment_inline": [{ - token: "comment.prisma", - regex: /\/\/[^$]*/ - }], - "#boolean": [{ - token: "constant.language.boolean.prisma", - regex: /\b(?:true|false)\b/ - }], - "#number": [{ - token: "constant.numeric.prisma", - regex: /(?:0(?:x|X)[0-9a-fA-F]*|(?:\+|-)?\b(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDdg]|UL|ul)?\b/ - }], - "#double_quoted_string": [{ - token: "string.quoted.double.start.prisma", - regex: /"/, - push: [{ - token: "string.quoted.double.end.prisma", - regex: /"/, - next: "pop" - }, { - include: "#string_interpolation" - }, { - token: "string.quoted.double.prisma", - regex: /[\w\-\/\._\\%@:\?=]+/ - }, { - defaultToken: "unnamed" - }] - }], - "#string_interpolation": [{ - token: "keyword.control.interpolation.start.prisma", - regex: /\$\{/, - push: [{ - token: "keyword.control.interpolation.end.prisma", - regex: /\s*\}/, - next: "pop" - }, { - include: "#value" - }, { - defaultToken: "source.tag.embedded.source.prisma" - }] - }] - }; - - this.normalizeRules(); -}; - -PrismaHighlightRules.metaData = { - name: "Prisma", - scopeName: "source.prisma" -}; - - -oop.inherits(PrismaHighlightRules, TextHighlightRules); - -exports.PrismaHighlightRules = PrismaHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/prisma",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prisma_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PrismaHighlightRules = require("./prisma_highlight_rules").PrismaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PrismaHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/prisma"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/prisma"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-prolog.js b/src-noconflict/mode-prolog.js deleted file mode 100644 index 5c8223d..0000000 --- a/src-noconflict/mode-prolog.js +++ /dev/null @@ -1,371 +0,0 @@ -ace.define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PrologHighlightRules = function() { - - this.$rules = { start: - [ { include: '#comment' }, - { include: '#basic_fact' }, - { include: '#rule' }, - { include: '#directive' }, - { include: '#fact' } ], - '#atom': - [ { token: 'constant.other.atom.prolog', - regex: '\\b[a-z][a-zA-Z0-9_]*\\b' }, - { token: 'constant.numeric.prolog', - regex: '-?\\d+(?:\\.\\d+)?' }, - { include: '#string' } ], - '#basic_elem': - [ { include: '#comment' }, - { include: '#statement' }, - { include: '#constants' }, - { include: '#operators' }, - { include: '#builtins' }, - { include: '#list' }, - { include: '#atom' }, - { include: '#variable' } ], - '#basic_fact': - [ { token: - [ 'entity.name.function.fact.basic.prolog', - 'punctuation.end.fact.basic.prolog' ], - regex: '([a-z]\\w*)(\\.)' } ], - '#builtins': - [ { token: 'support.function.builtin.prolog', - regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.prolog', - 'comment.line.percentage.prolog' ], - regex: '(%)(.*$)' }, - { token: 'punctuation.definition.comment.prolog', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.prolog', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.prolog' } ] } ], - '#constants': - [ { token: 'constant.language.prolog', - regex: '\\b(?:true|false|yes|no)\\b' } ], - '#directive': - [ { token: 'keyword.operator.directive.prolog', - regex: ':-', - push: - [ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' }, - { include: '#comment' }, - { include: '#statement' }, - { defaultToken: 'meta.directive.prolog' } ] } ], - '#expr': - [ { include: '#comments' }, - { token: 'meta.expression.prolog', - regex: '\\(', - push: - [ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' }, - { include: '#expr' }, - { defaultToken: 'meta.expression.prolog' } ] }, - { token: 'keyword.control.cutoff.prolog', regex: '!' }, - { token: 'punctuation.control.and.prolog', regex: ',' }, - { token: 'punctuation.control.or.prolog', regex: ';' }, - { include: '#basic_elem' } ], - '#fact': - [ { token: - [ 'entity.name.function.fact.prolog', - 'punctuation.begin.fact.parameters.prolog' ], - regex: '([a-z]\\w*)(\\()(?!.*:-)', - push: - [ { token: - [ 'punctuation.end.fact.parameters.prolog', - 'punctuation.end.fact.prolog' ], - regex: '(\\))(\\.?)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.fact.prolog' } ] } ], - '#list': - [ { token: 'punctuation.begin.list.prolog', - regex: '\\[(?=.*\\])', - push: - [ { token: 'punctuation.end.list.prolog', - regex: '\\]', - next: 'pop' }, - { include: '#comment' }, - { token: 'punctuation.separator.list.prolog', regex: ',' }, - { token: 'punctuation.concat.list.prolog', - regex: '\\|', - push: - [ { token: 'meta.list.concat.prolog', - regex: '(?=\\s*\\])', - next: 'pop' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.concat.prolog' } ] }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.prolog' } ] } ], - '#operators': - [ { token: 'keyword.operator.prolog', - regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ], - '#parameter': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.parameter.prolog', - regex: '\\b[A-Z_]\\w*\\b' }, - { token: 'punctuation.separator.parameters.prolog', regex: ',' }, - { include: '#basic_elem' }, - { token: 'text', regex: '[^\\s]' } ], - '#rule': - [ { token: 'meta.rule.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'punctuation.rule.end.prolog', - regex: '\\.', - next: 'pop' }, - { token: 'meta.rule.signature.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'meta.rule.signature.prolog', - regex: '(?=:-)', - next: 'pop' }, - { token: 'entity.name.function.rule.prolog', - regex: '[a-z]\\w*(?=\\(|\\s*:-)' }, - { token: 'punctuation.rule.parameters.begin.prolog', - regex: '\\(', - push: - [ { token: 'punctuation.rule.parameters.end.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.rule.parameters.prolog' } ] }, - { defaultToken: 'meta.rule.signature.prolog' } ] }, - { token: 'keyword.operator.definition.prolog', - regex: ':-', - push: - [ { token: 'meta.rule.definition.prolog', - regex: '(?=\\.)', - next: 'pop' }, - { include: '#comment' }, - { include: '#expr' }, - { defaultToken: 'meta.rule.definition.prolog' } ] }, - { defaultToken: 'meta.rule.prolog' } ] } ], - '#statement': - [ { token: 'meta.statement.prolog', - regex: '(?=[a-z]\\w*\\()', - push: - [ { token: 'punctuation.end.statement.parameters.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#builtins' }, - { include: '#atom' }, - { token: 'punctuation.begin.statement.parameters.prolog', - regex: '\\(', - push: - [ { token: 'meta.statement.parameters.prolog', - regex: '(?=\\))', - next: 'pop' }, - { token: 'punctuation.separator.statement.prolog', regex: ',' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.statement.parameters.prolog' } ] }, - { defaultToken: 'meta.statement.prolog' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.prolog', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.prolog', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.prolog', regex: '\\\\.' }, - { token: 'constant.character.escape.quote.prolog', - regex: '\'\'' }, - { defaultToken: 'string.quoted.single.prolog' } ] } ], - '#variable': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.other.prolog', - regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] }; - - this.normalizeRules(); -}; - -PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ], - foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)', - foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)', - keyEquivalent: '^~P', - name: 'Prolog', - scopeName: 'source.prolog' }; - - -oop.inherits(PrologHighlightRules, TextHighlightRules); - -exports.PrologHighlightRules = PrologHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PrologHighlightRules = require("./prolog_highlight_rules").PrologHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PrologHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/prolog"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/prolog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-properties.js b/src-noconflict/mode-properties.js deleted file mode 100644 index 984c8aa..0000000 --- a/src-noconflict/mode-properties.js +++ /dev/null @@ -1,80 +0,0 @@ -ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PropertiesHighlightRules = function() { - - var escapeRe = /\\u[0-9a-fA-F]{4}|\\/; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /[!#].*$/ - }, { - token : "keyword", - regex : /[=:]$/ - }, { - token : "keyword", - regex : /[=:]/, - next : "value" - }, { - token : "constant.language.escape", - regex : escapeRe - }, { - defaultToken: "variable" - } - ], - "value" : [ - { - regex : /\\$/, - token : "string", - next : "value" - }, { - regex : /$/, - token : "string", - next : "start" - }, { - token : "constant.language.escape", - regex : escapeRe - }, { - defaultToken: "string" - } - ] - }; - -}; - -oop.inherits(PropertiesHighlightRules, TextHighlightRules); - -exports.PropertiesHighlightRules = PropertiesHighlightRules; -}); - -ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PropertiesHighlightRules = require("./properties_highlight_rules").PropertiesHighlightRules; - -var Mode = function() { - this.HighlightRules = PropertiesHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/properties"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/properties"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-protobuf.js b/src-noconflict/mode-protobuf.js deleted file mode 100644 index 0b1a4f2..0000000 --- a/src-noconflict/mode-protobuf.js +++ /dev/null @@ -1,593 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + - "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; - var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "//$", - next : "start" - }, { - token : "comment", - regex : "//", - next : "singleLineComment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" - }, { - token : "string.start", - regex : '"', - stateName: "qqstring", - next: [ - { token: "string", regex: /\\\s*$/, next: "qqstring" }, - { token: "constant.language.escape", regex: escapeRe }, - { token: "constant.language.escape", regex: formatRe }, - { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "string.start", - regex : 'R"\\(', - stateName: "rawString", - next: [ - { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" - }, { - defaultToken: "comment" - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; - this.snippetFileId = "ace/snippets/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var ProtobufHighlightRules = function() { - - var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + - "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + - "string|bytes"; - var keywordDeclaration = "message|required|optional|repeated|package|" + - "import|option|enum"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.declaration.protobuf": keywordDeclaration, - "support.type": builtinTypes - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /\/\/.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "=", - token: "keyword.operator.assignment.protobuf" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }], - "comment": [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - }] - }; - - this.normalizeRules(); - }; - - oop.inherits(ProtobufHighlightRules, TextHighlightRules); - - exports.ProtobufHighlightRules = ProtobufHighlightRules; -}); - -ace.define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var ProtobufHighlightRules = require("./protobuf_highlight_rules").ProtobufHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - this.foldingRules = new CStyleFoldMode(); - this.HighlightRules = ProtobufHighlightRules; -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/protobuf"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/protobuf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-puppet.js b/src-noconflict/mode-puppet.js deleted file mode 100644 index ef1d690..0000000 --- a/src-noconflict/mode-puppet.js +++ /dev/null @@ -1,368 +0,0 @@ -ace.define("ace/mode/puppet_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var PuppetHighlightRules = function () { - this.$rules = { - "start": [ - { - token: ['keyword.type.puppet', 'constant.class.puppet', 'keyword.inherits.puppet', 'constant.class.puppet'], - regex: "^\\s*(class)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*)(?:(inherits\\s*)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*))?" - }, - { - token: ['storage.function.puppet', 'name.function.puppet', 'punctuation.lpar'], - regex: "(^\\s*define)(\\s+[a-zA-Z0-9_:]+\\s*)(\\()", - push: - [{ - token: 'punctuation.rpar.puppet', - regex: "\\)", - next: 'pop' - }, - {include: "constants"}, - {include: "variable"}, - {include: "strings"}, - {include: "operators"}, - {defaultToken: 'string'}] - }, - { - token: ["language.support.class", "keyword.operator"], - regex: "\\b([a-zA-Z_]+)(\\s+=>)" - }, - { - token: ["exported.resource.puppet", "keyword.name.resource.puppet", "paren.lparen"], - regex: "(\\@\\@)?(\\s*[a-zA-Z_]*)(\\s*\\{)" - }, - { - token: "qualified.variable.puppet", - regex: "(\\$([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*::[a-z0-9_][a-zA-Z0-9_]*)" - }, - - { - token: "singleline.comment.puppet", - regex: '#(.)*$' - }, - { - token: "multiline.comment.begin.puppet", - regex: '^\\s*\\/\\*', - push: "blockComment" - }, - { - token: "keyword.control.puppet", - regex: "\\b(case|if|unless|else|elsif|in|default:|and|or)\\s+(?!::)" - }, - { - token: "keyword.control.puppet", - regex: "\\b(import|default|inherits|include|require|contain|node|application|consumes|environment|site|function|produces)\\b" - }, - { - token: "support.function.puppet", - regex: "\\b(lest|str2bool|escape|gsub|Timestamp|Timespan|with|alert|crit|debug|notice|sprintf|split|step|strftime|slice|shellquote|type|sha1|defined|scanf|reverse_each|regsubst|return|emerg|reduce|err|failed|fail|versioncmp|file|generate|then|info|realize|search|tag|tagged|template|epp|warning|hiera_include|each|assert_type|binary_file|create_resources|dig|digest|filter|lookup|find_file|fqdn_rand|hiera_array|hiera_hash|inline_epp|inline_template|map|match|md5|new|next)\\b" - }, - { - token: "constant.types.puppet", - regex: "\\b(String|File|Package|Service|Class|Integer|Array|Catalogentry|Variant|Boolean|Undef|Number|Hash|Float|Numeric|NotUndef|Callable|Optional|Any|Regexp|Sensitive|Sensitive.new|Type|Resource|Default|Enum|Scalar|Collection|Data|Pattern|Tuple|Struct)\\b" - }, - - { - token: "paren.lparen", - regex: "[[({]" - }, - { - token: "paren.rparen", - regex: "[\\])}]" - }, - {include: "variable"}, - {include: "constants"}, - {include: "strings"}, - {include: "operators"}, - { - token: "regexp.begin.string.puppet", - regex: "\\s*(\\/(\\S)+)\\/" - } - ], - blockComment: [{ - regex: "\\*\\/", - token: "multiline.comment.end.puppet", - next: "pop" - }, { - defaultToken: "comment" - }], - "constants": [ - { - token: "constant.language.puppet", - regex: "\\b(false|true|running|stopped|installed|purged|latest|file|directory|held|undef|present|absent|link|mounted|unmounted)\\b" - } - ], - "variable": [ - { - token: "variable.puppet", - regex: "(\\$[a-z0-9_\{][a-zA-Z0-9_]*)" - } - ], - "strings": [ - { - token: "punctuation.quote.puppet", - regex: "'", - push: - [{ - token: 'punctuation.quote.puppet', - regex: "'", - next: 'pop' - }, - {include: "escaped_chars"}, - {defaultToken: 'string'}] - }, - { - token: "punctuation.quote.puppet", - regex: '"', - push: - [{ - token: 'punctuation.quote.puppet', - regex: '"', - next: 'pop' - }, - {include: "escaped_chars"}, - {include: "variable"}, - {defaultToken: 'string'}] - } - ], - "escaped_chars": [ - { - token: "constant.escaped_char.puppet", - regex: "\\\\." - } - ], - "operators": [ - { - token: "keyword.operator", - regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|::|," - } - ] - }; - this.normalizeRules(); -}; - - -oop.inherits(PuppetHighlightRules, TextHighlightRules); - -exports.PuppetHighlightRules = PuppetHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/puppet",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/puppet_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PuppetHighlightRules = require("./puppet_highlight_rules").PuppetHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function () { - TextMode.call(this); - this.HighlightRules = PuppetHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; - -oop.inherits(Mode, TextMode); - - -(function () { - this.lineCommentStart = "#"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/puppet"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/puppet"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-python.js b/src-noconflict/mode-python.js deleted file mode 100644 index 1681035..0000000 --- a/src-noconflict/mode-python.js +++ /dev/null @@ -1,508 +0,0 @@ -ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await|nonlocal" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + - "ascii|breakpoint|bytes" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "variable.language": "self|cls", - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "[uU]?"; - var strRawPre = "[rR]"; - var strFormatPre = "[fF]"; - var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token: "string", - regex: strRawPre + '"{3}', - next: "rawqqstring3" - }, { - token: "string", - regex: strRawPre + '"(?=.)', - next: "rawqqstring" - }, { - token: "string", - regex: strRawPre + "'{3}", - next: "rawqstring3" - }, { - token: "string", - regex: strRawPre + "'(?=.)", - next: "rawqstring" - }, { - token: "string", - regex: strFormatPre + '"{3}', - next: "fqqstring3" - }, { - token: "string", - regex: strFormatPre + '"(?=.)', - next: "fqqstring" - }, { - token: "string", - regex: strFormatPre + "'{3}", - next: "fqstring3" - }, { - token: "string", - regex: strFormatPre + "'(?=.)", - next: "fqstring" - },{ - token: "string", - regex: strRawFormatPre + '"{3}', - next: "rfqqstring3" - }, { - token: "string", - regex: strRawFormatPre + '"(?=.)', - next: "rfqqstring" - }, { - token: "string", - regex: strRawFormatPre + "'{3}", - next: "rfqstring3" - }, { - token: "string", - regex: strRawFormatPre + "'(?=.)", - next: "rfqstring" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token: "punctuation", - regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" - }, { - token: "paren.lparen", - regex: "[\\[\\(\\{]" - }, { - token: "paren.rparen", - regex: "[\\]\\)\\}]" - }, { - token: "text", - regex: "\\s+" - }, { - include: "constants" - }], - "qqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "qstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "qqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "qstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "fqqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "fqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring3": [{ - token: "string", // multi line """ string end - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring3": [{ - token: "string", // multi line ''' string end - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rfqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring": [{ - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstringParRules": [{//TODO: nested {} - token: "paren.lparen", - regex: "[\\[\\(]" - }, { - token: "paren.rparen", - regex: "[\\]\\)]" - }, { - token: "string", - regex: "\\s+" - }, { - token: "string", - regex: "'[^']*'" - }, { - token: "string", - regex: '"[^"]*"' - }, { - token: "function.support", - regex: "(!s|!r|!a)" - }, { - include: "constants" - },{ - token: 'paren.rparen', - regex: "}", - next: 'pop' - },{ - token: 'paren.lparen', - regex: "{", - push: "fqstringParRules" - }], - "constants": [{ - token: "constant.numeric", // imaginary - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token: "constant.numeric", // float - regex: floatNumber - }, { - token: "constant.numeric", // long integer - regex: integer + "[lL]\\b" - }, { - token: "constant.numeric", // integer - regex: integer + "\\b" - }, { - token: ["punctuation", "function.support"],// method - regex: "(\\.)([a-zA-Z_]+)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }] - }; - this.normalizeRules(); -}; - -oop.inherits(PythonHighlightRules, TextHighlightRules); - -exports.PythonHighlightRules = PythonHighlightRules; -}); - -ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = PythonHighlightRules; - this.foldingRules = new PythonFoldMode("\\:"); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/python"; - this.snippetFileId = "ace/snippets/python"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/python"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-qml.js b/src-noconflict/mode-qml.js deleted file mode 100644 index dca1398..0000000 --- a/src-noconflict/mode-qml.js +++ /dev/null @@ -1,381 +0,0 @@ -ace.define("ace/mode/qml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var QmlHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|" + - "readonly|string|int|bool|date|color|url|real|double|var|variant|" + - "height|width|anchors|parent|" + - "Abstract3DSeries|AbstractActionInput|AbstractAnimation|AbstractAxis|AbstractAxis3D|AbstractAxisInput|" + - "AbstractBarSeries|AbstractButton|AbstractClipAnimator|AbstractClipBlendNode|AbstractDataProxy|AbstractGraph3D|" + - "AbstractInputHandler3D|AbstractPhysicalDevice|AbstractRayCaster|AbstractSeries|AbstractSkeleton|AbstractTextureImage|" + - "Accelerometer|AccelerometerReading|Accessible|Action|ActionGroup|ActionInput|" + - "AdditiveClipBlend|Address|Affector|Age|AlphaCoverage|AlphaTest|" + - "Altimeter|AltimeterReading|AmbientLightReading|AmbientLightSensor|AmbientTemperatureReading|AmbientTemperatureSensor|" + - "AnalogAxisInput|AnchorAnimation|AnchorChanges|AngleDirection|AnimatedImage|AnimatedSprite|" + - "Animation|AnimationController|AnimationGroup|Animator|ApplicationWindow|ApplicationWindowStyle|" + - "AreaSeries|Armature|AttenuationModelInverse|AttenuationModelLinear|Attractor|Attribute|" + - "Audio|AudioCategory|AudioEngine|AudioListener|AudioSample|AuthenticationDialogRequest|" + - "Axis|AxisAccumulator|AxisSetting|BackspaceKey|Bar3DSeries|BarCategoryAxis|" + - "BarDataProxy|BarSeries|BarSet|Bars3D|BaseKey|Behavior|" + - "Binding|Blend|BlendEquation|BlendEquationArguments|BlendedClipAnimator|BlitFramebuffer|" + - "BluetoothDiscoveryModel|BluetoothService|BluetoothSocket|BorderImage|BorderImageMesh|BoxPlotSeries|" + - "BoxSet|BrightnessContrast|Buffer|BusyIndicator|BusyIndicatorStyle|Button|" + - "ButtonAxisInput|ButtonGroup|ButtonStyle|Calendar|CalendarStyle|Camera|" + - "Camera3D|CameraCapabilities|CameraCapture|CameraExposure|CameraFlash|CameraFocus|" + - "CameraImageProcessing|CameraLens|CameraRecorder|CameraSelector|CandlestickSeries|CandlestickSet|" + - "Canvas|Canvas3D|Canvas3DAbstractObject|Canvas3DActiveInfo|Canvas3DBuffer|Canvas3DContextAttributes|" + - "Canvas3DFrameBuffer|Canvas3DProgram|Canvas3DRenderBuffer|Canvas3DShader|Canvas3DShaderPrecisionFormat|Canvas3DTexture|" + - "Canvas3DTextureProvider|Canvas3DUniformLocation|CanvasGradient|CanvasImageData|CanvasPixelArray|Category|" + - "CategoryAxis|CategoryAxis3D|CategoryModel|CategoryRange|ChangeLanguageKey|ChartView|" + - "CheckBox|CheckBoxStyle|CheckDelegate|CircularGauge|CircularGaugeStyle|ClearBuffers|" + - "ClipAnimator|ClipPlane|CloseEvent|ColorAnimation|ColorDialog|ColorDialogRequest|" + - "ColorGradient|ColorGradientStop|ColorMask|ColorOverlay|Colorize|Column|" + - "ColumnLayout|ComboBox|ComboBoxStyle|Compass|CompassReading|Component|Component3D|" + - "ComputeCommand|ConeGeometry|ConeMesh|ConicalGradient|Connections|ContactDetail|" + - "ContactDetails|Container|Context2D|Context3D|ContextMenuRequest|Control|" + - "CoordinateAnimation|CuboidGeometry|CuboidMesh|CullFace|CumulativeDirection|" + - "Custom3DItem|Custom3DLabel|Custom3DVolume|CustomParticle|CylinderGeometry|CylinderMesh|" + - "Date|DateTimeAxis|DelayButton|DelayButtonStyle|DelegateChoice|DelegateChooser|DelegateModel|" + - "DelegateModelGroup|DepthTest|Desaturate|Dial|DialStyle|Dialog|DialogButtonBox|DiffuseMapMaterial|" + - "DiffuseSpecularMapMaterial|DiffuseSpecularMaterial|Direction|DirectionalBlur|DirectionalLight|DispatchCompute|" + - "Displace|DistanceReading|DistanceSensor|Dithering|DoubleValidator|Drag|DragEvent|DragHandler|Drawer|DropArea|" + - "DropShadow|DwmFeatures|DynamicParameter|EditorialModel|Effect|EllipseShape|Emitter|EnterKey|EnterKeyAction|" + - "Entity|EntityLoader|EnvironmentLight|EventConnection|EventPoint|EventTouchPoint|ExclusiveGroup|ExtendedAttributes|" + - "ExtrudedTextGeometry|ExtrudedTextMesh|FastBlur|FileDialog|FileDialogRequest|FillerKey|FilterKey|FinalState|" + - "FirstPersonCameraController|Flickable|Flipable|Flow|FocusScope|FolderListModel|FontDialog|FontLoader|" + - "FontMetrics|FormValidationMessageRequest|ForwardRenderer|Frame|FrameAction|FrameGraphNode|Friction|" + - "FrontFace|FrustumCulling|FullScreenRequest|GLStateDumpExt|GammaAdjust|Gauge|GaugeStyle|GaussianBlur|" + - "GeocodeModel|Geometry|GeometryRenderer|GestureEvent|Glow|GoochMaterial|Gradient|GradientStop|GraphicsApiFilter|" + - "GraphicsInfo|Gravity|Grid|GridLayout|GridMesh|GridView|GroupBox|GroupGoal|Gyroscope|GyroscopeReading|HBarModelMapper|" + - "HBoxPlotModelMapper|HCandlestickModelMapper|HPieModelMapper|HXYModelMapper|HandlerPoint|HandwritingInputPanel|" + - "HandwritingModeKey|HeightMapSurfaceDataProxy|HideKeyboardKey|HistoryState|HolsterReading|HolsterSensor|HorizontalBarSeries|" + - "|HorizontalPercentBarSeries|HorizontalStackedBarSeries|HoverHandler|HueSaturation|HumidityReading|HumiditySensor|" + - "IRProximityReading|IRProximitySensor|Icon|Image|ImageModel|ImageParticle|InnerShadow|InputChord|InputContext|InputEngine|" + - "InputHandler3D|InputMethod|InputModeKey|InputPanel|InputSequence|InputSettings|Instantiator|IntValidator|InvokedServices|" + - "Item|ItemDelegate|ItemGrabResult|ItemModelBarDataProxy|ItemModelScatterDataProxy|ItemModelSurfaceDataProxy|ItemParticle|" + - "ItemSelectionModel|IviApplication|IviSurface|JavaScriptDialogRequest|Joint|JumpList|JumpListCategory|JumpListDestination|" + - "JumpListLink|JumpListSeparator|Key|KeyEvent|KeyIcon|KeyNavigation|KeyPanel|KeyboardColumn|KeyboardDevice|KeyboardHandler|" + - "KeyboardLayout|KeyboardLayoutLoader|KeyboardRow|KeyboardStyle|KeyframeAnimation|Keys|Label|Layer|LayerFilter|Layout|" + - "LayoutMirroring|Legend|LerpBlend|LevelAdjust|LevelOfDetail|LevelOfDetailBoundingSphere|LevelOfDetailLoader|" + - "LevelOfDetailSwitch|LidReading|LidSensor|Light|Light3D|LightReading|LightSensor|LineSeries|LineShape|LineWidth|" + - "LinearGradient|ListElement|ListModel|ListView|Loader|Locale|Location|LogValueAxis|LogValueAxis3DFormatter|LoggingCategory|" + - "LogicalDevice|Magnetometer|MagnetometerReading|Map|MapCircle|MapCircleObject|MapCopyrightNotice|MapGestureArea|MapIconObject|" + - "MapItemGroup|MapItemView|MapObjectView|MapParameter|MapPinchEvent|MapPolygon|MapPolygonObject|MapPolyline|MapPolylineObject|" + - "MapQuickItem|MapRectangle|MapRoute|MapRouteObject|MapType|Margins|MaskShape|MaskedBlur|Material|Matrix4x4|MediaPlayer|" + - "MemoryBarrier|Menu|MenuBar|MenuBarItem|MenuBarStyle|MenuItem|MenuSeparator|MenuStyle|Mesh|MessageDialog|ModeKey|MorphTarget|" + - "MorphingAnimation|MouseArea|MouseDevice|MouseEvent|MouseHandler|MultiPointHandler|MultiPointTouchArea|MultiSampleAntiAliasing|" + - "Navigator|NdefFilter|NdefMimeRecord|NdefRecord|NdefTextRecord|NdefUriRecord|NearField|NoDepthMask|NoDraw|Node|NodeInstantiator|" + - "NormalDiffuseMapAlphaMaterial|NormalDiffuseMapMaterial|NormalDiffuseSpecularMapMaterial|Number|NumberAnimation|NumberKey|Object3D|" + - "ObjectModel|ObjectPicker|OpacityAnimator|OpacityMask|OpenGLInfo|OrbitCameraController|OrientationReading|OrientationSensor|Overlay|" + - "Package|Page|PageIndicator|Pane|ParallelAnimation|Parameter|ParentAnimation|ParentChange|Particle|ParticleGroup|ParticlePainter|" + - "ParticleSystem|Path|PathAngleArc|PathAnimation|PathArc|PathAttribute|PathCubic|PathCurve|PathElement|PathInterpolator|PathLine|" + - "PathMove|PathPercent|PathQuad|PathSvg|PathView|PauseAnimation|PerVertexColorMaterial|PercentBarSeries|PhongAlphaMaterial|" + - "PhongMaterial|PickEvent|PickLineEvent|PickPointEvent|PickTriangleEvent|PickingSettings|Picture|PieMenu|PieMenuStyle|PieSeries|" + - "PieSlice|PinchArea|PinchEvent|PinchHandler|Place|PlaceAttribute|PlaceSearchModel|PlaceSearchSuggestionModel|PlaneGeometry|" + - "PlaneMesh|PlayVariation|Playlist|PlaylistItem|Plugin|PluginParameter|PointDirection|PointHandler|PointLight|PointSize|" + - "PointerDevice|PointerDeviceHandler|PointerEvent|PointerHandler|PolarChartView|PolygonOffset|Popup|Position|PositionSource|" + - "Positioner|PressureReading|PressureSensor|Product|ProgressBar|ProgressBarStyle|PropertyAction|PropertyAnimation|PropertyChanges|" + - "ProximityFilter|ProximityReading|ProximitySensor|QAbstractState|QAbstractTransition|QSignalTransition|" + - "QVirtualKeyboardSelectionListModel|Qt|QtMultimedia|QtObject|QtPositioning|QuaternionAnimation|QuotaRequest|RadialBlur|" + - "RadialGradient|Radio|RadioButton|RadioButtonStyle|RadioData|RadioDelegate|RangeSlider|Ratings|RayCaster|Rectangle|" + - "RectangleShape|RectangularGlow|RecursiveBlur|RegExpValidator|RegisterProtocolHandlerRequest|RenderCapture|" + - "RenderCaptureReply|RenderPass|RenderPassFilter|RenderSettings|RenderState|RenderStateSet|RenderSurfaceSelector|" + - "RenderTarget|RenderTargetOutput|RenderTargetSelector|Repeater|ReviewModel|Rotation|RotationAnimation|RotationAnimator|" + - "RotationReading|RotationSensor|RoundButton|Route|RouteLeg|RouteManeuver|RouteModel|RouteQuery|RouteSegment|Row|" + - "RowLayout|Scale|ScaleAnimator|Scatter3D|Scatter3DSeries|ScatterDataProxy|ScatterSeries|Scene2D|Scene3D|SceneLoader|" + - "ScissorTest|Screen|ScreenRayCaster|ScriptAction|ScrollBar|ScrollIndicator|ScrollView|ScrollViewStyle|ScxmlStateMachine|" + - "SeamlessCubemap|SelectionListItem|Sensor|SensorGesture|SensorGlobal|SensorReading|SequentialAnimation|Settings|" + - "SettingsStore|ShaderEffect|ShaderEffectSource|ShaderProgram|ShaderProgramBuilder|Shape|ShellSurface|ShellSurfaceItem|" + - "ShiftHandler|ShiftKey|Shortcut|SignalSpy|SignalTransition|SinglePointHandler|Skeleton|SkeletonLoader|Slider|SliderStyle|" + - "SmoothedAnimation|SortPolicy|Sound|SoundEffect|SoundInstance|SpaceKey|SphereGeometry|SphereMesh|SpinBox|SpinBoxStyle|" + - "SplineSeries|SplitView|SpotLight|SpringAnimation|Sprite|SpriteGoal|SpriteSequence|Stack|StackLayout|StackView|" + - "StackViewDelegate|StackedBarSeries|State|StateChangeScript|StateGroup|StateMachine|StateMachineLoader|StatusBar|" + - "StatusBarStyle|StatusIndicator|StatusIndicatorStyle|StencilMask|StencilOperation|StencilOperationArguments|StencilTest|" + - "StencilTestArguments|Store|String|Supplier|Surface3D|Surface3DSeries|SurfaceDataProxy|SwipeDelegate|SwipeView|Switch|" + - "SwitchDelegate|SwitchStyle|SymbolModeKey|SystemPalette|Tab|TabBar|TabButton|TabView|TabViewStyle|TableView|TableViewColumn|" + - "TableViewStyle|TapHandler|TapReading|TapSensor|TargetDirection|TaskbarButton|Technique|TechniqueFilter|TestCase|Text|TextArea|" + - "TextAreaStyle|TextEdit|TextField|TextFieldStyle|TextInput|TextMetrics|TextureImage|TextureImageFactory|Theme3D|ThemeColor|" + - "ThresholdMask|ThumbnailToolBar|ThumbnailToolButton|TiltReading|TiltSensor|TimeoutTransition|Timer|ToggleButton|" + - "ToggleButtonStyle|ToolBar|ToolBarStyle|ToolButton|ToolSeparator|ToolTip|Torch|TorusGeometry|TorusMesh|TouchEventSequence|" + - "TouchInputHandler3D|TouchPoint|Trace|TraceCanvas|TraceInputArea|TraceInputKey|TraceInputKeyPanel|TrailEmitter|Transaction|" + - "Transform|Transition|Translate|TreeView|TreeViewStyle|Tumbler|TumblerColumn|TumblerStyle|Turbulence|UniformAnimator|User|" + - "VBarModelMapper|VBoxPlotModelMapper|VCandlestickModelMapper|VPieModelMapper|VXYModelMapper|ValueAxis|ValueAxis3D|" + - "ValueAxis3DFormatter|Vector3dAnimation|VertexBlendAnimation|Video|VideoOutput|ViewTransition|Viewport|" + - "VirtualKeyboardSettings|Wander|WavefrontMesh|WaylandClient|WaylandCompositor|WaylandHardwareLayer|" + - "WaylandOutput|WaylandQuickItem|WaylandSeat|WaylandSurface|WaylandView|Waypoint|" + - "WebChannel|WebEngine|WebEngineAction|WebEngineCertificateError|WebEngineDownloadItem|WebEngineHistory|" + - "WebEngineHistoryListModel|WebEngineLoadRequest|WebEngineNavigationRequest|WebEngineNewViewRequest|WebEngineProfile|WebEngineScript|" + - "WebEngineSettings|WebEngineView|WebSocket|WebSocketServer|WebView|WebViewLoadRequest|" + - "WheelEvent|Window|WlShell|WlShellSurface|WorkerScript|XAnimator|" + - "XYPoint|XYSeries|XdgDecorationManagerV1|XdgPopup|XdgPopupV5|XdgPopupV6|" + - "XdgShell|XdgShellV5|XdgShellV6|XdgSurface|XdgSurfaceV5|XdgSurfaceV6|" + - "XdgToplevel|XdgToplevelV6|XmlListModel|XmlRole|YAnimator|ZoomBlur", - "storage.type": - "const|let|var|function|" + // js - "property|", // qml - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "print|console\\.log", - "constant.language.boolean": "true|false" - }, "identifier"); - this.$rules = { - "start" : [ - { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "text", - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "comment", - regex : "\\/\\/.*$" - }, { - token : "comment.start", - regex : "\\/\\*", - next : "comment" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - token : keywordMapper, - regex : "\\b\\w+\\b" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken : "string" - } - ], - "comment" : [ - { - token : "comment.end", - regex : "\\*\\/", - next : "start" - }, { - defaultToken: "comment" - } - ] - }; - - }; - - oop.inherits(QmlHighlightRules, TextHighlightRules); - - exports.QmlHighlightRules = QmlHighlightRules; - }); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/qml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/qml_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var QmlHighlightRules = require("./qml_highlight_rules").QmlHighlightRules; - var FoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function() { - this.HighlightRules = QmlHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = { '"': '"', "'": "'" }; - this.$id = "ace/mode/qml"; - }).call(Mode.prototype); - - exports.Mode = Mode; - }); (function() { - ace.require(["ace/mode/qml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-r.js b/src-noconflict/mode-r.js deleted file mode 100644 index 8ef5db7..0000000 --- a/src-noconflict/mode-r.js +++ /dev/null @@ -1,312 +0,0 @@ -ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); - -ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module) -{ - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" - }, - { - token : "comment", - regex : "#+'", - next : "rd-start" - }, - { - token : "comment", - regex : "#.*$" - }, - { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" - }, - { - token : "string", // multi line string start - regex : "[']", - next : "qstring" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" - }, - { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" - }, - { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" - }, - { - token : "identifier", - regex : "`.*?`" - }, - { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" - }, - { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" - }, - { - token : "keyword.operator", // infix operators - regex : "%.*?%" - }, - { - token : "paren.keyword.operator", - regex : "[[({]" - }, - { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, - { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, - { - token : "string", - regex : '.+' - } - ] - }; - - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/r",["require","exports","module","ace/unicode","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { - "use strict"; - - var unicode = require("../unicode"); - var Range = require("../range").Range; - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var RHighlightRules = require("./r_highlight_rules").RHighlightRules; - var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - - var Mode = function(){ - this.HighlightRules = RHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() { - this.lineCommentStart = "#"; - this.tokenRe = new RegExp("^[" + unicode.wordChars + "._]+", "g"); - - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "._]|\s])+", "g"); - this.$id = "ace/mode/r"; - this.snippetFileId = "ace/snippets/r"; - }).call(Mode.prototype); - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/r"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-raku.js b/src-noconflict/mode-raku.js deleted file mode 100644 index f96bcb3..0000000 --- a/src-noconflict/mode-raku.js +++ /dev/null @@ -1,593 +0,0 @@ -ace.define("ace/mode/raku_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RakuHighlightRules = function() { - - var keywords = ( - "my|our|class|role|grammar|is|does|sub|method|submethod|try|" + - "default|when|if|elsif|else|unless|with|orwith|without|for|given|proceed|" + - "succeed|loop|while|until|repeat|module|use|need|import|require|unit|" + - "constant|enum|multi|return|has|token|rule|make|made|proto|state|augment|" + - "but|anon|supersede|let|subset|gather|returns|return-rw|temp|" + - "BEGIN|CHECK|INIT|END|CLOSE|ENTER|LEAVE|KEEP|UNDO|PRE|POST|FIRST|NEXT|LAST|CATCH|CONTROL|QUIT|DOC" - ); - - var types = ( - "Any|Array|Associative|AST|atomicint|Attribute|Backtrace|Backtrace::Frame|" + - "Bag|Baggy|BagHash|Blob|Block|Bool|Buf|Callable|CallFrame|Cancellation|" + - "Capture|Channel|Code|compiler|Complex|ComplexStr|Cool|CurrentThreadScheduler|" + - "Cursor|Date|Dateish|DateTime|Distro|Duration|Encoding|Exception|Failure|"+ - "FatRat|Grammar|Hash|HyperWhatever|Instant|Int|IntStr|IO|IO::ArgFiles|"+ - "IO::CatHandle|IO::Handle|IO::Notification|IO::Path|IO::Path::Cygwin|"+ - "IO::Path::QNX|IO::Path::Unix|IO::Path::Win32|IO::Pipe|IO::Socket|"+ - "IO::Socket::Async|IO::Socket::INET|IO::Spec|IO::Spec::Cygwin|IO::Spec::QNX|"+ - "IO::Spec::Unix|IO::Spec::Win32|IO::Special|Iterable|Iterator|Junction|Kernel|"+ - "Label|List|Lock|Lock::Async|Macro|Map|Match|Metamodel::AttributeContainer|"+ - "Metamodel::C3MRO|Metamodel::ClassHOW|Metamodel::EnumHOW|Metamodel::Finalization|"+ - "Metamodel::MethodContainer|Metamodel::MROBasedMethodDispatch|Metamodel::MultipleInheritance|"+ - "Metamodel::Naming|Metamodel::Primitives|Metamodel::PrivateMethodContainer|"+ - "Metamodel::RoleContainer|Metamodel::Trusting|Method|Mix|MixHash|Mixy|Mu|"+ - "NFC|NFD|NFKC|NFKD|Nil|Num|Numeric|NumStr|ObjAt|Order|Pair|Parameter|Perl|"+ - "Pod::Block|Pod::Block::Code|Pod::Block::Comment|Pod::Block::Declarator|"+ - "Pod::Block::Named|Pod::Block::Para|Pod::Block::Table|Pod::Heading|Pod::Item|"+ - "Positional|PositionalBindFailover|Proc|Proc::Async|Promise|Proxy|PseudoStash|"+ - "Raku|QuantHash|Range|Rat|Rational|RatStr|Real|Regex|Routine|Scalar|Scheduler|"+ - "Semaphore|Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|StrDistance|Stringy|"+ - "Sub|Submethod|Supplier|Supplier::Preserving|Supply|Systemic|Tap|Telemetry|"+ - "Telemetry::Instrument::Thread|Telemetry::Instrument::Usage|Telemetry::Period|"+ - "Telemetry::Sampler|Thread|ThreadPoolScheduler|UInt|Uni|utf8|Variable|Version|"+ - "VM|Whatever|WhateverCode|WrapHandle|int|uint|num|str|"+ - "int8|int16|int32|int64|uint8|uint16|uint32|uint64|long|longlong|num32|num64|size_t|bool|CArray|Pointer|"+ - "Backtrace|Backtrace::Frame|Exception|Failure|X::AdHoc|X::Anon::Augment|X::Anon::Multi|"+ - "X::Assignment::RO|X::Attribute::NoPackage|X::Attribute::Package|X::Attribute::Undeclared|"+ - "X::Augment::NoSuchType|X::Bind|X::Bind::NativeType|X::Bind::Slice|X::Caller::NotDynamic|"+ - "X::Channel::ReceiveOnClosed|X::Channel::SendOnClosed|X::Comp|X::Composition::NotComposable|"+ - "X::Constructor::Positional|X::ControlFlow|X::ControlFlow::Return|X::DateTime::TimezoneClash|"+ - "X::Declaration::Scope|X::Declaration::Scope::Multi|X::Does::TypeObject|X::Eval::NoSuchLang|"+ - "X::Export::NameClash|X::IO|X::IO::Chdir|X::IO::Chmod|X::IO::Copy|X::IO::Cwd|X::IO::Dir|"+ - "X::IO::DoesNotExist|X::IO::Link|X::IO::Mkdir|X::IO::Move|X::IO::Rename|X::IO::Rmdir|X::IO::Symlink|"+ - "X::IO::Unlink|X::Inheritance::NotComposed|X::Inheritance::Unsupported|X::Method::InvalidQualifier|"+ - "X::Method::NotFound|X::Method::Private::Permission|X::Method::Private::Unqualified|"+ - "X::Mixin::NotComposable|X::NYI|X::NoDispatcher|X::Numeric::Real|X::OS|X::Obsolete|X::OutOfRange|"+ - "X::Package::Stubbed|X::Parameter::Default|X::Parameter::MultipleTypeConstraints|"+ - "X::Parameter::Placeholder|X::Parameter::Twigil|X::Parameter::WrongOrder|X::Phaser::Multiple|"+ - "X::Phaser::PrePost|X::Placeholder::Block|X::Placeholder::Mainline|X::Pod|X::Proc::Async|"+ - "X::Proc::Async::AlreadyStarted|X::Proc::Async::CharsOrBytes|X::Proc::Async::MustBeStarted|"+ - "X::Proc::Async::OpenForWriting|X::Proc::Async::TapBeforeSpawn|X::Proc::Unsuccessful|"+ - "X::Promise::CauseOnlyValidOnBroken|X::Promise::Vowed|X::Redeclaration|X::Role::Initialization|"+ - "X::Seq::Consumed|X::Sequence::Deduction|X::Signature::NameClash|X::Signature::Placeholder|"+ - "X::Str::Numeric|X::StubCode|X::Syntax|X::Syntax::Augment::WithoutMonkeyTyping|"+ - "X::Syntax::Comment::Embedded|X::Syntax::Confused|X::Syntax::InfixInTermPosition|"+ - "X::Syntax::Malformed|X::Syntax::Missing|X::Syntax::NegatedPair|X::Syntax::NoSelf|"+ - "X::Syntax::Number::RadixOutOfRange|X::Syntax::P5|X::Syntax::Regex::Adverb|"+ - "X::Syntax::Regex::SolitaryQuantifier|X::Syntax::Reserved|X::Syntax::Self::WithoutObject|"+ - "X::Syntax::Signature::InvocantMarker|X::Syntax::Term::MissingInitializer|X::Syntax::UnlessElse|"+ - "X::Syntax::Variable::Match|X::Syntax::Variable::Numeric|X::Syntax::Variable::Twigil|X::Temporal|"+ - "X::Temporal::InvalidFormat|X::TypeCheck|X::TypeCheck::Assignment|X::TypeCheck::Binding|"+ - "X::TypeCheck::Return|X::TypeCheck::Splice|X::Undeclared" - ); - - var builtinFunctions = ( - "abs|abs2rel|absolute|accept|ACCEPTS|accessed|acos|acosec|acosech|acosh|"+ - "acotan|acotanh|acquire|act|action|actions|add|add_attribute|add_enum_value|"+ - "add_fallback|add_method|add_parent|add_private_method|add_role|add_trustee|"+ - "adverb|after|all|allocate|allof|allowed|alternative-names|annotations|antipair|"+ - "antipairs|any|anyof|app_lifetime|append|arch|archname|args|arity|asec|asech|"+ - "asin|asinh|ASSIGN-KEY|ASSIGN-POS|assuming|ast|at|atan|atan2|atanh|AT-KEY|"+ - "atomic-assign|atomic-dec-fetch|atomic-fetch|atomic-fetch-add|atomic-fetch-dec|"+ - "atomic-fetch-inc|atomic-fetch-sub|atomic-inc-fetch|AT-POS|attributes|auth|await|"+ - "backtrace|Bag|BagHash|base|basename|base-repeating|batch|BIND-KEY|BIND-POS|"+ - "bind-stderr|bind-stdin|bind-stdout|bind-udp|bits|bless|block|bool-only|"+ - "bounds|break|Bridge|broken|BUILD|build-date|bytes|cache|callframe|calling-package|"+ - "CALL-ME|callsame|callwith|can|cancel|candidates|cando|canonpath|caps|caption|"+ - "Capture|cas|catdir|categorize|categorize-list|catfile|catpath|cause|ceiling|"+ - "cglobal|changed|Channel|chars|chdir|child|child-name|child-typename|chmod|chomp|"+ - "chop|chr|chrs|chunks|cis|classify|classify-list|cleanup|clone|close|closed|"+ - "close-stdin|code|codes|collate|column|comb|combinations|command|comment|"+ - "compiler|Complex|compose|compose_type|composer|condition|config|configure_destroy|"+ - "configure_type_checking|conj|connect|constraints|construct|contains|contents|copy|"+ - "cos|cosec|cosech|cosh|cotan|cotanh|count|count-only|cpu-cores|cpu-usage|CREATE|"+ - "create_type|cross|cue|curdir|curupdir|d|Date|DateTime|day|daycount|day-of-month|"+ - "day-of-week|day-of-year|days-in-month|declaration|decode|decoder|deepmap|"+ - "defined|DEFINITE|delayed|DELETE-KEY|DELETE-POS|denominator|desc|DESTROY|destroyers|"+ - "devnull|did-you-mean|die|dir|dirname|dir-sep|DISTROnames|do|done|duckmap|dynamic|"+ - "e|eager|earlier|elems|emit|enclosing|encode|encoder|encoding|end|ends-with|enum_from_value|"+ - "enum_value_list|enum_values|enums|eof|EVAL|EVALFILE|exception|excludes-max|excludes-min|"+ - "EXISTS-KEY|EXISTS-POS|exit|exitcode|exp|expected|explicitly-manage|expmod|extension|f|"+ - "fail|fc|feature|file|filename|find_method|find_method_qualified|finish|first|flat|flatmap|"+ - "flip|floor|flush|fmt|format|formatter|freeze|from|from-list|from-loop|from-posix|full|"+ - "full-barrier|get|get_value|getc|gist|got|grab|grabpairs|grep|handle|handled|handles|"+ - "hardware|has_accessor|head|headers|hh-mm-ss|hidden|hides|hour|how|hyper|id|illegal|"+ - "im|in|indent|index|indices|indir|infinite|infix|install_method_cache|"+ - "Instant|instead|int-bounds|interval|in-timezone|invalid-str|invert|invocant|IO|"+ - "IO::Notification.watch-path|is_trusted|is_type|isa|is-absolute|is-hidden|is-initial-thread|"+ - "is-int|is-lazy|is-leap-year|isNaN|is-prime|is-relative|is-routine|is-setting|is-win|item|"+ - "iterator|join|keep|kept|KERNELnames|key|keyof|keys|kill|kv|kxxv|l|lang|last|lastcall|later|"+ - "lazy|lc|leading|level|line|lines|link|listen|live|local|lock|log|log10|lookup|lsb|"+ - "MAIN|match|max|maxpairs|merge|message|method_table|methods|migrate|min|minmax|"+ - "minpairs|minute|misplaced|Mix|MixHash|mkdir|mode|modified|month|move|mro|msb|multiness|"+ - "name|named|named_names|narrow|nativecast|native-descriptor|nativesizeof|new|new_type|"+ - "new-from-daycount|new-from-pairs|next|nextcallee|next-handle|nextsame|nextwith|NFC|NFD|"+ - "NFKC|NFKD|nl-in|nl-out|nodemap|none|norm|not|note|now|nude|numerator|Numeric|of|"+ - "offset|offset-in-hours|offset-in-minutes|old|on-close|one|on-switch|open|opened|"+ - "operation|optional|ord|ords|orig|os-error|osname|out-buffer|pack|package|package-kind|"+ - "package-name|packages|pair|pairs|pairup|parameter|params|parent|parent-name|parents|parse|"+ - "parse-base|parsefile|parse-names|parts|path|path-sep|payload|peer-host|peer-port|periods|"+ - "perl|permutations|phaser|pick|pickpairs|pid|placeholder|plus|polar|poll|polymod|pop|pos|"+ - "positional|posix|postfix|postmatch|precomp-ext|precomp-target|pred|prefix|prematch|prepend|"+ - "print|printf|print-nl|print-to|private|private_method_table|proc|produce|Promise|prompt|"+ - "protect|pull-one|push|push-all|push-at-least|push-exactly|push-until-lazy|put|"+ - "qualifier-type|quit|r|race|radix|raku|rand|range|raw|re|read|readchars|readonly|"+ - "ready|Real|reallocate|reals|reason|rebless|receive|recv|redispatcher|redo|reduce|"+ - "rel2abs|relative|release|rename|repeated|replacement|report|reserved|resolve|"+ - "restore|result|resume|rethrow|reverse|right|rindex|rmdir|roles_to_compose|"+ - "rolish|roll|rootdir|roots|rotate|rotor|round|roundrobin|routine-type|run|rwx|s|"+ - "samecase|samemark|samewith|say|schedule-on|scheduler|scope|sec|sech|second|seek|"+ - "self|send|Set|set_hidden|set_name|set_package|set_rw|set_value|SetHash|"+ - "set-instruments|setup_finalization|shape|share|shell|shift|sibling|sigil|"+ - "sign|signal|signals|signature|sin|sinh|sink|sink-all|skip|skip-at-least|"+ - "skip-at-least-pull-one|skip-one|sleep|sleep-timer|sleep-until|Slip|slurp|"+ - "slurp-rest|slurpy|snap|snapper|so|socket-host|socket-port|sort|source|"+ - "source-package|spawn|SPEC|splice|split|splitdir|splitpath|sprintf|spurt|"+ - "sqrt|squish|srand|stable|start|started|starts-with|status|stderr|stdout|"+ - "sub_signature|subbuf|subbuf-rw|subname|subparse|subst|subst-mutate|"+ - "substr|substr-eq|substr-rw|succ|sum|Supply|symlink|t|tail|take|take-rw|"+ - "tan|tanh|tap|target|target-name|tc|tclc|tell|then|throttle|throw|timezone|"+ - "tmpdir|to|today|toggle|to-posix|total|trailing|trans|tree|trim|trim-leading|"+ - "trim-trailing|truncate|truncated-to|trusts|try_acquire|trying|twigil|type|"+ - "type_captures|typename|uc|udp|uncaught_handler|unimatch|uniname|uninames|"+ - "uniparse|uniprop|uniprops|unique|unival|univals|unlink|unlock|unpack|unpolar|"+ - "unshift|unwrap|updir|USAGE|utc|val|value|values|VAR|variable|verbose-config|"+ - "version|VMnames|volume|vow|w|wait|warn|watch|watch-path|week|weekday-of-month|"+ - "week-number|week-year|WHAT|WHERE|WHEREFORE|WHICH|WHO|whole-second|WHY|"+ - "wordcase|words|workaround|wrap|write|write-to|yada|year|yield|yyyy-mm-dd|"+ - "z|zip|zip-latest|"+ - "plan|done-testing|bail-out|todo|skip|skip-rest|diag|subtest|pass|flunk|ok|"+ - "nok|cmp-ok|is-deeply|isnt|is-approx|like|unlike|use-ok|isa-ok|does-ok|"+ - "can-ok|dies-ok|lives-ok|eval-dies-ok|eval-lives-ok|throws-like|fails-like|"+ - "rw|required|native|repr|export|symbol" - ); - var constants_ascii = ("pi|Inf|tau|time"); - - var ops_txt = ("eq|ne|gt|lt|le|ge|div|gcd|lcm|leg|cmp|ff|fff|"+ - "x|before|after|Z|X|and|or|andthen|notandthen|orelse|xor" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "storage.type" : types, - "constant.language": constants_ascii, - "support.function": builtinFunctions, - "keyword.operator": ops_txt - }, "identifier"); - - var moduleName = "[a-zA-Z_][a-zA-Z_0-9:-]*\\b"; - var hex = { token : "constant.numeric", regex : "0x[0-9a-fA-F]+\\b" }; - var num_rat = { token : "constant.numeric", regex : "[+-.]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }; - var num_with_ = { token : "constant.numeric", regex : "(?:\\d+_?\\d+)+\\b" }; - var complex_numbers = { token : "constant.numeric", regex : "\\+?\\d+i\\b" }; - var booleans = { token : "constant.language.boolean", regex : "(?:True|False)\\b" }; - var versions = { token : "constant.other", regex : "v[0-9](?:\\.[a-zA-Z0-9*])*\\b" }; - var lang_keywords = { token : keywordMapper, regex : "[a-zA-Z][\\:a-zA-Z0-9_-]*\\b" }; - var variables = { token : "variable.language", regex : "[$@%&][?*!.]?[a-zA-Z0-9_-]+\\b" }; - var vars_special = { token: "variable.language", regex : "\\$[/|!]?|@\\$/" }; - var ops_char = { token : "keyword.operator", regex : "=|<|>|\\+|\\*|-|/|~|%|\\?|!|\\^|\\.|\\:|\\,|"+ - "»|«|\\||\\&|âš›|∘" }; - var constants_unicode = { token : "constant.language", regex : "ð‘’|Ï€|Ï„|∞" }; - var qstrings = { token : "string.quoted.single", regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; - var word_quoting = { token : "string.quoted.single", regex : "[<](?:[a-zA-Z0-9 ])*[>]"}; - var regexp = { - token : "string.regexp", - regex : "[m|rx]?[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }; - - - this.$rules = { - "start" : [ - { - token : "comment.block", // Embedded Comments - Parentheses - regex : "#[`|=]\\(.*\\)" - }, { - token : "comment.block", // Embedded Comments - Brackets - regex : "#[`|=]\\[.*\\]" - }, { - token : "comment.doc", // Multiline Comments - regex : "^=(?:begin)\\b", - next : "block_comment" - }, { - token : "string.unquoted", // q Heredocs - regex : "q[x|w]?\\:to/END/;", - next : "qheredoc" - }, { - token : "string.unquoted", // qq Heredocs - regex : "qq[x|w]?\\:to/END/;", - next : "qqheredoc" - }, - regexp, - qstrings - , { - token : "string.quoted.double", // Double Quoted String - regex : '"', - next : "qqstring" - }, - word_quoting - , { - token: ["keyword", "text", "variable.module"], // use - Module Names, Pragmas, etc. - regex: "(use)(\\s+)((?:"+moduleName+"\\.?)*)" - }, - hex, - num_rat, - num_with_, - complex_numbers, - booleans, - versions, - lang_keywords, - variables, - vars_special, - ops_char, - constants_unicode - , { - token : "comment", // Sigle Line Comments - regex : "#.*$" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : '\\\\(?:[nrtef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' - }, - variables, - vars_special - , { - token : "lparen", - regex : "{", - next : "qqinterpolation" - }, { - token : "string.quoted.double", - regex : '"', - next : "start" - }, { - defaultToken : "string.quoted.double" - } - ], - "qqinterpolation" : [ - hex, - num_rat, - num_with_, - complex_numbers, - booleans, - versions, - lang_keywords, - variables, - vars_special, - ops_char, - constants_unicode, - qstrings, - regexp, - - { - token: "rparen", - regex: "}", - next : "qqstring" - } - ], - "block_comment": [ - { - token: "comment.doc", - regex: "^=end +[a-zA-Z_0-9]*", - next: "start" - }, - { - defaultToken: "comment.doc" - } - ], - "qheredoc": [ - { - token: "string.unquoted", - regex: "END$", - next: "start" - }, { - defaultToken: "string.unquoted" - } - ], - "qqheredoc": [ - variables, - vars_special, - { - token : "lparen", - regex : "{", - next : "qqheredocinterpolation" - }, { - token: "string.unquoted", - regex: "END$", - next: "start" - }, { - defaultToken: "string.unquoted" - } - ], - "qqheredocinterpolation" : [ - hex, - num_rat, - num_with_, - complex_numbers, - booleans, - versions, - lang_keywords, - variables, - vars_special, - ops_char, - constants_unicode, - qstrings, - regexp, - { - token: "rparen", - regex: "}", - next : "qqheredoc" - } - ] - }; -}; - -oop.inherits(RakuHighlightRules, TextHighlightRules); - -exports.RakuHighlightRules = RakuHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/raku",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/raku_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RakuHighlightRules = require("./raku_highlight_rules").RakuHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = RakuHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode({start: "^=(begin)\\b", end: "^=(end)\\b"}); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.blockComment = [ - {start: "=begin", end: "=end", lineStartOnly: true}, - {start: "=item", end: "=end", lineStartOnly: true} - ]; - - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/raku"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/raku"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-razor.js b/src-noconflict/mode-razor.js deleted file mode 100644 index 6530bf5..0000000 --- a/src-noconflict/mode-razor.js +++ /dev/null @@ -1,2875 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CSharpHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": "abstract|async|await|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic", - "constant.language": "null|true|false" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ - }, { - token : "string", start : '"', end : '"|$', next: [ - {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, - {token: "invalid", regex: /\\./} - ] - }, { - token : "string", start : '@"', end : '"', next:[ - {token: "constant.language.escape", regex: '""'} - ] - }, { - token : "string", start : /\$"/, end : '"|$', next: [ - {token: "constant.language.escape", regex: /\\(:?$)|{{/}, - {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, - {token: "invalid", regex: /\\./} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "keyword", - regex : "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(CSharpHighlightRules, TextHighlightRules); - -exports.CSharpHighlightRules = CSharpHighlightRules; -}); - -ace.define("ace/mode/razor_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/html_highlight_rules","ace/mode/csharp_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules; - -var blockPrefix = 'razor-block-'; -var RazorLangHighlightRules = function() { - CSharpHighlightRules.call(this); - - var processPotentialCallback = function(value, stackItem) { - if (typeof stackItem === "function") - return stackItem(value); - - return stackItem; - }; - - var inBraces = 'in-braces'; - this.$rules.start.unshift({ - regex: '[\\[({]', - onMatch: function(value, state, stack) { - var prefix = /razor-[^\-]+-/.exec(state)[0]; - - stack.unshift(value); - stack.unshift(prefix + inBraces); - this.next = prefix + inBraces; - return 'paren.lparen'; - } - }, { - start: "@\\*", - end: "\\*@", - token: "comment" - }); - - var parentCloseMap = { - '{': '}', - '[': ']', - '(': ')' - }; - - this.$rules[inBraces] = lang.deepCopy(this.$rules.start); - this.$rules[inBraces].unshift({ - regex: '[\\])}]', - onMatch: function(value, state, stack) { - var open = stack[1]; - if (parentCloseMap[open] !== value) - return 'invalid.illegal'; - - stack.shift(); // exit in-braces block - stack.shift(); // exit brace marker - this.next = processPotentialCallback(value, stack[0]) || 'start'; - return 'paren.rparen'; - } - }); -}; - -oop.inherits(RazorLangHighlightRules, CSharpHighlightRules); - -var RazorHighlightRules = function() { - HtmlHighlightRules.call(this); - - var blockStartRule = { - regex: '@[({]|@functions{', - onMatch: function(value, state, stack) { - stack.unshift(value); - stack.unshift('razor-block-start'); - this.next = 'razor-block-start'; - return 'punctuation.block.razor'; - } - }; - - var blockEndMap = { - '@{': '}', - '@(': ')', - '@functions{':'}' - }; - - var blockEndRule = { - regex: '[})]', - onMatch: function(value, state, stack) { - var blockStart = stack[1]; - if (blockEndMap[blockStart] !== value) - return 'invalid.illegal'; - - stack.shift(); // exit razor block - stack.shift(); // remove block type marker - this.next = stack.shift() || 'start'; - return 'punctuation.block.razor'; - } - }; - - var shortStartRule = { - regex: "@(?![{(])", - onMatch: function(value, state, stack) { - stack.unshift("razor-short-start"); - this.next = "razor-short-start"; - return 'punctuation.short.razor'; - } - }; - - var shortEndRule = { - token: "", - regex: "(?=[^A-Za-z_\\.()\\[\\]])", - next: 'pop' - }; - - var ifStartRule = { - regex: "@(?=if)", - onMatch: function(value, state, stack) { - stack.unshift(function(value) { - if (value !== '}') - return 'start'; - - return stack.shift() || 'start'; - }); - this.next = 'razor-block-start'; - return 'punctuation.control.razor'; - } - }; - - var razorStartRules = [ - { - start: "@\\*", - end: "\\*@", - token: "comment" - }, - { - token: ["meta.directive.razor", "text", "identifier"], - regex: "^(\\s*@model)(\\s+)(.+)$" - }, - blockStartRule, - shortStartRule - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], razorStartRules); - - this.embedRules(RazorLangHighlightRules, "razor-block-", [blockEndRule], ["start"]); - this.embedRules(RazorLangHighlightRules, "razor-short-", [shortEndRule], ["start"]); - - this.normalizeRules(); -}; - -oop.inherits(RazorHighlightRules, HtmlHighlightRules); - -exports.RazorHighlightRules = RazorHighlightRules; -exports.RazorLangHighlightRules = RazorLangHighlightRules; -}); - -ace.define("ace/mode/razor_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var keywords = [ - "abstract", "as", "base", "bool", - "break", "byte", "case", "catch", - "char", "checked", "class", "const", - "continue", "decimal", "default", "delegate", - "do", "double","else","enum", - "event", "explicit", "extern", "false", - "finally", "fixed", "float", "for", - "foreach", "goto", "if", "implicit", - "in", "int", "interface", "internal", - "is", "lock", "long", "namespace", - "new", "null", "object", "operator", - "out", "override", "params", "private", - "protected", "public", "readonly", "ref", - "return", "sbyte", "sealed", "short", - "sizeof", "stackalloc", "static", "string", - "struct", "switch", "this", "throw", - "true", "try", "typeof", "uint", - "ulong", "unchecked", "unsafe", "ushort", - "using", "var", "virtual", "void", - "volatile", "while"]; - -var shortHands = [ - "Html", "Model", "Url", "Layout" -]; - -var RazorCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - - if(state.lastIndexOf("razor-short-start") == -1 && state.lastIndexOf("razor-block-start") == -1) - return []; - - var token = session.getTokenAt(pos.row, pos.column); - if (!token) - return []; - - if(state.lastIndexOf("razor-short-start") != -1) { - return this.getShortStartCompletions(state, session, pos, prefix); - } - - if(state.lastIndexOf("razor-block-start") != -1) { - return this.getKeywordCompletions(state, session, pos, prefix); - } - - - }; - - this.getShortStartCompletions = function(state, session, pos, prefix) { - return shortHands.map(function(element){ - return { - value: element, - meta: "keyword", - score: 1000000 - }; - }); - }; - - this.getKeywordCompletions = function(state, session, pos, prefix) { - return shortHands.concat(keywords).map(function(element){ - return { - value: element, - meta: "keyword", - score: 1000000 - }; - }); - }; - -}).call(RazorCompletions.prototype); - -exports.RazorCompletions = RazorCompletions; - -}); - -ace.define("ace/mode/razor",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/razor_highlight_rules","ace/mode/razor_completions","ace/mode/html_completions"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var RazorHighlightRules = require("./razor_highlight_rules").RazorHighlightRules; -var RazorCompletions = require("./razor_completions").RazorCompletions; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - HtmlMode.call(this); - this.$highlightRules = new RazorHighlightRules(); - this.$completer = new RazorCompletions(); - this.$htmlCompleter = new HtmlCompletions(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.getCompletions = function(state, session, pos, prefix) { - var razorToken = this.$completer.getCompletions(state, session, pos, prefix); - var htmlToken = this.$htmlCompleter.getCompletions(state, session, pos, prefix); - return razorToken.concat(htmlToken); - }; - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/razor"; - this.snippetFileId = "ace/snippets/razor"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/razor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-rdoc.js b/src-noconflict/mode-rdoc.js deleted file mode 100644 index 8395a1f..0000000 --- a/src-noconflict/mode-rdoc.js +++ /dev/null @@ -1,243 +0,0 @@ -ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - - this.$rules = { - "start" : [{ - token : "comment", - regex : "%.*$" - }, { - token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], - regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" - }, { - token : ["keyword","lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(verbatim)(})", - next : "verbatim" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(lstlisting)(})", - next : "lstlisting" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:begin|end))({)([\\w*]*)(})" - }, { - token : "storage.type", - regex : /\\verb\b\*?/, - next : [{ - token : ["keyword.operator", "string", "keyword.operator"], - regex : "(.)(.*?)(\\1|$)|", - next : "start" - }] - }, { - token : "storage.type", - regex : "\\\\[a-zA-Z]+" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "constant.character.escape", - regex : "\\\\[^a-zA-Z]?" - }, { - token : "string", - regex : "\\${1,2}", - next : "equation" - }], - "equation" : [{ - token : "comment", - regex : "%.*$" - }, { - token : "string", - regex : "\\${1,2}", - next : "start" - }, { - token : "constant.character.escape", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "error", - regex : "^\\s*$", - next : "start" - }, { - defaultToken : "string" - }], - "verbatim": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(verbatim)(})", - next : "start" - }, { - defaultToken : "text" - }], - "lstlisting": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(lstlisting)(})", - next : "start" - }, { - defaultToken : "text" - }] - }; - - this.normalizeRules(); -}; -oop.inherits(LatexHighlightRules, TextHighlightRules); - -exports.LatexHighlightRules = LatexHighlightRules; - -}); - -ace.define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var LaTeXHighlightRules = require("./latex_highlight_rules"); - -var RDocHighlightRules = function() { - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : "text", // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell.text", // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell.text", - regex : "\\s+" - }, { - token : "nospell.text", - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(RDocHighlightRules, TextHighlightRules); - -exports.RDocHighlightRules = RDocHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { - this.HighlightRules = RDocHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - this.$id = "ace/mode/rdoc"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/rdoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-red.js b/src-noconflict/mode-red.js deleted file mode 100644 index 90d1b8a..0000000 --- a/src-noconflict/mode-red.js +++ /dev/null @@ -1,450 +0,0 @@ -ace.define("ace/mode/red_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RedHighlightRules = function() { - - var compoundKeywords = ""; - - this.$rules = { - "start" : [ - {token : "keyword.operator", - regex: /\s([\-+%/=<>*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/}, - {token : "string.email", regex : /\w[-\w._]*\@\w[-\w._]*/}, - {token : "value.time", regex : /\b\d+:\d+(:\d+)?/}, - {token : "string.url", regex : /\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/}, - {token : "value.date", regex : /(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/}, - {token : "value.tuple", regex : /\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/}, - {token : "value.pair", regex: /[+-]?\d+x[-+]?\d+/}, - {token : "value.binary", regex : /\b2#{([01]{8})+}/}, - {token : "value.binary", regex : /\b64#{([\w/=+])+}/}, - {token : "value.binary", regex : /(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/}, - {token : "value.issue", regex : /#\w[-\w'*.]*/}, - {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/}, - {token : "invalid.illegal", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/}, - {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/}, - {token : "value.character", regex : /#"(\^[-@/_~^"HKLM\[]|.)"/}, - {token : "string.file", regex : /%[-\w\.\/]+/}, - {token : "string.tag", regex : //, next : "start"}, - {defaultToken : "string.tag"} - ], - "comment" : [ - {token : "comment", regex : /}/, next : "start"}, - {defaultToken : "comment"} - ] - }; -}; -oop.inherits(RedHighlightRules, TextHighlightRules); - -exports.RedHighlightRules = RedHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/red",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/red_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RedHighlightRules = require("./red_highlight_rules").RedHighlightRules; -var RedFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = RedHighlightRules; - this.foldingRules = new RedFoldMode(); - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - this.blockComment = { start: "comment {", end: "}" }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\[\(]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/red"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/red"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-redshift.js b/src-noconflict/mode-redshift.js deleted file mode 100644 index 09ee740..0000000 --- a/src-noconflict/mode-redshift.js +++ /dev/null @@ -1,360 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" - }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken : "string" - } - ], - "comment" : [ - { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" - }, { - defaultToken: "comment" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define("ace/mode/redshift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/json_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; - -var RedshiftHighlightRules = function() { - var keywords = ( - "aes128|aes256|all|allowoverwrite|analyse|analyze|and|any|array|as|asc|authorization|backup|" + - "between|binary|blanksasnull|both|bytedict|bzip2|case|cast|check|collate|column|constraint|create|credentials|" + - "cross|current_date|current_time|current_timestamp|current_user|current_user_id|default|deferrable|deflate|defrag|delta|" + - "delta32k|desc|disable|distinct|do|else|emptyasnull|enable|encode|encrypt|encryption|end|except|explicit|false|for|foreign|" + - "freeze|from|full|globaldict256|globaldict64k|grant|group|gzip|having|identity|ignore|ilike|in|initially|inner|intersect|into|is|" + - "isnull|join|leading|left|like|limit|localtime|localtimestamp|lun|luns|lzo|lzop|minus|mostly13|mostly32|mostly8|natural|new|not|notnull|" + - "null|nulls|off|offline|offset|old|on|only|open|or|order|outer|overlaps|parallel|partition|percent|permissions|placing|primary|raw|readratio|" + - "recover|references|rejectlog|resort|restore|right|select|session_user|similar|some|sysdate|system|table|tag|tdes|text255|text32k|then|timestamp|" + - "to|top|trailing|true|truncatecolumns|union|unique|user|using|verbose|wallet|when|where|with|without" - ); - - - var builtinFunctions = ( - "current_schema|current_schemas|has_database_privilege|has_schema_privilege|has_table_privilege|age|current_time|current_timestamp|localtime|" + - "isfinite|now|ascii|get_bit|get_byte|octet_length|set_bit|set_byte|to_ascii|avg|count|listagg|max|min|stddev_samp|stddev_pop|sum|var_samp|var_pop|" + - "bit_and|bit_or|bool_and|bool_or|avg|count|cume_dist|dense_rank|first_value|last_value|lag|lead|listagg|max|median|min|nth_value|ntile|percent_rank|" + - "percentile_cont|percentile_disc|rank|ratio_to_report|row_number|case|coalesce|decode|greatest|least|nvl|nvl2|nullif|add_months|age|convert_timezone|" + - "current_date|timeofday|current_time|current_timestamp|date_cmp|date_cmp_timestamp|date_part_year|dateadd|datediff|date_part|date_trunc|extract|getdate|" + - "interval_cmp|isfinite|last_day|localtime|localtimestamp|months_between|next_day|now|sysdate|timestamp_cmp|timestamp_cmp_date|trunc|abs|acos|asin|atan|" + - "atan2|cbrt|ceiling|ceil|checksum|cos|cot|degrees|dexp|dlog1|dlog10|exp|floor|ln|log|mod|pi|power|radians|random|round|sin|sign|sqrt|tan|trunc|ascii|" + - "bpcharcmp|btrim|bttext_pattern_cmp|char_length|character_length|charindex|chr|concat|crc32|func_sha1|get_bit|get_byte|initcap|left|right|len|length|" + - "lower|lpad|rpad|ltrim|md5|octet_length|position|quote_ident|quote_literal|regexp_count|regexp_instr|regexp_replace|regexp_substr|repeat|replace|replicate|" + - "reverse|rtrim|set_bit|set_byte|split_part|strpos|strtol|substring|textlen|to_ascii|to_hex|translate|trim|upper|json_array_length|json_extract_array_element_text|" + - "json_extract_path_text|cast|convert|to_char|to_date|to_number|current_database|current_schema|current_schemas|current_user|current_user_id|has_database_privilege|" + - "has_schema_privilege|has_table_privilege|pg_backend_pid|pg_last_copy_count|pg_last_copy_id|pg_last_query_id|pg_last_unload_count|session_user|slice_num|user|version" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords - }, "identifier", true); - - - var sqlRules = [{ - token : "string", // single line string -- assume dollar strings if multi-line for now - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "variable.language", // pg identifier - regex : '".*?"' - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers - }, { - token : "keyword.operator", - regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + - "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + - "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + - "~=|~>=~|~>~|~~|~~\\*" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } - ]; - - - this.$rules = { - "start" : [{ - token : "comment", - regex : "--.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "comment" - },{ - token : "keyword.statementBegin", - regex : "^[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. - next : "statement" - },{ - token : "support.buildin", // psql directive - regex : "^\\\\[\\S]+.*$" - } - ], - - "statement" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentStatement" - }, { - token : "statementEnd", - regex : ";", - next : "start" - }, { - token : "string", - regex : "\\$json\\$", - next : "json-start" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line - next : "dollarSql" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarStatementString" - } - ].concat(sqlRules), - - "dollarSql" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentDollarSql" - }, { - token : "string", // end quoting with dollar at the start of a line - regex : "^\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarSqlString" - } - ].concat(sqlRules), - - "comment" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "commentStatement" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "statement" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "commentDollarSql" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "dollarSql" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "dollarStatementString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ], - - "dollarSqlString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "dollarSql" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.embedRules(JsonHighlightRules, "json-", [{token : "string", regex : "\\$json\\$", next : "statement"}]); -}; - -oop.inherits(RedshiftHighlightRules, TextHighlightRules); - -exports.RedshiftHighlightRules = RedshiftHighlightRules; -}); - -ace.define("ace/mode/redshift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/redshift_highlight_rules","ace/range"], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var RedshiftHighlightRules = require("./redshift_highlight_rules").RedshiftHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = RedshiftHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "start" || state == "keyword.statementEnd") { - return ""; - } else { - return this.$getIndent(line); // Keep whatever indent the previous line has - } - }; - - this.$id = "ace/mode/redshift"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/redshift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-rhtml.js b/src-noconflict/mode-rhtml.js deleted file mode 100644 index 7ae398f..0000000 --- a/src-noconflict/mode-rhtml.js +++ /dev/null @@ -1,2808 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); - -ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module) -{ - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" - }, - { - token : "comment", - regex : "#+'", - next : "rd-start" - }, - { - token : "comment", - regex : "#.*$" - }, - { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" - }, - { - token : "string", // multi line string start - regex : "[']", - next : "qstring" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" - }, - { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" - }, - { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" - }, - { - token : "identifier", - regex : "`.*?`" - }, - { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" - }, - { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" - }, - { - token : "keyword.operator", // infix operators - regex : "%.*?%" - }, - { - token : "paren.keyword.operator", - regex : "[[({]" - }, - { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, - { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, - { - token : "string", - regex : '.+' - } - ] - }; - - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; -}); - -ace.define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var RHighlightRules = require("./r_highlight_rules").RHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RHtmlHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token: "support.function.codebegin", - regex: "^<" + "!--\\s*begin.rcode\\s*(?:.*)", - next: "r-start" - }); - - this.embedRules(RHighlightRules, "r-", [{ - token: "support.function.codeend", - regex: "^\\s*end.rcode\\s*-->", - next: "start" - }], ["start"]); - - this.normalizeRules(); -}; -oop.inherits(RHtmlHighlightRules, TextHighlightRules); - -exports.RHtmlHighlightRules = RHtmlHighlightRules; -}); - -ace.define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; - -var RHtmlHighlightRules = require("./rhtml_highlight_rules").RHtmlHighlightRules; - -var Mode = function(doc, session) { - HtmlMode.call(this); - this.$session = session; - this.HighlightRules = RHtmlHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.insertChunkInfo = { - value: "\n", - position: {row: 0, column: 15} - }; - - this.getLanguageMode = function(position) - { - return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; - }; - - this.$id = "ace/mode/rhtml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/rhtml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-rst.js b/src-noconflict/mode-rst.js deleted file mode 100644 index f40ec05..0000000 --- a/src-noconflict/mode-rst.js +++ /dev/null @@ -1,257 +0,0 @@ -ace.define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RSTHighlightRules = function() { - - var tokens = { - title: "markup.heading", - list: "markup.heading", - table: "constant", - directive: "keyword.operator", - entity: "string", - link: "markup.underline.list", - bold: "markup.bold", - italic: "markup.italic", - literal: "support.function", - comment: "comment" - }; - - var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])"; - var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))"; - - this.$rules = { - "start": [ - { - token : tokens.title, - regex : "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)" - }, - { - token : ["text", tokens.directive, tokens.literal], - regex : "(^\\s*\\.\\. )([^: ]+::)(.*$)", - next : "codeblock" - }, - { - token : tokens.directive, - regex : "::$", - next : "codeblock" - }, - { - token : [tokens.entity, tokens.link], - regex : "(^\\.\\. _[^:]+:)(.*$)" - }, - { - token : [tokens.entity, tokens.link], - regex : "(^__ )(https?://.*$)" - }, - { - token : tokens.entity, - regex : "^\\.\\. \\[[^\\]]+\\] " - }, - { - token : tokens.comment, - regex : "^\\.\\. .*$", - next : "comment" - }, - { - token : tokens.list, - regex : "^\\s*[\\*\\+-] " - }, - { - token : tokens.list, - regex : "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. " - }, - { - token : tokens.list, - regex : "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) " - }, - { - token : tokens.table, - regex : "^={2,}(?: +={2,})+$" - }, - { - token : tokens.table, - regex : "^\\+-{2,}(?:\\+-{2,})+\\+$" - }, - { - token : tokens.table, - regex : "^\\+={2,}(?:\\+={2,})+\\+$" - }, - { - token : ["text", tokens.literal], - regex : startStringPrefix + "(``)(?=\\S)", - next : "code" - }, - { - token : ["text", tokens.bold], - regex : startStringPrefix + "(\\*\\*)(?=\\S)", - next : "bold" - }, - { - token : ["text", tokens.italic], - regex : startStringPrefix + "(\\*)(?=\\S)", - next : "italic" - }, - { - token : tokens.entity, - regex : "\\|[\\w\\-]+?\\|" - }, - { - token : tokens.entity, - regex : ":[\\w-:]+:`\\S", - next : "entity" - }, - { - token : ["text", tokens.entity], - regex : startStringPrefix + "(_`)(?=\\S)", - next : "entity" - }, - { - token : tokens.entity, - regex : "_[A-Za-z0-9\\-]+?" - }, - { - token : ["text", tokens.link], - regex : startStringPrefix + "(`)(?=\\S)", - next : "link" - }, - { - token : tokens.link, - regex : "[A-Za-z0-9\\-]+?__?" - }, - { - token : tokens.link, - regex : "\\[[^\\]]+?\\]_" - }, - { - token : tokens.link, - regex : "https?://\\S+" - }, - { - token : tokens.table, - regex : "\\|" - } - ], - "codeblock": [ - { - token : tokens.literal, - regex : "^ +.+$", - next : "codeblock" - }, - { - token : tokens.literal, - regex : '^$', - next: "codeblock" - }, - { - token : "empty", - regex : "", - next : "start" - } - ], - "code": [ - { - token : tokens.literal, - regex : "\\S``" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.literal - } - ], - "bold": [ - { - token : tokens.bold, - regex : "\\S\\*\\*" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.bold - } - ], - "italic": [ - { - token : tokens.italic, - regex : "\\S\\*" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.italic - } - ], - "entity": [ - { - token : tokens.entity, - regex : "\\S`" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.entity - } - ], - "link": [ - { - token : tokens.link, - regex : "\\S`__?" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.link - } - ], - "comment": [ - { - token : tokens.comment, - regex : "^ +.+$", - next : "comment" - }, - { - token : tokens.comment, - regex : '^$', - next: "comment" - }, - { - token : "empty", - regex : "", - next : "start" - } - ] - }; -}; -oop.inherits(RSTHighlightRules, TextHighlightRules); - -exports.RSTHighlightRules = RSTHighlightRules; -}); - -ace.define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules; - -var Mode = function() { - this.HighlightRules = RSTHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - - this.$id = "ace/mode/rst"; - this.snippetFileId = "ace/snippets/rst"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/rst"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-ruby.js b/src-noconflict/mode-ruby.js deleted file mode 100644 index 0fbe547..0000000 --- a/src-noconflict/mode-ruby.js +++ /dev/null @@ -1,1003 +0,0 @@ -ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericBinary = exports.constantNumericBinary = { - token: "constant.numeric", - regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ -}; - -var constantNumericDecimal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ -}; - -var constantNumericOctal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ -}; - -var constantNumericRational = exports.constantNumericRational = { - token: "constant.numeric", //rational + complex - regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ -}; - -var constantNumericComplex = exports.constantNumericComplex = { - token: "constant.numeric", //simple complex numbers - regex: /\b([\d]i)\b/ -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float + complex - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" -}; - -var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + - "private_class_method|remove_method|undef_method" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; - - var closeParen = { - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "^": "^", - "|": "|", - "%": "%" - }; - - this.$rules = { - "start": [ - { - token: "comment", - regex: "#.*$" - }, { - token: "comment.multiline", // multi line comment - regex: "^=begin(?=$|\\s.*$)", - next: "comment" - }, { - token: "string.regexp", - regex: /[/](?=.*\/)/, - next: "regex" - }, - - [{ - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(")/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /"/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(')/, - push: [{ - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "string.end", - regex: /'/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start",//doesn't see any differences between strings and array of strings in highlighting - regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithoutInterpolation"; - return this.token; - } - }, { - token: "string.start", //doesn't see any differences between strings and array of strings in highlighting - regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithoutInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithInterpolation"; - return this.token; - } - }, { - token: "string.regexp", - regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "rState"; - return this.token; - } - }], - - { - token: "punctuation", // namespaces aren't symbols - regex: "::" - }, - instanceVariable, - { - token: "variable.global", // global variable - regex: "[$][a-zA-Z_\\d]+" - }, { - token: "support.class", // class name - regex: "[A-Z][a-zA-Z_\\d]*" - }, { - token: ["punctuation.operator", "support.function"], - regex: /(\.)([a-zA-Z_\d]+)(?=\()/ - }, { - token: ["punctuation.operator", "identifier"], - regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ - }, { - token: "string.character", - regex: "\\B\\?(?:" + escapedChars + "|\\S)" - }, { - token: "punctuation.operator", - regex: /\?(?=.+:)/ - }, - - constantNumericRational, - constantNumericComplex, - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - constantNumericBinary, - constantNumericDecimal, - constantNumericOctal, - { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "punctuation.separator.key-value", - regex: "=>" - }, { - stateName: "heredoc", - onMatch: function (value, currentState, stack) { - var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type: "constant", value: tokens[1]}, - {type: "string", value: tokens[2]}, - {type: "support.class", value: tokens[3]}, - {type: "string", value: tokens[4]} - ]; - }, - regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex: "$", - token: "empty", - next: function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]", - onMatch: function(value, currentState, stack) { - this.next = ''; - if (value == "}" && stack.length > 1 && stack[1] != "start") { - stack.shift(); - this.next = stack.shift(); - } - return this.token; - } - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/ - } - ], - "comment": [ - { - token: "comment.multiline", // closing comment - regex: "^=end(?=$|\\s.*$)", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - } - ], - "qStateWithInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "qStateWithoutInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "sStateWithoutInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "sStateWithInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "rState": [{ - token: "string.regexp",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.language.escape"; - } - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.regexp", - regex: /\// - }, { - token: "string.regexp", - regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { - if (stack.length && val[0] === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.language.escape"; - } - }, - {include: "regex"}, - { - defaultToken: "string.regexp" - }], - "regex": [ - {// character classes - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "constant.language.escape", - regex: /\\[AGbBzZ]/ - }, { - token: "constant.language.escape", - regex: /\\g<[a-zA-Z0-9]*>/ - }, { - token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], - regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ - }, { - token: ["constant.language.escape", "invalid", "constant.language.escape"], - regex: /(\\p{\^?)([^/]*)(})/ - }, {// escapes - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, {// flag - token: "string.regexp", - regex: /[/][imxouesn]*/, - next: "start" - }, {// invalid operators - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, {// operators - token: "constant.language.escape", - regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "regexp.keyword", - regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - push: "regex_character_class" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: /&?&?\[\^?/, - push: "regex_character_class" - }, { - token: "constant.language.escape", - regex: "]", - next: "pop" - }, { - token: "constant.language.escape", - regex: "-" - }, { - defaultToken: "string.regexp.characterclass" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function () { -}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function () { - this.indentKeywords = { - "class": 1, - "def": 1, - "module": 1, - "do": 1, - "unless": 1, - "if": 1, - "while": 1, - "for": 1, - "until": 1, - "begin": 1, - "else": 0, - "elsif": 0, - "rescue": 0, - "ensure": 0, - "when": 0, - "end": -1, - "case": 1, - "=begin": 1, - "=end": -1 - }; - - this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; - this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; - - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1]) { - if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { - if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { - return; - } - if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { - return; - } - } - - if (match[1] == "when") { - if (/\sthen\s/.test(line) === true) { - return; - } - } - if (session.getTokenAt(row, match.index + 2).type === "keyword") - return "start"; - } else if (match[3]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1] || match[3]) - return this.rubyBlock(session, row, match.index + 2); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.rubyBlock(session, row, match.index + 1); - } - - if (match[1] === "=end") { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return this.rubyBlock(session, row, match.index + 1); - } - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.rubyBlock = function (session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - - var token = stream.getCurrentToken(); - if (!token || (token.type != "keyword" && token.type != "comment.multiline")) - return; - - var val = token.value; - var line = session.getLine(row); - switch (token.value) { - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - return; - } - var dir = this.indentKeywords[val]; - break; - case "when": - if (/\sthen\s/.test(line)) { - return; - } - case "elsif": - case "rescue": - case "ensure": - var dir = 1; - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line)) { - return; - } - var dir = 1; - break; - default: - var dir = this.indentKeywords[val]; - break; - } - - var stack = [val]; - if (!dir) - return; - - var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; - var startRow = row; - var ranges = []; - ranges.push(stream.getCurrentTokenRange()); - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - if (token.type == "comment.multiline") { - while (token = stream.step()) { - if (token.type !== "comment.multiline") - continue; - if (dir == 1) { - startColumn = 6; - if (token.value == "=end") { - break; - } - } else { - if (token.value == "=begin") { - break; - } - } - } - } else { - while (token = stream.step()) { - var ignore = false; - if (token.type !== "keyword") - continue; - var level = dir * this.indentKeywords[token.value]; - line = session.getLine(stream.getCurrentTokenRow()); - switch (token.value) { - case "do": - for (var i = stream.$tokenIndex - 1; i >= 0; i--) { - var prevToken = stream.$rowTokens[i]; - if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { - level = 0; - break; - } - } - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - level = 0; - ignore = true; - } - break; - case "when": - if (/\sthen\s/.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - } - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0 && ignore === false) { - stack.shift(); - if (!stack.length) { - if ((val == "while" || val == "until" || val == "for") && token.value != "do") { - break; - } - if (token.value == "do" && dir == -1 && level != 0) - break; - if (token.value != "do") - break; - } - - if (level === 0) { - stack.unshift(token.value); - } - } - } - } - - if (!token) - return null; - - if (tokenRange) { - ranges.push(stream.getCurrentTokenRange()); - return ranges; - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) { - if (token.type === "comment.multiline") { - var endColumn = 6; - } else { - var endColumn = session.getLine(row).length; - } - return new Range(row, endColumn, startRow - 1, startColumn); - } else - return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/ruby").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new FoldMode(); - this.indentKeywords = this.foldingRules.indentKeywords; -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - if (/}/.test(line)) - return this.$outdent.autoOutdent(session, row); - var indent = this.$getIndent(line); - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine); - var tab = session.getTabString(); - if (prevIndent.length <= indent.length) { - if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length - tab.length, row, indent.length)); - } - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in this.indentKeywords) - return this.foldingRules.rubyBlock(session, row, column, true); - }; - - this.$id = "ace/mode/ruby"; - this.snippetFileId = "ace/snippets/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-rust.js b/src-noconflict/mode-rust.js deleted file mode 100644 index 8a32d11..0000000 --- a/src-noconflict/mode-rust.js +++ /dev/null @@ -1,282 +0,0 @@ -ace.define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var stringEscape = /\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source; -var wordPattern = /[a-zA-Z_\xa1-\uffff][a-zA-Z0-9_\xa1-\uffff]*/.source; -var RustHighlightRules = function() { - - this.$rules = { start: - [ { token: 'variable.other.source.rust', - regex: '\'' + wordPattern + '(?![\\\'])' }, - { token: 'string.quoted.single.source.rust', - regex: "'(?:[^'\\\\]|" + stringEscape + ")'" }, - { token: 'identifier', - regex: "r#" + wordPattern + "\\b" }, - { - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 1, currentState); - return "string.quoted.raw.source.rust"; - }, - regex : /r#*"/, - next : [ - { - onMatch : function(value, currentState, stack) { - var token = "string.quoted.raw.source.rust"; - if (value.length >= stack[1]) { - if (value.length > stack[1]) - token = "invalid"; - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return token; - }, - regex : /"#*/, - next : "start" - }, { - defaultToken : "string.quoted.raw.source.rust" - } - ] - }, - { token: 'string.quoted.double.source.rust', - regex: '"', - push: - [ { token: 'string.quoted.double.source.rust', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.source.rust', - regex: stringEscape }, - { defaultToken: 'string.quoted.double.source.rust' } ] }, - { token: [ 'keyword.source.rust', 'text', 'entity.name.function.source.rust' ], - regex: '\\b(fn)(\\s+)((?:r#)?'+ wordPattern + ')' }, - { token: 'support.constant', regex: wordPattern + '::' }, - { token: 'keyword.source.rust', - regex: '\\b(?:abstract|alignof|as|async|await|become|box|break|catch|continue|const|crate|default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b' }, - { token: 'storage.type.source.rust', - regex: '\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, - { token: 'variable.language.source.rust', regex: '\\bself\\b' }, - - { token: 'comment.line.doc.source.rust', - regex: '//!.*$' }, - { token: 'comment.line.double-dash.source.rust', - regex: '//.*$' }, - { token: 'comment.start.block.source.rust', - regex: '/\\*', - stateName: 'comment', - push: - [ { token: 'comment.start.block.source.rust', - regex: '/\\*', - push: 'comment' }, - { token: 'comment.end.block.source.rust', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.source.rust' } ] }, - - { token: 'keyword.operator', - regex: /\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/ }, - { token : "punctuation.operator", regex : /[?:,;.]/ }, - { token : "paren.lparen", regex : /[\[({]/ }, - { token : "paren.rparen", regex : /[\])}]/ }, - { token: 'constant.language.source.rust', - regex: '\\b(?:true|false|Some|None|Ok|Err)\\b' }, - { token: 'support.constant.source.rust', - regex: '\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b' }, - { token: 'meta.preprocessor.source.rust', - regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' }, - { token: 'constant.numeric.source.rust', - regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/ }, - { token: 'constant.numeric.source.rust', - regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ } ] }; - - this.normalizeRules(); -}; - -RustHighlightRules.metaData = { fileTypes: [ 'rs', 'rc' ], - foldingStartMarker: '^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$', - foldingStopMarker: '^\\s*\\}', - name: 'Rust', - scopeName: 'source.rust' }; - - -oop.inherits(RustHighlightRules, TextHighlightRules); - -exports.RustHighlightRules = RustHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RustHighlightRules = require("./rust_highlight_rules").RustHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = RustHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/", nestable: true}; - this.$quotes = { '"': '"' }; - this.$id = "ace/mode/rust"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/rust"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sass.js b/src-noconflict/mode-sass.js deleted file mode 100644 index d404dfc..0000000 --- a/src-noconflict/mode-sass.js +++ /dev/null @@ -1,529 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap(CssHighlightRules.supportType.split("|")); - - var functions = lang.arrayToMap( - ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + - "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + - "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + - "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") - ); - - var constants = lang.arrayToMap(CssHighlightRules.supportConstant.split("|")); - - var colors = lang.arrayToMap(CssHighlightRules.supportConstantColor.split("|")); - - var keywords = lang.arrayToMap( - ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") - ); - - var tags = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", - regex : numRe + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : function(value) { - if (properties.hasOwnProperty(value.toLowerCase())) - return "support.type"; - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (constants.hasOwnProperty(value)) - return "constant.language"; - else if (functions.hasOwnProperty(value)) - return "support.function"; - else if (colors.hasOwnProperty(value.toLowerCase())) - return "support.constant.color"; - else if (tags.hasOwnProperty(value.toLowerCase())) - return "variable.language"; - else - return "text"; - }, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token : "variable", - regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; - -var SassHighlightRules = function() { - ScssHighlightRules.call(this); - var start = this.$rules.start; - if (start[1].token == "comment") { - start.splice(1, 1, { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, -1, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\*/, - next: "comment" - }, { - token: "error.invalid", - regex: "/\\*|[{;}]" - }, { - token: "support.type", - regex: /^\s*:[\w\-]+\s/ - }); - - this.$rules.comment = [ - {regex: /^\s*/, onMatch: function(value, currentState, stack) { - if (stack[1] === -1) - stack[1] = Math.max(stack[2], value.length - 1); - if (value.length <= stack[1]) {stack.shift();stack.shift();stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ]; - } -}; - -oop.inherits(SassHighlightRules, ScssHighlightRules); - -exports.SassHighlightRules = SassHighlightRules; - -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = SassHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/sass"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/sass"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-scad.js b/src-noconflict/mode-scad.js deleted file mode 100644 index bd6ce12..0000000 --- a/src-noconflict/mode-scad.js +++ /dev/null @@ -1,414 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var scadHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": "module|if|else|for", - "constant.language": "NULL" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant", // - regex : "<[a-zA-Z0-9.]+>" - }, { - token : "keyword", // pre-compiler directivs - regex : "(?:use|include)" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(scadHighlightRules, TextHighlightRules); - -exports.scadHighlightRules = scadHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = scadHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/scad"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/scad"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-scala.js b/src-noconflict/mode-scala.js deleted file mode 100644 index d21cad7..0000000 --- a/src-noconflict/mode-scala.js +++ /dev/null @@ -1,984 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScalaHighlightRules = function() { - - var keywords = ( - "case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|" + - "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|" + - "override|package|private|protected|sealed|super|this|trait|type|val|var|with|" + - "assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|" + // package scala - "readChar|readInt|readLong|readFloat|readDouble" // package scala - ); - - var buildinConstants = ("true|false"); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object|" + - "Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|" + - "Option|Array|Char|Byte|Int|Long|Nothing|" + - - "App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|" + - "Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|" + - "Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|" + - "Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|" + - "StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple" - - - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "support.function": langClasses, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", - regex : '"""', - next : "tstring" - }, { - token : "string", - regex : '"(?=.)', // " strings can't span multiple lines - next : "string" - }, { - token : "symbol.constant", // single line - regex : "'[\\w\\d_]+" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "string" : [ - { - token : "escape", - regex : '\\\\"' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string.invalid", - regex : '[^"\\\\]*$', - next : "start" - }, { - token : "string", - regex : '[^"\\\\]+' - } - ], - "tstring" : [ - { - token : "string", - regex : '"{3,5}', - next : "start" - }, { - defaultToken : "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(ScalaHighlightRules, TextHighlightRules); - -exports.ScalaHighlightRules = ScalaHighlightRules; -}); - -ace.define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = ScalaHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/scala"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/scala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-scheme.js b/src-noconflict/mode-scheme.js deleted file mode 100644 index 7fb49a7..0000000 --- a/src-noconflict/mode-scheme.js +++ /dev/null @@ -1,232 +0,0 @@ -ace.define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SchemeHighlightRules = function() { - var keywordControl = "case|do|let|loop|if|else|when"; - var keywordOperator = "eq?|eqv?|equal?|and|or|not|null?"; - var constantLanguage = "#t|#f"; - var supportFunctions = "cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control": keywordControl, - "keyword.operator": keywordOperator, - "constant.language": constantLanguage, - "support.function": supportFunctions - }, "identifier", true); - - this.$rules = - { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - "token": ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"], - "regex": "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - "token": "punctuation.definition.constant.character.scheme", - "regex": "#:\\S+" - }, - { - "token": ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"], - "regex": "(\\*)(\\S*)(\\*)" - }, - { - "token" : "constant.numeric", // hex - "regex" : "#[xXoObB][0-9a-fA-F]+" - }, - { - "token" : "constant.numeric", // float - "regex" : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?" - }, - { - "token" : keywordMapper, - "regex" : "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*" - }, - { - "token" : "string", - "regex" : '"(?=.)', - "next" : "qqstring" - } - ], - "qqstring": [ - { - "token": "constant.character.escape.scheme", - "regex": "\\\\." - }, - { - "token" : "string", - "regex" : '[^"\\\\]+', - "merge" : true - }, { - "token" : "string", - "regex" : "\\\\$", - "next" : "qqstring", - "merge" : true - }, { - "token" : "string", - "regex" : '"|$', - "next" : "start", - "merge" : true - } - ] -}; - -}; - -oop.inherits(SchemeHighlightRules, TextHighlightRules); - -exports.SchemeHighlightRules = SchemeHighlightRules; -}); - -ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingParensOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\)/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\))/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - var match = line.match(/^(\s+)/); - if (match) { - return match[1]; - } - - return ""; - }; - -}).call(MatchingParensOutdent.prototype); - -exports.MatchingParensOutdent = MatchingParensOutdent; -}); - -ace.define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SchemeHighlightRules = require("./scheme_highlight_rules").SchemeHighlightRules; -var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; - -var Mode = function() { - this.HighlightRules = SchemeHighlightRules; - this.$outdent = new MatchingParensOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - this.minorIndentFunctions = ["define", "lambda", "define-macro", "define-syntax", "syntax-rules", "define-record-type", "define-structure"]; - - this.$toIndent = function(str) { - return str.split('').map(function(ch) { - if (/\s/.exec(ch)) { - return ch; - } else { - return ' '; - } - }).join(''); - }; - - this.$calculateIndent = function(line, tab) { - var baseIndent = this.$getIndent(line); - var delta = 0; - var isParen, ch; - for (var i = line.length - 1; i >= 0; i--) { - ch = line[i]; - if (ch === '(') { - delta--; - isParen = true; - } else if (ch === '(' || ch === '[' || ch === '{') { - delta--; - isParen = false; - } else if (ch === ')' || ch === ']' || ch === '}') { - delta++; - } - if (delta < 0) { - break; - } - } - if (delta < 0 && isParen) { - i += 1; - var iBefore = i; - var fn = ''; - while (true) { - ch = line[i]; - if (ch === ' ' || ch === '\t') { - if(this.minorIndentFunctions.indexOf(fn) !== -1) { - return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } else { - return this.$toIndent(line.substring(0, i + 1)); - } - } else if (ch === undefined) { - return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } - fn += line[i]; - i++; - } - } else if(delta < 0 && !isParen) { - return this.$toIndent(line.substring(0, i+1)); - } else if(delta > 0) { - baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); - return baseIndent; - } else { - return baseIndent; - } - }; - - this.getNextLineIndent = function(state, line, tab) { - return this.$calculateIndent(line, tab); - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/scheme"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/scheme"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-scrypt.js b/src-noconflict/mode-scrypt.js deleted file mode 100644 index ed5c17d..0000000 --- a/src-noconflict/mode-scrypt.js +++ /dev/null @@ -1,364 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/scrypt_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var scryptHighlightRules = function () { - - var keywords = ( - "contract|library|loop|new|private|" + - "public|if|else|struct|type|" + - "require|static|const|import|exit|return|asm" - ); - - var buildinConstants = ("true|false"); - - - var langClasses = ( - "function|auto|constructor|bytes|int|bool|SigHashPreimage|PrivKey|PubKey|Sig|Ripemd160|Sha1|Sha256|" + - "SigHashType|SigHashPreimage|OpCodeType" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start": [ - { - token: "comment", - regex: "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token: "comment", // multi line comment - regex: "\\/\\*", - next: "comment" - }, { - token: "string", // single line - regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token: "string", // single line - regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token: "constant.numeric", // hex - regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token: "constant.numeric", // float - regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, - { - token: ["support.function.math.scrypt", "text", "text"], - regex: /\b(abs|min|max|within|ripemd160|sha1|sha256|hash160|hash256|checkSig|checkMultiSig|num2bin|pack|unpack|len|reverseBytes|repeat)(\s*)(\()/ - }, { - token: [ - "entity.name.type.scrypt", - "text", - "text", - "text", - "variable.object.property.scrypt" - ], - regex: /\b(SigHash)(\s*)(\.)(\s*)(ANYONECANPAY|ALL|FORKID|NONE|SINGLE)\b/ - }, - { - token: [ - "entity.name.type.scrypt", - "text", - "text", - "text", - "variable.object.property.scrypt" - ], - regex: /\b(OpCode)(\s*)(\.)(\s*)(OP_PUSHDATA1|OP_PUSHDATA2|OP_PUSHDATA4|OP_0|OP_FALSE|OP_1NEGATE|OP_1|OP_TRUE|OP_2|OP_3|OP_4|OP_5|OP_6|OP_7|OP_8|OP_9|OP_10|OP_11|OP_12|OP_13|OP_14|OP_15|OP_16|OP_1ADD|OP_1SUB|OP_NEGATE|OP_ABS|OP_NOT|OP_0NOTEQUAL|OP_ADD|OP_SUB|OP_MUL|OP_DIV|OP_MOD|OP_LSHIFT|OP_RSHIFT|OP_BOOLAND|OP_BOOLOR|OP_NUMEQUAL|OP_NUMEQUALVERIFY|OP_NUMNOTEQUAL|OP_LESSTHAN|OP_GREATERTHAN|OP_LESSTHANOREQUAL|OP_GREATERTHANOREQUAL|OP_MIN|OP_MAX|OP_WITHIN|OP_CAT|OP_SPLIT|OP_BIN2NUM|OP_NUM2BIN|OP_SIZE|OP_NOP|OP_IF|OP_NOTIF|OP_ELSE|OP_ENDIF|OP_VERIFY|OP_RETURN|OP_TOALTSTACK|OP_FROMALTSTACK|OP_IFDUP|OP_DEPTH|OP_DROP|OP_DUP|OP_NIP|OP_OVER|OP_PICK|OP_ROLL|OP_ROT|OP_SWAP|OP_TUCK|OP_2DROP|OP_2DUP|OP_3DUP|OP_2OVER|OP_2ROT|OP_2SWAP|OP_RIPEMD160|OP_SHA1|OP_SHA256|OP_HASH160|OP_HASH256|OP_CODESEPARATOR|OP_CHECKSIG|OP_CHECKSIGVERIFY|OP_CHECKMULTISIG|OP_CHECKMULTISIGVERIFY|OP_INVERT|OP_AND|OP_OR|OP_XOR|OP_EQUAL|OP_EQUALVERIFY)\b/ - }, { - token: "entity.name.type.scrypt", - regex: /\b(?:P2PKH|P2PK|Tx|HashPuzzleRipemd160|HashPuzzleSha1|HashPuzzleSha256|HashPuzzleHash160|OpCode|SigHash)\b/ - }, { - token: [ - "punctuation.separator.period.scrypt", - 'text', - "entity.name.function.scrypt", - "text", - "punctuation.definition.parameters.begin.bracket.round.scrypt" - ], - regex: /(\.)([^\S$\r]*)([\w][\w\d]*)(\s*)(\()/, - push: [{ - token: "punctuation.definition.parameters.end.bracket.round.scrypt", - regex: /\)/, - next: "pop" - }, { - defaultToken: "start" - }] - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=" - }, { - token: "lparen", - regex: "[[({]" - }, { - token: "rparen", - regex: "[\\])}]" - }, { - token: "text", - regex: "\\s+" - } - ], - "comment": [ - { - token: "comment", // closing comment - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; - - - this.embedRules(DocCommentHighlightRules, "doc-", - [DocCommentHighlightRules.getEndRule("start")]); - this.normalizeRules(); - }; - - oop.inherits(scryptHighlightRules, TextHighlightRules); - - exports.scryptHighlightRules = scryptHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/scrypt",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scrypt_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var scryptHighlightRules = require("./scrypt_highlight_rules").scryptHighlightRules; - var FoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function () { - this.HighlightRules = scryptHighlightRules; - this.foldingRules = new FoldMode(); - }; - oop.inherits(Mode, TextMode); - - (function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.$quotes = { '"': '"', "'": "'" }; - - this.createWorker = function (session) { - - return null; - }; - - - this.$id = "ace/mode/scrypt"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/scrypt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-scss.js b/src-noconflict/mode-scss.js deleted file mode 100644 index 4d311ac..0000000 --- a/src-noconflict/mode-scss.js +++ /dev/null @@ -1,873 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap(CssHighlightRules.supportType.split("|")); - - var functions = lang.arrayToMap( - ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + - "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + - "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + - "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") - ); - - var constants = lang.arrayToMap(CssHighlightRules.supportConstant.split("|")); - - var colors = lang.arrayToMap(CssHighlightRules.supportConstantColor.split("|")); - - var keywords = lang.arrayToMap( - ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") - ); - - var tags = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", - regex : numRe + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : function(value) { - if (properties.hasOwnProperty(value.toLowerCase())) - return "support.type"; - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (constants.hasOwnProperty(value)) - return "constant.language"; - else if (functions.hasOwnProperty(value)) - return "support.function"; - else if (colors.hasOwnProperty(value.toLowerCase())) - return "support.constant.color"; - else if (tags.hasOwnProperty(value.toLowerCase())) - return "variable.language"; - else - return "text"; - }, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token : "variable", - regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CssCompletions = require("./css_completions").CssCompletions; - - -var Mode = function() { - this.HighlightRules = ScssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - - this.$id = "ace/mode/scss"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/scss"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sh.js b/src-noconflict/mode-sh.js deleted file mode 100644 index 2e9eff7..0000000 --- a/src-noconflict/mode-sh.js +++ /dev/null @@ -1,449 +0,0 @@ -ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; - var variable = "(?:" + variableName + "(?==))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ - }, { - include : "variables" - }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` - }, { - token : "string.end", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], - variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { - this.HighlightRules = ShHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/sh"; - this.snippetFileId = "ace/snippets/sh"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/sh"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sjs.js b/src-noconflict/mode-sjs.js deleted file mode 100644 index 2dff26e..0000000 --- a/src-noconflict/mode-sjs.js +++ /dev/null @@ -1,1015 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SJSHighlightRules = function() { - var parent = new JavaScriptHighlightRules({noES6: true}); - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - var contextAware = function(f) { - f.isContextAware = true; - return f; - }; - - var ctxBegin = function(opts) { - return { - token: opts.token, - regex: opts.regex, - next: contextAware(function(currentState, stack) { - if (stack.length === 0) - stack.unshift(currentState); - stack.unshift(opts.next); - return opts.next; - }) - }; - }; - - var ctxEnd = function(opts) { - return { - token: opts.token, - regex: opts.regex, - next: contextAware(function(currentState, stack) { - stack.shift(); - return stack[0] || "start"; - }) - }; - }; - - this.$rules = parent.$rules; - this.$rules.no_regex = [ - { - token: "keyword", - regex: "(waitfor|or|and|collapse|spawn|retract)\\b" - }, - { - token: "keyword.operator", - regex: "(->|=>|\\.\\.)" - }, - { - token: "variable.language", - regex: "(hold|default)\\b" - }, - ctxBegin({ - token: "string", - regex: "`", - next: "bstring" - }), - ctxBegin({ - token: "string", - regex: '"', - next: "qqstring" - }), - ctxBegin({ - token: "string", - regex: '"', - next: "qqstring" - }), - { - token: ["paren.lparen", "text", "paren.rparen"], - regex: "(\\{)(\\s*)(\\|)", - next: "block_arguments" - } - - ].concat(this.$rules.no_regex); - - this.$rules.block_arguments = [ - { - token: "paren.rparen", - regex: "\\|", - next: "no_regex" - } - ].concat(this.$rules.function_arguments); - - this.$rules.bstring = [ - { - token : "constant.language.escape", - regex : escapedRe - }, - { - token : "string", - regex : "\\\\$", - next: "bstring" - }, - ctxBegin({ - token : "paren.lparen", - regex : "\\$\\{", - next: "string_interp" - }), - ctxBegin({ - token : "paren.lparen", - regex : "\\$", - next: "bstring_interp_single" - }), - ctxEnd({ - token : "string", - regex : "`" - }), - { - defaultToken: "string" - } - ]; - - this.$rules.qqstring = [ - { - token : "constant.language.escape", - regex : escapedRe - }, - { - token : "string", - regex : "\\\\$", - next: "qqstring" - }, - ctxBegin({ - token : "paren.lparen", - regex : "#\\{", - next: "string_interp" - }), - ctxEnd({ - token : "string", - regex : '"' - }), - { - defaultToken: "string" - } - ]; - var embeddableRules = []; - for (var i=0; i < this.$rules.no_regex.length; i++) { - var rule = this.$rules.no_regex[i]; - var token = String(rule.token); - if (token.indexOf('paren') == -1 && (!rule.next || rule.next.isContextAware)) { - embeddableRules.push(rule); - } - } - - this.$rules.string_interp = [ - ctxEnd({ - token: "paren.rparen", - regex: "\\}" - }), - ctxBegin({ - token: "paren.lparen", - regex: '{', - next: "string_interp" - }) - ].concat(embeddableRules); - this.$rules.bstring_interp_single = [ - { - token: ["identifier", "paren.lparen"], - regex: '(\\w+)(\\()', - next: 'bstring_interp_single_call' - }, - ctxEnd({ - token : "identifier", - regex : "\\w*" - }) - ]; - this.$rules.bstring_interp_single_call = [ - ctxBegin({ - token: "paren.lparen", - regex: "\\(", - next: "bstring_interp_single_call" - }), - ctxEnd({ - token: "paren.rparen", - regex: "\\)" - }) - ].concat(embeddableRules); -}; -oop.inherits(SJSHighlightRules, TextHighlightRules); - -exports.SJSHighlightRules = SJSHighlightRules; -}); - -ace.define("ace/mode/sjs",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/sjs_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; -var oop = require("../lib/oop"); -var JSMode = require("./javascript").Mode; -var SJSHighlightRules = require("./sjs_highlight_rules").SJSHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = SJSHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, JSMode); -(function() { - this.createWorker = function(session) { - return null; - }; - this.$id = "ace/mode/sjs"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/sjs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-slim.js b/src-noconflict/mode-slim.js deleted file mode 100644 index 2102fab..0000000 --- a/src-noconflict/mode-slim.js +++ /dev/null @@ -1,5240 +0,0 @@ -ace.define("ace/mode/slim_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var modes = require("../config").$modes; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var SlimHighlightRules = function() { - - this.$rules = { - "start": [ - { - token: "keyword", - regex: /^(\s*)(\w+):\s*/, - onMatch: function(value, state, stack, line) { - var indent = /^\s*/.exec(line)[0]; - var m = value.match(/^(\s*)(\w+):/); - var language = m[2]; - if (!/^(javascript|ruby|coffee|markdown|css|scss|sass|less)$/.test(language)) - language = ""; - stack.unshift("language-embed", [], [indent, language], state); - return this.token; - }, - stateName: "language-embed", - next: [{ - token: "string", - regex: /^(\s*)/, - onMatch: function(value, state, stack, line) { - var indent = stack[2][0]; - if (indent.length >= value.length) { - stack.splice(0, 3); - this.next = stack.shift(); - return this.token; - } - this.next = ""; - return [{type: "text", value: indent}]; - }, - next: "" - }, { - token: "string", - regex: /.+/, - onMatch: function(value, state, stack, line) { - var indent = stack[2][0]; - var language = stack[2][1]; - var embedState = stack[1]; - - if (modes[language]) { - var data = modes[language].getTokenizer().getLineTokens(line.slice(indent.length), embedState.slice(0)); - stack[1] = data.state; - return data.tokens; - } - return this.token; - } - }] - }, - { - token: 'constant.begin.javascript.filter.slim', - regex: '^(\\s*)():$' - }, { - token: 'constant.begin..filter.slim', - regex: '^(\\s*)(ruby):$' - }, { - token: 'constant.begin.coffeescript.filter.slim', - regex: '^(\\s*)():$' - }, { - token: 'constant.begin..filter.slim', - regex: '^(\\s*)(markdown):$' - }, { - token: 'constant.begin.css.filter.slim', - regex: '^(\\s*)():$' - }, { - token: 'constant.begin.scss.filter.slim', - regex: '^(\\s*)():$' - }, { - token: 'constant.begin..filter.slim', - regex: '^(\\s*)(sass):$' - }, { - token: 'constant.begin..filter.slim', - regex: '^(\\s*)(less):$' - }, { - token: 'constant.begin..filter.slim', - regex: '^(\\s*)(erb):$' - }, { - token: 'keyword.html.tags.slim', - regex: '^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b' - - }, { - token: 'keyword.slim', - regex: '^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)' - }, { - token: "string", - regex: /^(\s*)('|\||\/|(\/!))\s*/, - onMatch: function(val, state, stack, line) { - var indent = /^\s*/.exec(line)[0]; - if (stack.length < 1) { - stack.push(this.next); - } - else { - stack[0] = "mlString"; - } - - if (stack.length < 2) { - stack.push(indent.length); - } - else { - stack[1] = indent.length; - } - return this.token; - }, - next: "mlString" - }, { - token: 'keyword.control.slim', - regex: '^(\\s*)(\\-|==|=)', - push: [{ - token: 'control.end.slim', - regex: '$', - next: "pop" - }, { - include: "rubyline" - }, { - include: "misc" - }] - - }, { - token: 'paren', - regex: '\\(', - push: [{ - token: 'paren', - regex: '\\)', - next: "pop" - }, { - include: "misc" - }] - - }, { - token: 'paren', - regex: '\\[', - push: [{ - token: 'paren', - regex: '\\]', - next: "pop" - }, { - include: "misc" - }] - }, { - include: "misc" - } - ], - "mlString": [{ - token: "indent", - regex: /^\s*/, - onMatch: function(val, state, stack) { - var curIndent = stack[1]; - - if (curIndent >= val.length) { - this.next = "start"; - stack.splice(0); - } - else { - this.next = "mlString"; - } - return this.token; - }, - next: "start" - }, { - defaultToken: "string" - }], - "rubyline": [{ - token: "keyword.operator.ruby.embedded.slim", - regex: "(==|=)(<>|><|<'|'<|<|>)?|-" - }, { - token: "list.ruby.operators.slim", - regex: "(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b" - }, { - token: "string", - regex: "['](.)*?[']" - }, { - token: "string", - regex: "[\"](.)*?[\"]" - }], - "misc": [{ - token: 'class.variable.slim', - regex: '\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b' - }, { - token: "list.meta.slim", - regex: "(\\b)(true|false|nil)(\\b)" - }, { - token: 'keyword.operator.equals.slim', - regex: '=' - }, { - token: "string", - regex: "['](.)*?[']" - }, { - token: "string", - regex: "[\"](.)*?[\"]" - }] - }; - this.normalizeRules(); -}; - - -oop.inherits(SlimHighlightRules, TextHighlightRules); - -exports.SlimHighlightRules = SlimHighlightRules; -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var modes = require("../config").$modes; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -}; - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - var codeBlockStartRule = { - token : "support.function", - regex : /^\s*(```+[^`]*|~~~+[^~]*)$/, - onMatch: function(value, state, stack, line) { - var m = value.match(/^(\s*)([`~]+)(.*)/); - var language = /[\w-]+|$/.exec(m[3])[0]; - if (!modes[language]) - language = ""; - stack.unshift("githubblock", [], [m[1], m[2], language], state); - return this.token; - }, - next : "githubblock" - }; - var codeBlockRules = [{ - token : "support.function", - regex : ".*", - onMatch: function(value, state, stack, line) { - var embedState = stack[1]; - var indent = stack[2][0]; - var endMarker = stack[2][1]; - var language = stack[2][2]; - - var m = /^(\s*)(`+|~+)\s*$/.exec(value); - if ( - m && m[1].length < indent.length + 3 - && m[2].length >= endMarker.length && m[2][0] == endMarker[0] - ) { - stack.splice(0, 3); - this.next = stack.shift(); - return this.token; - } - this.next = ""; - if (language && modes[language]) { - var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); - stack[1] = data.state; - return data.tokens; - } - return this.token; - } - }]; - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s|$)/, - next : "header" - }, - codeBlockStartRule, - { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\!?\\[)(" + // [ - escaped("]") + // link text or alt text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, - codeBlockStartRule, - { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : codeBlockRules - }); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return ""; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) == "start") - return "end"; - return "start"; - } - - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) !== "start") { - while (++row < maxRow) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(startRow, startColumn, row, 0); - } else { - while (row -- > 0) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(row, line.length, startRow, 0); - } - } - - var token; - function isHeading(row) { - token = session.getTokens(row)[0]; - return token && token.type.lastIndexOf(heading, 0) === 0; - } - - var heading = "markup.heading"; - function getLevel() { - var ch = token.value[0]; - if (ch == "=") return 6; - if (ch == "-") return 5; - return 7 - token.value.search(/[^#]|$/); - } - - if (isHeading(row)) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (!isHeading(row)) - continue; - var level = getLevel(); - if (level >= startHeadingLevel) - break; - } - - endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); - - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; - var variable = "(?:" + variableName + "(?==))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ - }, { - include : "variables" - }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` - }, { - token : "string.end", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], - variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { - this.HighlightRules = ShHighlightRules; - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/sh"; - this.snippetFileId = "ace/snippets/sh"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var XmlMode = require("./xml").Mode; -var HtmlMode = require("./html").Mode; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var MarkdownFoldMode = require("./folding/markdown").FoldMode; - -var Mode = function() { - this.HighlightRules = MarkdownHighlightRules; - - this.createModeDelegates({ - javascript: require("./javascript").Mode, - html: require("./html").Mode, - bash: require("./sh").Mode, - sh: require("./sh").Mode, - xml: require("./xml").Mode, - css: require("./css").Mode - }); - - this.foldingRules = new MarkdownFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.blockComment = {start: ""}; - this.$quotes = {'"': '"', "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "listblock") { - var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); - if (!match) - return ""; - var marker = match[2]; - if (!marker) - marker = parseInt(match[3], 10) + 1 + "."; - return match[1] + marker + match[4]; - } else { - return this.$getIndent(line); - } - }; - this.$id = "ace/mode/markdown"; - this.snippetFileId = "ace/snippets/markdown"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes|yield|export|import|default" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|function|var|void|with|enum|implements|" + - "interface|let|package|private|protected|public|static" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift() || ""; - if (this.next.indexOf("string") != -1) - return "paren.string"; - } - return "paren"; - } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\.{1,3}" - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" - }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" - }, { - token : "string.regex", - regex : "\\S+" - }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" - }, { - defaultToken : "comment" - }] - }; - this.normalizeRules(); - } - - exports.CoffeeHighlightRules = CoffeeHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; -var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var FoldMode = require("./folding/coffee").FoldMode; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); - -function Mode() { - this.HighlightRules = Rules; - this.$outdent = new Outdent(); - this.foldingRules = new FoldMode(); -} - -oop.inherits(Mode, TextMode); - -(function() { - var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; - - this.lineCommentStart = "#"; - this.blockComment = {start: "###", end: "###"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && - state === 'start' && indenter.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/coffee"; - this.snippetFileId = "ace/snippets/coffee"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap(CssHighlightRules.supportType.split("|")); - - var functions = lang.arrayToMap( - ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + - "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + - "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + - "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") - ); - - var constants = lang.arrayToMap(CssHighlightRules.supportConstant.split("|")); - - var colors = lang.arrayToMap(CssHighlightRules.supportConstantColor.split("|")); - - var keywords = lang.arrayToMap( - ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") - ); - - var tags = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", - regex : numRe + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : function(value) { - if (properties.hasOwnProperty(value.toLowerCase())) - return "support.type"; - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (constants.hasOwnProperty(value)) - return "constant.language"; - else if (functions.hasOwnProperty(value)) - return "support.function"; - else if (colors.hasOwnProperty(value.toLowerCase())) - return "support.constant.color"; - else if (tags.hasOwnProperty(value.toLowerCase())) - return "variable.language"; - else - return "text"; - }, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token : "variable", - regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CssCompletions = require("./css_completions").CssCompletions; - - -var Mode = function() { - this.HighlightRules = ScssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - - this.$id = "ace/mode/scss"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; - -var SassHighlightRules = function() { - ScssHighlightRules.call(this); - var start = this.$rules.start; - if (start[1].token == "comment") { - start.splice(1, 1, { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, -1, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\*/, - next: "comment" - }, { - token: "error.invalid", - regex: "/\\*|[{;}]" - }, { - token: "support.type", - regex: /^\s*:[\w\-]+\s/ - }); - - this.$rules.comment = [ - {regex: /^\s*/, onMatch: function(value, currentState, stack) { - if (stack[1] === -1) - stack[1] = Math.max(stack[2], value.length - 1); - if (value.length <= stack[1]) {stack.shift();stack.shift();stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ]; - } -}; - -oop.inherits(SassHighlightRules, ScssHighlightRules); - -exports.SassHighlightRules = SassHighlightRules; - -}); - -ace.define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = SassHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/sass"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require('./css_highlight_rules'); - -var LessHighlightRules = function() { - - - var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + - "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + - "or|and|when|not"; - - var keywords = keywordList.split('|'); - - var properties = CssHighlightRules.supportType.split('|'); - - var keywordMapper = this.createKeywordMapper({ - "support.constant": CssHighlightRules.supportConstant, - "keyword": keywordList, - "support.constant.color": CssHighlightRules.supportConstantColor, - "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "identifier", true); - - var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : ["support.function", "paren.lparen", "string", "paren.rparen"], - regex : "(url)(\\()(.*)(\\))" - }, { - token : ["support.function", "paren.lparen"], - regex : "(:extend|[a-z0-9_\\-]+)(\\()" - }, { - token : function(value) { - if (keywords.indexOf(value.toLowerCase()) > -1) - return "keyword"; - else - return "variable"; - }, - regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" - }, { - token : "variable", - regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" - }, { - token : function(first, second) { - if(properties.indexOf(first.toLowerCase()) > -1) { - return ["support.type.property", "text"]; - } - else { - return ["support.type.unknownProperty", "text"]; - } - }, - regex : "([a-z0-9-_]+)(\\s*:)" - }, { - token : "keyword", - regex : "&" // special case - always treat as keyword - }, { - token : keywordMapper, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" - }, { - token: "variable.language", - regex: "#[a-z0-9-_]+" - }, { - token: "variable.language", - regex: "\\.[a-z0-9-_]+" - }, { - token: "variable.language", - regex: ":[a-z_][a-z0-9-_]*" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - token : "keyword.operator", - regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ] - }; - this.normalizeRules(); -}; - -oop.inherits(LessHighlightRules, TextHighlightRules); - -exports.LessHighlightRules = LessHighlightRules; - -}); - -ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CssCompletions = require("./css_completions").CssCompletions; - -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = LessHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions("ruleset", session, pos, prefix); - }; - - this.$id = "ace/mode/less"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericBinary = exports.constantNumericBinary = { - token: "constant.numeric", - regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ -}; - -var constantNumericDecimal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ -}; - -var constantNumericOctal = exports.constantNumericDecimal = { - token: "constant.numeric", - regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ -}; - -var constantNumericRational = exports.constantNumericRational = { - token: "constant.numeric", //rational + complex - regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ -}; - -var constantNumericComplex = exports.constantNumericComplex = { - token: "constant.numeric", //simple complex numbers - regex: /\b([\d]i)\b/ -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float + complex - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" -}; - -var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + - "private_class_method|remove_method|undef_method" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; - - var closeParen = { - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "^": "^", - "|": "|", - "%": "%" - }; - - this.$rules = { - "start": [ - { - token: "comment", - regex: "#.*$" - }, { - token: "comment.multiline", // multi line comment - regex: "^=begin(?=$|\\s.*$)", - next: "comment" - }, { - token: "string.regexp", - regex: /[/](?=.*\/)/, - next: "regex" - }, - - [{ - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(")/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /"/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedChars - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: ["constant.other.symbol.ruby", "string.start"], - regex: /(:)?(')/, - push: [{ - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "string.end", - regex: /'/, - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token: "string.start",//doesn't see any differences between strings and array of strings in highlighting - regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithoutInterpolation"; - return this.token; - } - }, { - token: "string.start", //doesn't see any differences between strings and array of strings in highlighting - regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "qStateWithInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithoutInterpolation"; - return this.token; - } - }, { - token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting - regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "sStateWithInterpolation"; - return this.token; - } - }, { - token: "string.regexp", - regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { - if (stack.length) - stack = []; - var paren = val[val.length - 1]; - stack.unshift(paren, state); - this.next = "rState"; - return this.token; - } - }], - - { - token: "punctuation", // namespaces aren't symbols - regex: "::" - }, - instanceVariable, - { - token: "variable.global", // global variable - regex: "[$][a-zA-Z_\\d]+" - }, { - token: "support.class", // class name - regex: "[A-Z][a-zA-Z_\\d]*" - }, { - token: ["punctuation.operator", "support.function"], - regex: /(\.)([a-zA-Z_\d]+)(?=\()/ - }, { - token: ["punctuation.operator", "identifier"], - regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ - }, { - token: "string.character", - regex: "\\B\\?(?:" + escapedChars + "|\\S)" - }, { - token: "punctuation.operator", - regex: /\?(?=.+:)/ - }, - - constantNumericRational, - constantNumericComplex, - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - constantNumericBinary, - constantNumericDecimal, - constantNumericOctal, - { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "punctuation.separator.key-value", - regex: "=>" - }, { - stateName: "heredoc", - onMatch: function (value, currentState, stack) { - var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type: "constant", value: tokens[1]}, - {type: "string", value: tokens[2]}, - {type: "support.class", value: tokens[3]}, - {type: "string", value: tokens[4]} - ]; - }, - regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex: "$", - token: "empty", - next: function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]", - onMatch: function(value, currentState, stack) { - this.next = ''; - if (value == "}" && stack.length > 1 && stack[1] != "start") { - stack.shift(); - this.next = stack.shift(); - } - return this.token; - } - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/ - } - ], - "comment": [ - { - token: "comment.multiline", // closing comment - regex: "^=end(?=$|\\s.*$)", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - } - ], - "qStateWithInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "qStateWithoutInterpolation": [{ - token: "string.start",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "string"; - } - }, { - token: "constant.language.escape", - regex: /\\['\\]/ - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "string.end", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "string"; - } - }, { - defaultToken: "string" - }], - "sStateWithoutInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "sStateWithInterpolation": [{ - token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.other.symbol.ruby"; - } - }, { - token: "constant.language.escape", - regex: escapedChars - }, { - token: "constant.language.escape", - regex: /\\./ - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "constant.other.symbol.ruby", - regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { - if (stack.length && val === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.other.symbol.ruby"; - } - }, { - defaultToken: "constant.other.symbol.ruby" - }], - "rState": [{ - token: "string.regexp",// excluded nested |^% due to difficulty in realization - regex: /[(\[<{]/, onMatch: function (val, state, stack) { - if (stack.length && val === stack[0]) { - stack.unshift(val, state); - return this.token; - } - return "constant.language.escape"; - } - }, { - token: "paren.start", - regex: /#{/, - push: "start" - }, { - token: "string.regexp", - regex: /\// - }, { - token: "string.regexp", - regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { - if (stack.length && val[0] === closeParen[stack[0]]) { - stack.shift(); - this.next = stack.shift(); - return this.token; - } - this.next = ''; - return "constant.language.escape"; - } - }, - {include: "regex"}, - { - defaultToken: "string.regexp" - }], - "regex": [ - {// character classes - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "constant.language.escape", - regex: /\\[AGbBzZ]/ - }, { - token: "constant.language.escape", - regex: /\\g<[a-zA-Z0-9]*>/ - }, { - token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], - regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ - }, { - token: ["constant.language.escape", "invalid", "constant.language.escape"], - regex: /(\\p{\^?)([^/]*)(})/ - }, {// escapes - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, {// flag - token: "string.regexp", - regex: /[/][imxouesn]*/, - next: "start" - }, {// invalid operators - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, {// operators - token: "constant.language.escape", - regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "regexp.keyword", - regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - push: "regex_character_class" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword", - regex: /\\[wWdDhHsS]/ - }, { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: /&?&?\[\^?/, - push: "regex_character_class" - }, { - token: "constant.language.escape", - regex: "]", - next: "pop" - }, { - token: "constant.language.escape", - regex: "-" - }, { - defaultToken: "string.regexp.characterclass" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function () { -}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function () { - this.indentKeywords = { - "class": 1, - "def": 1, - "module": 1, - "do": 1, - "unless": 1, - "if": 1, - "while": 1, - "for": 1, - "until": 1, - "begin": 1, - "else": 0, - "elsif": 0, - "rescue": 0, - "ensure": 0, - "when": 0, - "end": -1, - "case": 1, - "=begin": 1, - "=end": -1 - }; - - this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; - this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; - - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1]) { - if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { - if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { - return; - } - if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { - return; - } - } - - if (match[1] == "when") { - if (/\sthen\s/.test(line) === true) { - return; - } - } - if (session.getTokenAt(row, match.index + 2).type === "keyword") - return "start"; - } else if (match[3]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1] || match[3]) - return this.rubyBlock(session, row, match.index + 2); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[3] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.rubyBlock(session, row, match.index + 1); - } - - if (match[1] === "=end") { - if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") - return this.rubyBlock(session, row, match.index + 1); - } - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.rubyBlock = function (session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - - var token = stream.getCurrentToken(); - if (!token || (token.type != "keyword" && token.type != "comment.multiline")) - return; - - var val = token.value; - var line = session.getLine(row); - switch (token.value) { - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - return; - } - var dir = this.indentKeywords[val]; - break; - case "when": - if (/\sthen\s/.test(line)) { - return; - } - case "elsif": - case "rescue": - case "ensure": - var dir = 1; - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line)) { - return; - } - var dir = 1; - break; - default: - var dir = this.indentKeywords[val]; - break; - } - - var stack = [val]; - if (!dir) - return; - - var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; - var startRow = row; - var ranges = []; - ranges.push(stream.getCurrentTokenRange()); - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - if (token.type == "comment.multiline") { - while (token = stream.step()) { - if (token.type !== "comment.multiline") - continue; - if (dir == 1) { - startColumn = 6; - if (token.value == "=end") { - break; - } - } else { - if (token.value == "=begin") { - break; - } - } - } - } else { - while (token = stream.step()) { - var ignore = false; - if (token.type !== "keyword") - continue; - var level = dir * this.indentKeywords[token.value]; - line = session.getLine(stream.getCurrentTokenRow()); - switch (token.value) { - case "do": - for (var i = stream.$tokenIndex - 1; i >= 0; i--) { - var prevToken = stream.$rowTokens[i]; - if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { - level = 0; - break; - } - } - break; - case "else": - var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); - if (!checkToken.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - case "if": - case "unless": - case "while": - case "until": - var checkToken = new RegExp("^\\s*" + token.value); - if (!checkToken.test(line)) { - level = 0; - ignore = true; - } - break; - case "when": - if (/\sthen\s/.test(line) || val == "case") { - level = 0; - ignore = true; - } - break; - } - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0 && ignore === false) { - stack.shift(); - if (!stack.length) { - if ((val == "while" || val == "until" || val == "for") && token.value != "do") { - break; - } - if (token.value == "do" && dir == -1 && level != 0) - break; - if (token.value != "do") - break; - } - - if (level === 0) { - stack.unshift(token.value); - } - } - } - } - - if (!token) - return null; - - if (tokenRange) { - ranges.push(stream.getCurrentTokenRange()); - return ranges; - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) { - if (token.type === "comment.multiline") { - var endColumn = 6; - } else { - var endColumn = session.getLine(row).length; - } - return new Range(row, endColumn, startRow - 1, startColumn); - } else - return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/ruby").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new FoldMode(); - this.indentKeywords = this.foldingRules.indentKeywords; -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - if (/}/.test(line)) - return this.$outdent.autoOutdent(session, row); - var indent = this.$getIndent(line); - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine); - var tab = session.getTabString(); - if (prevIndent.length <= indent.length) { - if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length - tab.length, row, indent.length)); - } - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - - var startToken = session.getTokenAt(row, column); - if (startToken && startToken.value in this.indentKeywords) - return this.foldingRules.rubyBlock(session, row, column, true); - }; - - this.$id = "ace/mode/ruby"; - this.snippetFileId = "ace/snippets/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/slim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/slim_highlight_rules","ace/mode/javascript","ace/mode/markdown","ace/mode/coffee","ace/mode/scss","ace/mode/sass","ace/mode/less","ace/mode/ruby","ace/mode/css"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SlimHighlightRules = require("./slim_highlight_rules").SlimHighlightRules; - -var Mode = function() { - TextMode.call(this); - this.HighlightRules = SlimHighlightRules; - this.createModeDelegates({ - javascript: require("./javascript").Mode, - markdown: require("./markdown").Mode, - coffee: require("./coffee").Mode, - scss: require("./scss").Mode, - sass: require("./sass").Mode, - less: require("./less").Mode, - ruby: require("./ruby").Mode, - css: require("./css").Mode - }); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/slim"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/slim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-smarty.js b/src-noconflict/mode-smarty.js deleted file mode 100644 index 08303ca..0000000 --- a/src-noconflict/mode-smarty.js +++ /dev/null @@ -1,2635 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var SmartyHighlightRules = function() { - HtmlHighlightRules.call(this); - var smartyRules = { start: - [ { include: '#comments' }, - { include: '#blocks' } ], - '#blocks': - [ { token: 'punctuation.section.embedded.begin.smarty', - regex: '\\{%?', - push: - [ { token: 'punctuation.section.embedded.end.smarty', - regex: '%?\\}', - next: 'pop' }, - { include: '#strings' }, - { include: '#variables' }, - { include: '#lang' }, - { defaultToken: 'source.smarty' } ] } ], - '#comments': - [ { token: - [ 'punctuation.definition.comment.smarty', - 'comment.block.smarty' ], - regex: '(\\{%?)(\\*)', - push: - [ { token: 'comment.block.smarty', regex: '\\*%?\\}', next: 'pop' }, - { defaultToken: 'comment.block.smarty' } ] } ], - '#lang': - [ { token: 'keyword.operator.smarty', - regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b' }, - { token: 'constant.language.smarty', - regex: '\\b(?:TRUE|FALSE|true|false)\\b' }, - { token: 'keyword.control.smarty', - regex: '\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b' }, - { token: 'variable.parameter.smarty', regex: '\\b[a-zA-Z]+=' }, - { token: 'support.function.built-in.smarty', - regex: '\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b' }, - { token: 'support.function.variable-modifier.smarty', - regex: '\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' } ], - '#strings': - [ { token: 'punctuation.definition.string.begin.smarty', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.smarty', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.smarty', regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.smarty' } ] }, - { token: 'punctuation.definition.string.begin.smarty', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.smarty', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.smarty', regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.smarty' } ] } ], - '#variables': - [ { token: - [ 'punctuation.definition.variable.smarty', - 'variable.other.global.smarty' ], - regex: '\\b(\\$)(Smarty\\.)' }, - { token: - [ 'punctuation.definition.variable.smarty', - 'variable.other.smarty' ], - regex: '(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, - { token: [ 'keyword.operator.smarty', 'variable.other.property.smarty' ], - regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, - { token: - [ 'keyword.operator.smarty', - 'meta.function-call.object.smarty', - 'punctuation.definition.variable.smarty', - 'variable.other.smarty', - 'punctuation.definition.variable.smarty' ], - regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))' } ] }; - - var smartyStart = smartyRules.start; - - for (var rule in this.$rules) { - this.$rules[rule].unshift.apply(this.$rules[rule], smartyStart); - } - - Object.keys(smartyRules).forEach(function(x) { - if (!this.$rules[x]) - this.$rules[x] = smartyRules[x]; - }, this); - - this.normalizeRules(); -}; - -SmartyHighlightRules.metaData = { fileTypes: [ 'tpl' ], - foldingStartMarker: '\\{%?', - foldingStopMarker: '%?\\}', - name: 'Smarty', - scopeName: 'text.html.smarty' }; - - -oop.inherits(SmartyHighlightRules, HtmlHighlightRules); - -exports.SmartyHighlightRules = SmartyHighlightRules; -}); - -ace.define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"], function(require, exports, module) { - "use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var SmartyHighlightRules = require("./smarty_highlight_rules").SmartyHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = SmartyHighlightRules; -}; - -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/smarty"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/smarty"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-smithy.js b/src-noconflict/mode-smithy.js deleted file mode 100644 index 2cb0247..0000000 --- a/src-noconflict/mode-smithy.js +++ /dev/null @@ -1,507 +0,0 @@ -ace.define("ace/mode/smithy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SmithyHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#comment" - }, { - token: [ - "meta.keyword.statement.smithy", - "variable.other.smithy", - "text", - "keyword.operator.smithy" - ], - regex: /^(\$)(\s+.+)(\s*)(=)/ - }, { - token: [ - "keyword.statement.smithy", - "text", - "entity.name.type.namespace.smithy" - ], - regex: /^(namespace)(\s+)([A-Z-a-z0-9_\.#$-]+)/ - }, { - token: [ - "keyword.statement.smithy", - "text", - "keyword.statement.smithy", - "text", - "entity.name.type.smithy" - ], - regex: /^(use)(\s+)(shape|trait)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ - }, { - token: [ - "keyword.statement.smithy", - "variable.other.smithy", - "text", - "keyword.operator.smithy" - ], - regex: /^(metadata)(\s+.+)(\s*)(=)/ - }, { - token: [ - "keyword.statement.smithy", - "text", - "entity.name.type.smithy" - ], - regex: /^(apply|byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|service|resource|trait|list|map|set|structure|union|document)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ - }, { - token: [ - "keyword.operator.smithy", - "text", - "entity.name.type.smithy", - "text", - "text", - "support.function.smithy", - "text", - "text", - "support.function.smithy" - ], - regex: /^(operation)(\s+)([A-Z-a-z0-9_\.#$-]+)(\(.*\))(?:(\s*)(->)(\s*[A-Z-a-z0-9_\.#$-]+))?(?:(\s+)(errors))?/ - }, { - include: "#trait" - }, { - token: [ - "support.type.property-name.smithy", - "punctuation.separator.dictionary.pair.smithy" - ], - regex: /([A-Z-a-z0-9_\.#$-]+)(:)/ - }, { - include: "#value" - }, { - token: "keyword.other.smithy", - regex: /\->/ - }], - "#comment": [{ - include: "#doc_comment" - }, { - include: "#line_comment" - }], - "#doc_comment": [{ - token: "comment.block.documentation.smithy", - regex: /\/\/\/.*/ - }], - "#line_comment": [{ - token: "comment.line.double-slash.smithy", - regex: /\/\/.*/ - }], - "#trait": [{ - token: [ - "punctuation.definition.annotation.smithy", - "storage.type.annotation.smithy" - ], - regex: /(@)([0-9a-zA-Z\.#-]+)/ - }, { - token: [ - "punctuation.definition.annotation.smithy", - "punctuation.definition.object.end.smithy", - "meta.structure.smithy" - ], - regex: /(@)([0-9a-zA-Z\.#-]+)(\()/, - push: [{ - token: "punctuation.definition.object.end.smithy", - regex: /\)/, - next: "pop" - }, { - include: "#value" - }, { - include: "#object_inner" - }, { - defaultToken: "meta.structure.smithy" - }] - }], - "#value": [{ - include: "#constant" - }, { - include: "#number" - }, { - include: "#string" - }, { - include: "#array" - }, { - include: "#object" - }], - "#array": [{ - token: "punctuation.definition.array.begin.smithy", - regex: /\[/, - push: [{ - token: "punctuation.definition.array.end.smithy", - regex: /\]/, - next: "pop" - }, { - include: "#comment" - }, { - include: "#value" - }, { - token: "punctuation.separator.array.smithy", - regex: /,/ - }, { - token: "invalid.illegal.expected-array-separator.smithy", - regex: /[^\s\]]/ - }, { - defaultToken: "meta.structure.array.smithy" - }] - }], - "#constant": [{ - token: "constant.language.smithy", - regex: /\b(?:true|false|null)\b/ - }], - "#number": [{ - token: "constant.numeric.smithy", - regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/ - }], - "#object": [{ - token: "punctuation.definition.dictionary.begin.smithy", - regex: /\{/, - push: [{ - token: "punctuation.definition.dictionary.end.smithy", - regex: /\}/, - next: "pop" - }, { - include: "#trait" - }, { - include: "#object_inner" - }, { - defaultToken: "meta.structure.dictionary.smithy" - }] - }], - "#object_inner": [{ - include: "#comment" - }, { - include: "#string_key" - }, { - token: "punctuation.separator.dictionary.key-value.smithy", - regex: /:/, - push: [{ - token: "punctuation.separator.dictionary.pair.smithy", - regex: /,|(?=\})/, - next: "pop" - }, { - include: "#value" - }, { - token: "invalid.illegal.expected-dictionary-separator.smithy", - regex: /[^\s,]/ - }, { - defaultToken: "meta.structure.dictionary.value.smithy" - }] - }, { - token: "invalid.illegal.expected-dictionary-separator.smithy", - regex: /[^\s\}]/ - }], - "#string_key": [{ - include: "#identifier_key" - }, { - include: "#dquote_key" - }, { - include: "#squote_key" - }], - "#identifier_key": [{ - token: "support.type.property-name.smithy", - regex: /[A-Z-a-z0-9_\.#$-]+/ - }], - "#dquote_key": [{ - include: "#dquote" - }], - "#squote_key": [{ - include: "#squote" - }], - "#string": [{ - include: "#textblock" - }, { - include: "#dquote" - }, { - include: "#squote" - }, { - include: "#identifier" - }], - "#textblock": [{ - token: "punctuation.definition.string.begin.smithy", - regex: /"""/, - push: [{ - token: "punctuation.definition.string.end.smithy", - regex: /"""/, - next: "pop" - }, { - token: "constant.character.escape.smithy", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.smithy" - }] - }], - "#dquote": [{ - token: "punctuation.definition.string.begin.smithy", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.smithy", - regex: /"/, - next: "pop" - }, { - token: "constant.character.escape.smithy", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.smithy" - }] - }], - "#squote": [{ - token: "punctuation.definition.string.begin.smithy", - regex: /'/, - push: [{ - token: "punctuation.definition.string.end.smithy", - regex: /'/, - next: "pop" - }, { - token: "constant.character.escape.smithy", - regex: /\\./ - }, { - defaultToken: "string.quoted.single.smithy" - }] - }], - "#identifier": [{ - token: "storage.type.smithy", - regex: /[A-Z-a-z_][A-Z-a-z0-9_\.#$-]*/ - }] - }; - - this.normalizeRules(); -}; - -SmithyHighlightRules.metaData = { - name: "Smithy", - fileTypes: ["smithy"], - scopeName: "source.smithy", - foldingStartMarker: "(\\{|\\[)\\s*", - foldingStopMarker: "\\s*(\\}|\\])" -}; - - -oop.inherits(SmithyHighlightRules, TextHighlightRules); - -exports.SmithyHighlightRules = SmithyHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/smithy",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/smithy_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SmithyHighlightRules = require("./smithy_highlight_rules").SmithyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = SmithyHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$quotes = {'"': '"'}; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/smithy"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/smithy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-snippets.js b/src-noconflict/mode-snippets.js deleted file mode 100644 index 8c7678c..0000000 --- a/src-noconflict/mode-snippets.js +++ /dev/null @@ -1,207 +0,0 @@ -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SnippetHighlightRules = function() { - - var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + - "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; - - this.$rules = { - "start" : [ - {token:"constant.language.escape", regex: /\\[\$}`\\]/}, - {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\$\\w+"}, - {onMatch: function(value, state, stack) { - if (stack[1]) - stack[1]++; - else - stack.unshift(state, 1); - return this.tokenName; - }, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, - {onMatch: function(value, state, stack) { - if (!stack[1]) - return "text"; - stack[1]--; - if (!stack[1]) - stack.splice(0,2); - return this.tokenName; - }, tokenName: "markup.list", regex: "}"}, - {token: "doc.comment", regex:/^\${2}-{5,}$/} - ], - "varDecl" : [ - {regex: /\d+\b/, token: "constant.numeric"}, - {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\w+"}, - {regex: /:/, token: "punctuation.operator", next: "start"}, - {regex: /\//, token: "string.regex", next: "regexp"}, - {regex: "", next: "start"} - ], - "regexp" : [ - {regex: /\\./, token: "escape"}, - {regex: /\[/, token: "regex.start", next: "charClass"}, - {regex: "/", token: "string.regex", next: "format"}, - {"token": "string.regex", regex:"."} - ], - charClass : [ - {regex: "\\.", token: "escape"}, - {regex: "\\]", token: "regex.end", next: "regexp"}, - {"token": "string.regex", regex:"."} - ], - "format" : [ - {regex: /\\[ulULE]/, token: "keyword"}, - {regex: /\$\d+/, token: "variable"}, - {regex: "/[gim]*:?", token: "string.regex", next: "start"}, - {"token": "string", regex:"."} - ] - }; -}; -oop.inherits(SnippetHighlightRules, TextHighlightRules); - -exports.SnippetHighlightRules = SnippetHighlightRules; - -var SnippetGroupHighlightRules = function() { - this.$rules = { - "start" : [ - {token: "text", regex: "^\\t", next: "sn-start"}, - {token:"invalid", regex: /^ \s*/}, - {token:"comment", regex: /^#.*/}, - {token:"constant.language.escape", regex: "^regex ", next: "regex"}, - {token:"constant.language.escape", regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"} - ], - "regex" : [ - {token:"text", regex: "\\."}, - {token:"keyword", regex: "/"}, - {token:"empty", regex: "$", next: "start"} - ] - }; - this.embedRules(SnippetHighlightRules, "sn-", [ - {token: "text", regex: "^\\t", next: "sn-start"}, - {onMatch: function(value, state, stack) { - stack.splice(stack.length); - return this.tokenName; - }, tokenName: "text", regex: "^(?!\t)", next: "start"} - ]); - -}; - -oop.inherits(SnippetGroupHighlightRules, TextHighlightRules); - -exports.SnippetGroupHighlightRules = SnippetGroupHighlightRules; - -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = SnippetGroupHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$indentWithTabs = true; - this.lineCommentStart = "#"; - this.$id = "ace/mode/snippets"; - this.snippetFileId = "ace/snippets/snippets"; -}).call(Mode.prototype); -exports.Mode = Mode; - - -}); (function() { - ace.require(["ace/mode/snippets"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-soy_template.js b/src-noconflict/mode-soy_template.js deleted file mode 100644 index b09a420..0000000 --- a/src-noconflict/mode-soy_template.js +++ /dev/null @@ -1,2848 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var SoyTemplateHighlightRules = function() { - HtmlHighlightRules.call(this); - - var soyRules = { start: - [ { include: '#template' }, - { include: '#if' }, - { include: '#comment-line' }, - { include: '#comment-block' }, - { include: '#comment-doc' }, - { include: '#call' }, - { include: '#css' }, - { include: '#param' }, - { include: '#print' }, - { include: '#msg' }, - { include: '#for' }, - { include: '#foreach' }, - { include: '#switch' }, - { include: '#tag' }, - { include: 'text.html.basic' } ], - '#call': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.call.soy' ], - regex: '(\\{/?)(\\s*)(?=call|delcall)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: ['entity.name.tag.soy', 'variable.parameter.soy'], - regex: '(call|delcall)(\\s+[\\.\\w]+)'}, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(data)(\\s*)(=)' }, - { defaultToken: 'meta.tag.call.soy' } ] } ], - '#comment-line': - [ { token: - [ 'comment.line.double-slash.soy', - 'comment.line.double-slash.soy' ], - regex: '(//)(.*$)' } ], - '#comment-block': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*(?!\\*)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.soy' } ] } ], - '#comment-doc': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*\\*(?!/)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { token: [ 'support.type.soy', 'text', 'variable.parameter.soy' ], - regex: '(@param|@param\\?)(\\s+)(\\w+)' }, - { defaultToken: 'comment.block.documentation.soy' } ] } ], - '#css': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.css.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(css)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'support.constant.soy', - regex: '\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b' }, - { defaultToken: 'meta.tag.css.soy' } ] } ], - '#for': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.for.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(for)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { token: 'support.function.soy', regex: '\\brange\\b' }, - { include: '#variable' }, - { include: '#number' }, - { include: '#primitive' }, - { defaultToken: 'meta.tag.for.soy' } ] } ], - '#foreach': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.foreach.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(foreach)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { include: '#variable' }, - { defaultToken: 'meta.tag.foreach.soy' } ] } ], - '#function': - [ { token: 'support.function.soy', - regex: '\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b' } ], - '#if': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.if.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(if|elseif)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#operator' }, - { include: '#function' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.if.soy' } ] } ], - '#namespace': - [ { token: [ 'entity.name.tag.soy', 'text', 'variable.parameter.soy' ], - regex: '(namespace|delpackage)(\\s+)([\\w\\.]+)' } ], - '#number': [ { token: 'constant.numeric', regex: '[\\d]+' } ], - '#operator': - [ { token: 'keyword.operator.soy', - regex: '==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:' } ], - '#param': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.param.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(param)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b([\\w]+)(\\s*)((?::)?)' }, - { defaultToken: 'meta.tag.param.soy' } ] } ], - '#primitive': - [ { token: 'constant.language.soy', - regex: '\\b(?:null|false|true)\\b' } ], - '#msg': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.msg.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(msg)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(meaning|desc)(\\s*)(=)' }, - { defaultToken: 'meta.tag.msg.soy' } ] } ], - '#print': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.print.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(print)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#print-parameter' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#attribute-lookup' }, - { defaultToken: 'meta.tag.print.soy' } ] } ], - '#print-parameter': - [ { token: 'keyword.operator.soy', regex: '\\|' }, - { token: 'variable.parameter.soy', - regex: 'noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate' } ], - '#special-character': - [ { token: 'support.constant.soy', - regex: '\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b' } ], - '#string-quoted-double': [ { token: 'string.quoted.double', regex: '"[^"]*"' } ], - '#string-quoted-single': [ { token: 'string.quoted.single', regex: '\'[^\']*\'' } ], - '#switch': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.switch.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(switch|case)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#number' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.switch.soy' } ] } ], - '#attribute-lookup': - [ { token: 'punctuation.definition.attribute-lookup.begin.soy', - regex: '\\[', - push: - [ { token: 'punctuation.definition.attribute-lookup.end.soy', - regex: '\\]', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' } ] } ], - '#tag': - [ { token: 'punctuation.definition.tag.begin.soy', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#namespace' }, - { include: '#variable' }, - { include: '#special-character' }, - { include: '#tag-simple' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#attribute-lookup' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#print-parameter' } ] } ], - '#tag-simple': - [ { token: 'entity.name.tag.soy', - regex: '{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})'} ], - '#template': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.template.soy' ], - regex: '(\\{/?)(\\s*)(?=template|deltemplate)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: ['entity.name.tag.soy', 'text', 'entity.name.function.soy' ], - regex: '(template|deltemplate)(\\s+)([\\.\\w]+)', - originalRegex: '(?<=template|deltemplate)\\s+([\\.\\w]+)' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)(\'true\'|\'false\')' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)(\'true\'|\'false\'|\'contextual\')' }, - { defaultToken: 'meta.tag.template.soy' } ] } ], - '#variable': [ { token: 'variable.other.soy', regex: '\\$[\\w\\.]+' } ] }; - - - for (var i in soyRules) { - if (this.$rules[i]) { - this.$rules[i].unshift.apply(this.$rules[i], soyRules[i]); - } else { - this.$rules[i] = soyRules[i]; - } - } - - this.normalizeRules(); -}; - -SoyTemplateHighlightRules.metaData = { comment: 'SoyTemplate', - fileTypes: [ 'soy' ], - firstLineMatch: '\\{\\s*namespace\\b', - foldingStartMarker: '\\{\\s*template\\s+[^\\}]*\\}', - foldingStopMarker: '\\{\\s*/\\s*template\\s*\\}', - name: 'SoyTemplate', - scopeName: 'source.soy' }; - - -oop.inherits(SoyTemplateHighlightRules, HtmlHighlightRules); - -exports.SoyTemplateHighlightRules = SoyTemplateHighlightRules; -}); - -ace.define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var SoyTemplateHighlightRules = require("./soy_template_highlight_rules").SoyTemplateHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = SoyTemplateHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/soy_template"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/soy_template"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-space.js b/src-noconflict/mode-space.js deleted file mode 100644 index 9c30de3..0000000 --- a/src-noconflict/mode-space.js +++ /dev/null @@ -1,167 +0,0 @@ -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SpaceHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "empty_line", - regex : / */, - next : "key" - }, - { - token : "empty_line", - regex : /$/, - next : "key" - } - ], - "key" : [ - { - token : "variable", - regex : /\S+/ - }, - { - token : "empty_line", - regex : /$/, - next : "start" - },{ - token : "keyword.operator", - regex : / /, - next : "value" - } - ], - "value" : [ - { - token : "keyword.operator", - regex : /$/, - next : "start" - }, - { - token : "string", - regex : /[^$]/ - } - ] - }; - -}; - -oop.inherits(SpaceHighlightRules, TextHighlightRules); - -exports.SpaceHighlightRules = SpaceHighlightRules; -}); - -ace.define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"], function(require, exports, module) { -"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var FoldMode = require("./folding/coffee").FoldMode; -var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules; -var Mode = function() { - this.HighlightRules = SpaceHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); -(function() { - - this.$id = "ace/mode/space"; -}).call(Mode.prototype); -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/space"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sparql.js b/src-noconflict/mode-sparql.js deleted file mode 100644 index 5cf2603..0000000 --- a/src-noconflict/mode-sparql.js +++ /dev/null @@ -1,320 +0,0 @@ -ace.define("ace/mode/sparql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SPARQLHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#comments" - }, { - include: "#strings" - }, { - include: "#string-language-suffixes" - }, { - include: "#string-datatype-suffixes" - }, { - include: "#logic-operators" - }, { - include: "#relative-urls" - }, { - include: "#xml-schema-types" - }, { - include: "#rdf-schema-types" - }, { - include: "#owl-types" - }, { - include: "#qnames" - }, { - include: "#keywords" - }, { - include: "#built-in-functions" - }, { - include: "#variables" - }, { - include: "#boolean-literal" - }, { - include: "#punctuation-operators" - }], - "#boolean-literal": [{ - token: "constant.language.boolean.sparql", - regex: /true|false/ - }], - "#built-in-functions": [{ - token: "support.function.sparql", - regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/ - }], - "#comments": [{ - token: [ - "punctuation.definition.comment.sparql", - "comment.line.hash.sparql" - ], - regex: /(#)(.*$)/ - }], - "#keywords": [{ - token: "keyword.other.sparql", - regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/ - }], - "#logic-operators": [{ - token: "keyword.operator.logical.sparql", - regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/ - }], - "#owl-types": [{ - token: "support.type.datatype.owl.sparql", - regex: /owl:[a-zA-Z]+/ - }], - "#punctuation-operators": [{ - token: "keyword.operator.punctuation.sparql", - regex: /;|,|\.|\(|\)|\{|\}|\|/ - }], - "#qnames": [{ - token: "entity.name.other.qname.sparql", - regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ - }], - "#rdf-schema-types": [{ - token: "support.type.datatype.rdf.schema.sparql", - regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ - }], - "#relative-urls": [{ - token: "string.quoted.other.relative.url.sparql", - regex: //, - next: "pop" - }, { - defaultToken: "string.quoted.other.relative.url.sparql" - }] - }], - "#string-datatype-suffixes": [{ - token: "keyword.operator.datatype.suffix.sparql", - regex: /\^\^/ - }], - "#string-language-suffixes": [{ - token: [ - "keyword.operator.language.suffix.sparql", - "constant.language.suffix.sparql" - ], - regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ - }], - "#strings": [{ - token: "string.quoted.triple.sparql", - regex: /"""/, - push: [{ - token: "string.quoted.triple.sparql", - regex: /"""/, - next: "pop" - }, { - defaultToken: "string.quoted.triple.sparql" - }] - }, { - token: "string.quoted.double.sparql", - regex: /"/, - push: [{ - token: "string.quoted.double.sparql", - regex: /"/, - next: "pop" - }, { - token: "invalid.string.newline", - regex: /$/ - }, { - token: "constant.character.escape.sparql", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.sparql" - }] - }], - "#variables": [{ - token: "variable.other.sparql", - regex: /(?:\?|\$)[-_a-zA-Z0-9]+/ - }], - "#xml-schema-types": [{ - token: "support.type.datatype.schema.sparql", - regex: /xsd?:[a-z][a-zA-Z]+/ - }] - }; - - this.normalizeRules(); -}; - -SPARQLHighlightRules.metaData = { - fileTypes: ["rq", "sparql"], - name: "SPARQL", - scopeName: "source.sparql" -}; - - -oop.inherits(SPARQLHighlightRules, TextHighlightRules); - -exports.SPARQLHighlightRules = SPARQLHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SPARQLHighlightRules = require("./sparql_highlight_rules").SPARQLHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = SPARQLHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/sparql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/sparql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sql.js b/src-noconflict/mode-sql.js deleted file mode 100644 index 2f9ea1b..0000000 --- a/src-noconflict/mode-sql.js +++ /dev/null @@ -1,271 +0,0 @@ -ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SqlHighlightRules = function() { - - var keywords = ( - "select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" + - "when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" + - "foreign|not|references|default|null|inner|cross|natural|database|drop|grant" - ); - - var builtinConstants = ( - "true|false" - ); - - var builtinFunctions = ( - "avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|" + - "coalesce|ifnull|isnull|nvl" - ); - - var dataTypes = ( - "int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + - "money|real|number|integer" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants, - "storage.type": dataTypes - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "comment", - start : "/\\*", - end : "\\*/" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "string", // ` string (apache drill) - regex : "`.*?`" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; - this.normalizeRules(); -}; - -oop.inherits(SqlHighlightRules, TextHighlightRules); - -exports.SqlHighlightRules = SqlHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/mode/folding/sql"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules; -var SqlFoldMode = require("./folding/sql").FoldMode; - -var Mode = function() { - this.HighlightRules = SqlHighlightRules; - this.foldingRules = new SqlFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/sql"; - this.snippetFileId = "ace/snippets/sql"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/sql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-sqlserver.js b/src-noconflict/mode-sqlserver.js deleted file mode 100644 index 25d255f..0000000 --- a/src-noconflict/mode-sqlserver.js +++ /dev/null @@ -1,445 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SqlServerHighlightRules = function() { - var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME"; - logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too - - - var builtinFunctions = ( - "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" + - "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" + - "DENSE_RANK|NTILE|RANK|ROW_NUMBER" + - "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" + - "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" + - "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" + - "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|" + - "CHOOSE|IIF|" + - "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" + - "@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|" + - "CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|" + - "ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|" + - "$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|" + - "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" + - "PATINDEX|TEXTPTR|TEXTVALID|" + - "COALESCE|NULLIF" - ); - var dataTypes = ("BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML"); - var builtInStoredProcedures = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool"; - var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE"; - keywords += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT"; - keywords += "|LOOP|HASH|MERGE|REMOTE"; - keywords += "|TRY|CATCH|THROW"; - keywords += "|TYPE"; - keywords = keywords.split('|'); - keywords = keywords.filter(function(value, index, self) { - return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1; - }); - keywords = keywords.sort().join('|'); - - - var keywordMapper = this.createKeywordMapper({ - "constant.language": logicalOperators, - "storage.type": dataTypes, - "support.function": builtinFunctions, - "support.storedprocedure": builtInStoredProcedures, - "keyword": keywords - }, "identifier", true); - var setStatements = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split('|'); - var isolationLevels = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split('|'); - for (var i = 0; i < isolationLevels.length; i++) { - setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]); - } - - - this.$rules = { - start: [{ - token: "string.start", - regex: "'", - next: [{ - token: "constant.language.escape", - regex: /''/ - }, { - token: "string.end", - next: "start", - regex: "'" - }, { - defaultToken: "string" - }] - }, - DocCommentHighlightRules.getStartRule("doc-start"), { - token: "comment", - regex: "--.*$" - }, { - token: "comment", - start: "/\\*", - end: "\\*/" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions - }, { - token: "constant.class", - regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*" - }, { - token: "paren.lparen", - regex: "[\\(]" - }, { - token: "paren.rparen", - regex: "[\\)]" - }, { - token: "punctuation", - regex: ",|;" - }, { - token: "text", - regex: "\\s+" - }], - comment: [ - DocCommentHighlightRules.getTagRule(), { - token: "comment", - regex: "\\*\\/", - next: "no_regex" - }, { - defaultToken: "comment", - caseInsensitive: true - }] - }; - for (var i = 0; i < setStatements.length; i++) { - this.$rules.start.unshift({ - token: "set.statement", - regex: setStatements[i] - }); - } - - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); - this.normalizeRules(); - var completions = []; - var addCompletions = function(arr, meta) { - arr.forEach(function(v) { - completions.push({ - name: v, - value: v, - score: 0, - meta: meta - }); - }); - }; - addCompletions(builtInStoredProcedures.split('|'), 'procedure'); - addCompletions(logicalOperators.split('|'), 'operator'); - addCompletions(builtinFunctions.split('|'), 'function'); - addCompletions(dataTypes.split('|'), 'type'); - addCompletions(setStatements, 'statement'); - addCompletions(keywords.split('|'), 'keyword'); - - this.completions = completions; -}; - -oop.inherits(SqlServerHighlightRules, TextHighlightRules); - -exports.SqlHighlightRules = SqlServerHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i; - this.startRegionRe = /^\s*(\/\*|--)#?region\b/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) return this.getBeginEndBlock(session, row, i, match[1]); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") range = null; - } - - return range; - } - - if (foldStyle === "markbegin") return; - return; - }; - this.getBeginEndBlock = function(session, row, column, matchSequence) { - var start = { - row: row, - column: column + matchSequence.length - }; - var maxRow = session.getLength(); - var line; - - var depth = 1; - var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth++; - else depth--; - - if (!depth) break; - } - var endRow = row; - if (endRow > start.row) { - return new Range(start.row, start.column, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules; -var SqlServerFoldMode = require("./folding/sqlserver").FoldMode; - -var Mode = function() { - this.HighlightRules = SqlServerHighlightRules; - this.foldingRules = new SqlServerFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - this.getCompletions = function(state, session, pos, prefix) { - return session.$mode.$highlightRules.completions; - }; - - this.$id = "ace/mode/sqlserver"; - this.snippetFileId = "ace/snippets/sqlserver"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/sqlserver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-stylus.js b/src-noconflict/mode-stylus.js deleted file mode 100644 index e768817..0000000 --- a/src-noconflict/mode-stylus.js +++ /dev/null @@ -1,472 +0,0 @@ -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var StylusHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.type": CssHighlightRules.supportType, - "support.function": CssHighlightRules.supportFunction, - "support.constant": CssHighlightRules.supportConstant, - "support.constant.color": CssHighlightRules.supportConstantColor, - "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "text", true); - - this.$rules = { - start: [ - { - token : "comment", - regex : /\/\/.*$/ - }, - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["entity.name.function.stylus", "text"], - regex: "^([-a-zA-Z_][-\\w]*)?(\\()" - }, - { - token: ["entity.other.attribute-name.class.stylus"], - regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" - }, - { - token: ["entity.language.stylus"], - regex: "^ *&" - }, - { - token: ["variable.language.stylus"], - regex: "(arguments)" - }, - { - token: ["keyword.stylus"], - regex: "@[-\\w]+" - }, - { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : CssHighlightRules.pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : CssHighlightRules.pseudoClasses - }, - { - token: ["entity.name.tag.stylus"], - regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" - }, - { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, - { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, - { - token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], - regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" - }, - { - token: "meta.vendor-prefix.stylus", - regex: "-webkit-|-moz\\-|-ms-|-o-" - }, - { - token: "keyword.control.stylus", - regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" - }, - { - token: "keyword.operator.stylus", - regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" - }, - { - token: "keyword.operator.stylus", - regex: "(?:in|is(?:nt)?|not)\\b" - }, - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token : "constant.numeric", - regex : CssHighlightRules.numRe - }, - { - token : "keyword", - regex : "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" - }, - { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '[^"\\\\]+' - }, - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "string", - regex : '"|$', - next : "start" - } - ], - "qstring" : [ - { - token : "string", - regex : "[^'\\\\]+" - }, - { - token : "string", - regex : "\\\\$", - next : "qstring" - }, - { - token : "string", - regex : "'|$", - next : "start" - } - ] -}; - -}; - -oop.inherits(StylusHighlightRules, TextHighlightRules); - -exports.StylusHighlightRules = StylusHighlightRules; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var StylusHighlightRules = require("./stylus_highlight_rules").StylusHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = StylusHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/stylus"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/stylus"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-svg.js b/src-noconflict/mode-svg.js deleted file mode 100644 index 9791302..0000000 --- a/src-noconflict/mode-svg.js +++ /dev/null @@ -1,1582 +0,0 @@ -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var SvgHighlightRules = function() { - XmlHighlightRules.call(this); - - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - this.normalizeRules(); -}; - -oop.inherits(SvgHighlightRules, XmlHighlightRules); - -exports.SvgHighlightRules = SvgHighlightRules; -}); - -ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var XmlMode = require("./xml").Mode; -var JavaScriptMode = require("./javascript").Mode; -var SvgHighlightRules = require("./svg_highlight_rules").SvgHighlightRules; -var MixedFoldMode = require("./folding/mixed").FoldMode; -var XmlFoldMode = require("./folding/xml").FoldMode; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - XmlMode.call(this); - - this.HighlightRules = SvgHighlightRules; - - this.createModeDelegates({ - "js-": JavaScriptMode - }); - - this.foldingRules = new MixedFoldMode(new XmlFoldMode(), { - "js-": new CStyleFoldMode() - }); -}; - -oop.inherits(Mode, XmlMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - - this.$id = "ace/mode/svg"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/svg"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-swift.js b/src-noconflict/mode-swift.js deleted file mode 100644 index 1e11dc0..0000000 --- a/src-noconflict/mode-swift.js +++ /dev/null @@ -1,395 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/swift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SwiftHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "", - "keyword": "__COLUMN__|__FILE__|__FUNCTION__|__LINE__" - + "|as|associativity|break|case|class|continue|default|deinit|didSet" - + "|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import" - + "|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating" - + "|operator|override|postfix|precedence|prefix|protocol|return|right" - + "|safe|Self|self|set|struct|subscript|switch|Type|typealias" - + "|unowned|unsafe|var|weak|where|while|willSet" - + "|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix" - + "|prefix|required|static|guard|defer", - "storage.type": "bool|double|Double" - + "|extension|float|Float|int|Int|open|internal|fileprivate|private|public|string|String", - "constant.language": - "false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes", - "support.function": - "" - }, "identifier"); - - function string(start, options) { - var nestable = options.nestable || options.interpolation; - var interpStart = options.interpolation && options.interpolation.nextState || "start"; - var mainRule = { - regex: start + (options.multiline ? "" : "(?=.)"), - token: "string.start" - }; - var nextState = [ - options.escape && { - regex: options.escape, - token: "character.escape" - }, - options.interpolation && { - token : "paren.quasi.start", - regex : lang.escapeRegExp(options.interpolation.lead + options.interpolation.open), - push : interpStart - }, - options.error && { - regex: options.error, - token: "error.invalid" - }, - { - regex: start + (options.multiline ? "" : "|$"), - token: "string.end", - next: nestable ? "pop" : "start" - }, { - defaultToken: "string" - } - ].filter(Boolean); - - if (nestable) - mainRule.push = nextState; - else - mainRule.next = nextState; - - if (!options.interpolation) - return mainRule; - - var open = options.interpolation.open; - var close = options.interpolation.close; - var counter = { - regex: "[" + lang.escapeRegExp(open + close) + "]", - onMatch: function(val, state, stack) { - this.next = val == open ? this.nextState : ""; - if (val == open && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == close && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.quasi.end"; - } - return val == open ? "paren.lparen" : "paren.rparen"; - }, - nextState: interpStart - }; - return [counter, mainRule]; - } - - function comments() { - return [{ - token : "comment", - regex : "\\/\\/(?=.)", - next : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next: "start"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment.start", - regex : /\/\*/, - stateName: "nested_comment", - push : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment.start", regex : /\/\*/, push: "nested_comment"}, - {token : "comment.end", regex : "\\*\\/", next : "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; - } - - - this.$rules = { - start: [ - string('"""', { - escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/, - interpolation: {lead: "\\", open: "(", close: ")"}, - error: /\\./, - multiline: true - }), - string('"', { - escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/, - interpolation: {lead: "\\", open: "(", close: ")"}, - error: /\\./, - multiline: false - }), - comments(), - { - regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, - token: "variable.parameter" - }, - { - regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, - token: keywordMapper - }, - { - token : "constant.numeric", - regex : /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/ - }, { - token : "keyword.operator", - regex : /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - } - - ] - }; - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - - this.normalizeRules(); -}; - - -oop.inherits(SwiftHighlightRules, TextHighlightRules); - -exports.HighlightRules = SwiftHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./swift_highlight_rules").HighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = new CstyleBehaviour(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/", nestable: true}; - - this.$id = "ace/mode/swift"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/swift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-tcl.js b/src-noconflict/mode-tcl.js deleted file mode 100644 index e3d73fe..0000000 --- a/src-noconflict/mode-tcl.js +++ /dev/null @@ -1,387 +0,0 @@ -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TclHighlightRules = function() { - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "support.function", - regex : '[\\\\]$', - next : "splitlineStart" - }, { - token : "text", - regex : /\\(?:["{}\[\]$\\])/ - }, { - token : "text", // last value before command - regex : '^|[^{][;][^}]|[/\r/]', - next : "commandItem" - }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line """ string start - regex : '[ ]*["]', - next : "qqstring" - }, { - token : "variable.instance", - regex : "[$]", - next : "variable" - }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" - }, { - token : "identifier", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "paren.lparen", - regex : "[[{]", - next : "commandItem" - }, { - token : "paren.lparen", - regex : "[(]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "commandItem" : [ - { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : "#.*$", - next : "start" - }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "variable.instance", - regex : "[$]", - next : "variable" - }, { - token : "support.function", - regex : "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" - }, { - token : "support.function", - regex : "[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" - }, { - token : "support.function", - regex : "(?:[:][:])", - next : "commandItem" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" - }, { - token : "keyword", - regex : "[a-zA-Z0-9_/]+", - next : "start" - } ], - "commentfollow" : [ - { - token : "comment", - regex : ".*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : '.+', - next : "start" - } ], - "splitlineStart" : [ - { - token : "text", - regex : "^.", - next : "start" - }], - "variable" : [ - { - token : "variable.instance", // variable tcl - regex : "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?", - next : "start" - }, { - token : "variable.instance", // variable tcl with braces - regex : "{?[a-zA-Z_\\d]+}?", - next : "start" - }], - "qqstring" : [ { - token : "string", // multi line """ string end - regex : '(?:[^\\\\]|\\\\.)*?["]', - next : "start" - }, { - token : "string", - regex : '.+' - } ] - }; -}; - -oop.inherits(TclHighlightRules, TextHighlightRules); - -exports.TclHighlightRules = TclHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var TclHighlightRules = require("./tcl_highlight_rules").TclHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = TclHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/tcl"; - this.snippetFileId = "ace/snippets/tcl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/tcl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-terraform.js b/src-noconflict/mode-terraform.js deleted file mode 100644 index f467323..0000000 --- a/src-noconflict/mode-terraform.js +++ /dev/null @@ -1,400 +0,0 @@ -ace.define("ace/mode/terraform_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var TerraformHighlightRules = function () { - - - this.$rules = { - "start": [ - { - token: ['storage.function.terraform'], - regex: '\\b(output|resource|data|variable|module|export)\\b' - }, - { - token: "variable.terraform", - regex: "\\$\\s", - push: [ - { - token: "keyword.terraform", - regex: "(-var-file|-var)" - }, - { - token: "variable.terraform", - regex: "\\n|$", - next: "pop" - }, - - {include: "strings"}, - {include: "variables"}, - {include: "operators"}, - - {defaultToken: "text"} - ] - }, - { - token: "language.support.class", - regex: "\\b(timeouts|provider|connection|provisioner|lifecycleprovider|atlas)\\b" - }, - - { - token: "singleline.comment.terraform", - regex: '#.*$' - }, - { - token: "singleline.comment.terraform", - regex: '//.*$' - }, - { - token: "multiline.comment.begin.terraform", - regex: /\/\*/, - push: "blockComment" - }, - { - token: "storage.function.terraform", - regex: "^\\s*(locals|terraform)\\s*{" - }, - { - token: "paren.lparen", - regex: "[[({]" - }, - - { - token: "paren.rparen", - regex: "[\\])}]" - }, - {include: "constants"}, - {include: "strings"}, - {include: "operators"}, - {include: "variables"} - ], - blockComment: [{ - regex: /\*\//, - token: "multiline.comment.end.terraform", - next: "pop" - }, { - defaultToken: "comment" - }], - "constants": [ - { - token: "constant.language.terraform", - regex: "\\b(true|false|yes|no|on|off|EOF)\\b" - }, - { - token: "constant.numeric.terraform", - regex: "(\\b([0-9]+)([kKmMgG]b?)?\\b)|(\\b(0x[0-9A-Fa-f]+)([kKmMgG]b?)?\\b)" - } - ], - "variables": [ - { - token: ["variable.assignment.terraform", "keyword.operator"], - regex: "\\b([a-zA-Z_]+)(\\s*=)" - } - ], - "interpolated_variables": [ - { - token: "variable.terraform", - regex: "\\b(var|self|count|path|local)\\b(?:\\.*[a-zA-Z_-]*)?" - } - ], - "strings": [ - { - token: "punctuation.quote.terraform", - regex: "'", - push: - [{ - token: 'punctuation.quote.terraform', - regex: "'", - next: 'pop' - }, - {include: "escaped_chars"}, - {defaultToken: 'string'}] - }, - { - token: "punctuation.quote.terraform", - regex: '"', - push: - [{ - token: 'punctuation.quote.terraform', - regex: '"', - next: 'pop' - }, - {include: "interpolation"}, - {include: "escaped_chars"}, - {defaultToken: 'string'}] - } - ], - "escaped_chars": [ - { - token: "constant.escaped_char.terraform", - regex: "\\\\." - } - ], - "operators": [ - { - token: "keyword.operator", - regex: "\\?|:|==|!=|>|<|>=|<=|&&|\\|\\\||!|%|&|\\*|\\+|\\-|/|=" - } - ], - "interpolation": [ - {// TODO: double $ - token: "punctuation.interpolated.begin.terraform", - regex: "\\$?\\$\\{", - push: [{ - token: "punctuation.interpolated.end.terraform", - regex: "\\}", - next: "pop" - }, - {include: "interpolated_variables"}, - {include: "operators"}, - {include: "constants"}, - {include: "strings"}, - {include: "functions"}, - {include: "parenthesis"}, - {defaultToken: "punctuation"} - ] - } - ], - "functions": [ - { - token: "keyword.function.terraform", - regex: "\\b(abs|basename|base64decode|base64encode|base64gzip|base64sha256|base64sha512|bcrypt|ceil|chomp|chunklist|cidrhost|cidrnetmask|cidrsubnet|coalesce|coalescelist|compact|concat|contains|dirname|distinct|element|file|floor|flatten|format|formatlist|indent|index|join|jsonencode|keys|length|list|log|lookup|lower|map|matchkeys|max|merge|min|md5|pathexpand|pow|replace|rsadecrypt|sha1|sha256|sha512|signum|slice|sort|split|substr|timestamp|timeadd|title|transpose|trimspace|upper|urlencode|uuid|values|zipmap)\\b" - } - ], - "parenthesis": [ - { - token: "paren.lparen", - regex: "\\[" - }, - { - token: "paren.rparen", - regex: "\\]" - } - ] - }; - this.normalizeRules(); -}; - -oop.inherits(TerraformHighlightRules, TextHighlightRules); - -exports.TerraformHighlightRules = TerraformHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/terraform",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/terraform_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TerraformHighlightRules = require("./terraform_highlight_rules").TerraformHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function () { - TextMode.call(this); - this.HighlightRules = TerraformHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; - -oop.inherits(Mode, TextMode); - - -(function () { - this.lineCommentStart = ["#", "//"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/terraform"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/terraform"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-tex.js b/src-noconflict/mode-tex.js deleted file mode 100644 index 1efb711..0000000 --- a/src-noconflict/mode-tex.js +++ /dev/null @@ -1,160 +0,0 @@ -ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { - if (suppressHighlighting) - this.HighlightRules = TextHighlightRules; - else - this.HighlightRules = TexHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.allowAutoInsert = function() { - return false; - }; - this.$id = "ace/mode/tex"; - this.snippetFileId = "ace/snippets/tex"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/tex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-text.js b/src-noconflict/mode-text.js deleted file mode 100644 index fce2a9f..0000000 --- a/src-noconflict/mode-text.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/mode/text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-textile.js b/src-noconflict/mode-textile.js deleted file mode 100644 index 866ec9a..0000000 --- a/src-noconflict/mode-textile.js +++ /dev/null @@ -1,150 +0,0 @@ -ace.define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TextileHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : function(value) { - if (value.charAt(0) == "h") - return "markup.heading." + value.charAt(1); - else - return "markup.heading"; - }, - regex : "h1|h2|h3|h4|h5|h6|bq|p|bc|pre", - next : "blocktag" - }, - { - token : "keyword", - regex : "[\\*]+|[#]+" - }, - { - token : "text", - regex : ".+" - } - ], - "blocktag" : [ - { - token : "keyword", - regex : "\\. ", - next : "start" - }, - { - token : "keyword", - regex : "\\(", - next : "blocktagproperties" - } - ], - "blocktagproperties" : [ - { - token : "keyword", - regex : "\\)", - next : "blocktag" - }, - { - token : "string", - regex : "[a-zA-Z0-9\\-_]+" - }, - { - token : "keyword", - regex : "#" - } - ] - }; -}; - -oop.inherits(TextileHighlightRules, TextHighlightRules); - -exports.TextileHighlightRules = TextileHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TextileHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { - if (state == "intag") - return tab; - - return ""; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/textile"; - this.snippetFileId = "ace/snippets/textile"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/textile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-toml.js b/src-noconflict/mode-toml.js deleted file mode 100644 index aeb099c..0000000 --- a/src-noconflict/mode-toml.js +++ /dev/null @@ -1,153 +0,0 @@ -ace.define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TomlHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "constant.language.boolean": "true|false" - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start": [ - { - token: "comment.toml", - regex: /#.*$/ - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: ["variable.keygroup.toml"], - regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])" - }, - { - token: ["variable.keygroup.toml"], - regex: "(?:^\\s*)(\\[([^\\]]+)\\])" - }, - { - token : keywordMapper, - regex : identifierRe - }, - { - token : "support.date.toml", - regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)" - }, - { - token: "constant.numeric.toml", - regex: "-?\\d+(\\.?\\d+)?" - } - ], - "qqstring" : [ - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "constant.language.escape", - regex : '\\\\[0tnr"\\\\]' - }, - { - token : "string", - regex : '"|$', - next : "start" - }, - { - defaultToken: "string" - } - ] - }; - -}; - -oop.inherits(TomlHighlightRules, TextHighlightRules); - -exports.TomlHighlightRules = TomlHighlightRules; -}); - -ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var re = this.foldingStartMarker; - var line = session.getLine(row); - - var m = line.match(re); - - if (!m) return; - - var startName = m[1] + "."; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - if (/^\s*$/.test(line)) - continue; - m = line.match(re); - if (m && m[1].lastIndexOf(startName, 0) !== 0) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TomlHighlightRules = require("./toml_highlight_rules").TomlHighlightRules; -var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { - this.HighlightRules = TomlHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/toml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/toml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-tsx.js b/src-noconflict/mode-tsx.js deleted file mode 100644 index 290d87d..0000000 --- a/src-noconflict/mode-tsx.js +++ /dev/null @@ -1,888 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var TypeScriptHighlightRules = function (options) { - - var tsRules = [ - { - token: ["storage.type", "text", "entity.name.function.ts"], - regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" - }, - { - token: "keyword", - regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" - }, - { - token: ["keyword", "storage.type.variable.ts"], - regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" - }, - { - token: "keyword", - regex: "\\b(?:super|export|import|keyof|infer)\\b" - }, - { - token: ["storage.type.variable.ts"], - regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" - } - ]; - - var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules(); - - JSRules.no_regex = tsRules.concat(JSRules.no_regex); - this.$rules = JSRules; -}; - -oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); - -exports.TypeScriptHighlightRules = TypeScriptHighlightRules; -}); - -ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var jsMode = require("./javascript").Mode; -var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TypeScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, jsMode); - -(function() { - this.createWorker = function(session) { - return null; - }; - this.$id = "ace/mode/typescript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/typescript"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var tsMode = require("./typescript").Mode; - -var Mode = function() { - tsMode.call(this); - this.$highlightRuleConfig = {jsx: true}; -}; -oop.inherits(Mode, tsMode); - -(function() { - this.$id = "ace/mode/tsx"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/tsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-turtle.js b/src-noconflict/mode-turtle.js deleted file mode 100644 index 43321e5..0000000 --- a/src-noconflict/mode-turtle.js +++ /dev/null @@ -1,296 +0,0 @@ -ace.define("ace/mode/turtle_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TurtleHighlightRules = function() { - - this.$rules = { - start: [{ - include: "#comments" - }, { - include: "#strings" - }, { - include: "#base-prefix-declarations" - }, { - include: "#string-language-suffixes" - }, { - include: "#string-datatype-suffixes" - }, { - include: "#relative-urls" - }, { - include: "#xml-schema-types" - }, { - include: "#rdf-schema-types" - }, { - include: "#owl-types" - }, { - include: "#qnames" - }, { - include: "#punctuation-operators" - }], - "#base-prefix-declarations": [{ - token: "keyword.other.prefix.turtle", - regex: /@(?:base|prefix)/ - }], - "#comments": [{ - token: [ - "punctuation.definition.comment.turtle", - "comment.line.hash.turtle" - ], - regex: /(#)(.*$)/ - }], - "#owl-types": [{ - token: "support.type.datatype.owl.turtle", - regex: /owl:[a-zA-Z]+/ - }], - "#punctuation-operators": [{ - token: "keyword.operator.punctuation.turtle", - regex: /;|,|\.|\(|\)|\[|\]/ - }], - "#qnames": [{ - token: "entity.name.other.qname.turtle", - regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ - }], - "#rdf-schema-types": [{ - token: "support.type.datatype.rdf.schema.turtle", - regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ - }], - "#relative-urls": [{ - token: "string.quoted.other.relative.url.turtle", - regex: //, - next: "pop" - }, { - defaultToken: "string.quoted.other.relative.url.turtle" - }] - }], - "#string-datatype-suffixes": [{ - token: "keyword.operator.datatype.suffix.turtle", - regex: /\^\^/ - }], - "#string-language-suffixes": [{ - token: [ - "keyword.operator.language.suffix.turtle", - "constant.language.suffix.turtle" - ], - regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ - }], - "#strings": [{ - token: "string.quoted.triple.turtle", - regex: /"""/, - push: [{ - token: "string.quoted.triple.turtle", - regex: /"""/, - next: "pop" - }, { - defaultToken: "string.quoted.triple.turtle" - }] - }, { - token: "string.quoted.double.turtle", - regex: /"/, - push: [{ - token: "string.quoted.double.turtle", - regex: /"/, - next: "pop" - }, { - token: "invalid.string.newline", - regex: /$/ - }, { - token: "constant.character.escape.turtle", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.turtle" - }] - }], - "#xml-schema-types": [{ - token: "support.type.datatype.xml.schema.turtle", - regex: /xsd?:[a-z][a-zA-Z]+/ - }] - }; - - this.normalizeRules(); -}; - -TurtleHighlightRules.metaData = { - fileTypes: ["ttl", "nt"], - name: "Turtle", - scopeName: "source.turtle" -}; - - -oop.inherits(TurtleHighlightRules, TextHighlightRules); - -exports.TurtleHighlightRules = TurtleHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TurtleHighlightRules = require("./turtle_highlight_rules").TurtleHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = TurtleHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/turtle"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/turtle"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-twig.js b/src-noconflict/mode-twig.js deleted file mode 100644 index 64c77a2..0000000 --- a/src-noconflict/mode-twig.js +++ /dev/null @@ -1,2693 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TwigHighlightRules = function() { - HtmlHighlightRules.call(this); - - var tags = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim"; - tags = tags + "|end" + tags.replace(/\|/g, "|end"); - var filters = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode"; - var functions = "attribute|constant|cycle|date|dump|parent|random|range|template_from_string"; - var tests = "constant|divisibleby|sameas|defined|empty|even|iterable|odd"; - var constants = "null|none|true|false"; - var operators = "b-and|b-xor|b-or|in|is|and|or|not"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control.twig": tags, - "support.function.twig": [filters, functions, tests].join("|"), - "keyword.operator.twig": operators, - "constant.language.twig": constants - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable.other.readwrite.local.twig", - regex : "\\{\\{-?", - push : "twig-start" - }, { - token : "meta.tag.twig", - regex : "\\{%-?", - push : "twig-start" - }, { - token : "comment.block.twig", - regex : "\\{#-?", - push : "twig-comment" - }); - } - this.$rules["twig-comment"] = [{ - token : "comment.block.twig", - regex : ".*-?#\\}", - next : "pop" - }]; - - this.$rules["twig-start"] = [{ - token : "variable.other.readwrite.local.twig", - regex : "-?\\}\\}", - next : "pop" - }, { - token : "meta.tag.twig", - regex : "-?%\\}", - next : "pop" - }, { - token : "string", - regex : "'", - next : "twig-qstring" - }, { - token : "string", - regex : '"', - next : "twig-qqstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator.assignment", - regex : "=|~" - }, { - token : "keyword.operator.comparison", - regex : "==|!=|<|>|>=|<=|===" - }, { - token : "keyword.operator.arithmetic", - regex : "\\+|-|/|%|//|\\*|\\*\\*" - }, { - token : "keyword.operator.other", - regex : "\\.\\.|\\|" - }, { - token : "punctuation.operator", - regex : /\?|:|,|;|\./ - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - } ]; - - this.$rules["twig-qqstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\"$#ntr]|#{[^"}]*}/ - }, { - token : "string", - regex : '"', - next : "twig-start" - }, { - defaultToken : "string" - } - ]; - - this.$rules["twig-qstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\'ntr]}/ - }, { - token : "string", - regex : "'", - next : "twig-start" - }, { - defaultToken : "string" - } - ]; - - this.normalizeRules(); -}; - -oop.inherits(TwigHighlightRules, TextHighlightRules); - -exports.TwigHighlightRules = TwigHighlightRules; -}); - -ace.define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var TwigHighlightRules = require("./twig_highlight_rules").TwigHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = TwigHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.blockComment = {start: "{#", end: "#}"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/twig"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/twig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-typescript.js b/src-noconflict/mode-typescript.js deleted file mode 100644 index 43b1291..0000000 --- a/src-noconflict/mode-typescript.js +++ /dev/null @@ -1,869 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function (require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var TypeScriptHighlightRules = function (options) { - - var tsRules = [ - { - token: ["storage.type", "text", "entity.name.function.ts"], - regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" - }, - { - token: "keyword", - regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" - }, - { - token: ["keyword", "storage.type.variable.ts"], - regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" - }, - { - token: "keyword", - regex: "\\b(?:super|export|import|keyof|infer)\\b" - }, - { - token: ["storage.type.variable.ts"], - regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" - } - ]; - - var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules(); - - JSRules.no_regex = tsRules.concat(JSRules.no_regex); - this.$rules = JSRules; -}; - -oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); - -exports.TypeScriptHighlightRules = TypeScriptHighlightRules; -}); - -ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var jsMode = require("./javascript").Mode; -var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TypeScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, jsMode); - -(function() { - this.createWorker = function(session) { - return null; - }; - this.$id = "ace/mode/typescript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/typescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-vala.js b/src-noconflict/mode-vala.js deleted file mode 100644 index 05c77b3..0000000 --- a/src-noconflict/mode-vala.js +++ /dev/null @@ -1,677 +0,0 @@ -ace.define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ValaHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.using.vala', - 'keyword.other.using.vala', - 'meta.using.vala', - 'storage.modifier.using.vala', - 'meta.using.vala', - 'punctuation.terminator.vala' ], - regex: '^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?' }, - { include: '#code' } ], - '#all-types': - [ { include: '#primitive-arrays' }, - { include: '#primitive-types' }, - { include: '#object-types' } ], - '#annotations': - [ { token: - [ 'storage.type.annotation.vala', - 'punctuation.definition.annotation-arguments.begin.vala' ], - regex: '(@[^ (]+)(\\()', - push: - [ { token: 'punctuation.definition.annotation-arguments.end.vala', - regex: '\\)', - next: 'pop' }, - { token: - [ 'constant.other.key.vala', - 'text', - 'keyword.operator.assignment.vala' ], - regex: '(\\w*)(\\s*)(=)' }, - { include: '#code' }, - { token: 'punctuation.seperator.property.vala', regex: ',' }, - { defaultToken: 'meta.declaration.annotation.vala' } ] }, - { token: 'storage.type.annotation.vala', regex: '@\\w*' } ], - '#anonymous-classes-and-new': - [ { token: 'keyword.control.new.vala', - regex: '\\bnew\\b', - push_disabled: - [ { token: 'text', - regex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', - next: 'pop' }, - { token: [ 'storage.type.vala', 'text' ], - regex: '(\\w+)(\\s*)(?=\\[)', - push: - [ { token: 'text', regex: '}|(?=;|\\))', next: 'pop' }, - { token: 'text', - regex: '\\[', - push: - [ { token: 'text', regex: '\\]', next: 'pop' }, - { include: '#code' } ] }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '(?=})', next: 'pop' }, - { include: '#code' } ] } ] }, - { token: 'text', - regex: '(?=\\w.*\\()', - push: - [ { token: 'text', - regex: '(?<=\\))', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?<=\\))', - next: 'pop' }, - { include: '#object-types' }, - { token: 'text', - regex: '\\(', - push: - [ { token: 'text', regex: '\\)', next: 'pop' }, - { include: '#code' } ] } ] }, - { token: 'meta.inner-class.vala', - regex: '{', - push: - [ { token: 'meta.inner-class.vala', regex: '}', next: 'pop' }, - { include: '#class-body' }, - { defaultToken: 'meta.inner-class.vala' } ] } ] } ], - '#assertions': - [ { token: - [ 'keyword.control.assert.vala', - 'meta.declaration.assertion.vala' ], - regex: '\\b(assert|requires|ensures)(\\s)', - push: - [ { token: 'meta.declaration.assertion.vala', - regex: '$', - next: 'pop' }, - { token: 'keyword.operator.assert.expression-seperator.vala', - regex: ':' }, - { include: '#code' }, - { defaultToken: 'meta.declaration.assertion.vala' } ] } ], - '#class': - [ { token: 'meta.class.vala', - regex: '(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)', - push: - [ { token: 'paren.vala', - regex: '}', - next: 'pop' }, - { include: '#storage-modifiers' }, - { include: '#comments' }, - { token: - [ 'storage.modifier.vala', - 'meta.class.identifier.vala', - 'entity.name.type.class.vala' ], - regex: '(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)' }, - { token: 'storage.modifier.extends.vala', - regex: ':', - push: - [ { token: 'meta.definition.class.inherited.classes.vala', - regex: '(?={|,)', - next: 'pop' }, - { include: '#object-types-inherited' }, - { include: '#comments' }, - { defaultToken: 'meta.definition.class.inherited.classes.vala' } ] }, - { token: - [ 'storage.modifier.implements.vala', - 'meta.definition.class.implemented.interfaces.vala' ], - regex: '(,)(\\s)', - push: - [ { token: 'meta.definition.class.implemented.interfaces.vala', - regex: '(?=\\{)', - next: 'pop' }, - { include: '#object-types-inherited' }, - { include: '#comments' }, - { defaultToken: 'meta.definition.class.implemented.interfaces.vala' } ] }, - { token: 'paren.vala', - regex: '{', - push: - [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, - { include: '#class-body' }, - { defaultToken: 'meta.class.body.vala' } ] }, - { defaultToken: 'meta.class.vala' } ], - comment: 'attempting to put namespace in here.' } ], - '#class-body': - [ { include: '#comments' }, - { include: '#class' }, - { include: '#enums' }, - { include: '#methods' }, - { include: '#annotations' }, - { include: '#storage-modifiers' }, - { include: '#code' } ], - '#code': - [ { include: '#comments' }, - { include: '#class' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#code' } ] }, - { include: '#assertions' }, - { include: '#parens' }, - { include: '#constants-and-special-vars' }, - { include: '#anonymous-classes-and-new' }, - { include: '#keywords' }, - { include: '#storage-modifiers' }, - { include: '#strings' }, - { include: '#all-types' } ], - '#comments': - [ { token: 'punctuation.definition.comment.vala', - regex: '/\\*\\*/' }, - { include: 'text.html.javadoc' }, - { include: '#comments-inline' } ], - '#comments-inline': - [ { token: 'punctuation.definition.comment.vala', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.vala', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.vala' } ] }, - { token: - [ 'text', - 'punctuation.definition.comment.vala', - 'comment.line.double-slash.vala' ], - regex: '(\\s*)(//)(.*$)' } ], - '#constants-and-special-vars': - [ { token: 'constant.language.vala', - regex: '\\b(?:true|false|null)\\b' }, - { token: 'variable.language.vala', - regex: '\\b(?:this|base)\\b' }, - { token: 'constant.numeric.vala', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b' }, - { token: [ 'keyword.operator.dereference.vala', 'constant.other.vala' ], - regex: '((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b' } ], - '#enums': - [ { token: 'text', - regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', - push: - [ { token: 'text', regex: '(?=;|})', next: 'pop' }, - { token: 'constant.other.enum.vala', - regex: '\\w+', - push: - [ { token: 'meta.enum.vala', regex: '(?=,|;|})', next: 'pop' }, - { include: '#parens' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#class-body' } ] }, - { defaultToken: 'meta.enum.vala' } ] } ] } ], - '#keywords': - [ { token: 'keyword.control.catch-exception.vala', - regex: '\\b(?:try|catch|finally|throw)\\b' }, - { token: 'keyword.control.vala', regex: '\\?|:|\\?\\?' }, - { token: 'keyword.control.vala', - regex: '\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b' }, - { token: 'keyword.operator.vala', - regex: '\\b(?:typeof|is|as)\\b' }, - { token: 'keyword.operator.comparison.vala', - regex: '==|!=|<=|>=|<>|<|>' }, - { token: 'keyword.operator.assignment.vala', regex: '=' }, - { token: 'keyword.operator.increment-decrement.vala', - regex: '\\-\\-|\\+\\+' }, - { token: 'keyword.operator.arithmetic.vala', - regex: '\\-|\\+|\\*|\\/|%' }, - { token: 'keyword.operator.logical.vala', regex: '!|&&|\\|\\|' }, - { token: 'keyword.operator.dereference.vala', - regex: '\\.(?=\\S)', - originalRegex: '(?<=\\S)\\.(?=\\S)' }, - { token: 'punctuation.terminator.vala', regex: ';' }, - { token: 'keyword.operator.ownership', regex: 'owned|unowned' } ], - '#methods': - [ { token: 'meta.method.vala', - regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', - push: - [ { token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, - { include: '#storage-modifiers' }, - { token: [ 'entity.name.function.vala', 'meta.method.identifier.vala' ], - regex: '([\\~\\w\\.]+)(\\s*\\()', - push: - [ { token: 'meta.method.identifier.vala', - regex: '\\)', - next: 'pop' }, - { include: '#parameters' }, - { defaultToken: 'meta.method.identifier.vala' } ] }, - { token: 'meta.method.return-type.vala', - regex: '(?=\\w.*\\s+\\w+\\s*\\()', - push: - [ { token: 'meta.method.return-type.vala', - regex: '(?=\\w+\\s*\\()', - next: 'pop' }, - { include: '#all-types' }, - { defaultToken: 'meta.method.return-type.vala' } ] }, - { include: '#throws' }, - { token: 'paren.vala', - regex: '{', - push: - [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, - { include: '#code' }, - { defaultToken: 'meta.method.body.vala' } ] }, - { defaultToken: 'meta.method.vala' } ] } ], - '#namespace': - [ { token: 'text', - regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', - push: - [ { token: 'text', regex: '(?=;|})', next: 'pop' }, - { token: 'constant.other.namespace.vala', - regex: '\\w+', - push: - [ { token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' }, - { include: '#parens' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#code' } ] }, - { defaultToken: 'meta.namespace.vala' } ] } ], - comment: 'This is not quite right. See the class grammar right now' } ], - '#object-types': - [ { token: 'storage.type.generic.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,\\?<\\[()\\]]', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '>|[^\\w\\s,\\?<\\[(?:[,]+)\\]]', - next: 'pop' }, - { include: '#object-types' }, - { token: 'storage.type.generic.vala', - regex: '<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,\\[\\]<]', - next: 'pop' }, - { defaultToken: 'storage.type.generic.vala' } ], - comment: 'This is just to support <>\'s with no actual type prefix' }, - { defaultToken: 'storage.type.generic.vala' } ] }, - { token: 'storage.type.object.array.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)', - push: - [ { token: 'storage.type.object.array.vala', - regex: '(?=[^\\]\\s])', - next: 'pop' }, - { token: 'text', - regex: '\\[', - push: - [ { token: 'text', regex: '\\]', next: 'pop' }, - { include: '#code' } ] }, - { defaultToken: 'storage.type.object.array.vala' } ] }, - { token: - [ 'storage.type.vala', - 'keyword.operator.dereference.vala', - 'storage.type.vala' ], - regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)' } ], - '#object-types-inherited': - [ { token: 'entity.other.inherited-class.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', - push: - [ { token: 'entity.other.inherited-class.vala', - regex: '>|[^\\w\\s,<]', - next: 'pop' }, - { include: '#object-types' }, - { token: 'storage.type.generic.vala', - regex: '<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,<]', - next: 'pop' }, - { defaultToken: 'storage.type.generic.vala' } ], - comment: 'This is just to support <>\'s with no actual type prefix' }, - { defaultToken: 'entity.other.inherited-class.vala' } ] }, - { token: - [ 'entity.other.inherited-class.vala', - 'keyword.operator.dereference.vala', - 'entity.other.inherited-class.vala' ], - regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)' } ], - '#parameters': - [ { token: 'storage.modifier.vala', regex: 'final' }, - { include: '#primitive-arrays' }, - { include: '#primitive-types' }, - { include: '#object-types' }, - { token: 'variable.parameter.vala', regex: '\\w+' } ], - '#parens': - [ { token: 'text', - regex: '\\(', - push: - [ { token: 'text', regex: '\\)', next: 'pop' }, - { include: '#code' } ] } ], - '#primitive-arrays': - [ { token: 'storage.type.primitive.array.vala', - regex: '\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b' } ], - '#primitive-types': - [ { token: 'storage.type.primitive.vala', - regex: '\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b', - comment: 'var is not really a primitive, but acts like one in most cases' } ], - '#storage-modifiers': - [ { token: 'storage.modifier.vala', - regex: '\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b', - comment: 'Not sure about unsafe and readonly' } ], - '#strings': - [ { token: 'punctuation.definition.string.begin.vala', - regex: '@"', - push: - [ { token: 'punctuation.definition.string.end.vala', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.vala', - regex: '\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))' }, - { defaultToken: 'string.quoted.interpolated.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.vala', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.vala', regex: '\\\\.' }, - { token: 'constant.character.escape.vala', - regex: '%[\\w\\.\\-]+' }, - { defaultToken: 'string.quoted.double.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.vala', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.vala', regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '"""', - push: - [ { token: 'punctuation.definition.string.end.vala', - regex: '"""', - next: 'pop' }, - { token: 'constant.character.escape.vala', - regex: '%[\\w\\.\\-]+' }, - { defaultToken: 'string.quoted.triple.vala' } ] } ], - '#throws': - [ { token: 'storage.modifier.vala', - regex: 'throws', - push: - [ { token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' }, - { include: '#object-types' }, - { defaultToken: 'meta.throwables.vala' } ] } ], - '#values': - [ { include: '#strings' }, - { include: '#object-types' }, - { include: '#constants-and-special-vars' } ] }; - - this.normalizeRules(); -}; - -ValaHighlightRules.metaData = { - comment: 'Based heavily on the Java bundle\'s language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n', - fileTypes: [ 'vala' ], - foldingStartMarker: '(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)', - foldingStopMarker: '^\\s*(\\}|// \\}\\}\\}$)', - name: 'Vala', - scopeName: 'source.vala' }; - - -oop.inherits(ValaHighlightRules, TextHighlightRules); - -exports.ValaHighlightRules = ValaHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ValaHighlightRules = require("./vala_highlight_rules").ValaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = ValaHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/vala"; - this.snippetFileId = "ace/snippets/vala"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/vala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-vbscript.js b/src-noconflict/mode-vbscript.js deleted file mode 100644 index 166202c..0000000 --- a/src-noconflict/mode-vbscript.js +++ /dev/null @@ -1,635 +0,0 @@ -ace.define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VBScriptHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return" - + "|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf|Class", - "storage.type.asp": "Dim|Call|Const|Redim|Set|Let|Get|New|Randomize|Option|Explicit|Preserve|Erase|Execute|ExecuteGlobal", - "storage.modifier.asp": "Private|Public|Default", - "keyword.operator.asp": "Mod|And|Not|Or|Xor|As|Eqv|Imp|Is", - "constant.language.asp": "Empty|False|Nothing|Null|True", - "variable.language.vb.asp": "Me", - "support.class.vb.asp": "RegExp", - "support.class.asp": "Application|ObjectContext|Request|Response|Server|Session", - "support.class.collection.asp": "Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables", - "support.constant.asp": "TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute" - + "|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout", - "support.function.asp": "Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog" - + "|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex", - "support.function.event.asp": "Application_OnEnd|Application_OnStart" - + "|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart", - "support.function.vb.asp": "Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng" - + "|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial" - + "|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency" - + "|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex" - + "|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric" - + "|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim" - + "|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace" - + "|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion" - + "|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse" - + "|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year" - + "|AscB|AscW|ChrB|ChrW|InStrB|LeftB|LenB|MidB|RightB|Abs|GetUILanguage", - "support.type.vb.asp": "vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString" - + "|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday" - + "|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek" - + "|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger" - + "|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant" - + "|vbDataObject|vbDecimal|vbByte|vbArray|vbOKOnly|vbOKCancel|vbAbortRetryIgnore|vbYesNoCancel|vbYesNo" - + "|vbRetryCancel|vbCritical|vbQuestion|vbExclamation|vbInformation|vbDefaultButton1|vbDefaultButton2" - + "|vbDefaultButton3|vbDefaultButton4|vbApplicationModal|vbSystemModal|vbOK|vbCancel|vbAbort|vbRetry|vbIgnore|vbYes|vbNo" - + "|vbUseDefault" - }, "identifier", true); - - this.$rules = { - "start": [ - { - token: [ - "meta.ending-space" - ], - regex: "$" - }, - { - token: [null], - regex: "^(?=\\t)", - next: "state_3" - }, - { - token: [null], - regex: "^(?= )", - next: "state_4" - }, - { - token: [ - "text", - "storage.type.function.asp", - "text", - "entity.name.function.asp", - "text", - "punctuation.definition.parameters.asp", - "variable.parameter.function.asp", - "punctuation.definition.parameters.asp" - ], - regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" - }, - { - token: "punctuation.definition.comment.asp", - regex: "'|REM(?=\\s|$)", - next: "comment", - caseInsensitive: true - }, - { - token: "storage.type.asp", - regex: "On\\s+Error\\s+(?:Resume\\s+Next|GoTo)\\b", - caseInsensitive: true - }, - { - token: "punctuation.definition.string.begin.asp", - regex: '"', - next: "string" - }, - { - token: [ - "punctuation.definition.variable.asp" - ], - regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" - }, - { - token: "constant.numeric.asp", - regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" - }, - { - regex: "\\w+", - token: keywordMapper - }, - { - token: ["entity.name.function.asp"], - regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" - }, - { - token: ["keyword.operator.asp"], - regex: "\\-|\\+|\\*|\\/|\\>|\\<|\\=|\\&|\\\\|\\^" - } - ], - "state_3": [ - { - token: [ - "meta.odd-tab.tabs", - "meta.even-tab.tabs" - ], - regex: "(\\t)(\\t)?" - }, - { - token: "meta.leading-space", - regex: "(?=[^\\t])", - next: "start" - }, - { - token: "meta.leading-space", - regex: ".", - next: "state_3" - } - ], - "state_4": [ - { - token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], - regex: "( )( )?" - }, - { - token: "meta.leading-space", - regex: "(?=[^ ])", - next: "start" - }, - { - defaultToken: "meta.leading-space" - } - ], - "comment": [ - { - token: "comment.line.apostrophe.asp", - regex: "$", - next: "start" - }, - { - defaultToken: "comment.line.apostrophe.asp" - } - ], - "string": [ - { - token: "constant.character.escape.apostrophe.asp", - regex: '""' - }, - { - token: "string.quoted.double.asp", - regex: '"', - next: "start" - }, - { - defaultToken: "string.quoted.double.asp" - } - ] -}; - -}; - -oop.inherits(VBScriptHighlightRules, TextHighlightRules); - -exports.VBScriptHighlightRules = VBScriptHighlightRules; -}); - -ace.define("ace/mode/folding/vbscript",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.indentKeywords = { - "class": 1, - "function": 1, - "sub": 1, - "if": 1, - "select": 1, - "do": 1, - "for": 1, - "while": 1, - "with": 1, - "property": 1, - "else": 1, - "elseif": 1, - "end": -1, - "loop": -1, - "next": -1, - "wend": -1 - }; - - this.foldingStartMarker = /(?:\s|^)(class|function|sub|if|select|do|for|while|with|property|else|elseif)\b/i; - this.foldingStopMarker = /\b(end|loop|next|wend)\b/i; - - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - if (isStart || isEnd) { - var match = (isEnd) ? this.foldingStopMarker.exec(line) : this.foldingStartMarker.exec(line); - var keyword = match && match[1].toLowerCase(); - if (keyword) { - var type = session.getTokenAt(row, match.index + 2).type; - if (type === "keyword.control.asp" || type === "storage.type.function.asp") - return this.vbsBlock(session, row, match.index + 2); - } - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - if (isStart && !isEnd) { - var match = this.foldingStartMarker.exec(line); - var keyword = match && match[1].toLowerCase(); - if (keyword) { - var type = session.getTokenAt(row, match.index + 2).type; - if (type == "keyword.control.asp" || type == "storage.type.function.asp") { - if (keyword == "if" && !/then\s*('|$)/i.test(line)) - return ""; - return "start"; - } - } - } - return ""; - }; - - this.vbsBlock = function(session, row, column, tokenRange) { - var stream = new TokenIterator(session, row, column); - - var endOpenings = { - "class": 1, - "function": 1, - "sub": 1, - "if": 1, - "select": 1, - "with": 1, - "property": 1, - "else": 1, - "elseif": 1 - }; - - var token = stream.getCurrentToken(); - if (!token || (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp")) - return; - - var startTokenValue = token.value.toLowerCase(); - var val = token.value.toLowerCase(); - - var stack = [val]; - var dir = this.indentKeywords[val]; - - if (!dir) - return; - - var firstRange = stream.getCurrentTokenRange(); - switch (val) { - case "property": - case "sub": - case "function": - case "if": - case "select": - case "do": - case "for": - case "class": - case "while": - case "with": - var line = session.getLine(row); - var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); - if (singleLineCondition) - return; - var checkToken = new RegExp("(?:^|\\s)" + val, "i"); - var endTest = /^\s*End\s(If|Sub|Select|Function|Class|With|Property)\s*/i.test(line); - if (!checkToken.test(line) && !endTest) { - return; - } - if (endTest) { - var tokenRange = stream.getCurrentTokenRange(); - stream.step = stream.stepBackward; - stream.step(); - stream.step(); - token = stream.getCurrentToken(); - if (token) { - val = token.value.toLowerCase(); - if (val == "end") { - firstRange = stream.getCurrentTokenRange(); - firstRange = new Range(firstRange.start.row, firstRange.start.column, tokenRange.start.row, tokenRange.end.column); - } - } - dir = -1; - } - break; - case "end": - var tokenPos = stream.getCurrentTokenPosition(); - firstRange = stream.getCurrentTokenRange(); - stream.step = stream.stepForward; - stream.step(); - stream.step(); - token = stream.getCurrentToken(); - if (token) { - val = token.value.toLowerCase(); - if (val in endOpenings) { - startTokenValue = val; - var nextTokenPos = stream.getCurrentTokenPosition(); - var endColumn = nextTokenPos.column + val.length; - firstRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); - } - } - stream.step = stream.stepBackward; - stream.step(); - stream.step(); - break; - } - var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; - var startRow = row; - var ranges = []; - ranges.push(firstRange); - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - var outputRange = null; - var ignore = false; - if (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp") - continue; - val = token.value.toLowerCase(); - var level = dir * this.indentKeywords[val]; - - switch (val) { - case "property": - case "sub": - case "function": - case "if": - case "select": - case "do": - case "for": - case "class": - case "while": - case "with": - var line = session.getLine(stream.getCurrentTokenRow()); - var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); - if (singleLineCondition) { - level = 0; - ignore = true; - } - var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); - if (checkToken.test(line)) { - level = 0; - ignore = true; - } - break; - case "elseif": - case "else": - level = 0; - if (startTokenValue != "elseif") { - ignore = true; - } - break; - } - - if (level > 0) { - stack.unshift(val); - } else if (level <= 0 && ignore === false) { - stack.shift(); - if (!stack.length) { - switch (val) { - case "end": - var tokenPos = stream.getCurrentTokenPosition(); - outputRange = stream.getCurrentTokenRange(); - stream.step(); - stream.step(); - token = stream.getCurrentToken(); - if (token) { - val = token.value.toLowerCase(); - if (val in endOpenings) { - if ((startTokenValue == "else" || startTokenValue == "elseif")) { - if (val !== "if") { - ranges.shift(); - } - } else { - if (val != startTokenValue) - ranges.shift(); - } - var nextTokenPos = stream.getCurrentTokenPosition(); - var endColumn = nextTokenPos.column + val.length; - outputRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); - } else { - ranges.shift(); - } - } else { - ranges.shift(); - } - stream.step = stream.stepBackward; - stream.step(); - stream.step(); - token = stream.getCurrentToken(); - val = token.value.toLowerCase(); - break; - case "select": - case "sub": - case "if": - case "function": - case "class": - case "with": - case "property": - if (val != startTokenValue) - ranges.shift(); - break; - case "do": - if (startTokenValue != "loop") - ranges.shift(); - break; - case "loop": - if (startTokenValue != "do") - ranges.shift(); - break; - case "for": - if (startTokenValue != "next") - ranges.shift(); - break; - case "next": - if (startTokenValue != "for") - ranges.shift(); - break; - case "while": - if (startTokenValue != "wend") - ranges.shift(); - break; - case "wend": - if (startTokenValue != "while") - ranges.shift(); - break; - } - break; - } - - if (level === 0){ - stack.unshift(val); - } - } - } - - if (!token) - return null; - - if (tokenRange) { - if (!outputRange) { - ranges.push(stream.getCurrentTokenRange()); - } else { - ranges.push(outputRange); - } - return ranges; - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) { - var endColumn = session.getLine(row).length; - return new Range(row, endColumn, startRow - 1, startColumn); - } else - return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules","ace/mode/folding/vbscript","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighlightRules; -var FoldMode = require("./folding/vbscript").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = VBScriptHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; - this.indentKeywords = this.foldingRules.indentKeywords; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["'", "REM"]; - - var outdentKeywords = [ - "else", - "elseif", - "end", - "loop", - "next", - "wend" - ]; - - function getNetIndentLevel(tokens, line, indentKeywords) { - var level = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "keyword.control.asp" || token.type == "storage.type.function.asp") { - var val = token.value.toLowerCase(); - if (val in indentKeywords) { - switch (val) { - case "property": - case "sub": - case "function": - case "select": - case "do": - case "for": - case "class": - case "while": - case "with": - case "if": - var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); - var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); - if (!singleLineCondition && !checkToken.test(line)) - level += indentKeywords[val]; - break; - default: - level += indentKeywords[val]; - break; - } - } - } - } - if (level < 0) { - return -1; - } else if (level > 0) { - return 1; - } else { - return 0; - } - } - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var level = 0; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (state == "start") { - level = getNetIndentLevel(tokens, line, this.indentKeywords); - } - if (level > 0) { - return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { - if (!this.checkOutdent(state, line, "\n")) { - return indent.substr(0, indent.length - tab.length); - } - } - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (input != "\n" && input != "\r" && input != "\r\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens || !tokens.length) - return false; - var val = tokens[0].value.toLowerCase(); - return ((tokens[0].type == "keyword.control.asp" || tokens[0].type == "storage.type.function.asp") && outdentKeywords.indexOf(val) != -1); - }; - - this.getMatching = function(session, row, column, tokenRange) { - if (row == undefined) { - var pos = session.selection.lead; - column = pos.column; - row = pos.row; - } - if (tokenRange == undefined) - tokenRange = true; - - var startToken = session.getTokenAt(row, column); - if (startToken) { - var val = startToken.value.toLowerCase(); - if (val in this.indentKeywords) - return this.foldingRules.vbsBlock(session, row, column, tokenRange); - } - }; - - this.autoOutdent = function(state, session, row) { - var line = session.getLine(row); - var column = line.match(/^\s*/)[0].length; - if (!column || !row) return; - - var startRange = this.getMatching(session, row, column + 1, false); - if (!startRange || startRange.start.row == row) - return; - var indent = this.$getIndent(session.getLine(startRange.start.row)); - if (indent.length != column) { - session.replace(new Range(row, 0, row, column), indent); - session.outdentRows(new Range(row + 1, 0, row + 1, 0)); - } - }; - - this.$id = "ace/mode/vbscript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/vbscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-velocity.js b/src-noconflict/mode-velocity.js deleted file mode 100644 index 7eb757c..0000000 --- a/src-noconflict/mode-velocity.js +++ /dev/null @@ -1,2792 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var VelocityHighlightRules = function() { - HtmlHighlightRules.call(this); - - var builtinConstants = lang.arrayToMap( - ('true|false|null').split('|') - ); - - var builtinFunctions = lang.arrayToMap( - ("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|') - ); - - var builtinVariables = lang.arrayToMap( - ('$contentRoot|$foreach').split('|') - ); - - var keywords = lang.arrayToMap( - ("#set|#macro|#include|#parse|" + - "#if|#elseif|#else|#foreach|" + - "#break|#end|#stop" - ).split('|') - ); - - this.$rules.start.push( - { - token : "comment", - regex : "##.*$" - },{ - token : "comment.block", // multi line comment - regex : "#\\*", - next : "vm_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z$#][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ); - - this.$rules["vm_comment"] = [ - { - token : "comment", // closing comment - regex : "\\*#|-->", - next : "start" - }, { - defaultToken: "comment" - } - ]; - - this.$rules["vm_start"] = [ - { - token: "variable", - regex: "}", - next: "pop" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ]; - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token: "variable", - regex: "\\${", - push: "vm_start" - }); - } - - this.normalizeRules(); -}; - -oop.inherits(VelocityHighlightRules, TextHighlightRules); - -exports.VelocityHighlightRules = VelocityHighlightRules; -}); - -ace.define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "##") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "##") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "##" && next[indent] == "##") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var VelocityHighlightRules = require("./velocity_highlight_rules").VelocityHighlightRules; -var FoldMode = require("./folding/velocity").FoldMode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = VelocityHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.lineCommentStart = "##"; - this.blockComment = {start: "#*", end: "*#"}; - this.$id = "ace/mode/velocity"; - this.snippetFileId = "ace/snippets/velocity"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/velocity"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-verilog.js b/src-noconflict/mode-verilog.js deleted file mode 100644 index 548385d..0000000 --- a/src-noconflict/mode-verilog.js +++ /dev/null @@ -1,118 +0,0 @@ -ace.define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VerilogHighlightRules = function() { -var keywords = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|" + - "deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|" + - "endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|" + - "highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|" + - "macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|" + - "posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|" + - "reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|" + - "strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|" + - "unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor" + - "begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|" + - "endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|" + - "macromodule|module|primitive|repeat|specify|table|task|while"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "//.*$" - }, { - token : "comment.start", - regex : "/\\*", - next : [ - { token : "comment.end", regex : "\\*/", next: "start" }, - { defaultToken : "comment" } - ] - }, { - token : "string.start", - regex : '"', - next : [ - { token : "constant.language.escape", regex : /\\(?:[ntvfa\\"]|[0-7]{1,3}|\x[a-fA-F\d]{1,2}|)/, consumeLineEnd : true }, - { token : "string.end", regex : '"|$', next: "start" }, - { defaultToken : "string" } - ] - }, { - token : "string", - regex : "'^[']'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; - this.normalizeRules(); -}; - -oop.inherits(VerilogHighlightRules, TextHighlightRules); - -exports.VerilogHighlightRules = VerilogHighlightRules; -}); - -ace.define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var VerilogHighlightRules = require("./verilog_highlight_rules").VerilogHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = VerilogHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = { '"': '"' }; - - - this.$id = "ace/mode/verilog"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/verilog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-vhdl.js b/src-noconflict/mode-vhdl.js deleted file mode 100644 index 1c30609..0000000 --- a/src-noconflict/mode-vhdl.js +++ /dev/null @@ -1,116 +0,0 @@ -ace.define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VHDLHighlightRules = function() { - - - - var keywords = "access|after|ailas|all|architecture|assert|attribute|"+ - "begin|block|buffer|bus|case|component|configuration|"+ - "disconnect|downto|else|elsif|end|entity|file|for|function|"+ - "generate|generic|guarded|if|impure|in|inertial|inout|is|"+ - "label|linkage|literal|loop|mapnew|next|of|on|open|others|"+ - "out|port|process|pure|range|record|reject|report|return|"+ - "select|severity|shared|signal|subtype|then|to|transport|"+ - "type|unaffected|united|until|wait|when|while|with"; - - var storageType = "bit|bit_vector|boolean|character|integer|line|natural|"+ - "positive|real|register|signed|std_logic|"+ - "std_logic_vector|string||text|time|unsigned|variable"; - - var storageModifiers = "array|constant"; - - var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra"+ - "srl|xnor|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - - var keywordMapper = this.createKeywordMapper({ - "keyword.operator": keywordOperators, - "keyword": keywords, - "constant.language": builtinConstants, - "storage.modifier": storageModifiers, - "storage.type": storageType - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "\\s*(?:library|package|use)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>" - }, { - token : "punctuation.operator", - regex : "\\'|\\:|\\,|\\;|\\." - },{ - token : "paren.lparen", - regex : "[[(]" - }, { - token : "paren.rparen", - regex : "[\\])]" - }, { - token : "text", - regex : "\\s+" - } ] - - - }; -}; - -oop.inherits(VHDLHighlightRules, TextHighlightRules); - -exports.VHDLHighlightRules = VHDLHighlightRules; -}); - -ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var VHDLHighlightRules = require("./vhdl_highlight_rules").VHDLHighlightRules; - -var Mode = function() { - this.HighlightRules = VHDLHighlightRules; - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.$id = "ace/mode/vhdl"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/vhdl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-visualforce.js b/src-noconflict/mode-visualforce.js deleted file mode 100644 index e4f8c93..0000000 --- a/src-noconflict/mode-visualforce.js +++ /dev/null @@ -1,2640 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "punctuation.operator", - regex : "[:;]" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: 1000000 - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "inert", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "abbr": {}, - "address": {}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, - "article": {"pubdate": 1}, - "aside": {}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "b": {}, - "base": {"href": 1, "target": 1}, - "bdi": {}, - "bdo": {}, - "blockquote": {"cite": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "br": {}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "canvas": {"width": 1, "height": 1}, - "caption": {}, - "cite": {}, - "code": {}, - "col": {"span": 1}, - "colgroup": {"span": 1}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "data": {}, - "datalist": {}, - "dd": {}, - "del": {"cite": 1, "datetime": 1}, - "details": {"open": 1}, - "dfn": {}, - "dialog": {"open": 1}, - "div": {}, - "dl": {}, - "dt": {}, - "em": {}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "head": {}, - "header": {}, - "hr": {}, - "html": {"manifest": 1}, - "i": {}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "ins": {"cite": 1, "datetime": 1}, - "kbd": {}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "label": {"form": 1, "for": 1}, - "legend": {}, - "li": {"value": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "main": {}, - "map": {"name": 1}, - "mark": {}, - "math": {}, - "menu": {"type": 1, "label": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "nav": {}, - "noscript": {"href": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "ol": {"start": 1, "reversed": 1}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "p": {}, - "param": {"name": 1, "value": 1}, - "pre": {}, - "progress": {"value": 1, "max": 1}, - "q": {"cite": 1}, - "rp": {}, - "rt": {}, - "ruby": {}, - "s": {}, - "samp": {}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "small": {}, - "source": {"src": 1, "type": 1, "media": 1}, - "span": {}, - "strong": {}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "sub": {}, - "sup": {}, - "svg": {}, - "table": {"summary": 1}, - "tbody": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "tfoot": {}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "thead": {}, - "time": {"datetime": 1}, - "title": {}, - "tr": {}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "section": {}, - "summary": {}, - "u": {}, - "ul": {}, - "var": {}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "wbr": {} -}; - -var elements = Object.keys(attributeMap); - -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -function findAttributeName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ - token = iterator.stepBackward(); - } - if (token) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) - return this.getTagCompletions(state, session, pos, prefix); - if (is(token, "tag-whitespace") || is(token, "attribute-name")) - return this.getAttributeCompletions(state, session, pos, prefix); - if (is(token, "attribute-value")) - return this.getAttributeValueCompletions(state, session, pos, prefix); - var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[a-z]*$/i.test(line)) - return this.getHTMLEntityCompletions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ - return { - value: element, - meta: "tag", - score: 1000000 - }; - }); - }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(Object.keys(attributeMap[tagName])); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute", - score: 1000000 - }; - }); - }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - var attributeName = findAttributeName(session, pos); - - if (!tagName) - return []; - var values = []; - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { - values = Object.keys(attributeMap[tagName][attributeName]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "attribute value", - score: 1000000 - }; - }); - }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "html entity", - score: 1000000 - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { - this.fragmentContext = options && options.fragmentContext; - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - if (this.constructor != Mode) - return; - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/html"; - this.snippetFileId = "ace/snippets/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/visualforce_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("../mode/html_highlight_rules").HtmlHighlightRules; - -function string(options) { - return { - token: options.token + ".start", - regex: options.start, - push: [{ - token : "constant.language.escape", - regex : options.escape - }, { - token: options.token + ".end", - regex: options.start, - next: "pop" - }, { - defaultToken: options.token - }] - }; -} -var VisualforceHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "$Action|$Api|$Component|$ComponentLabel|$CurrentPage|$FieldSet|$Label|$Label|" + - "$ObjectType|$Organization|$Page|$Permission|$Profile|$Resource|$SControl|" + - "$Setup|$Site|$System.OriginDateTime|$User|$UserRole|" + - "Site|UITheme|UIThemeDisplayed", - "keyword": - "", - "storage.type": - "", - "constant.language": - "true|false|null|TRUE|FALSE|NULL", - "support.function": - "DATE|DATEVALUE|DATETIMEVALUE|DAY|MONTH|NOW|TODAY|YEAR|BLANKVALUE|ISBLANK|" + - "NULLVALUE|PRIORVALUE|AND|CASE|IF|ISCHANGED|ISNEW|ISNUMBER|NOT|OR|ABS|" + - "CEILING|EXP|FLOOR|LN|LOG|MAX|MIN|MOD|ROUND|SQRT|BEGINS|BR|CASESAFEID|" + - "CONTAINS|FIND|GETSESSIONID|HTMLENCODE|ISPICKVAL|JSENCODE|JSINHTMLENCODE|" + - "LEFT|LEN|LOWER|LPAD|MID|RIGHT|RPAD|SUBSTITUTE|TEXT|TRIM|UPPER|URLENCODE|VALUE|" + - "GETRECORDIDS|INCLUDE|LINKTO|REGEX|REQUIRESCRIPT|URLFOR|VLOOKUP|HTMLENCODE|JSENCODE|" + - "JSINHTMLENCODE|URLENCODE" - }, "identifier"); - - HtmlHighlightRules.call(this); - var hbs = { - token : "keyword.start", - regex : "{!", - push : "Visualforce" - }; - for (var key in this.$rules) { - this.$rules[key].unshift(hbs); - } - this.$rules.Visualforce = [ - string({ - start: '"', - escape: /\\[btnfr"'\\]/, - token: "string", - multiline: true - }), - string({ - start: "'", - escape: /\\[btnfr"'\\]/, - token: "string", - multiline: true - }), - { - token: "comment.start", - regex : "\\/\\*", - push: [ - {token : "comment.end", regex : "\\*\\/|(?=})", next : "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "keyword.end", - regex : "}", - next : "pop" - }, { - token : keywordMapper, - regex : /[a-zA-Z$_\u00a1-\uffff][a-zA-Z\d$_\u00a1-\uffff]*\b/ - }, { - token : "keyword.operator", - regex : /==|<>|!=|<=|>=|&&|\|\||[+\-*/^()=<>&]/ - }, { - token : "punctuation.operator", - regex : /[?:,;.]/ - }, { - token : "paren.lparen", - regex : /[\[({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - } - ]; - - this.normalizeRules(); -}; - -oop.inherits(VisualforceHighlightRules, HtmlHighlightRules); - -exports.VisualforceHighlightRules = VisualforceHighlightRules; -}); - -ace.define("ace/mode/visualforce",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/visualforce_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var VisualforceHighlightRules = require("./visualforce_highlight_rules").VisualforceHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; - -function VisualforceMode() { - HtmlMode.call(this); - - this.HighlightRules = VisualforceHighlightRules; - this.foldingRules = new HtmlFoldMode(); - this.$behaviour = new XmlBehaviour(); -} - -oop.inherits(VisualforceMode, HtmlMode); - -VisualforceMode.prototype.emmetConfig = { - profile: "xhtml" -}; - -exports.Mode = VisualforceMode; - -}); (function() { - ace.require(["ace/mode/visualforce"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-wollok.js b/src-noconflict/mode-wollok.js deleted file mode 100644 index 65e13c6..0000000 --- a/src-noconflict/mode-wollok.js +++ /dev/null @@ -1,914 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "storage.type", - regex : /=>/, - next : "start" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || options.jsx != false) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -function comments(next) { - return [ - { - token : "comment", // multi line comment - regex : /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - }, { - token : "comment", - regex : "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define("ace/mode/wollok_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var WollokHighlightRules = function() { - var keywords = ( - "test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin" - ); - - var buildinConstants = ("null|assert|console"); - - var langClasses = ( - "Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range" + - "|StackTraceElement" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "self", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(WollokHighlightRules, TextHighlightRules); - -exports.WollokHighlightRules = WollokHighlightRules; -}); - -ace.define("ace/mode/wollok",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/wollok_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var WollokHighlightRules = require("./wollok_highlight_rules").WollokHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = WollokHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/wollok"; - this.snippetFileId = "ace/snippets/wollok"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/wollok"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-xml.js b/src-noconflict/mode-xml.js deleted file mode 100644 index 7633f8d..0000000 --- a/src-noconflict/mode-xml.js +++ /dev/null @@ -1,676 +0,0 @@ -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === " -1; -} - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (!tag) - return this.getCommentFoldWidget(session, row); - - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - - return "start"; - }; - - this.getCommentFoldWidget = function(session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - - return null; - }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/xml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-xquery.js b/src-noconflict/mode-xquery.js deleted file mode 100644 index 3945305..0000000 --- a/src-noconflict/mode-xquery.js +++ /dev/null @@ -1,2644 +0,0 @@ -ace.define("ace/mode/xquery/xquery_lexer",["require","exports","module"], function(require, exports, module) { -module.exports = (function outer (modules, cache, entry) { - var previousRequire = typeof require == "function" && require; - function newRequire(name, jumped){ - if(!cache[name]) { - if(!modules[name]) { - var currentRequire = typeof require == "function" && require; - if (!jumped && currentRequire) return currentRequire(name, true); - if (previousRequire) return previousRequire(name, true); - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - var m = cache[name] = {exports:{}}; - modules[name][0].call(m.exports, function(x){ - var id = modules[name][1][x]; - return newRequire(id ? id : x); - },m,m.exports,outer,modules,cache,entry); - } - return cache[name].exports; - } - for(var i=0;i= 0 ? XQueryTokenizer.TOKEN[o] : null; - }; - - this.getExpectedTokenSet = function(e) - { - var expected; - if (e.getExpected() < 0) - { - expected = XQueryTokenizer.getTokenSet(- e.getState()); - } - else - { - expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; - } - return expected; - }; - - this.getErrorMessage = function(e) - { - var tokenSet = this.getExpectedTokenSet(e); - var found = this.getOffendingToken(e); - var prefix = input.substring(0, e.getBegin()); - var lines = prefix.split("\n"); - var line = lines.length; - var column = lines[line - 1].length + 1; - var size = e.getEnd() - e.getBegin(); - return e.getMessage() - + (found == null ? "" : ", found " + found) - + "\nwhile expecting " - + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) - + "\n" - + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") - + "at line " + line + ", column " + column + ":\n..." - + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) - + "..."; - }; - - this.parse_start = function() - { - eventHandler.startNonterminal("start", e0); - lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | - switch (l1) - { - case 55: // '' | '=' | '>' - switch (l1) - { - case 58: // '>' - shift(58); // '>' - break; - case 50: // '/>' - shift(50); // '/>' - break; - case 27: // QName - shift(27); // QName - break; - case 57: // '=' - shift(57); // '=' - break; - case 35: // '"' - shift(35); // '"' - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("StartTag", e0); - }; - - this.parse_TagContent = function() - { - eventHandler.startNonterminal("TagContent", e0); - lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | - switch (l1) - { - case 23: // ElementContentChar - shift(23); // ElementContentChar - break; - case 6: // Tag - shift(6); // Tag - break; - case 7: // EndTag - shift(7); // EndTag - break; - case 55: // '' - switch (l1) - { - case 11: // CDataSectionContents - shift(11); // CDataSectionContents - break; - case 64: // ']]>' - shift(64); // ']]>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CData", e0); - }; - - this.parse_XMLComment = function() - { - eventHandler.startNonterminal("XMLComment", e0); - lookahead1(0); // DirCommentContents | EOF | '-->' - switch (l1) - { - case 9: // DirCommentContents - shift(9); // DirCommentContents - break; - case 47: // '-->' - shift(47); // '-->' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("XMLComment", e0); - }; - - this.parse_PI = function() - { - eventHandler.startNonterminal("PI", e0); - lookahead1(3); // DirPIContents | EOF | '?' | '?>' - switch (l1) - { - case 10: // DirPIContents - shift(10); // DirPIContents - break; - case 59: // '?' - shift(59); // '?' - break; - case 60: // '?>' - shift(60); // '?>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("PI", e0); - }; - - this.parse_Pragma = function() - { - eventHandler.startNonterminal("Pragma", e0); - lookahead1(2); // PragmaContents | EOF | '#' | '#)' - switch (l1) - { - case 8: // PragmaContents - shift(8); // PragmaContents - break; - case 36: // '#' - shift(36); // '#' - break; - case 37: // '#)' - shift(37); // '#)' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Pragma", e0); - }; - - this.parse_Comment = function() - { - eventHandler.startNonterminal("Comment", e0); - lookahead1(4); // CommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - case 30: // CommentContents - shift(30); // CommentContents - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Comment", e0); - }; - - this.parse_CommentDoc = function() - { - eventHandler.startNonterminal("CommentDoc", e0); - lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 31: // DocTag - shift(31); // DocTag - break; - case 32: // DocCommentContents - shift(32); // DocCommentContents - break; - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CommentDoc", e0); - }; - - this.parse_QuotString = function() - { - eventHandler.startNonterminal("QuotString", e0); - lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 19: // EscapeQuot - shift(19); // EscapeQuot - break; - case 21: // QuotChar - shift(21); // QuotChar - break; - case 35: // '"' - shift(35); // '"' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("QuotString", e0); - }; - - this.parse_AposString = function() - { - eventHandler.startNonterminal("AposString", e0); - lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 20: // EscapeApos - shift(20); // EscapeApos - break; - case 22: // AposChar - shift(22); // AposChar - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("AposString", e0); - }; - - this.parse_Prefix = function() - { - eventHandler.startNonterminal("Prefix", e0); - lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_NCName(); - eventHandler.endNonterminal("Prefix", e0); - }; - - this.parse__EQName = function() - { - eventHandler.startNonterminal("_EQName", e0); - lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_EQName(); - eventHandler.endNonterminal("_EQName", e0); - }; - - function parse_EQName() - { - eventHandler.startNonterminal("EQName", e0); - switch (l1) - { - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - default: - parse_FunctionName(); - } - eventHandler.endNonterminal("EQName", e0); - } - - function parse_FunctionName() - { - eventHandler.startNonterminal("FunctionName", e0); - switch (l1) - { - case 14: // EQName^Token - shift(14); // EQName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("FunctionName", e0); - } - - function parse_NCName() - { - eventHandler.startNonterminal("NCName", e0); - switch (l1) - { - case 26: // NCName^Token - shift(26); // NCName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("NCName", e0); - } - - function shift(t) - { - if (l1 == t) - { - whitespace(); - eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); - b0 = b1; e0 = e1; l1 = 0; - } - else - { - error(b1, e1, 0, l1, t); - } - } - - function whitespace() - { - if (e0 != b1) - { - b0 = e0; - e0 = b1; - eventHandler.whitespace(b0, e0); - } - } - - function matchW(set) - { - var code; - for (;;) - { - code = match(set); - if (code != 28) // S^WS - { - break; - } - } - return code; - } - - function lookahead1W(set) - { - if (l1 == 0) - { - l1 = matchW(set); - b1 = begin; - e1 = end; - } - } - - function lookahead1(set) - { - if (l1 == 0) - { - l1 = match(set); - b1 = begin; - e1 = end; - } - } - - function error(b, e, s, l, t) - { - throw new self.ParseException(b, e, s, l, t); - } - - var lk, b0, e0; - var l1, b1, e1; - var eventHandler; - - var input; - var size; - var begin; - var end; - - function match(tokenSetId) - { - var nonbmp = false; - begin = end; - var current = end; - var result = XQueryTokenizer.INITIAL[tokenSetId]; - var state = 0; - - for (var code = result & 4095; code != 0; ) - { - var charclass; - var c0 = current < size ? input.charCodeAt(current) : 0; - ++current; - if (c0 < 0x80) - { - charclass = XQueryTokenizer.MAP0[c0]; - } - else if (c0 < 0xd800) - { - var c1 = c0 >> 4; - charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; - } - else - { - if (c0 < 0xdc00) - { - var c1 = current < size ? input.charCodeAt(current) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) - { - ++current; - c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; - nonbmp = true; - } - } - var lo = 0, hi = 5; - for (var m = 3; ; m = (hi + lo) >> 1) - { - if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; - else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; - else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} - if (lo > hi) {charclass = 0; break;} - } - } - - state = code; - var i0 = (charclass << 12) + code - 1; - code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; - - if (code > 4095) - { - result = code; - code &= 4095; - end = current; - } - } - - result >>= 12; - if (result == 0) - { - end = current - 1; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - return error(begin, end, state, -1, -1); - } - - if (nonbmp) - { - for (var i = result >> 9; i > 0; --i) - { - --end; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - } - } - else - { - end -= result >> 9; - } - - return (result & 511) - 1; - } -} - -XQueryTokenizer.getTokenSet = function(tokenSetId) -{ - var set = []; - var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; - for (var i = 0; i < 276; i += 32) - { - var j = i; - var i0 = (i >> 5) * 2062 + s - 1; - var i1 = i0 >> 2; - var i2 = i1 >> 2; - var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; - for ( ; f != 0; f >>>= 1, ++j) - { - if ((f & 1) != 0) - { - set.push(XQueryTokenizer.TOKEN[j]); - } - } - } - return set; -}; - -XQueryTokenizer.MAP0 = -[ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 -]; - -XQueryTokenizer.MAP1 = -[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 -]; - -XQueryTokenizer.MAP2 = -[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35 -]; - -XQueryTokenizer.INITIAL = -[ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 -]; - -XQueryTokenizer.TRANSITION = -[ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 -]; - -XQueryTokenizer.EXPECTED = -[ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 -]; - -XQueryTokenizer.TOKEN = -[ - "(0)", - "ModuleDecl", - "Annotation", - "OptionDecl", - "Operator", - "Variable", - "Tag", - "EndTag", - "PragmaContents", - "DirCommentContents", - "DirPIContents", - "CDataSectionContents", - "AttrTest", - "Wildcard", - "EQName", - "IntegerLiteral", - "DecimalLiteral", - "DoubleLiteral", - "PredefinedEntityRef", - "'\"\"'", - "EscapeApos", - "QuotChar", - "AposChar", - "ElementContentChar", - "QuotAttrContentChar", - "AposAttrContentChar", - "NCName", - "QName", - "S", - "CharRef", - "CommentContents", - "DocTag", - "DocCommentContents", - "EOF", - "'!'", - "'\"'", - "'#'", - "'#)'", - "''''", - "'('", - "'(#'", - "'(:'", - "'(:~'", - "')'", - "'*'", - "'*'", - "','", - "'-->'", - "'.'", - "'/'", - "'/>'", - "':'", - "':)'", - "';'", - "''), token: xmlcomment, next: function(stack){ stack.pop(); } } - ], - CData: [ - { name: 'CDataSectionContents', token: cdata }, - { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } - ], - PI: [ - { name: 'DirPIContents', token: pi }, - { name: n('?'), token: pi }, - { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } - ], - AposString: [ - { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, - { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, - { name: 'CharRef', token: 'constant.language.escape' }, - { name: 'EscapeApos', token: 'constant.language.escape' }, - { name: 'AposChar', token: 'string' } - ], - QuotString: [ - { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, - { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, - { name: 'CharRef', token: 'constant.language.escape' }, - { name: 'EscapeQuot', token: 'constant.language.escape' }, - { name: 'QuotChar', token: 'string' } - ] -}; - -exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; -},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}]},{},["/node_modules/xqlint/lib/lexers/xquery_lexer.js"]); - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} - -var XmlBehaviour = function () { - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - - if (!token) - token = iterator.stepBackward(); - - if (!token) - return; - - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - - if (!token) { - return; - } - - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - - if (nextToken && nextToken.value === "') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - var atCursor = false; - var state = JSON.parse(state).pop(); - if ((token && token.value === '>') || state !== "StartTag") return; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - var previous = iterator.stepBackward(); - if (!token || !hasType(token, 'meta.tag') || (previous !== null && previous.value.match('/'))) { - return; - } - var tag = token.value.substring(1); - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - }; - } - }); - - }; - oop.inherits(XQueryBehaviour, Behaviour); - - exports.XQueryBehaviour = XQueryBehaviour; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"], function(require, exports, module) { -"use strict"; - -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var XQueryLexer = require("./xquery/xquery_lexer").XQueryLexer; -var Range = require("../range").Range; -var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Anchor = require("../anchor").Anchor; - -var Mode = function() { - this.$tokenizer = new XQueryLexer(); - this.$behaviour = new XQueryBehaviour(); - this.foldingRules = new CStyleFoldMode(); - this.$highlightRules = new TextHighlightRules(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.completer = { - getCompletions: function(editor, session, pos, prefix, callback) { - if (!session.$worker) - return callback(); - session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); - session.$worker.on("complete", function(e){ - callback(null, e.data); - }); - } - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); - if (match) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (! /^\s+$/.test(line)) - return false; - - return (/^\s*[\}\)]/).test(input); - }; - - this.autoOutdent = function(state, doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*[\}\)])/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(:(.*):\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); - } - }; - - this.createWorker = function(session) { - - var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); - var that = this; - - worker.attachToDocument(session.getDocument()); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - worker.on("markers", function(e) { - session.clearAnnotations(); - that.addMarkers(e.data, session); - }); - - worker.on("highlight", function(tokens) { - that.$tokenizer.tokens = tokens.data.tokens; - that.$tokenizer.lines = session.getDocument().getAllLines(); - - var rows = Object.keys(that.$tokenizer.tokens); - for(var i=0; i < rows.length; i++) { - var row = parseInt(rows[i]); - delete session.bgTokenizer.lines[row]; - delete session.bgTokenizer.states[row]; - session.bgTokenizer.fireUpdateEvent(row, row); - } - }); - - return worker; - }; - - this.removeMarkers = function(session) { - var markers = session.getMarkers(false); - for (var id in markers) { - if (markers[id].clazz.indexOf('language_highlight_') === 0) { - session.removeMarker(id); - } - } - for (var i = 0; i < session.markerAnchors.length; i++) { - session.markerAnchors[i].detach(); - } - session.markerAnchors = []; - }; - - this.addMarkers = function(annos, mySession) { - var _self = this; - - if (!mySession.markerAnchors) mySession.markerAnchors = []; - this.removeMarkers(mySession); - mySession.languageAnnos = []; - annos.forEach(function(anno) { - var anchor = new Anchor(mySession.getDocument(), anno.pos.sl, anno.pos.sc || 0); - mySession.markerAnchors.push(anchor); - var markerId; - var colDiff = anno.pos.ec - anno.pos.sc; - var rowDiff = anno.pos.el - anno.pos.sl; - var gutterAnno = { - guttertext: anno.message, - type: anno.level || "warning", - text: anno.message - }; - - function updateFloat(single) { - if (markerId) - mySession.removeMarker(markerId); - gutterAnno.row = anchor.row; - if (anno.pos.sc !== undefined && anno.pos.ec !== undefined) { - var range = new Range(anno.pos.sl, anno.pos.sc, anno.pos.el, anno.pos.ec); - markerId = mySession.addMarker(range, "language_highlight_" + (anno.type ? anno.type : "default")); - } - if (single) mySession.setAnnotations(mySession.languageAnnos); - } - updateFloat(); - anchor.on("change", function() { - updateFloat(true); - }); - if (anno.message) mySession.languageAnnos.push(gutterAnno); - }); - mySession.setAnnotations(mySession.languageAnnos); - }; - - this.$id = "ace/mode/xquery"; - this.snippetFileId = "ace/snippets/xquery"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/xquery"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-yaml.js b/src-noconflict/mode-yaml.js deleted file mode 100644 index 9ba9303..0000000 --- a/src-noconflict/mode-yaml.js +++ /dev/null @@ -1,330 +0,0 @@ -ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var YamlHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "list.markup", - regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ - }, { - token : "list.markup", - regex : /^\s*[\-?](?:$|\s)/ - }, { - token: "constant", - regex: "!![\\w//]+" - }, { - token: "constant.language", - regex: "[&\\*][a-zA-Z0-9-_]+" - }, { - token: ["meta.tag", "keyword"], - regex: /^(\s*\w.*?)(:(?=\s|$))/ - },{ - token: ["meta.tag", "keyword"], - regex: /(\w+?)(\s*:(?=\s|$))/ - }, { - token : "keyword.operator", - regex : "<<\\w*:\\w*" - }, { - token : "keyword.operator", - regex : "-\\s*(?=[{])" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : /[|>][-+\d]*(?:$|\s+(?:$|#))/, - onMatch: function(val, state, stack, line) { - line = line.replace(/ #.*/, ""); - var indent = /^ *((:\s*)?-(\s*[^|>])?)?/.exec(line)[0] - .replace(/\S\s*$/, "").length; - var indentationIndicator = parseInt(/\d+[\s+-]*$/.exec(line)); - - if (indentationIndicator) { - indent += indentationIndicator - 1; - this.next = "mlString"; - } else { - this.next = "mlStringPre"; - } - if (!stack.length) { - stack.push(this.next); - stack.push(indent); - } else { - stack[0] = this.next; - stack[1] = indent; - } - return this.token; - }, - next : "mlString" - }, { - token : "string", // single quoted string - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // float - regex : /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)/ - }, { - token : "constant.numeric", // other number - regex : /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/ - }, { - token : "constant.language.boolean", - regex : "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : /[^\s,:\[\]\{\}]+/ - } - ], - "mlStringPre" : [ - { - token : "indent", - regex : /^ *$/ - }, { - token : "indent", - regex : /^ */, - onMatch: function(val, state, stack) { - var curIndent = stack[1]; - - if (curIndent >= val.length) { - this.next = "start"; - stack.shift(); - stack.shift(); - } - else { - stack[1] = val.length - 1; - this.next = stack[0] = "mlString"; - } - return this.token; - }, - next : "mlString" - }, { - defaultToken : "string" - } - ], - "mlString" : [ - { - token : "indent", - regex : /^ *$/ - }, { - token : "indent", - regex : /^ */, - onMatch: function(val, state, stack) { - var curIndent = stack[1]; - - if (curIndent >= val.length) { - this.next = "start"; - stack.splice(0); - } - else { - this.next = "mlString"; - } - return this.token; - }, - next : "mlString" - }, { - token : "string", - regex : '.+' - } - ]}; - this.normalizeRules(); - -}; - -oop.inherits(YamlHighlightRules, TextHighlightRules); - -exports.YamlHighlightRules = YamlHighlightRules; -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var YamlHighlightRules = require("./yaml_highlight_rules").YamlHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = YamlHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["#"]; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.$id = "ace/mode/yaml"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/yaml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/mode-zeek.js b/src-noconflict/mode-zeek.js deleted file mode 100644 index 234358a..0000000 --- a/src-noconflict/mode-zeek.js +++ /dev/null @@ -1,539 +0,0 @@ -ace.define("ace/mode/zeek_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ZeekHighlightRules = function() { - - this.$rules = { - "start": [ - { - token: "comment.line", - regex: "#.*$" - }, - { - token: "string.double", - regex: /"/, - next: "string-state" - }, - { - token: "string.regexp", - regex: "(/)(?=.*/)", - next: "pattern-state" - }, - { - token: ["keyword.other", "meta.preprocessor"], - regex: /(@(?:load-plugin|load-sigs|load|unload))(.*$)/ - }, - { - token: "keyword.other", - regex: /@(?:DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif)/ - }, - { - token: [ - "keyword.other", - "meta.preprocessor", - "keyword.operator", - "meta.preprocessor" - ], - regex: /(@prefixes)(\s*)(\+?=)(.*$)/ - }, - { - token: "storage.modifier.attribute", - regex: /\&\b(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|error_handler|type_column|deprecated)\b/ - }, - { - token: "constant.language", - regex: /\b(?:T|F)\b/ - }, - { - token: "constant.numeric.port", - regex: /\b\d{1,5}\/(?:udp|tcp|icmp|unknown)\b/ - }, - { - token: "constant.numeric.addr", - regex: /\b(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\b/, - comment: "IPv4 address" - }, - { - token: "constant.numeric.addr", - regex: /\[(?:[0-9a-fA-F]{0,4}:){2,7}(?:[0-9a-fA-F]{0,4})?(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}))?\]/, - comment: "IPv6 address" - }, - { - token: "constant.numeric.float.decimal.interval", - regex: /(?:(?:\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*)|\d+)\s*(?:day|hr|min|msec|usec|sec)s?/ - }, - { - token: "constant.numeric.float.decimal", - regex: /\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*/ - }, - { - token: "constant.numeric.hostname", - regex: /\b[A-Za-z0-9][A-Za-z0-9\-]*(?:\.[A-Za-z0-9][A-Za-z0-9\-]*)+\b/ - }, - { - token: "constant.numeric.integer.hexadecimal", - regex: /\b0x[0-9a-fA-F]+\b/ - }, - { - token: "constant.numeric.integer.decimal", - regex: /\b\d+\b/ - }, - { - token: "keyword.operator", - regex: /==|!=|<=|<|>=|>/ - }, - { - token: "keyword.operator", - regex: /(&&)|(\|\|)|(!)/ - }, - { - token: "keyword.operator", - regex: /=|\+=|-=/ - }, - { - token: "keyword.operator", - regex: /\+\+|\+|--|-|\*|\/|%/ - }, - { - token: "keyword.operator", - regex: /&|\||\^|~/ - }, - { - token: "keyword.operator", - regex: /\b(?:in|as|is)\b/ - }, - { - token: "punctuation.terminator", - regex: /;/ - }, - { - token: "punctuation.accessor", - regex: /\??\$/ - }, - { - token: "punctuation.accessor", - regex: /::/ - }, - { - token: "keyword.operator", - regex: /\?/ - }, - { - token: "punctuation.separator", - regex: /:/ - }, - { - token: "punctuation.separator", - regex: /,/ - }, - { - token: [ - "keyword.other", - "meta.namespace", - "entity.name.namespace" - ], - regex: /(module)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)/ - }, - { - token: "keyword.other", - regex: /\bexport\b/ - }, - { - token: "keyword.control.conditional", - regex: /\b(?:if|else)\b/ - }, - { - token: "keyword.control", - regex: /\b(?:for|while)\b/ - }, - { - token: "keyword.control", - regex: /\b(?:return|break|next|continue|fallthrough)\b/ - }, - { - token: "keyword.control", - regex: /\b(?:switch|default|case)\b/ - }, - { - token: "keyword.other", - regex: /\b(?:add|delete)\b/ - }, - { - token: "keyword.other", - regex: /\bprint\b/ - }, - { - token: "keyword.control", - regex: /\b(?:when|timeout|schedule)\b/ - }, - { - token: [ - "keyword.other", - "meta.struct.record", - "entity.name.struct.record", - "meta.struct.record", - "punctuation.separator", - "meta.struct.record", - "storage.type.struct.record" - ], - regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(record)\b/ - }, - { - token: [ - "keyword.other", - "meta.enum", - "entity.name.enum", - "meta.enum", - "punctuation.separator", - "meta.enum", - "storage.type.enum" - ], - regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(enum)\b/ - }, - { - token: [ - "keyword.other", - "meta.type", - "entity.name.type", - "meta.type", - "punctuation.separator" - ], - regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)/ - }, - { - token: [ - "keyword.other", - "meta.struct.record", - "storage.type.struct.record", - "meta.struct.record", - "entity.name.struct.record" - ], - regex: /\b(redef)(\s+)(record)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ - }, - { - token: [ - "keyword.other", - "meta.enum", - "storage.type.enum", - "meta.enum", - "entity.name.enum" - ], - regex: /\b(redef)(\s+)(enum)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ - }, - { - token: [ - "storage.type", - "text", - "entity.name.function.event" - ], - regex: /\b(event)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ - }, - { - token: [ - "storage.type", - "text", - "entity.name.function.hook" - ], - regex: /\b(hook)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ - }, - { - token: [ - "storage.type", - "text", - "entity.name.function" - ], - regex: /\b(function)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ - }, - { - token: "keyword.other", - regex: /\bredef\b/ - }, - { - token: "storage.type", - regex: /\bany\b/ - }, - { - token: "storage.type", - regex: /\b(?:enum|record|set|table|vector)\b/ - }, - { - token: [ - "storage.type", - "text", - "keyword.operator", - "text", - "storage.type" - ], - regex: /\b(opaque)(\s+)(of)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ - }, - { - token: "keyword.operator", - regex: /\bof\b/ - }, - { - token: "storage.type", - regex: /\b(?:addr|bool|count|double|file|int|interval|pattern|port|string|subnet|time)\b/ - }, - { - token: "storage.type", - regex: /\b(?:function|hook|event)\b/ - }, - { - token: "storage.modifier", - regex: /\b(?:global|local|const|option)\b/ - }, - { - token: "entity.name.function.call", - regex: /\b[A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*(?=s*\()/ - }, - { - token: "punctuation.section.block.begin", - regex: /\{/ - }, - { - token: "punctuation.section.block.end", - regex: /\}/ - }, - { - token: "punctuation.section.brackets.begin", - regex: /\[/ - }, - { - token: "punctuation.section.brackets.end", - regex: /\]/ - }, - { - token: "punctuation.section.parens.begin", - regex: /\(/ - }, - { - token: "punctuation.section.parens.end", - regex: /\)/ - } - - ], // state: start - - "string-state": [ - { - token: "constant.character.escape", - regex: /\\./ - }, - { - token: "string.double", - regex: /"/, - next: "start" - }, - { - token: "constant.other.placeholder", - regex: /%-?[0-9]*(\.[0-9]+)?[DTdxsefg]/ - }, - { - token: "string.double", - regex: "." - } - ], // state: string-state - - "pattern-state": [ - { - token: "constant.character.escape", - regex: /\\./ - }, - { - token: "string.regexp", - regex: "/", - next: "start" - }, - { - token: "string.regexp", - regex: "." - } - ] // state: pattern-state - - }; - - this.normalizeRules(); -}; - -ZeekHighlightRules.metaData = { - fileTypes: ["bro", "zeek"], - name: "Zeek", - scopeName: "source.zeek" -}; - - -oop.inherits(ZeekHighlightRules, TextHighlightRules); - -exports.ZeekHighlightRules = ZeekHighlightRules; -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/zeek",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/zeek_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var ZeekHighlightRules = require("./zeek_highlight_rules").ZeekHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ZeekHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/zeek"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); (function() { - ace.require(["ace/mode/zeek"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/abap.js b/src-noconflict/snippets/abap.js deleted file mode 100644 index a525b93..0000000 --- a/src-noconflict/snippets/abap.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/abap"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/abc.js b/src-noconflict/snippets/abc.js deleted file mode 100644 index a60eded..0000000 --- a/src-noconflict/snippets/abc.js +++ /dev/null @@ -1,45 +0,0 @@ -ace.define("ace/snippets/abc",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "\n\ -snippet zupfnoter.print\n\ - %%%%hn.print {\"startpos\": ${1:pos_y}, \"t\":\"${2:title}\", \"v\":[${3:voices}], \"s\":[[${4:syncvoices}1,2]], \"f\":[${5:flowlines}], \"sf\":[${6:subflowlines}], \"j\":[${7:jumplines}]}\n\ -\n\ -snippet zupfnoter.note\n\ - %%%%hn.note {\"pos\": [${1:pos_x},${2:pos_y}], \"text\": \"${3:text}\", \"style\": \"${4:style}\"}\n\ -\n\ -snippet zupfnoter.annotation\n\ - %%%%hn.annotation {\"id\": \"${1:id}\", \"pos\": [${2:pos}], \"text\": \"${3:text}\"}\n\ -\n\ -snippet zupfnoter.lyrics\n\ - %%%%hn.lyrics {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ -\n\ -snippet zupfnoter.legend\n\ - %%%%hn.legend {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ -\n\ -\n\ -\n\ -snippet zupfnoter.target\n\ - \"^:${1:target}\"\n\ -\n\ -snippet zupfnoter.goto\n\ - \"^@${1:target}@${2:distance}\"\n\ -\n\ -snippet zupfnoter.annotationref\n\ - \"^#${1:target}\"\n\ -\n\ -snippet zupfnoter.annotation\n\ - \"^!${1:text}@${2:x_offset},${3:y_offset}\"\n\ -\n\ -\n\ -"; -exports.scope = "abc"; - -}); (function() { - ace.require(["ace/snippets/abc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/actionscript.js b/src-noconflict/snippets/actionscript.js deleted file mode 100644 index a0e3628..0000000 --- a/src-noconflict/snippets/actionscript.js +++ /dev/null @@ -1,171 +0,0 @@ -ace.define("ace/snippets/actionscript",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet main\n\ - package {\n\ - import flash.display.*;\n\ - import flash.Events.*;\n\ - \n\ - public class Main extends Sprite {\n\ - public function Main ( ) {\n\ - trace(\"start\");\n\ - stage.scaleMode = StageScaleMode.NO_SCALE;\n\ - stage.addEventListener(Event.RESIZE, resizeListener);\n\ - }\n\ - \n\ - private function resizeListener (e:Event):void {\n\ - trace(\"The application window changed size!\");\n\ - trace(\"New width: \" + stage.stageWidth);\n\ - trace(\"New height: \" + stage.stageHeight);\n\ - }\n\ - \n\ - }\n\ - \n\ - }\n\ -snippet class\n\ - ${1:public|internal} class ${2:name} ${3:extends } {\n\ - public function $2 ( ) {\n\ - (\"start\");\n\ - }\n\ - }\n\ -snippet all\n\ - package name {\n\ -\n\ - ${1:public|internal|final} class ${2:name} ${3:extends } {\n\ - private|public| static const FOO = \"abc\";\n\ - private|public| static var BAR = \"abc\";\n\ -\n\ - // class initializer - no JIT !! one time setup\n\ - if Cababilities.os == \"Linux|MacOS\" {\n\ - FOO = \"other\";\n\ - }\n\ -\n\ - // constructor:\n\ - public function $2 ( ){\n\ - super2();\n\ - trace(\"start\");\n\ - }\n\ - public function name (a, b...){\n\ - super.name(..);\n\ - lable:break\n\ - }\n\ - }\n\ - }\n\ -\n\ - function A(){\n\ - // A can only be accessed within this file\n\ - }\n\ -snippet switch\n\ - switch(${1}){\n\ - case ${2}:\n\ - ${3}\n\ - break;\n\ - default:\n\ - }\n\ -snippet case\n\ - case ${1}:\n\ - ${2}\n\ - break;\n\ -snippet package\n\ - package ${1:package}{\n\ - ${2}\n\ - }\n\ -snippet wh\n\ - while ${1:cond}{\n\ - ${2}\n\ - }\n\ -snippet do\n\ - do {\n\ - ${2}\n\ - } while (${1:cond})\n\ -snippet while\n\ - while ${1:cond}{\n\ - ${2}\n\ - }\n\ -snippet for enumerate names\n\ - for (${1:var} in ${2:object}){\n\ - ${3}\n\ - }\n\ -snippet for enumerate values\n\ - for each (${1:var} in ${2:object}){\n\ - ${3}\n\ - }\n\ -snippet get_set\n\ - function get ${1:name} {\n\ - return ${2}\n\ - }\n\ - function set $1 (newValue) {\n\ - ${3}\n\ - }\n\ -snippet interface\n\ - interface name {\n\ - function method(${1}):${2:returntype};\n\ - }\n\ -snippet try\n\ - try {\n\ - ${1}\n\ - } catch (error:ErrorType) {\n\ - ${2}\n\ - } finally {\n\ - ${3}\n\ - }\n\ -# For Loop (same as c.snippet)\n\ -snippet for for (..) {..}\n\ - for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\ - ${4:/* code */}\n\ - }\n\ -# Custom For Loop\n\ -snippet forr\n\ - for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {\n\ - ${5:/* code */}\n\ - }\n\ -# If Condition\n\ -snippet if\n\ - if (${1:/* condition */}) {\n\ - ${2:/* code */}\n\ - }\n\ -snippet el\n\ - else {\n\ - ${1}\n\ - }\n\ -# Ternary conditional\n\ -snippet t\n\ - ${1:/* condition */} ? ${2:a} : ${3:b}\n\ -snippet fun\n\ - function ${1:function_name}(${2})${3}\n\ - {\n\ - ${4:/* code */}\n\ - }\n\ -# FlxSprite (usefull when using the flixel library)\n\ -snippet FlxSprite\n\ - package\n\ - {\n\ - import org.flixel.*\n\ -\n\ - public class ${1:ClassName} extends ${2:FlxSprite}\n\ - {\n\ - public function $1(${3: X:Number, Y:Number}):void\n\ - {\n\ - super(X,Y);\n\ - ${4: //code...}\n\ - }\n\ -\n\ - override public function update():void\n\ - {\n\ - super.update();\n\ - ${5: //code...}\n\ - }\n\ - }\n\ - }\n\ -\n\ -"; -exports.scope = "actionscript"; - -}); (function() { - ace.require(["ace/snippets/actionscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ada.js b/src-noconflict/snippets/ada.js deleted file mode 100644 index 1a53b7d..0000000 --- a/src-noconflict/snippets/ada.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/ada"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/alda.js b/src-noconflict/snippets/alda.js deleted file mode 100644 index d48336b..0000000 --- a/src-noconflict/snippets/alda.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/alda"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/apache_conf.js b/src-noconflict/snippets/apache_conf.js deleted file mode 100644 index ba4cd76..0000000 --- a/src-noconflict/snippets/apache_conf.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/apache_conf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/apex.js b/src-noconflict/snippets/apex.js deleted file mode 100644 index d504a04..0000000 --- a/src-noconflict/snippets/apex.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/apex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/applescript.js b/src-noconflict/snippets/applescript.js deleted file mode 100644 index fbe3795..0000000 --- a/src-noconflict/snippets/applescript.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/applescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/aql.js b/src-noconflict/snippets/aql.js deleted file mode 100644 index 9b38b46..0000000 --- a/src-noconflict/snippets/aql.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/aql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/asciidoc.js b/src-noconflict/snippets/asciidoc.js deleted file mode 100644 index 2ceccf7..0000000 --- a/src-noconflict/snippets/asciidoc.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/asciidoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/asl.js b/src-noconflict/snippets/asl.js deleted file mode 100644 index 04c34ed..0000000 --- a/src-noconflict/snippets/asl.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/asl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/assembly_x86.js b/src-noconflict/snippets/assembly_x86.js deleted file mode 100644 index 045f993..0000000 --- a/src-noconflict/snippets/assembly_x86.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/assembly_x86"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/autohotkey.js b/src-noconflict/snippets/autohotkey.js deleted file mode 100644 index 5cea61f..0000000 --- a/src-noconflict/snippets/autohotkey.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/autohotkey"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/batchfile.js b/src-noconflict/snippets/batchfile.js deleted file mode 100644 index 303b4f2..0000000 --- a/src-noconflict/snippets/batchfile.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/batchfile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/c9search.js b/src-noconflict/snippets/c9search.js deleted file mode 100644 index 09bbd98..0000000 --- a/src-noconflict/snippets/c9search.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/c9search"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/c_cpp.js b/src-noconflict/snippets/c_cpp.js deleted file mode 100644 index b6bcb95..0000000 --- a/src-noconflict/snippets/c_cpp.js +++ /dev/null @@ -1,145 +0,0 @@ -ace.define("ace/snippets/c_cpp",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "## STL Collections\n\ -# std::array\n\ -snippet array\n\ - std::array<${1:T}, ${2:N}> ${3};${4}\n\ -# std::vector\n\ -snippet vector\n\ - std::vector<${1:T}> ${2};${3}\n\ -# std::deque\n\ -snippet deque\n\ - std::deque<${1:T}> ${2};${3}\n\ -# std::forward_list\n\ -snippet flist\n\ - std::forward_list<${1:T}> ${2};${3}\n\ -# std::list\n\ -snippet list\n\ - std::list<${1:T}> ${2};${3}\n\ -# std::set\n\ -snippet set\n\ - std::set<${1:T}> ${2};${3}\n\ -# std::map\n\ -snippet map\n\ - std::map<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::multiset\n\ -snippet mset\n\ - std::multiset<${1:T}> ${2};${3}\n\ -# std::multimap\n\ -snippet mmap\n\ - std::multimap<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::unordered_set\n\ -snippet uset\n\ - std::unordered_set<${1:T}> ${2};${3}\n\ -# std::unordered_map\n\ -snippet umap\n\ - std::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::unordered_multiset\n\ -snippet umset\n\ - std::unordered_multiset<${1:T}> ${2};${3}\n\ -# std::unordered_multimap\n\ -snippet ummap\n\ - std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::stack\n\ -snippet stack\n\ - std::stack<${1:T}> ${2};${3}\n\ -# std::queue\n\ -snippet queue\n\ - std::queue<${1:T}> ${2};${3}\n\ -# std::priority_queue\n\ -snippet pqueue\n\ - std::priority_queue<${1:T}> ${2};${3}\n\ -##\n\ -## Access Modifiers\n\ -# private\n\ -snippet pri\n\ - private\n\ -# protected\n\ -snippet pro\n\ - protected\n\ -# public\n\ -snippet pub\n\ - public\n\ -# friend\n\ -snippet fr\n\ - friend\n\ -# mutable\n\ -snippet mu\n\ - mutable\n\ -## \n\ -## Class\n\ -# class\n\ -snippet cl\n\ - class ${1:`Filename('$1', 'name')`} \n\ - {\n\ - public:\n\ - $1(${2});\n\ - ~$1();\n\ -\n\ - private:\n\ - ${3:/* data */}\n\ - };\n\ -# member function implementation\n\ -snippet mfun\n\ - ${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n\ - ${5:/* code */}\n\ - }\n\ -# namespace\n\ -snippet ns\n\ - namespace ${1:`Filename('', 'my')`} {\n\ - ${2}\n\ - } /* namespace $1 */\n\ -##\n\ -## Input/Output\n\ -# std::cout\n\ -snippet cout\n\ - std::cout << ${1} << std::endl;${2}\n\ -# std::cin\n\ -snippet cin\n\ - std::cin >> ${1};${2}\n\ -##\n\ -## Iteration\n\ -# for i \n\ -snippet fori\n\ - for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\ - ${4:/* code */}\n\ - }${5}\n\ -\n\ -# foreach\n\ -snippet fore\n\ - for (${1:auto} ${2:i} : ${3:container}) {\n\ - ${4:/* code */}\n\ - }${5}\n\ -# iterator\n\ -snippet iter\n\ - for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n\ - ${6}\n\ - }${7}\n\ -\n\ -# auto iterator\n\ -snippet itera\n\ - for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n\ - ${2:std::cout << *$1 << std::endl;}\n\ - }${3}\n\ -##\n\ -## Lambdas\n\ -# lamda (one line)\n\ -snippet ld\n\ - [${1}](${2}){${3:/* code */}}${4}\n\ -# lambda (multi-line)\n\ -snippet lld\n\ - [${1}](${2}){\n\ - ${3:/* code */}\n\ - }${4}\n\ -"; -exports.scope = "c_cpp"; - -}); (function() { - ace.require(["ace/snippets/c_cpp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/cirru.js b/src-noconflict/snippets/cirru.js deleted file mode 100644 index 6354305..0000000 --- a/src-noconflict/snippets/cirru.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/cirru"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/clojure.js b/src-noconflict/snippets/clojure.js deleted file mode 100644 index ee00cbd..0000000 --- a/src-noconflict/snippets/clojure.js +++ /dev/null @@ -1,104 +0,0 @@ -ace.define("ace/snippets/clojure",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet comm\n\ - (comment\n\ - ${1}\n\ - )\n\ -snippet condp\n\ - (condp ${1:pred} ${2:expr}\n\ - ${3})\n\ -snippet def\n\ - (def ${1})\n\ -snippet defm\n\ - (defmethod ${1:multifn} \"${2:doc-string}\" ${3:dispatch-val} [${4:args}]\n\ - ${5})\n\ -snippet defmm\n\ - (defmulti ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\n\ -snippet defma\n\ - (defmacro ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\n\ -snippet defn\n\ - (defn ${1:name} \"${2:doc-string}\" [${3:arg-list}]\n\ - ${4})\n\ -snippet defp\n\ - (defprotocol ${1:name}\n\ - ${2})\n\ -snippet defr\n\ - (defrecord ${1:name} [${2:fields}]\n\ - ${3:protocol}\n\ - ${4})\n\ -snippet deft\n\ - (deftest ${1:name}\n\ - (is (= ${2:assertion})))\n\ - ${3})\n\ -snippet is\n\ - (is (= ${1} ${2}))\n\ -snippet defty\n\ - (deftype ${1:Name} [${2:fields}]\n\ - ${3:Protocol}\n\ - ${4})\n\ -snippet doseq\n\ - (doseq [${1:elem} ${2:coll}]\n\ - ${3})\n\ -snippet fn\n\ - (fn [${1:arg-list}] ${2})\n\ -snippet if\n\ - (if ${1:test-expr}\n\ - ${2:then-expr}\n\ - ${3:else-expr})\n\ -snippet if-let \n\ - (if-let [${1:result} ${2:test-expr}]\n\ - (${3:then-expr} $1)\n\ - (${4:else-expr}))\n\ -snippet imp\n\ - (:import [${1:package}])\n\ - & {:keys [${1:keys}] :or {${2:defaults}}}\n\ -snippet let\n\ - (let [${1:name} ${2:expr}]\n\ - ${3})\n\ -snippet letfn\n\ - (letfn [(${1:name) [${2:args}]\n\ - ${3})])\n\ -snippet map\n\ - (map ${1:func} ${2:coll})\n\ -snippet mapl\n\ - (map #(${1:lambda}) ${2:coll})\n\ -snippet met\n\ - (${1:name} [${2:this} ${3:args}]\n\ - ${4})\n\ -snippet ns\n\ - (ns ${1:name}\n\ - ${2})\n\ -snippet dotimes\n\ - (dotimes [_ 10]\n\ - (time\n\ - (dotimes [_ ${1:times}]\n\ - ${2})))\n\ -snippet pmethod\n\ - (${1:name} [${2:this} ${3:args}])\n\ -snippet refer\n\ - (:refer-clojure :exclude [${1}])\n\ -snippet require\n\ - (:require [${1:namespace} :as [${2}]])\n\ -snippet use\n\ - (:use [${1:namespace} :only [${2}]])\n\ -snippet print\n\ - (println ${1})\n\ -snippet reduce\n\ - (reduce ${1:(fn [p n] ${3})} ${2})\n\ -snippet when\n\ - (when ${1:test} ${2:body})\n\ -snippet when-let\n\ - (when-let [${1:result} ${2:test}]\n\ - ${3:body})\n\ -"; -exports.scope = "clojure"; - -}); (function() { - ace.require(["ace/snippets/clojure"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/cobol.js b/src-noconflict/snippets/cobol.js deleted file mode 100644 index 3af8667..0000000 --- a/src-noconflict/snippets/cobol.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/cobol"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/coffee.js b/src-noconflict/snippets/coffee.js deleted file mode 100644 index fdd0b70..0000000 --- a/src-noconflict/snippets/coffee.js +++ /dev/null @@ -1,109 +0,0 @@ -ace.define("ace/snippets/coffee",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Closure loop\n\ -snippet forindo\n\ - for ${1:name} in ${2:array}\n\ - do ($1) ->\n\ - ${3:// body}\n\ -# Array comprehension\n\ -snippet fora\n\ - for ${1:name} in ${2:array}\n\ - ${3:// body...}\n\ -# Object comprehension\n\ -snippet foro\n\ - for ${1:key}, ${2:value} of ${3:object}\n\ - ${4:// body...}\n\ -# Range comprehension (inclusive)\n\ -snippet forr\n\ - for ${1:name} in [${2:start}..${3:finish}]\n\ - ${4:// body...}\n\ -snippet forrb\n\ - for ${1:name} in [${2:start}..${3:finish}] by ${4:step}\n\ - ${5:// body...}\n\ -# Range comprehension (exclusive)\n\ -snippet forrex\n\ - for ${1:name} in [${2:start}...${3:finish}]\n\ - ${4:// body...}\n\ -snippet forrexb\n\ - for ${1:name} in [${2:start}...${3:finish}] by ${4:step}\n\ - ${5:// body...}\n\ -# Function\n\ -snippet fun\n\ - (${1:args}) ->\n\ - ${2:// body...}\n\ -# Function (bound)\n\ -snippet bfun\n\ - (${1:args}) =>\n\ - ${2:// body...}\n\ -# Class\n\ -snippet cla class ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ -snippet cla class .. constructor: ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - constructor: (${2:args}) ->\n\ - ${3}\n\ -\n\ - ${4}\n\ -snippet cla class .. extends ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\ - ${3}\n\ -snippet cla class .. extends .. constructor: ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\ - constructor: (${3:args}) ->\n\ - ${4}\n\ -\n\ - ${5}\n\ -# If\n\ -snippet if\n\ - if ${1:condition}\n\ - ${2:// body...}\n\ -# If __ Else\n\ -snippet ife\n\ - if ${1:condition}\n\ - ${2:// body...}\n\ - else\n\ - ${3:// body...}\n\ -# Else if\n\ -snippet elif\n\ - else if ${1:condition}\n\ - ${2:// body...}\n\ -# Ternary If\n\ -snippet ifte\n\ - if ${1:condition} then ${2:value} else ${3:other}\n\ -# Unless\n\ -snippet unl\n\ - ${1:action} unless ${2:condition}\n\ -# Switch\n\ -snippet swi\n\ - switch ${1:object}\n\ - when ${2:value}\n\ - ${3:// body...}\n\ -\n\ -# Log\n\ -snippet log\n\ - console.log ${1}\n\ -# Try __ Catch\n\ -snippet try\n\ - try\n\ - ${1}\n\ - catch ${2:error}\n\ - ${3}\n\ -# Require\n\ -snippet req\n\ - ${2:$1} = require '${1:sys}'${3}\n\ -# Export\n\ -snippet exp\n\ - ${1:root} = exports ? this\n\ -"; -exports.scope = "coffee"; - -}); (function() { - ace.require(["ace/snippets/coffee"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/coldfusion.js b/src-noconflict/snippets/coldfusion.js deleted file mode 100644 index 5dbc771..0000000 --- a/src-noconflict/snippets/coldfusion.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/coldfusion"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/crystal.js b/src-noconflict/snippets/crystal.js deleted file mode 100644 index de2c259..0000000 --- a/src-noconflict/snippets/crystal.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/crystal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/csharp.js b/src-noconflict/snippets/csharp.js deleted file mode 100644 index d60cd30..0000000 --- a/src-noconflict/snippets/csharp.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/csharp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/csound_document.js b/src-noconflict/snippets/csound_document.js deleted file mode 100644 index 9365610..0000000 --- a/src-noconflict/snippets/csound_document.js +++ /dev/null @@ -1,24 +0,0 @@ -ace.define("ace/snippets/csound_document",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# \n\ -snippet synth\n\ - \n\ - \n\ - ${1}\n\ - \n\ - \n\ - e\n\ - \n\ - \n\ -"; -exports.scope = "csound_document"; - -}); (function() { - ace.require(["ace/snippets/csound_document"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/csound_orchestra.js b/src-noconflict/snippets/csound_orchestra.js deleted file mode 100644 index d911e70..0000000 --- a/src-noconflict/snippets/csound_orchestra.js +++ /dev/null @@ -1,61 +0,0 @@ -ace.define("ace/snippets/csound_orchestra",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# else\n\ -snippet else\n\ - else\n\ - ${1:/* statements */}\n\ -# elseif\n\ -snippet elseif\n\ - elseif ${1:/* condition */} then\n\ - ${2:/* statements */}\n\ -# if\n\ -snippet if\n\ - if ${1:/* condition */} then\n\ - ${2:/* statements */}\n\ - endif\n\ -# instrument block\n\ -snippet instr\n\ - instr ${1:name}\n\ - ${2:/* statements */}\n\ - endin\n\ -# i-time while loop\n\ -snippet iwhile\n\ - i${1:Index} = ${2:0}\n\ - while i${1:Index} < ${3:/* count */} do\n\ - ${4:/* statements */}\n\ - i${1:Index} += 1\n\ - od\n\ -# k-rate while loop\n\ -snippet kwhile\n\ - k${1:Index} = ${2:0}\n\ - while k${1:Index} < ${3:/* count */} do\n\ - ${4:/* statements */}\n\ - k${1:Index} += 1\n\ - od\n\ -# opcode\n\ -snippet opcode\n\ - opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n\ - ${4:/* statements */}\n\ - endop\n\ -# until loop\n\ -snippet until\n\ - until ${1:/* condition */} do\n\ - ${2:/* statements */}\n\ - od\n\ -# while loop\n\ -snippet while\n\ - while ${1:/* condition */} do\n\ - ${2:/* statements */}\n\ - od\n\ -"; -exports.scope = "csound_orchestra"; - -}); (function() { - ace.require(["ace/snippets/csound_orchestra"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/csound_score.js b/src-noconflict/snippets/csound_score.js deleted file mode 100644 index 919a0ce..0000000 --- a/src-noconflict/snippets/csound_score.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/csound_score"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/csp.js b/src-noconflict/snippets/csp.js deleted file mode 100644 index 9bb701f..0000000 --- a/src-noconflict/snippets/csp.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/csp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/css.js b/src-noconflict/snippets/css.js deleted file mode 100644 index 84f8ab9..0000000 --- a/src-noconflict/snippets/css.js +++ /dev/null @@ -1,981 +0,0 @@ -ace.define("ace/snippets/css",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet .\n\ - ${1} {\n\ - ${2}\n\ - }\n\ -snippet !\n\ - !important\n\ -snippet bdi:m+\n\ - -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:m\n\ - -moz-border-image: ${1};\n\ -snippet bdrz:m\n\ - -moz-border-radius: ${1};\n\ -snippet bxsh:m+\n\ - -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh:m\n\ - -moz-box-shadow: ${1};\n\ -snippet bdi:w+\n\ - -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:w\n\ - -webkit-border-image: ${1};\n\ -snippet bdrz:w\n\ - -webkit-border-radius: ${1};\n\ -snippet bxsh:w+\n\ - -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh:w\n\ - -webkit-box-shadow: ${1};\n\ -snippet @f\n\ - @font-face {\n\ - font-family: ${1};\n\ - src: url(${2});\n\ - }\n\ -snippet @i\n\ - @import url(${1});\n\ -snippet @m\n\ - @media ${1:print} {\n\ - ${2}\n\ - }\n\ -snippet bg+\n\ - background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\n\ -snippet bga\n\ - background-attachment: ${1};\n\ -snippet bga:f\n\ - background-attachment: fixed;\n\ -snippet bga:s\n\ - background-attachment: scroll;\n\ -snippet bgbk\n\ - background-break: ${1};\n\ -snippet bgbk:bb\n\ - background-break: bounding-box;\n\ -snippet bgbk:c\n\ - background-break: continuous;\n\ -snippet bgbk:eb\n\ - background-break: each-box;\n\ -snippet bgcp\n\ - background-clip: ${1};\n\ -snippet bgcp:bb\n\ - background-clip: border-box;\n\ -snippet bgcp:cb\n\ - background-clip: content-box;\n\ -snippet bgcp:nc\n\ - background-clip: no-clip;\n\ -snippet bgcp:pb\n\ - background-clip: padding-box;\n\ -snippet bgc\n\ - background-color: #${1:FFF};\n\ -snippet bgc:t\n\ - background-color: transparent;\n\ -snippet bgi\n\ - background-image: url(${1});\n\ -snippet bgi:n\n\ - background-image: none;\n\ -snippet bgo\n\ - background-origin: ${1};\n\ -snippet bgo:bb\n\ - background-origin: border-box;\n\ -snippet bgo:cb\n\ - background-origin: content-box;\n\ -snippet bgo:pb\n\ - background-origin: padding-box;\n\ -snippet bgpx\n\ - background-position-x: ${1};\n\ -snippet bgpy\n\ - background-position-y: ${1};\n\ -snippet bgp\n\ - background-position: ${1:0} ${2:0};\n\ -snippet bgr\n\ - background-repeat: ${1};\n\ -snippet bgr:n\n\ - background-repeat: no-repeat;\n\ -snippet bgr:x\n\ - background-repeat: repeat-x;\n\ -snippet bgr:y\n\ - background-repeat: repeat-y;\n\ -snippet bgr:r\n\ - background-repeat: repeat;\n\ -snippet bgz\n\ - background-size: ${1};\n\ -snippet bgz:a\n\ - background-size: auto;\n\ -snippet bgz:ct\n\ - background-size: contain;\n\ -snippet bgz:cv\n\ - background-size: cover;\n\ -snippet bg\n\ - background: ${1};\n\ -snippet bg:ie\n\ - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\n\ -snippet bg:n\n\ - background: none;\n\ -snippet bd+\n\ - border: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdb+\n\ - border-bottom: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdbc\n\ - border-bottom-color: #${1:000};\n\ -snippet bdbi\n\ - border-bottom-image: url(${1});\n\ -snippet bdbi:n\n\ - border-bottom-image: none;\n\ -snippet bdbli\n\ - border-bottom-left-image: url(${1});\n\ -snippet bdbli:c\n\ - border-bottom-left-image: continue;\n\ -snippet bdbli:n\n\ - border-bottom-left-image: none;\n\ -snippet bdblrz\n\ - border-bottom-left-radius: ${1};\n\ -snippet bdbri\n\ - border-bottom-right-image: url(${1});\n\ -snippet bdbri:c\n\ - border-bottom-right-image: continue;\n\ -snippet bdbri:n\n\ - border-bottom-right-image: none;\n\ -snippet bdbrrz\n\ - border-bottom-right-radius: ${1};\n\ -snippet bdbs\n\ - border-bottom-style: ${1};\n\ -snippet bdbs:n\n\ - border-bottom-style: none;\n\ -snippet bdbw\n\ - border-bottom-width: ${1};\n\ -snippet bdb\n\ - border-bottom: ${1};\n\ -snippet bdb:n\n\ - border-bottom: none;\n\ -snippet bdbk\n\ - border-break: ${1};\n\ -snippet bdbk:c\n\ - border-break: close;\n\ -snippet bdcl\n\ - border-collapse: ${1};\n\ -snippet bdcl:c\n\ - border-collapse: collapse;\n\ -snippet bdcl:s\n\ - border-collapse: separate;\n\ -snippet bdc\n\ - border-color: #${1:000};\n\ -snippet bdci\n\ - border-corner-image: url(${1});\n\ -snippet bdci:c\n\ - border-corner-image: continue;\n\ -snippet bdci:n\n\ - border-corner-image: none;\n\ -snippet bdf\n\ - border-fit: ${1};\n\ -snippet bdf:c\n\ - border-fit: clip;\n\ -snippet bdf:of\n\ - border-fit: overwrite;\n\ -snippet bdf:ow\n\ - border-fit: overwrite;\n\ -snippet bdf:r\n\ - border-fit: repeat;\n\ -snippet bdf:sc\n\ - border-fit: scale;\n\ -snippet bdf:sp\n\ - border-fit: space;\n\ -snippet bdf:st\n\ - border-fit: stretch;\n\ -snippet bdi\n\ - border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:n\n\ - border-image: none;\n\ -snippet bdl+\n\ - border-left: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdlc\n\ - border-left-color: #${1:000};\n\ -snippet bdli\n\ - border-left-image: url(${1});\n\ -snippet bdli:n\n\ - border-left-image: none;\n\ -snippet bdls\n\ - border-left-style: ${1};\n\ -snippet bdls:n\n\ - border-left-style: none;\n\ -snippet bdlw\n\ - border-left-width: ${1};\n\ -snippet bdl\n\ - border-left: ${1};\n\ -snippet bdl:n\n\ - border-left: none;\n\ -snippet bdlt\n\ - border-length: ${1};\n\ -snippet bdlt:a\n\ - border-length: auto;\n\ -snippet bdrz\n\ - border-radius: ${1};\n\ -snippet bdr+\n\ - border-right: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdrc\n\ - border-right-color: #${1:000};\n\ -snippet bdri\n\ - border-right-image: url(${1});\n\ -snippet bdri:n\n\ - border-right-image: none;\n\ -snippet bdrs\n\ - border-right-style: ${1};\n\ -snippet bdrs:n\n\ - border-right-style: none;\n\ -snippet bdrw\n\ - border-right-width: ${1};\n\ -snippet bdr\n\ - border-right: ${1};\n\ -snippet bdr:n\n\ - border-right: none;\n\ -snippet bdsp\n\ - border-spacing: ${1};\n\ -snippet bds\n\ - border-style: ${1};\n\ -snippet bds:ds\n\ - border-style: dashed;\n\ -snippet bds:dtds\n\ - border-style: dot-dash;\n\ -snippet bds:dtdtds\n\ - border-style: dot-dot-dash;\n\ -snippet bds:dt\n\ - border-style: dotted;\n\ -snippet bds:db\n\ - border-style: double;\n\ -snippet bds:g\n\ - border-style: groove;\n\ -snippet bds:h\n\ - border-style: hidden;\n\ -snippet bds:i\n\ - border-style: inset;\n\ -snippet bds:n\n\ - border-style: none;\n\ -snippet bds:o\n\ - border-style: outset;\n\ -snippet bds:r\n\ - border-style: ridge;\n\ -snippet bds:s\n\ - border-style: solid;\n\ -snippet bds:w\n\ - border-style: wave;\n\ -snippet bdt+\n\ - border-top: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdtc\n\ - border-top-color: #${1:000};\n\ -snippet bdti\n\ - border-top-image: url(${1});\n\ -snippet bdti:n\n\ - border-top-image: none;\n\ -snippet bdtli\n\ - border-top-left-image: url(${1});\n\ -snippet bdtli:c\n\ - border-corner-image: continue;\n\ -snippet bdtli:n\n\ - border-corner-image: none;\n\ -snippet bdtlrz\n\ - border-top-left-radius: ${1};\n\ -snippet bdtri\n\ - border-top-right-image: url(${1});\n\ -snippet bdtri:c\n\ - border-top-right-image: continue;\n\ -snippet bdtri:n\n\ - border-top-right-image: none;\n\ -snippet bdtrrz\n\ - border-top-right-radius: ${1};\n\ -snippet bdts\n\ - border-top-style: ${1};\n\ -snippet bdts:n\n\ - border-top-style: none;\n\ -snippet bdtw\n\ - border-top-width: ${1};\n\ -snippet bdt\n\ - border-top: ${1};\n\ -snippet bdt:n\n\ - border-top: none;\n\ -snippet bdw\n\ - border-width: ${1};\n\ -snippet bd\n\ - border: ${1};\n\ -snippet bd:n\n\ - border: none;\n\ -snippet b\n\ - bottom: ${1};\n\ -snippet b:a\n\ - bottom: auto;\n\ -snippet bxsh+\n\ - box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh\n\ - box-shadow: ${1};\n\ -snippet bxsh:n\n\ - box-shadow: none;\n\ -snippet bxz\n\ - box-sizing: ${1};\n\ -snippet bxz:bb\n\ - box-sizing: border-box;\n\ -snippet bxz:cb\n\ - box-sizing: content-box;\n\ -snippet cps\n\ - caption-side: ${1};\n\ -snippet cps:b\n\ - caption-side: bottom;\n\ -snippet cps:t\n\ - caption-side: top;\n\ -snippet cl\n\ - clear: ${1};\n\ -snippet cl:b\n\ - clear: both;\n\ -snippet cl:l\n\ - clear: left;\n\ -snippet cl:n\n\ - clear: none;\n\ -snippet cl:r\n\ - clear: right;\n\ -snippet cp\n\ - clip: ${1};\n\ -snippet cp:a\n\ - clip: auto;\n\ -snippet cp:r\n\ - clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\n\ -snippet c\n\ - color: #${1:000};\n\ -snippet ct\n\ - content: ${1};\n\ -snippet ct:a\n\ - content: attr(${1});\n\ -snippet ct:cq\n\ - content: close-quote;\n\ -snippet ct:c\n\ - content: counter(${1});\n\ -snippet ct:cs\n\ - content: counters(${1});\n\ -snippet ct:ncq\n\ - content: no-close-quote;\n\ -snippet ct:noq\n\ - content: no-open-quote;\n\ -snippet ct:n\n\ - content: normal;\n\ -snippet ct:oq\n\ - content: open-quote;\n\ -snippet coi\n\ - counter-increment: ${1};\n\ -snippet cor\n\ - counter-reset: ${1};\n\ -snippet cur\n\ - cursor: ${1};\n\ -snippet cur:a\n\ - cursor: auto;\n\ -snippet cur:c\n\ - cursor: crosshair;\n\ -snippet cur:d\n\ - cursor: default;\n\ -snippet cur:ha\n\ - cursor: hand;\n\ -snippet cur:he\n\ - cursor: help;\n\ -snippet cur:m\n\ - cursor: move;\n\ -snippet cur:p\n\ - cursor: pointer;\n\ -snippet cur:t\n\ - cursor: text;\n\ -snippet d\n\ - display: ${1};\n\ -snippet d:mib\n\ - display: -moz-inline-box;\n\ -snippet d:mis\n\ - display: -moz-inline-stack;\n\ -snippet d:b\n\ - display: block;\n\ -snippet d:cp\n\ - display: compact;\n\ -snippet d:ib\n\ - display: inline-block;\n\ -snippet d:itb\n\ - display: inline-table;\n\ -snippet d:i\n\ - display: inline;\n\ -snippet d:li\n\ - display: list-item;\n\ -snippet d:n\n\ - display: none;\n\ -snippet d:ri\n\ - display: run-in;\n\ -snippet d:tbcp\n\ - display: table-caption;\n\ -snippet d:tbc\n\ - display: table-cell;\n\ -snippet d:tbclg\n\ - display: table-column-group;\n\ -snippet d:tbcl\n\ - display: table-column;\n\ -snippet d:tbfg\n\ - display: table-footer-group;\n\ -snippet d:tbhg\n\ - display: table-header-group;\n\ -snippet d:tbrg\n\ - display: table-row-group;\n\ -snippet d:tbr\n\ - display: table-row;\n\ -snippet d:tb\n\ - display: table;\n\ -snippet ec\n\ - empty-cells: ${1};\n\ -snippet ec:h\n\ - empty-cells: hide;\n\ -snippet ec:s\n\ - empty-cells: show;\n\ -snippet exp\n\ - expression()\n\ -snippet fl\n\ - float: ${1};\n\ -snippet fl:l\n\ - float: left;\n\ -snippet fl:n\n\ - float: none;\n\ -snippet fl:r\n\ - float: right;\n\ -snippet f+\n\ - font: ${1:1em} ${2:Arial},${3:sans-serif};\n\ -snippet fef\n\ - font-effect: ${1};\n\ -snippet fef:eb\n\ - font-effect: emboss;\n\ -snippet fef:eg\n\ - font-effect: engrave;\n\ -snippet fef:n\n\ - font-effect: none;\n\ -snippet fef:o\n\ - font-effect: outline;\n\ -snippet femp\n\ - font-emphasize-position: ${1};\n\ -snippet femp:a\n\ - font-emphasize-position: after;\n\ -snippet femp:b\n\ - font-emphasize-position: before;\n\ -snippet fems\n\ - font-emphasize-style: ${1};\n\ -snippet fems:ac\n\ - font-emphasize-style: accent;\n\ -snippet fems:c\n\ - font-emphasize-style: circle;\n\ -snippet fems:ds\n\ - font-emphasize-style: disc;\n\ -snippet fems:dt\n\ - font-emphasize-style: dot;\n\ -snippet fems:n\n\ - font-emphasize-style: none;\n\ -snippet fem\n\ - font-emphasize: ${1};\n\ -snippet ff\n\ - font-family: ${1};\n\ -snippet ff:c\n\ - font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\n\ -snippet ff:f\n\ - font-family: ${1:Capitals,Impact},fantasy;\n\ -snippet ff:m\n\ - font-family: ${1:Monaco,'Courier New'},monospace;\n\ -snippet ff:ss\n\ - font-family: ${1:Helvetica,Arial},sans-serif;\n\ -snippet ff:s\n\ - font-family: ${1:Georgia,'Times New Roman'},serif;\n\ -snippet fza\n\ - font-size-adjust: ${1};\n\ -snippet fza:n\n\ - font-size-adjust: none;\n\ -snippet fz\n\ - font-size: ${1};\n\ -snippet fsm\n\ - font-smooth: ${1};\n\ -snippet fsm:aw\n\ - font-smooth: always;\n\ -snippet fsm:a\n\ - font-smooth: auto;\n\ -snippet fsm:n\n\ - font-smooth: never;\n\ -snippet fst\n\ - font-stretch: ${1};\n\ -snippet fst:c\n\ - font-stretch: condensed;\n\ -snippet fst:e\n\ - font-stretch: expanded;\n\ -snippet fst:ec\n\ - font-stretch: extra-condensed;\n\ -snippet fst:ee\n\ - font-stretch: extra-expanded;\n\ -snippet fst:n\n\ - font-stretch: normal;\n\ -snippet fst:sc\n\ - font-stretch: semi-condensed;\n\ -snippet fst:se\n\ - font-stretch: semi-expanded;\n\ -snippet fst:uc\n\ - font-stretch: ultra-condensed;\n\ -snippet fst:ue\n\ - font-stretch: ultra-expanded;\n\ -snippet fs\n\ - font-style: ${1};\n\ -snippet fs:i\n\ - font-style: italic;\n\ -snippet fs:n\n\ - font-style: normal;\n\ -snippet fs:o\n\ - font-style: oblique;\n\ -snippet fv\n\ - font-variant: ${1};\n\ -snippet fv:n\n\ - font-variant: normal;\n\ -snippet fv:sc\n\ - font-variant: small-caps;\n\ -snippet fw\n\ - font-weight: ${1};\n\ -snippet fw:b\n\ - font-weight: bold;\n\ -snippet fw:br\n\ - font-weight: bolder;\n\ -snippet fw:lr\n\ - font-weight: lighter;\n\ -snippet fw:n\n\ - font-weight: normal;\n\ -snippet f\n\ - font: ${1};\n\ -snippet h\n\ - height: ${1};\n\ -snippet h:a\n\ - height: auto;\n\ -snippet l\n\ - left: ${1};\n\ -snippet l:a\n\ - left: auto;\n\ -snippet lts\n\ - letter-spacing: ${1};\n\ -snippet lh\n\ - line-height: ${1};\n\ -snippet lisi\n\ - list-style-image: url(${1});\n\ -snippet lisi:n\n\ - list-style-image: none;\n\ -snippet lisp\n\ - list-style-position: ${1};\n\ -snippet lisp:i\n\ - list-style-position: inside;\n\ -snippet lisp:o\n\ - list-style-position: outside;\n\ -snippet list\n\ - list-style-type: ${1};\n\ -snippet list:c\n\ - list-style-type: circle;\n\ -snippet list:dclz\n\ - list-style-type: decimal-leading-zero;\n\ -snippet list:dc\n\ - list-style-type: decimal;\n\ -snippet list:d\n\ - list-style-type: disc;\n\ -snippet list:lr\n\ - list-style-type: lower-roman;\n\ -snippet list:n\n\ - list-style-type: none;\n\ -snippet list:s\n\ - list-style-type: square;\n\ -snippet list:ur\n\ - list-style-type: upper-roman;\n\ -snippet lis\n\ - list-style: ${1};\n\ -snippet lis:n\n\ - list-style: none;\n\ -snippet mb\n\ - margin-bottom: ${1};\n\ -snippet mb:a\n\ - margin-bottom: auto;\n\ -snippet ml\n\ - margin-left: ${1};\n\ -snippet ml:a\n\ - margin-left: auto;\n\ -snippet mr\n\ - margin-right: ${1};\n\ -snippet mr:a\n\ - margin-right: auto;\n\ -snippet mt\n\ - margin-top: ${1};\n\ -snippet mt:a\n\ - margin-top: auto;\n\ -snippet m\n\ - margin: ${1};\n\ -snippet m:4\n\ - margin: ${1:0} ${2:0} ${3:0} ${4:0};\n\ -snippet m:3\n\ - margin: ${1:0} ${2:0} ${3:0};\n\ -snippet m:2\n\ - margin: ${1:0} ${2:0};\n\ -snippet m:0\n\ - margin: 0;\n\ -snippet m:a\n\ - margin: auto;\n\ -snippet mah\n\ - max-height: ${1};\n\ -snippet mah:n\n\ - max-height: none;\n\ -snippet maw\n\ - max-width: ${1};\n\ -snippet maw:n\n\ - max-width: none;\n\ -snippet mih\n\ - min-height: ${1};\n\ -snippet miw\n\ - min-width: ${1};\n\ -snippet op\n\ - opacity: ${1};\n\ -snippet op:ie\n\ - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\n\ -snippet op:ms\n\ - -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\n\ -snippet orp\n\ - orphans: ${1};\n\ -snippet o+\n\ - outline: ${1:1px} ${2:solid} #${3:000};\n\ -snippet oc\n\ - outline-color: ${1:#000};\n\ -snippet oc:i\n\ - outline-color: invert;\n\ -snippet oo\n\ - outline-offset: ${1};\n\ -snippet os\n\ - outline-style: ${1};\n\ -snippet ow\n\ - outline-width: ${1};\n\ -snippet o\n\ - outline: ${1};\n\ -snippet o:n\n\ - outline: none;\n\ -snippet ovs\n\ - overflow-style: ${1};\n\ -snippet ovs:a\n\ - overflow-style: auto;\n\ -snippet ovs:mq\n\ - overflow-style: marquee;\n\ -snippet ovs:mv\n\ - overflow-style: move;\n\ -snippet ovs:p\n\ - overflow-style: panner;\n\ -snippet ovs:s\n\ - overflow-style: scrollbar;\n\ -snippet ovx\n\ - overflow-x: ${1};\n\ -snippet ovx:a\n\ - overflow-x: auto;\n\ -snippet ovx:h\n\ - overflow-x: hidden;\n\ -snippet ovx:s\n\ - overflow-x: scroll;\n\ -snippet ovx:v\n\ - overflow-x: visible;\n\ -snippet ovy\n\ - overflow-y: ${1};\n\ -snippet ovy:a\n\ - overflow-y: auto;\n\ -snippet ovy:h\n\ - overflow-y: hidden;\n\ -snippet ovy:s\n\ - overflow-y: scroll;\n\ -snippet ovy:v\n\ - overflow-y: visible;\n\ -snippet ov\n\ - overflow: ${1};\n\ -snippet ov:a\n\ - overflow: auto;\n\ -snippet ov:h\n\ - overflow: hidden;\n\ -snippet ov:s\n\ - overflow: scroll;\n\ -snippet ov:v\n\ - overflow: visible;\n\ -snippet pb\n\ - padding-bottom: ${1};\n\ -snippet pl\n\ - padding-left: ${1};\n\ -snippet pr\n\ - padding-right: ${1};\n\ -snippet pt\n\ - padding-top: ${1};\n\ -snippet p\n\ - padding: ${1};\n\ -snippet p:4\n\ - padding: ${1:0} ${2:0} ${3:0} ${4:0};\n\ -snippet p:3\n\ - padding: ${1:0} ${2:0} ${3:0};\n\ -snippet p:2\n\ - padding: ${1:0} ${2:0};\n\ -snippet p:0\n\ - padding: 0;\n\ -snippet pgba\n\ - page-break-after: ${1};\n\ -snippet pgba:aw\n\ - page-break-after: always;\n\ -snippet pgba:a\n\ - page-break-after: auto;\n\ -snippet pgba:l\n\ - page-break-after: left;\n\ -snippet pgba:r\n\ - page-break-after: right;\n\ -snippet pgbb\n\ - page-break-before: ${1};\n\ -snippet pgbb:aw\n\ - page-break-before: always;\n\ -snippet pgbb:a\n\ - page-break-before: auto;\n\ -snippet pgbb:l\n\ - page-break-before: left;\n\ -snippet pgbb:r\n\ - page-break-before: right;\n\ -snippet pgbi\n\ - page-break-inside: ${1};\n\ -snippet pgbi:a\n\ - page-break-inside: auto;\n\ -snippet pgbi:av\n\ - page-break-inside: avoid;\n\ -snippet pos\n\ - position: ${1};\n\ -snippet pos:a\n\ - position: absolute;\n\ -snippet pos:f\n\ - position: fixed;\n\ -snippet pos:r\n\ - position: relative;\n\ -snippet pos:s\n\ - position: static;\n\ -snippet q\n\ - quotes: ${1};\n\ -snippet q:en\n\ - quotes: '\\201C' '\\201D' '\\2018' '\\2019';\n\ -snippet q:n\n\ - quotes: none;\n\ -snippet q:ru\n\ - quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\n\ -snippet rz\n\ - resize: ${1};\n\ -snippet rz:b\n\ - resize: both;\n\ -snippet rz:h\n\ - resize: horizontal;\n\ -snippet rz:n\n\ - resize: none;\n\ -snippet rz:v\n\ - resize: vertical;\n\ -snippet r\n\ - right: ${1};\n\ -snippet r:a\n\ - right: auto;\n\ -snippet tbl\n\ - table-layout: ${1};\n\ -snippet tbl:a\n\ - table-layout: auto;\n\ -snippet tbl:f\n\ - table-layout: fixed;\n\ -snippet tal\n\ - text-align-last: ${1};\n\ -snippet tal:a\n\ - text-align-last: auto;\n\ -snippet tal:c\n\ - text-align-last: center;\n\ -snippet tal:l\n\ - text-align-last: left;\n\ -snippet tal:r\n\ - text-align-last: right;\n\ -snippet ta\n\ - text-align: ${1};\n\ -snippet ta:c\n\ - text-align: center;\n\ -snippet ta:l\n\ - text-align: left;\n\ -snippet ta:r\n\ - text-align: right;\n\ -snippet td\n\ - text-decoration: ${1};\n\ -snippet td:l\n\ - text-decoration: line-through;\n\ -snippet td:n\n\ - text-decoration: none;\n\ -snippet td:o\n\ - text-decoration: overline;\n\ -snippet td:u\n\ - text-decoration: underline;\n\ -snippet te\n\ - text-emphasis: ${1};\n\ -snippet te:ac\n\ - text-emphasis: accent;\n\ -snippet te:a\n\ - text-emphasis: after;\n\ -snippet te:b\n\ - text-emphasis: before;\n\ -snippet te:c\n\ - text-emphasis: circle;\n\ -snippet te:ds\n\ - text-emphasis: disc;\n\ -snippet te:dt\n\ - text-emphasis: dot;\n\ -snippet te:n\n\ - text-emphasis: none;\n\ -snippet th\n\ - text-height: ${1};\n\ -snippet th:a\n\ - text-height: auto;\n\ -snippet th:f\n\ - text-height: font-size;\n\ -snippet th:m\n\ - text-height: max-size;\n\ -snippet th:t\n\ - text-height: text-size;\n\ -snippet ti\n\ - text-indent: ${1};\n\ -snippet ti:-\n\ - text-indent: -9999px;\n\ -snippet tj\n\ - text-justify: ${1};\n\ -snippet tj:a\n\ - text-justify: auto;\n\ -snippet tj:d\n\ - text-justify: distribute;\n\ -snippet tj:ic\n\ - text-justify: inter-cluster;\n\ -snippet tj:ii\n\ - text-justify: inter-ideograph;\n\ -snippet tj:iw\n\ - text-justify: inter-word;\n\ -snippet tj:k\n\ - text-justify: kashida;\n\ -snippet tj:t\n\ - text-justify: tibetan;\n\ -snippet to+\n\ - text-outline: ${1:0} ${2:0} #${3:000};\n\ -snippet to\n\ - text-outline: ${1};\n\ -snippet to:n\n\ - text-outline: none;\n\ -snippet tr\n\ - text-replace: ${1};\n\ -snippet tr:n\n\ - text-replace: none;\n\ -snippet tsh+\n\ - text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet tsh\n\ - text-shadow: ${1};\n\ -snippet tsh:n\n\ - text-shadow: none;\n\ -snippet tt\n\ - text-transform: ${1};\n\ -snippet tt:c\n\ - text-transform: capitalize;\n\ -snippet tt:l\n\ - text-transform: lowercase;\n\ -snippet tt:n\n\ - text-transform: none;\n\ -snippet tt:u\n\ - text-transform: uppercase;\n\ -snippet tw\n\ - text-wrap: ${1};\n\ -snippet tw:no\n\ - text-wrap: none;\n\ -snippet tw:n\n\ - text-wrap: normal;\n\ -snippet tw:s\n\ - text-wrap: suppress;\n\ -snippet tw:u\n\ - text-wrap: unrestricted;\n\ -snippet t\n\ - top: ${1};\n\ -snippet t:a\n\ - top: auto;\n\ -snippet va\n\ - vertical-align: ${1};\n\ -snippet va:bl\n\ - vertical-align: baseline;\n\ -snippet va:b\n\ - vertical-align: bottom;\n\ -snippet va:m\n\ - vertical-align: middle;\n\ -snippet va:sub\n\ - vertical-align: sub;\n\ -snippet va:sup\n\ - vertical-align: super;\n\ -snippet va:tb\n\ - vertical-align: text-bottom;\n\ -snippet va:tt\n\ - vertical-align: text-top;\n\ -snippet va:t\n\ - vertical-align: top;\n\ -snippet v\n\ - visibility: ${1};\n\ -snippet v:c\n\ - visibility: collapse;\n\ -snippet v:h\n\ - visibility: hidden;\n\ -snippet v:v\n\ - visibility: visible;\n\ -snippet whsc\n\ - white-space-collapse: ${1};\n\ -snippet whsc:ba\n\ - white-space-collapse: break-all;\n\ -snippet whsc:bs\n\ - white-space-collapse: break-strict;\n\ -snippet whsc:k\n\ - white-space-collapse: keep-all;\n\ -snippet whsc:l\n\ - white-space-collapse: loose;\n\ -snippet whsc:n\n\ - white-space-collapse: normal;\n\ -snippet whs\n\ - white-space: ${1};\n\ -snippet whs:n\n\ - white-space: normal;\n\ -snippet whs:nw\n\ - white-space: nowrap;\n\ -snippet whs:pl\n\ - white-space: pre-line;\n\ -snippet whs:pw\n\ - white-space: pre-wrap;\n\ -snippet whs:p\n\ - white-space: pre;\n\ -snippet wid\n\ - widows: ${1};\n\ -snippet w\n\ - width: ${1};\n\ -snippet w:a\n\ - width: auto;\n\ -snippet wob\n\ - word-break: ${1};\n\ -snippet wob:ba\n\ - word-break: break-all;\n\ -snippet wob:bs\n\ - word-break: break-strict;\n\ -snippet wob:k\n\ - word-break: keep-all;\n\ -snippet wob:l\n\ - word-break: loose;\n\ -snippet wob:n\n\ - word-break: normal;\n\ -snippet wos\n\ - word-spacing: ${1};\n\ -snippet wow\n\ - word-wrap: ${1};\n\ -snippet wow:no\n\ - word-wrap: none;\n\ -snippet wow:n\n\ - word-wrap: normal;\n\ -snippet wow:s\n\ - word-wrap: suppress;\n\ -snippet wow:u\n\ - word-wrap: unrestricted;\n\ -snippet z\n\ - z-index: ${1};\n\ -snippet z:a\n\ - z-index: auto;\n\ -snippet zoo\n\ - zoom: 1;\n\ -"; -exports.scope = "css"; - -}); (function() { - ace.require(["ace/snippets/css"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/curly.js b/src-noconflict/snippets/curly.js deleted file mode 100644 index 244ed49..0000000 --- a/src-noconflict/snippets/curly.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/curly"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/d.js b/src-noconflict/snippets/d.js deleted file mode 100644 index 28e7ca8..0000000 --- a/src-noconflict/snippets/d.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/d"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/dart.js b/src-noconflict/snippets/dart.js deleted file mode 100644 index 9821669..0000000 --- a/src-noconflict/snippets/dart.js +++ /dev/null @@ -1,97 +0,0 @@ -ace.define("ace/snippets/dart",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet lib\n\ - library ${1};\n\ - ${2}\n\ -snippet im\n\ - import '${1}';\n\ - ${2}\n\ -snippet pa\n\ - part '${1}';\n\ - ${2}\n\ -snippet pao\n\ - part of ${1};\n\ - ${2}\n\ -snippet main\n\ - void main() {\n\ - ${1:/* code */}\n\ - }\n\ -snippet st\n\ - static ${1}\n\ -snippet fi\n\ - final ${1}\n\ -snippet re\n\ - return ${1}\n\ -snippet br\n\ - break;\n\ -snippet th\n\ - throw ${1}\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet imp\n\ - implements ${1}\n\ -snippet ext\n\ - extends ${1}\n\ -snippet if\n\ - if (${1:true}) {\n\ - ${2}\n\ - }\n\ -snippet ife\n\ - if (${1:true}) {\n\ - ${2}\n\ - } else {\n\ - ${3}\n\ - }\n\ -snippet el\n\ - else\n\ -snippet sw\n\ - switch (${1}) {\n\ - ${2}\n\ - }\n\ -snippet cs\n\ - case ${1}:\n\ - ${2}\n\ -snippet de\n\ - default:\n\ - ${1}\n\ -snippet for\n\ - for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n\ - ${4:$1[$2]}\n\ - }\n\ -snippet fore\n\ - for (final ${2:item} in ${1:itemList}) {\n\ - ${3:/* code */}\n\ - }\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${2:/* code */}\n\ - }\n\ -snippet dowh\n\ - do {\n\ - ${2:/* code */}\n\ - } while (${1:/* condition */});\n\ -snippet as\n\ - assert(${1:/* condition */});\n\ -snippet try\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception e}) {\n\ - }\n\ -snippet tryf\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception e}) {\n\ - } finally {\n\ - }\n\ -"; -exports.scope = "dart"; - -}); (function() { - ace.require(["ace/snippets/dart"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/diff.js b/src-noconflict/snippets/diff.js deleted file mode 100644 index 862d6b0..0000000 --- a/src-noconflict/snippets/diff.js +++ /dev/null @@ -1,25 +0,0 @@ -ace.define("ace/snippets/diff",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\n\ -snippet header DEP-3 style header\n\ - Description: ${1}\n\ - Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\ - Bug: ${4:url in upstream bugtracker}\n\ - Forwarded: ${5:no|not-needed|url}\n\ - Author: ${6:`g:snips_author`}\n\ - Reviewed-by: ${7:name and email}\n\ - Last-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\ - Applied-Upstream: ${9:upstream version|url|commit}\n\ -\n\ -"; -exports.scope = "diff"; - -}); (function() { - ace.require(["ace/snippets/diff"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/django.js b/src-noconflict/snippets/django.js deleted file mode 100644 index a575b36..0000000 --- a/src-noconflict/snippets/django.js +++ /dev/null @@ -1,122 +0,0 @@ -ace.define("ace/snippets/django",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Model Fields\n\ -\n\ -# Note: Optional arguments are using defaults that match what Django will use\n\ -# as a default, e.g. with max_length fields. Doing this as a form of self\n\ -# documentation and to make it easy to know whether you should override the\n\ -# default or not.\n\ -\n\ -# Note: Optional arguments that are booleans will use the opposite since you\n\ -# can either not specify them, or override them, e.g. auto_now_add=False.\n\ -\n\ -snippet auto\n\ - ${1:FIELDNAME} = models.AutoField(${2})\n\ -snippet bool\n\ - ${1:FIELDNAME} = models.BooleanField(${2:default=True})\n\ -snippet char\n\ - ${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\n\ -snippet comma\n\ - ${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\n\ -snippet date\n\ - ${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet datetime\n\ - ${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet decimal\n\ - ${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\n\ -snippet email\n\ - ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\n\ -snippet file\n\ - ${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\n\ -snippet filepath\n\ - ${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\n\ -snippet float\n\ - ${1:FIELDNAME} = models.FloatField(${2})\n\ -snippet image\n\ - ${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\n\ -snippet int\n\ - ${1:FIELDNAME} = models.IntegerField(${2})\n\ -snippet ip\n\ - ${1:FIELDNAME} = models.IPAddressField(${2})\n\ -snippet nullbool\n\ - ${1:FIELDNAME} = models.NullBooleanField(${2})\n\ -snippet posint\n\ - ${1:FIELDNAME} = models.PositiveIntegerField(${2})\n\ -snippet possmallint\n\ - ${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\n\ -snippet slug\n\ - ${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\n\ -snippet smallint\n\ - ${1:FIELDNAME} = models.SmallIntegerField(${2})\n\ -snippet text\n\ - ${1:FIELDNAME} = models.TextField(${2:blank=True})\n\ -snippet time\n\ - ${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet url\n\ - ${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\n\ -snippet xml\n\ - ${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n\ -# Relational Fields\n\ -snippet fk\n\ - ${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\n\ -snippet m2m\n\ - ${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\n\ -snippet o2o\n\ - ${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\ -\n\ -# Code Skeletons\n\ -\n\ -snippet form\n\ - class ${1:FormName}(forms.Form):\n\ - \"\"\"${2:docstring}\"\"\"\n\ - ${3}\n\ -\n\ -snippet model\n\ - class ${1:ModelName}(models.Model):\n\ - \"\"\"${2:docstring}\"\"\"\n\ - ${3}\n\ - \n\ - class Meta:\n\ - ${4}\n\ - \n\ - def __unicode__(self):\n\ - ${5}\n\ - \n\ - def save(self, force_insert=False, force_update=False):\n\ - ${6}\n\ - \n\ - @models.permalink\n\ - def get_absolute_url(self):\n\ - return ('${7:view_or_url_name}' ${8})\n\ -\n\ -snippet modeladmin\n\ - class ${1:ModelName}Admin(admin.ModelAdmin):\n\ - ${2}\n\ - \n\ - admin.site.register($1, $1Admin)\n\ - \n\ -snippet tabularinline\n\ - class ${1:ModelName}Inline(admin.TabularInline):\n\ - model = $1\n\ -\n\ -snippet stackedinline\n\ - class ${1:ModelName}Inline(admin.StackedInline):\n\ - model = $1\n\ -\n\ -snippet r2r\n\ - return render_to_response('${1:template.html}', {\n\ - ${2}\n\ - }${3:, context_instance=RequestContext(request)}\n\ - )\n\ -"; -exports.scope = "django"; - -}); (function() { - ace.require(["ace/snippets/django"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/dockerfile.js b/src-noconflict/snippets/dockerfile.js deleted file mode 100644 index 228bc40..0000000 --- a/src-noconflict/snippets/dockerfile.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/dockerfile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/dot.js b/src-noconflict/snippets/dot.js deleted file mode 100644 index 114e4e0..0000000 --- a/src-noconflict/snippets/dot.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/dot"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/drools.js b/src-noconflict/snippets/drools.js deleted file mode 100644 index ea4d654..0000000 --- a/src-noconflict/snippets/drools.js +++ /dev/null @@ -1,33 +0,0 @@ -ace.define("ace/snippets/drools",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "\n\ -snippet rule\n\ - rule \"${1?:rule_name}\"\n\ - when\n\ - ${2:// when...} \n\ - then\n\ - ${3:// then...}\n\ - end\n\ -\n\ -snippet query\n\ - query ${1?:query_name}\n\ - ${2:// find} \n\ - end\n\ - \n\ -snippet declare\n\ - declare ${1?:type_name}\n\ - ${2:// attributes} \n\ - end\n\ -\n\ -"; -exports.scope = "drools"; - -}); (function() { - ace.require(["ace/snippets/drools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/edifact.js b/src-noconflict/snippets/edifact.js deleted file mode 100644 index 353cb54..0000000 --- a/src-noconflict/snippets/edifact.js +++ /dev/null @@ -1,254 +0,0 @@ -ace.define("ace/snippets/edifact",["require","exports","module"], function(require, exports, module) { - "use strict"; - - exports.snippetText = "## Access Modifiers\n\ -snippet u\n\ - UN\n\ -snippet un\n\ - UNB\n\ -snippet pr\n\ - private\n\ -##\n\ -## Annotations\n\ -snippet before\n\ - @Before\n\ - static void ${1:intercept}(${2:args}) { ${3} }\n\ -snippet mm\n\ - @ManyToMany\n\ - ${1}\n\ -snippet mo\n\ - @ManyToOne\n\ - ${1}\n\ -snippet om\n\ - @OneToMany${1:(cascade=CascadeType.ALL)}\n\ - ${2}\n\ -snippet oo\n\ - @OneToOne\n\ - ${1}\n\ -##\n\ -## Basic Java packages and import\n\ -snippet im\n\ - import\n\ -snippet j.b\n\ - java.beans.\n\ -snippet j.i\n\ - java.io.\n\ -snippet j.m\n\ - java.math.\n\ -snippet j.n\n\ - java.net.\n\ -snippet j.u\n\ - java.util.\n\ -##\n\ -## Class\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet in\n\ - interface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\n\ -snippet tc\n\ - public class ${1:`Filename()`} extends ${2:TestCase}\n\ -##\n\ -## Class Enhancements\n\ -snippet ext\n\ - extends \n\ -snippet imp\n\ - implements\n\ -##\n\ -## Comments\n\ -snippet /*\n\ - /*\n\ - * ${1}\n\ - */\n\ -##\n\ -## Constants\n\ -snippet co\n\ - static public final ${1:String} ${2:var} = ${3};${4}\n\ -snippet cos\n\ - static public final String ${1:var} = \"${2}\";${3}\n\ -##\n\ -## Control Statements\n\ -snippet case\n\ - case ${1}:\n\ - ${2}\n\ -snippet def\n\ - default:\n\ - ${2}\n\ -snippet el\n\ - else\n\ -snippet elif\n\ - else if (${1}) ${2}\n\ -snippet if\n\ - if (${1}) ${2}\n\ -snippet sw\n\ - switch (${1}) {\n\ - ${2}\n\ - }\n\ -##\n\ -## Create a Method\n\ -snippet m\n\ - ${1:void} ${2:method}(${3}) ${4:throws }${5}\n\ -##\n\ -## Create a Variable\n\ -snippet v\n\ - ${1:String} ${2:var}${3: = null}${4};${5}\n\ -##\n\ -## Enhancements to Methods, variables, classes, etc.\n\ -snippet ab\n\ - abstract\n\ -snippet fi\n\ - final\n\ -snippet st\n\ - static\n\ -snippet sy\n\ - synchronized\n\ -##\n\ -## Error Methods\n\ -snippet err\n\ - System.err.print(\"${1:Message}\");\n\ -snippet errf\n\ - System.err.printf(\"${1:Message}\", ${2:exception});\n\ -snippet errln\n\ - System.err.println(\"${1:Message}\");\n\ -##\n\ -## Exception Handling\n\ -snippet as\n\ - assert ${1:test} : \"${2:Failure message}\";${3}\n\ -snippet ca\n\ - catch(${1:Exception} ${2:e}) ${3}\n\ -snippet thr\n\ - throw\n\ -snippet ths\n\ - throws\n\ -snippet try\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - }\n\ -snippet tryf\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - } finally {\n\ - }\n\ -##\n\ -## Find Methods\n\ -snippet findall\n\ - List<${1:listName}> ${2:items} = ${1}.findAll();${3}\n\ -snippet findbyid\n\ - ${1:var} ${2:item} = ${1}.findById(${3});${4}\n\ -##\n\ -## Javadocs\n\ -snippet /**\n\ - /**\n\ - * ${1}\n\ - */\n\ -snippet @au\n\ - @author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\n\ -snippet @br\n\ - @brief ${1:Description}\n\ -snippet @fi\n\ - @file ${1:`Filename()`}.java\n\ -snippet @pa\n\ - @param ${1:param}\n\ -snippet @re\n\ - @return ${1:param}\n\ -##\n\ -## Logger Methods\n\ -snippet debug\n\ - Logger.debug(${1:param});${2}\n\ -snippet error\n\ - Logger.error(${1:param});${2}\n\ -snippet info\n\ - Logger.info(${1:param});${2}\n\ -snippet warn\n\ - Logger.warn(${1:param});${2}\n\ -##\n\ -## Loops\n\ -snippet enfor\n\ - for (${1} : ${2}) ${3}\n\ -snippet for\n\ - for (${1}; ${2}; ${3}) ${4}\n\ -snippet wh\n\ - while (${1}) ${2}\n\ -##\n\ -## Main method\n\ -snippet main\n\ - public static void main (String[] args) {\n\ - ${1:/* code */}\n\ - }\n\ -##\n\ -## Print Methods\n\ -snippet print\n\ - System.out.print(\"${1:Message}\");\n\ -snippet printf\n\ - System.out.printf(\"${1:Message}\", ${2:args});\n\ -snippet println\n\ - System.out.println(${1});\n\ -##\n\ -## Render Methods\n\ -snippet ren\n\ - render(${1:param});${2}\n\ -snippet rena\n\ - renderArgs.put(\"${1}\", ${2});${3}\n\ -snippet renb\n\ - renderBinary(${1:param});${2}\n\ -snippet renj\n\ - renderJSON(${1:param});${2}\n\ -snippet renx\n\ - renderXml(${1:param});${2}\n\ -##\n\ -## Setter and Getter Methods\n\ -snippet set\n\ - ${1:public} void set${3:}(${2:String} ${4:}){\n\ - this.$4 = $4;\n\ - }\n\ -snippet get\n\ - ${1:public} ${2:String} get${3:}(){\n\ - return this.${4:};\n\ - }\n\ -##\n\ -## Terminate Methods or Loops\n\ -snippet re\n\ - return\n\ -snippet br\n\ - break;\n\ -##\n\ -## Test Methods\n\ -snippet t\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -snippet test\n\ - @Test\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -##\n\ -## Utils\n\ -snippet Sc\n\ - Scanner\n\ -##\n\ -## Miscellaneous\n\ -snippet action\n\ - public static void ${1:index}(${2:args}) { ${3} }\n\ -snippet rnf\n\ - notFound(${1:param});${2}\n\ -snippet rnfin\n\ - notFoundIfNull(${1:param});${2}\n\ -snippet rr\n\ - redirect(${1:param});${2}\n\ -snippet ru\n\ - unauthorized(${1:param});${2}\n\ -snippet unless\n\ - (unless=${1:param});${2}\n\ -"; - exports.scope = "edifact"; - -}); (function() { - ace.require(["ace/snippets/edifact"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/eiffel.js b/src-noconflict/snippets/eiffel.js deleted file mode 100644 index 5437de0..0000000 --- a/src-noconflict/snippets/eiffel.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/eiffel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ejs.js b/src-noconflict/snippets/ejs.js deleted file mode 100644 index 93e7b3a..0000000 --- a/src-noconflict/snippets/ejs.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/ejs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/elixir.js b/src-noconflict/snippets/elixir.js deleted file mode 100644 index db94fd4..0000000 --- a/src-noconflict/snippets/elixir.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/elixir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/elm.js b/src-noconflict/snippets/elm.js deleted file mode 100644 index 211ce3e..0000000 --- a/src-noconflict/snippets/elm.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/elm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/erlang.js b/src-noconflict/snippets/erlang.js deleted file mode 100644 index be3f927..0000000 --- a/src-noconflict/snippets/erlang.js +++ /dev/null @@ -1,174 +0,0 @@ -ace.define("ace/snippets/erlang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# module and export all\n\ -snippet mod\n\ - -module(${1:`Filename('', 'my')`}).\n\ - \n\ - -compile([export_all]).\n\ - \n\ - start() ->\n\ - ${2}\n\ - \n\ - stop() ->\n\ - ok.\n\ -# define directive\n\ -snippet def\n\ - -define(${1:macro}, ${2:body}).${3}\n\ -# export directive\n\ -snippet exp\n\ - -export([${1:function}/${2:arity}]).\n\ -# include directive\n\ -snippet inc\n\ - -include(\"${1:file}\").${2}\n\ -# behavior directive\n\ -snippet beh\n\ - -behaviour(${1:behaviour}).${2}\n\ -# if expression\n\ -snippet if\n\ - if\n\ - ${1:guard} ->\n\ - ${2:body}\n\ - end\n\ -# case expression\n\ -snippet case\n\ - case ${1:expression} of\n\ - ${2:pattern} ->\n\ - ${3:body};\n\ - end\n\ -# anonymous function\n\ -snippet fun\n\ - fun (${1:Parameters}) -> ${2:body} end${3}\n\ -# try...catch\n\ -snippet try\n\ - try\n\ - ${1}\n\ - catch\n\ - ${2:_:_} -> ${3:got_some_exception}\n\ - end\n\ -# record directive\n\ -snippet rec\n\ - -record(${1:record}, {\n\ - ${2:field}=${3:value}}).${4}\n\ -# todo comment\n\ -snippet todo\n\ - %% TODO: ${1}\n\ -## Snippets below (starting with '%') are in EDoc format.\n\ -## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details\n\ -# doc comment\n\ -snippet %d\n\ - %% @doc ${1}\n\ -# end of doc comment\n\ -snippet %e\n\ - %% @end\n\ -# specification comment\n\ -snippet %s\n\ - %% @spec ${1}\n\ -# private function marker\n\ -snippet %p\n\ - %% @private\n\ -# OTP application\n\ -snippet application\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(application).\n\ -\n\ - -export([start/2, stop/1]).\n\ -\n\ - start(_Type, _StartArgs) ->\n\ - case ${2:root_supervisor}:start_link() of\n\ - {ok, Pid} ->\n\ - {ok, Pid};\n\ - Other ->\n\ - {error, Other}\n\ - end.\n\ -\n\ - stop(_State) ->\n\ - ok. \n\ -# OTP supervisor\n\ -snippet supervisor\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(supervisor).\n\ -\n\ - %% API\n\ - -export([start_link/0]).\n\ -\n\ - %% Supervisor callbacks\n\ - -export([init/1]).\n\ -\n\ - -define(SERVER, ?MODULE).\n\ -\n\ - start_link() ->\n\ - supervisor:start_link({local, ?SERVER}, ?MODULE, []).\n\ -\n\ - init([]) ->\n\ - Server = {${2:my_server}, {$2, start_link, []},\n\ - permanent, 2000, worker, [$2]},\n\ - Children = [Server],\n\ - RestartStrategy = {one_for_one, 0, 1},\n\ - {ok, {RestartStrategy, Children}}.\n\ -# OTP gen_server\n\ -snippet gen_server\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(gen_server).\n\ -\n\ - %% API\n\ - -export([\n\ - start_link/0\n\ - ]).\n\ -\n\ - %% gen_server callbacks\n\ - -export([init/1, handle_call/3, handle_cast/2, handle_info/2,\n\ - terminate/2, code_change/3]).\n\ -\n\ - -define(SERVER, ?MODULE).\n\ -\n\ - -record(state, {}).\n\ -\n\ - %%%===================================================================\n\ - %%% API\n\ - %%%===================================================================\n\ -\n\ - start_link() ->\n\ - gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).\n\ -\n\ - %%%===================================================================\n\ - %%% gen_server callbacks\n\ - %%%===================================================================\n\ -\n\ - init([]) ->\n\ - {ok, #state{}}.\n\ -\n\ - handle_call(_Request, _From, State) ->\n\ - Reply = ok,\n\ - {reply, Reply, State}.\n\ -\n\ - handle_cast(_Msg, State) ->\n\ - {noreply, State}.\n\ -\n\ - handle_info(_Info, State) ->\n\ - {noreply, State}.\n\ -\n\ - terminate(_Reason, _State) ->\n\ - ok.\n\ -\n\ - code_change(_OldVsn, State, _Extra) ->\n\ - {ok, State}.\n\ -\n\ - %%%===================================================================\n\ - %%% Internal functions\n\ - %%%===================================================================\n\ -\n\ -"; -exports.scope = "erlang"; - -}); (function() { - ace.require(["ace/snippets/erlang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/forth.js b/src-noconflict/snippets/forth.js deleted file mode 100644 index ceaaa1c..0000000 --- a/src-noconflict/snippets/forth.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/forth"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/fortran.js b/src-noconflict/snippets/fortran.js deleted file mode 100644 index 087bf34..0000000 --- a/src-noconflict/snippets/fortran.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/fortran"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/fsharp.js b/src-noconflict/snippets/fsharp.js deleted file mode 100644 index cdc4640..0000000 --- a/src-noconflict/snippets/fsharp.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/fsharp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/fsl.js b/src-noconflict/snippets/fsl.js deleted file mode 100644 index 964b56e..0000000 --- a/src-noconflict/snippets/fsl.js +++ /dev/null @@ -1,14 +0,0 @@ -ace.define("ace/snippets/fsl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = ""; - -}); (function() { - ace.require(["ace/snippets/fsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ftl.js b/src-noconflict/snippets/ftl.js deleted file mode 100644 index f596944..0000000 --- a/src-noconflict/snippets/ftl.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/ftl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/gcode.js b/src-noconflict/snippets/gcode.js deleted file mode 100644 index 404e60a..0000000 --- a/src-noconflict/snippets/gcode.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/gcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/gherkin.js b/src-noconflict/snippets/gherkin.js deleted file mode 100644 index d3a3f1f..0000000 --- a/src-noconflict/snippets/gherkin.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/gherkin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/gitignore.js b/src-noconflict/snippets/gitignore.js deleted file mode 100644 index 95e8caa..0000000 --- a/src-noconflict/snippets/gitignore.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/gitignore"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/glsl.js b/src-noconflict/snippets/glsl.js deleted file mode 100644 index 1c3407d..0000000 --- a/src-noconflict/snippets/glsl.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/glsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/gobstones.js b/src-noconflict/snippets/gobstones.js deleted file mode 100644 index 7b4a2ae..0000000 --- a/src-noconflict/snippets/gobstones.js +++ /dev/null @@ -1,1718 +0,0 @@ -ace.define("ace/snippets/gobstones",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# scope: gobstones\n\ -\n\ -# program\n\ -snippet program\n\ - program {\n\ - ${1:// cuerpo...}\n\ - }\n\ -\n\ -# interactive program\n\ -snippet interactive program\n\ - interactive program {\n\ - ${1:INIT} -> { ${2:// cuerpo...} }\n\ - ${3:TIMEOUT(${4:5000}) -> { ${5:// cuerpo...} }\n\ - ${6:K_ENTER} -> { ${7:// cuerpo...} }\n\ - _ -> {}\n\ - }\n\ -\n\ -# procedure\n\ -snippet procedure\n\ - procedure ${1:Nombre}(${2:parametros}) {\n\ - ${3:// cuerpo...}\n\ - }\n\ -\n\ -# function\n\ -snippet function\n\ - function ${1:nombre}(${2:parametros}) {\n\ - return (${3:expresión..})\n\ - }\n\ -\n\ -# return\n\ -snippet return\n\ - return (${1:expresión...})\n\ -\n\ -# type\n\ -snippet type\n\ - type ${1:Nombre}\n\ -\n\ -# is variant\n\ -snippet is variant\n\ - is variant {\n\ - case ${1:NombreDelValor1} {}\n\ - case ${2:NombreDelValor2} {}\n\ - case ${3:NombreDelValor3} {}\n\ - case ${4:NombreDelValor4} {}\n\ - }\n\ -\n\ -# is record\n\ -snippet is record\n\ - is record {\n\ - field ${1:campo1} // ${2:Tipo}\n\ - field ${3:campo2} // ${4:Tipo}\n\ - field ${5:campo3} // ${6:Tipo}\n\ - field ${7:campo4} // ${8:Tipo}\n\ - }\n\ -\n\ -# type _ is variant\n\ -snippet type _ is variant\n\ - type ${1:Nombre} is variant {\n\ - case ${2:NombreDelValor1} {}\n\ - case ${3:NombreDelValor2} {}\n\ - case ${4:NombreDelValor3} {}\n\ - case ${5:NombreDelValor4} {}\n\ - }\n\ -\n\ -# type _ is record\n\ -snippet type _ is record\n\ - type ${1:Nombre} is record {\n\ - field ${2:campo1} // ${3:Tipo}\n\ - field ${4:campo2} // ${5:Tipo}\n\ - field ${6:campo3} // ${7:Tipo}\n\ - field ${8:campo4} // ${9:Tipo}\n\ - }\n\ -\n\ -# repeat\n\ -snippet repeat\n\ - repeat ${1:cantidad} {\n\ - ${2:// cuerpo...}\n\ - }\n\ -\n\ -# foreach\n\ -snippet foreach\n\ - foreach ${1:índice} in ${2:lista} {\n\ - ${3:// cuerpo...}\n\ - }\n\ -\n\ -# while\n\ -snippet while\n\ - while (${1?:condición}) {\n\ - ${2:// cuerpo...}\n\ - }\n\ -\n\ -# if\n\ -snippet if\n\ - if (${1?:condición}) {\n\ - ${2:// cuerpo...}\n\ - }\n\ -\n\ -# elseif\n\ -snippet elseif\n\ - elseif (${1?:condición}) {\n\ - ${2:// cuerpo...}\n\ - }\n\ -\n\ -# else\n\ -snippet else\n\ - else {\n\ - ${1:// cuerpo...}\n\ - }\n\ -\n\ -# if (con else)\n\ -snippet if (con else)\n\ - if (${1:condición}) {\n\ - ${2:// cuerpo...}\n\ - } else {\n\ - ${3:// cuerpo....}\n\ - }\n\ -\n\ -# if (con elseif)\n\ -snippet if (con elseif)\n\ - if (${1:condición}) {\n\ - ${2:// cuerpo...}\n\ - } elseif (${3:condición}) {\n\ - ${4:// cuerpo...}\n\ - }\n\ -\n\ -# if (con elseif y else)\n\ -snippet if (con elseif y else)\n\ - if (${1:condición}) {\n\ - ${2:// cuerpo...}\n\ - } elseif (${3:condición}) {\n\ - ${4:// cuerpo...}\n\ - } else {\n\ - ${5:// cuerpo....}\n\ - }\n\ -\n\ -# if (con 3 elseif)\n\ -snippet if (con 3 elseif)\n\ - if (${1:condición}) {\n\ - ${2:// cuerpo...}\n\ - } elseif (${3:condición}) {\n\ - ${4:// cuerpo...}\n\ - } elseif (${5:condición}) {\n\ - ${6:// cuerpo...}\n\ - } elseif (${7:condición}) {\n\ - ${8:// cuerpo...}\n\ - }\n\ -\n\ -# choose (2 valores)\n\ -snippet choose (2 valores)\n\ - choose\n\ - ${1:Valor1} when (${2:condición})\n\ - ${3:Valor2} otherwise\n\ -\n\ -# choose (2 valores y boom)\n\ -snippet choose (2 valores y boom)\n\ - choose\n\ - ${1:Valor1} when (${2:condición})\n\ - ${3:Valor2} when (${4:condición})\n\ - ${5:Valor3} when (${6:condición})\n\ - ${7:Valor4} when (${8:condición})\n\ - boom(\"${9:No es un valor válido}\") otherwise\n\ -\n\ -# matching (4 valores)\n\ -snippet matching (4 valores)\n\ - matching (${1:variable}) select\n\ - ${2:Valor1} on ${3:opción1}\n\ - ${4:Valor2} on ${5:opción2}\n\ - ${6:Valor3} on ${7:opción3}\n\ - ${8:Valor4} on ${9:opción4}\n\ - boom(\"${10:No es un valor válido}\") otherwise\n\ -\n\ -# select (4 casos)\n\ -snippet select (4 casos)\n\ - select\n\ - ${1:Valor1} on (${2:opción1})\n\ - ${3:Valor2} on (${4:opción2})\n\ - ${5:Valor3} on (${6:opción3})\n\ - ${7:Valor4} on (${8:opción4})\n\ - boom(\"${9:No es un valor válido}\") otherwise\n\ -\n\ -# switch\n\ -snippet switch\n\ - switch (${1:variable}) {\n\ - ${2:Valor1} -> {${3:// cuerpo...}}\n\ - ${4:Valor2} -> {${5:// cuerpo...}}\n\ - ${6:Valor3} -> {${7:// cuerpo...}}\n\ - ${8:Valor4} -> {${9:// cuerpo...}}\n\ - _ -> {${10:// cuerpo...}}\n\ - }\n\ -\n\ -# Poner\n\ -snippet Poner\n\ - Poner(${1:color})\n\ -\n\ -# Sacar\n\ -snippet Sacar\n\ - Sacar(${1:color})\n\ -\n\ -# Mover\n\ -snippet Mover\n\ - Mover(${1:dirección})\n\ -\n\ -# IrAlBorde\n\ -snippet IrAlBorde\n\ - IrAlBorde(${1:dirección})\n\ -\n\ -# VaciarTablero\n\ -snippet VaciarTablero\n\ - VaciarTablero()\n\ -\n\ -# BOOM\n\ -snippet BOOM\n\ - BOOM(\"${1:Mensaje de error}\")\n\ -\n\ -# hayBolitas\n\ -snippet hayBolitas\n\ - hayBolitas(${1:color})\n\ -\n\ -# nroBolitas\n\ -snippet nroBolitas\n\ - nroBolitas(${1:color})\n\ -\n\ -# puedeMover\n\ -snippet puedeMover\n\ - puedeMover(${1:dirección})\n\ -\n\ -# siguiente\n\ -snippet siguiente\n\ - siguiente(${1:color|dirección})\n\ -\n\ -# previo\n\ -snippet previo\n\ - previo(${1:color|dirección})\n\ -\n\ -# opuesto\n\ -snippet opuesto\n\ - opuesto(${1:dirección})\n\ -\n\ -# minDir\n\ -snippet minDir\n\ - minDir()\n\ -\n\ -# maxDir\n\ -snippet maxDir\n\ - maxDir()\n\ -\n\ -# minColor\n\ -snippet minColor\n\ - minDir()\n\ -\n\ -# maxColor\n\ -snippet maxColor\n\ - maxDir()\n\ -\n\ -# minBool\n\ -snippet minBool\n\ - minBool()\n\ -\n\ -# maxBool\n\ -snippet maxBool\n\ - maxBool()\n\ -\n\ -# primero\n\ -snippet primero\n\ - primero(${1:lista})\n\ -\n\ -# sinElPrimero\n\ -snippet sinElPrimero\n\ - sinElPrimero(${1:lista})\n\ -\n\ -# esVacía\n\ -snippet esVacía\n\ - esVacía(${1:lista})\n\ -\n\ -# boom\n\ -snippet boom\n\ - boom(\"${1:Mensaje de error}\")\n\ -\n\ -# Azul\n\ -snippet Azul\n\ - Azul\n\ -\n\ -# Negro\n\ -snippet Negro\n\ - Negro\n\ -\n\ -# Rojo\n\ -snippet Rojo\n\ - Rojo\n\ -\n\ -# Verde\n\ -snippet Verde\n\ - Verde\n\ -\n\ -# Norte\n\ -snippet Norte\n\ - Norte\n\ -\n\ -# Este\n\ -snippet Este\n\ - Este\n\ -\n\ -# Sur\n\ -snippet Sur\n\ - Sur\n\ -\n\ -# Oeste\n\ -snippet Oeste\n\ - Oeste\n\ -\n\ -# True\n\ -snippet True\n\ - True\n\ -\n\ -# False\n\ -snippet False\n\ - False\n\ -\n\ -# INIT\n\ -snippet INIT\n\ - INIT -> {$1:// cuerpo...}\n\ -\n\ -# TIMEOUT\n\ -snippet TIMEOUT\n\ - TIMEOUT(${1:5000}) -> {$2:// cuerpo...}\n\ -\n\ -# K_A\n\ -snippet K_A\n\ - K_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_A\n\ -snippet K_CTRL_A\n\ - K_CTRL_A -> { ${1://cuerpo...} }\n\ -# K_ALT_A\n\ -snippet K_ALT_A\n\ - K_ALT_A -> { ${1://cuerpo...} }\n\ -# K_SHIFT_A\n\ -snippet K_SHIFT_A\n\ - K_SHIFT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_A\n\ -snippet K_CTRL_ALT_A\n\ - K_CTRL_ALT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_A\n\ -snippet K_CTRL_SHIFT_A\n\ - K_CTRL_SHIFT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_A\n\ -snippet K_CTRL_ALT_SHIFT_A\n\ - K_CTRL_ALT_SHIFT_A -> { ${1://cuerpo...} }\n\ -\n\ -# K_B\n\ -snippet K_B\n\ - K_B -> { ${1://cuerpo...} }\n\ -# K_CTRL_B\n\ -snippet K_CTRL_B\n\ - K_CTRL_B -> { ${1://cuerpo...} }\n\ -# K_ALT_B\n\ -snippet K_ALT_B\n\ - K_ALT_B -> { ${1://cuerpo...} }\n\ -# K_SHIFT_B\n\ -snippet K_SHIFT_B\n\ - K_SHIFT_B -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_B\n\ -snippet K_CTRL_ALT_B\n\ - K_CTRL_ALT_B -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_B\n\ -snippet K_CTRL_SHIFT_B\n\ - K_CTRL_SHIFT_B -> { ${1://cuerpo...} }\n\ -# K_ALT_SHIFT_C\n\ -snippet K_ALT_SHIFT_C\n\ - K_ALT_SHIFT_C -> { ${1://cuerpo...} }\n\ -# K_CTRL_BLT_SHIFT_B\n\ -snippet K_CTRL_BLT_SHIFT_B\n\ - K_CTRL_ALT_SHIFT_B -> { ${1://cuerpo...} }\n\ -\n\ -# K_C\n\ -snippet K_C\n\ - K_C -> { ${1://cuerpo...} }\n\ -# K_CTRL_C\n\ -snippet K_CTRL_C\n\ - K_CTRL_C -> { ${1://cuerpo...} }\n\ -# K_ALT_C\n\ -snippet K_ALT_C\n\ - K_ALT_C -> { ${1://cuerpo...} }\n\ -# K_SHIFT_C\n\ -snippet K_SHIFT_C\n\ - K_SHIFT_C -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_C\n\ -snippet K_CTRL_ALT_C\n\ - K_CTRL_ALT_C -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_C\n\ -snippet K_CTRL_SHIFT_C\n\ - K_CTRL_SHIFT_C -> { ${1://cuerpo...} }\n\ -# K_ALT_SHIFT_C\n\ -snippet K_ALT_SHIFT_C\n\ - K_ALT_SHIFT_C -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_C\n\ -snippet K_CTRL_ALT_SHIFT_C\n\ - K_CTRL_ALT_SHIFT_C -> { ${1://cuerpo...} }\n\ -\n\ -# K_D\n\ -snippet K_D\n\ - K_D -> { ${1://cuerpo...} }\n\ -# K_CTRL_D\n\ -snippet K_CTRL_D\n\ - K_CTRL_D -> { ${1://cuerpo...} }\n\ -# K_ALT_D\n\ -snippet K_ALT_D\n\ - K_DLT_D -> { ${1://cuerpo...} }\n\ -# K_SHIFT_D\n\ -snippet K_SHIFT_D\n\ - K_SHIFT_D -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_D\n\ -snippet K_CTRL_ALT_D\n\ - K_CTRL_DLT_D -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_D\n\ -snippet K_CTRL_SHIFT_D\n\ - K_CTRL_SHIFT_D -> { ${1://cuerpo...} }\n\ -# K_ALT_SHIFT_D\n\ -snippet K_ALT_SHIFT_D\n\ - K_ALT_SHIFT_D -> { ${1://cuerpo...} }\n\ -# K_CTRL_DLT_SHIFT_D\n\ -snippet K_CTRL_DLT_SHIFT_D\n\ - K_CTRL_ALT_SHIFT_D -> { ${1://cuerpo...} }\n\ -\n\ -# K_E\n\ -snippet K_E\n\ - K_E -> { ${1://cuerpo...} }\n\ -# K_CTRL_E\n\ -snippet K_CTRL_E\n\ - K_CTRL_E -> { ${1://cuerpo...} }\n\ -# K_ALT_E\n\ -snippet K_ALT_E\n\ - K_ALT_E -> { ${1://cuerpo...} }\n\ -# K_SHIFT_E\n\ -snippet K_SHIFT_E\n\ - K_SHIFT_E -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_E\n\ -snippet K_CTRL_ALT_E\n\ - K_CTRL_ALT_E -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_E\n\ -snippet K_CTRL_SHIFT_E\n\ - K_CTRL_SHIFT_E -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_E\n\ -snippet K_CTRL_ALT_SHIFT_E\n\ - K_CTRL_ALT_SHIFT_E -> { ${1://cuerpo...} }\n\ -\n\ -# K_F\n\ -snippet K_F\n\ - K_F -> { ${1://cuerpo...} }\n\ -# K_CTRL_F\n\ -snippet K_CTRL_F\n\ - K_CTRL_F -> { ${1://cuerpo...} }\n\ -# K_ALT_F\n\ -snippet K_ALT_F\n\ - K_ALT_F -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F\n\ -snippet K_SHIFT_F\n\ - K_SHIFT_F -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F\n\ -snippet K_CTRL_ALT_F\n\ - K_CTRL_ALT_F -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F\n\ -snippet K_CTRL_SHIFT_F\n\ - K_CTRL_SHIFT_F -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F\n\ -snippet K_CTRL_ALT_SHIFT_F\n\ - K_CTRL_ALT_SHIFT_F -> { ${1://cuerpo...} }\n\ -\n\ -# K_G\n\ -snippet K_G\n\ - K_G -> { ${1://cuerpo...} }\n\ -# K_CTRL_G\n\ -snippet K_CTRL_G\n\ - K_CTRL_G -> { ${1://cuerpo...} }\n\ -# K_ALT_G\n\ -snippet K_ALT_G\n\ - K_ALT_G -> { ${1://cuerpo...} }\n\ -# K_SHIFT_G\n\ -snippet K_SHIFT_G\n\ - K_SHIFT_G -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_G\n\ -snippet K_CTRL_ALT_G\n\ - K_CTRL_ALT_G -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_G\n\ -snippet K_CTRL_SHIFT_G\n\ - K_CTRL_SHIFT_G -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_G\n\ -snippet K_CTRL_ALT_SHIFT_G\n\ - K_CTRL_ALT_SHIFT_G -> { ${1://cuerpo...} }\n\ -\n\ -# K_H\n\ -snippet K_H\n\ - K_H -> { ${1://cuerpo...} }\n\ -# K_CTRL_H\n\ -snippet K_CTRL_H\n\ - K_CTRL_H -> { ${1://cuerpo...} }\n\ -# K_ALT_H\n\ -snippet K_ALT_H\n\ - K_ALT_H -> { ${1://cuerpo...} }\n\ -# K_SHIFT_H\n\ -snippet K_SHIFT_H\n\ - K_SHIFT_H -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_H\n\ -snippet K_CTRL_ALT_H\n\ - K_CTRL_ALT_H -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_H\n\ -snippet K_CTRL_SHIFT_H\n\ - K_CTRL_SHIFT_H -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_H\n\ -snippet K_CTRL_ALT_SHIFT_H\n\ - K_CTRL_ALT_SHIFT_H -> { ${1://cuerpo...} }\n\ -\n\ -# K_I\n\ -snippet K_I\n\ - K_I -> { ${1://cuerpo...} }\n\ -# K_CTRL_I\n\ -snippet K_CTRL_I\n\ - K_CTRL_I -> { ${1://cuerpo...} }\n\ -# K_ALT_I\n\ -snippet K_ALT_I\n\ - K_ALT_I -> { ${1://cuerpo...} }\n\ -# K_SHIFT_I\n\ -snippet K_SHIFT_I\n\ - K_SHIFT_I -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_I\n\ -snippet K_CTRL_ALT_I\n\ - K_CTRL_ALT_I -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_I\n\ -snippet K_CTRL_SHIFT_I\n\ - K_CTRL_SHIFT_I -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_I\n\ -snippet K_CTRL_ALT_SHIFT_I\n\ - K_CTRL_ALT_SHIFT_I -> { ${1://cuerpo...} }\n\ -\n\ -# K_J\n\ -snippet K_J\n\ - K_J -> { ${1://cuerpo...} }\n\ -# K_CTRL_J\n\ -snippet K_CTRL_J\n\ - K_CTRL_J -> { ${1://cuerpo...} }\n\ -# K_ALT_J\n\ -snippet K_ALT_J\n\ - K_ALT_J -> { ${1://cuerpo...} }\n\ -# K_SHIFT_J\n\ -snippet K_SHIFT_J\n\ - K_SHIFT_J -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_J\n\ -snippet K_CTRL_ALT_J\n\ - K_CTRL_ALT_J -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_J\n\ -snippet K_CTRL_SHIFT_J\n\ - K_CTRL_SHIFT_J -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_J\n\ -snippet K_CTRL_ALT_SHIFT_J\n\ - K_CTRL_ALT_SHIFT_J -> { ${1://cuerpo...} }\n\ -\n\ -# K_K\n\ -snippet K_K\n\ - K_K -> { ${1://cuerpo...} }\n\ -# K_CTRL_K\n\ -snippet K_CTRL_K\n\ - K_CTRL_K -> { ${1://cuerpo...} }\n\ -# K_ALT_K\n\ -snippet K_ALT_K\n\ - K_ALT_K -> { ${1://cuerpo...} }\n\ -# K_SHIFT_K\n\ -snippet K_SHIFT_K\n\ - K_SHIFT_K -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_K\n\ -snippet K_CTRL_ALT_K\n\ - K_CTRL_ALT_K -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_K\n\ -snippet K_CTRL_SHIFT_K\n\ - K_CTRL_SHIFT_K -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_K\n\ -snippet K_CTRL_ALT_SHIFT_K\n\ - K_CTRL_ALT_SHIFT_K -> { ${1://cuerpo...} }\n\ -\n\ -# K_L\n\ -snippet K_L\n\ - K_L -> { ${1://cuerpo...} }\n\ -# K_CTRL_L\n\ -snippet K_CTRL_L\n\ - K_CTRL_L -> { ${1://cuerpo...} }\n\ -# K_ALT_L\n\ -snippet K_ALT_L\n\ - K_ALT_L -> { ${1://cuerpo...} }\n\ -# K_SHIFT_L\n\ -snippet K_SHIFT_L\n\ - K_SHIFT_L -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_L\n\ -snippet K_CTRL_ALT_L\n\ - K_CTRL_ALT_L -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_L\n\ -snippet K_CTRL_SHIFT_L\n\ - K_CTRL_SHIFT_L -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_L\n\ -snippet K_CTRL_ALT_SHIFT_L\n\ - K_CTRL_ALT_SHIFT_L -> { ${1://cuerpo...} }\n\ -\n\ -# K_M\n\ -snippet K_M\n\ - K_M -> { ${1://cuerpo...} }\n\ -# K_CTRL_M\n\ -snippet K_CTRL_M\n\ - K_CTRL_M -> { ${1://cuerpo...} }\n\ -# K_ALT_M\n\ -snippet K_ALT_M\n\ - K_ALT_M -> { ${1://cuerpo...} }\n\ -# K_SHIFT_M\n\ -snippet K_SHIFT_M\n\ - K_SHIFT_M -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_M\n\ -snippet K_CTRL_ALT_M\n\ - K_CTRL_ALT_M -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_M\n\ -snippet K_CTRL_SHIFT_M\n\ - K_CTRL_SHIFT_M -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_M\n\ -snippet K_CTRL_ALT_SHIFT_M\n\ - K_CTRL_ALT_SHIFT_M -> { ${1://cuerpo...} }\n\ -\n\ -# K_N\n\ -snippet K_N\n\ - K_N -> { ${1://cuerpo...} }\n\ -# K_CTRL_N\n\ -snippet K_CTRL_N\n\ - K_CTRL_N -> { ${1://cuerpo...} }\n\ -# K_ALT_N\n\ -snippet K_ALT_N\n\ - K_ALT_N -> { ${1://cuerpo...} }\n\ -# K_SHIFT_N\n\ -snippet K_SHIFT_N\n\ - K_SHIFT_N -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_N\n\ -snippet K_CTRL_ALT_N\n\ - K_CTRL_ALT_N -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_N\n\ -snippet K_CTRL_SHIFT_N\n\ - K_CTRL_SHIFT_N -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_N\n\ -snippet K_CTRL_ALT_SHIFT_N\n\ - K_CTRL_ALT_SHIFT_N -> { ${1://cuerpo...} }\n\ -\n\ -# K_Ñ\n\ -snippet K_Ñ\n\ - K_Ñ -> { ${1://cuerpo...} }\n\ -# K_CTRL_Ñ\n\ -snippet K_CTRL_Ñ\n\ - K_CTRL_Ñ -> { ${1://cuerpo...} }\n\ -# K_ALT_Ñ\n\ -snippet K_ALT_Ñ\n\ - K_ALT_Ñ -> { ${1://cuerpo...} }\n\ -# K_SHIFT_Ñ\n\ -snippet K_SHIFT_Ñ\n\ - K_SHIFT_Ñ -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_Ñ\n\ -snippet K_CTRL_ALT_Ñ\n\ - K_CTRL_ALT_Ñ -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_Ñ\n\ -snippet K_CTRL_SHIFT_Ñ\n\ - K_CTRL_SHIFT_Ñ -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_Ñ\n\ -snippet K_CTRL_ALT_SHIFT_Ñ\n\ - K_CTRL_ALT_SHIFT_Ñ -> { ${1://cuerpo...} }\n\ -\n\ -# K_O\n\ -snippet K_O\n\ - K_O -> { ${1://cuerpo...} }\n\ -# K_CTRL_O\n\ -snippet K_CTRL_O\n\ - K_CTRL_O -> { ${1://cuerpo...} }\n\ -# K_ALT_O\n\ -snippet K_ALT_O\n\ - K_ALT_O -> { ${1://cuerpo...} }\n\ -# K_SHIFT_O\n\ -snippet K_SHIFT_O\n\ - K_SHIFT_O -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_O\n\ -snippet K_CTRL_ALT_O\n\ - K_CTRL_ALT_O -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_O\n\ -snippet K_CTRL_SHIFT_O\n\ - K_CTRL_SHIFT_O -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_O\n\ -snippet K_CTRL_ALT_SHIFT_O\n\ - K_CTRL_ALT_SHIFT_O -> { ${1://cuerpo...} }\n\ -\n\ -# K_P\n\ -snippet K_P\n\ - K_P -> { ${1://cuerpo...} }\n\ -# K_CTRL_P\n\ -snippet K_CTRL_P\n\ - K_CTRL_P -> { ${1://cuerpo...} }\n\ -# K_ALT_P\n\ -snippet K_ALT_P\n\ - K_ALT_P -> { ${1://cuerpo...} }\n\ -# K_SHIFT_P\n\ -snippet K_SHIFT_P\n\ - K_SHIFT_P -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_P\n\ -snippet K_CTRL_ALT_P\n\ - K_CTRL_ALT_P -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_P\n\ -snippet K_CTRL_SHIFT_P\n\ - K_CTRL_SHIFT_P -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_P\n\ -snippet K_CTRL_ALT_SHIFT_P\n\ - K_CTRL_ALT_SHIFT_P -> { ${1://cuerpo...} }\n\ -\n\ -# K_Q\n\ -snippet K_Q\n\ - K_Q -> { ${1://cuerpo...} }\n\ -# K_CTRL_Q\n\ -snippet K_CTRL_Q\n\ - K_CTRL_Q -> { ${1://cuerpo...} }\n\ -# K_ALT_Q\n\ -snippet K_ALT_Q\n\ - K_ALT_Q -> { ${1://cuerpo...} }\n\ -# K_SHIFT_Q\n\ -snippet K_SHIFT_Q\n\ - K_SHIFT_Q -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_Q\n\ -snippet K_CTRL_ALT_Q\n\ - K_CTRL_ALT_Q -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_Q\n\ -snippet K_CTRL_SHIFT_Q\n\ - K_CTRL_SHIFT_Q -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_Q\n\ -snippet K_CTRL_ALT_SHIFT_Q\n\ - K_CTRL_ALT_SHIFT_Q -> { ${1://cuerpo...} }\n\ -\n\ -# K_R\n\ -snippet K_R\n\ - K_R -> { ${1://cuerpo...} }\n\ -# K_CTRL_R\n\ -snippet K_CTRL_R\n\ - K_CTRL_R -> { ${1://cuerpo...} }\n\ -# K_ALT_R\n\ -snippet K_ALT_R\n\ - K_ALT_R -> { ${1://cuerpo...} }\n\ -# K_SHIFT_R\n\ -snippet K_SHIFT_R\n\ - K_SHIFT_R -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_R\n\ -snippet K_CTRL_ALT_R\n\ - K_CTRL_ALT_R -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_R\n\ -snippet K_CTRL_SHIFT_R\n\ - K_CTRL_SHIFT_R -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_R\n\ -snippet K_CTRL_ALT_SHIFT_R\n\ - K_CTRL_ALT_SHIFT_R -> { ${1://cuerpo...} }\n\ -\n\ -# K_S\n\ -snippet K_S\n\ - K_S -> { ${1://cuerpo...} }\n\ -# K_CTRL_S\n\ -snippet K_CTRL_S\n\ - K_CTRL_S -> { ${1://cuerpo...} }\n\ -# K_ALT_S\n\ -snippet K_ALT_S\n\ - K_ALT_S -> { ${1://cuerpo...} }\n\ -# K_SHIFT_S\n\ -snippet K_SHIFT_S\n\ - K_SHIFT_S -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_S\n\ -snippet K_CTRL_ALT_S\n\ - K_CTRL_ALT_S -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_S\n\ -snippet K_CTRL_SHIFT_S\n\ - K_CTRL_SHIFT_S -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_S\n\ -snippet K_CTRL_ALT_SHIFT_S\n\ - K_CTRL_ALT_SHIFT_S -> { ${1://cuerpo...} }\n\ -\n\ -# K_T\n\ -snippet K_T\n\ - K_T -> { ${1://cuerpo...} }\n\ -# K_CTRL_T\n\ -snippet K_CTRL_T\n\ - K_CTRL_T -> { ${1://cuerpo...} }\n\ -# K_ALT_T\n\ -snippet K_ALT_T\n\ - K_ALT_T -> { ${1://cuerpo...} }\n\ -# K_SHIFT_T\n\ -snippet K_SHIFT_T\n\ - K_SHIFT_T -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_T\n\ -snippet K_CTRL_ALT_T\n\ - K_CTRL_ALT_T -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_T\n\ -snippet K_CTRL_SHIFT_T\n\ - K_CTRL_SHIFT_T -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_T\n\ -snippet K_CTRL_ALT_SHIFT_T\n\ - K_CTRL_ALT_SHIFT_T -> { ${1://cuerpo...} }\n\ -\n\ -# K_U\n\ -snippet K_U\n\ - K_U -> { ${1://cuerpo...} }\n\ -# K_CTRL_U\n\ -snippet K_CTRL_U\n\ - K_CTRL_U -> { ${1://cuerpo...} }\n\ -# K_ALT_U\n\ -snippet K_ALT_U\n\ - K_ALT_U -> { ${1://cuerpo...} }\n\ -# K_SHIFT_U\n\ -snippet K_SHIFT_U\n\ - K_SHIFT_U -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_U\n\ -snippet K_CTRL_ALT_U\n\ - K_CTRL_ALT_U -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_U\n\ -snippet K_CTRL_SHIFT_U\n\ - K_CTRL_SHIFT_U -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_U\n\ -snippet K_CTRL_ALT_SHIFT_U\n\ - K_CTRL_ALT_SHIFT_U -> { ${1://cuerpo...} }\n\ -\n\ -# K_V\n\ -snippet K_V\n\ - K_V -> { ${1://cuerpo...} }\n\ -# K_CTRL_V\n\ -snippet K_CTRL_V\n\ - K_CTRL_V -> { ${1://cuerpo...} }\n\ -# K_ALT_V\n\ -snippet K_ALT_V\n\ - K_ALT_V -> { ${1://cuerpo...} }\n\ -# K_SHIFT_V\n\ -snippet K_SHIFT_V\n\ - K_SHIFT_V -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_V\n\ -snippet K_CTRL_ALT_V\n\ - K_CTRL_ALT_V -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_V\n\ -snippet K_CTRL_SHIFT_V\n\ - K_CTRL_SHIFT_V -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_V\n\ -snippet K_CTRL_ALT_SHIFT_V\n\ - K_CTRL_ALT_SHIFT_V -> { ${1://cuerpo...} }\n\ -\n\ -# K_W\n\ -snippet K_W\n\ - K_W -> { ${1://cuerpo...} }\n\ -# K_CTRL_W\n\ -snippet K_CTRL_W\n\ - K_CTRL_W -> { ${1://cuerpo...} }\n\ -# K_ALT_W\n\ -snippet K_ALT_W\n\ - K_ALT_W -> { ${1://cuerpo...} }\n\ -# K_SHIFT_W\n\ -snippet K_SHIFT_W\n\ - K_SHIFT_W -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_W\n\ -snippet K_CTRL_ALT_W\n\ - K_CTRL_ALT_W -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_W\n\ -snippet K_CTRL_SHIFT_W\n\ - K_CTRL_SHIFT_W -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_W\n\ -snippet K_CTRL_ALT_SHIFT_W\n\ - K_CTRL_ALT_SHIFT_W -> { ${1://cuerpo...} }\n\ -\n\ -# K_X\n\ -snippet K_X\n\ - K_X -> { ${1://cuerpo...} }\n\ -# K_CTRL_X\n\ -snippet K_CTRL_X\n\ - K_CTRL_X -> { ${1://cuerpo...} }\n\ -# K_ALT_X\n\ -snippet K_ALT_X\n\ - K_ALT_X -> { ${1://cuerpo...} }\n\ -# K_SHIFT_X\n\ -snippet K_SHIFT_X\n\ - K_SHIFT_X -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_X\n\ -snippet K_CTRL_ALT_X\n\ - K_CTRL_ALT_X -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_X\n\ -snippet K_CTRL_SHIFT_X\n\ - K_CTRL_SHIFT_X -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_X\n\ -snippet K_CTRL_ALT_SHIFT_X\n\ - K_CTRL_ALT_SHIFT_X -> { ${1://cuerpo...} }\n\ -\n\ -# K_Y\n\ -snippet K_Y\n\ - K_Y -> { ${1://cuerpo...} }\n\ -# K_CTRL_Y\n\ -snippet K_CTRL_Y\n\ - K_CTRL_Y -> { ${1://cuerpo...} }\n\ -# K_ALT_Y\n\ -snippet K_ALT_Y\n\ - K_ALT_Y -> { ${1://cuerpo...} }\n\ -# K_SHIFT_Y\n\ -snippet K_SHIFT_Y\n\ - K_SHIFT_Y -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_Y\n\ -snippet K_CTRL_ALT_Y\n\ - K_CTRL_ALT_Y -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_Y\n\ -snippet K_CTRL_SHIFT_Y\n\ - K_CTRL_SHIFT_Y -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_Y\n\ -snippet K_CTRL_ALT_SHIFT_Y\n\ - K_CTRL_ALT_SHIFT_Y -> { ${1://cuerpo...} }\n\ -\n\ -# K_Z\n\ -snippet K_Z\n\ - K_Z -> { ${1://cuerpo...} }\n\ -# K_CTRL_Z\n\ -snippet K_CTRL_Z\n\ - K_CTRL_Z -> { ${1://cuerpo...} }\n\ -# K_ALT_Z\n\ -snippet K_ALT_Z\n\ - K_ALT_Z -> { ${1://cuerpo...} }\n\ -# K_SHIFT_Z\n\ -snippet K_SHIFT_Z\n\ - K_SHIFT_Z -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_Z\n\ -snippet K_CTRL_ALT_Z\n\ - K_CTRL_ALT_Z -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_Z\n\ -snippet K_CTRL_SHIFT_Z\n\ - K_CTRL_SHIFT_Z -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_Z\n\ -snippet K_CTRL_ALT_SHIFT_Z\n\ - K_CTRL_ALT_SHIFT_Z -> { ${1://cuerpo...} }\n\ -\n\ -# K_0\n\ -snippet K_0\n\ - K_0 -> { ${1://cuerpo...} }\n\ -# K_CTRL_0\n\ -snippet K_CTRL_0\n\ - K_CTRL_0 -> { ${1://cuerpo...} }\n\ -# K_ALT_0\n\ -snippet K_ALT_0\n\ - K_ALT_0 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_0\n\ -snippet K_SHIFT_0\n\ - K_SHIFT_0 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_0\n\ -snippet K_CTRL_ALT_0\n\ - K_CTRL_ALT_0 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_0\n\ -snippet K_CTRL_SHIFT_0\n\ - K_CTRL_SHIFT_0 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_0\n\ -snippet K_CTRL_ALT_SHIFT_0\n\ - K_CTRL_ALT_SHIFT_0 -> { ${1://cuerpo...} }\n\ -\n\ -# K_1\n\ -snippet K_1\n\ - K_1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_1\n\ -snippet K_CTRL_1\n\ - K_CTRL_1 -> { ${1://cuerpo...} }\n\ -# K_ALT_1\n\ -snippet K_ALT_1\n\ - K_ALT_1 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_1\n\ -snippet K_SHIFT_1\n\ - K_SHIFT_1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_1\n\ -snippet K_CTRL_ALT_1\n\ - K_CTRL_ALT_1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_1\n\ -snippet K_CTRL_SHIFT_1\n\ - K_CTRL_SHIFT_1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_1\n\ -snippet K_CTRL_ALT_SHIFT_1\n\ - K_CTRL_ALT_SHIFT_1 -> { ${1://cuerpo...} }\n\ -\n\ -# K_2\n\ -snippet K_2\n\ - K_2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_2\n\ -snippet K_CTRL_2\n\ - K_CTRL_2 -> { ${1://cuerpo...} }\n\ -# K_ALT_2\n\ -snippet K_ALT_2\n\ - K_ALT_2 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_2\n\ -snippet K_SHIFT_2\n\ - K_SHIFT_2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_2\n\ -snippet K_CTRL_ALT_2\n\ - K_CTRL_ALT_2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_2\n\ -snippet K_CTRL_SHIFT_2\n\ - K_CTRL_SHIFT_2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_2\n\ -snippet K_CTRL_ALT_SHIFT_2\n\ - K_CTRL_ALT_SHIFT_2 -> { ${1://cuerpo...} }\n\ -\n\ -# K_3\n\ -snippet K_3\n\ - K_3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_3\n\ -snippet K_CTRL_3\n\ - K_CTRL_3 -> { ${1://cuerpo...} }\n\ -# K_ALT_3\n\ -snippet K_ALT_3\n\ - K_ALT_3 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_3\n\ -snippet K_SHIFT_3\n\ - K_SHIFT_3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_3\n\ -snippet K_CTRL_ALT_3\n\ - K_CTRL_ALT_3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_3\n\ -snippet K_CTRL_SHIFT_3\n\ - K_CTRL_SHIFT_3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_3\n\ -snippet K_CTRL_ALT_SHIFT_3\n\ - K_CTRL_ALT_SHIFT_3 -> { ${1://cuerpo...} }\n\ -\n\ -# K_4\n\ -snippet K_4\n\ - K_4 -> { ${1://cuerpo...} }\n\ -# K_CTRL_4\n\ -snippet K_CTRL_4\n\ - K_CTRL_4 -> { ${1://cuerpo...} }\n\ -# K_ALT_4\n\ -snippet K_ALT_4\n\ - K_ALT_4 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_4\n\ -snippet K_SHIFT_4\n\ - K_SHIFT_4 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_4\n\ -snippet K_CTRL_ALT_4\n\ - K_CTRL_ALT_4 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_4\n\ -snippet K_CTRL_SHIFT_4\n\ - K_CTRL_SHIFT_4 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_4\n\ -snippet K_CTRL_ALT_SHIFT_4\n\ - K_CTRL_ALT_SHIFT_4 -> { ${1://cuerpo...} }\n\ -\n\ -# K_5\n\ -snippet K_5\n\ - K_5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_5\n\ -snippet K_CTRL_5\n\ - K_CTRL_5 -> { ${1://cuerpo...} }\n\ -# K_ALT_5\n\ -snippet K_ALT_5\n\ - K_ALT_5 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_5\n\ -snippet K_SHIFT_5\n\ - K_SHIFT_5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_5\n\ -snippet K_CTRL_ALT_5\n\ - K_CTRL_ALT_5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_5\n\ -snippet K_CTRL_SHIFT_5\n\ - K_CTRL_SHIFT_5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_5\n\ -snippet K_CTRL_ALT_SHIFT_5\n\ - K_CTRL_ALT_SHIFT_5 -> { ${1://cuerpo...} }\n\ -\n\ -# K_6\n\ -snippet K_6\n\ - K_6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_6\n\ -snippet K_CTRL_6\n\ - K_CTRL_6 -> { ${1://cuerpo...} }\n\ -# K_ALT_6\n\ -snippet K_ALT_6\n\ - K_ALT_6 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_6\n\ -snippet K_SHIFT_6\n\ - K_SHIFT_6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_6\n\ -snippet K_CTRL_ALT_6\n\ - K_CTRL_ALT_6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_6\n\ -snippet K_CTRL_SHIFT_6\n\ - K_CTRL_SHIFT_6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_6\n\ -snippet K_CTRL_ALT_SHIFT_6\n\ - K_CTRL_ALT_SHIFT_6 -> { ${1://cuerpo...} }\n\ -\n\ -# K_7\n\ -snippet K_7\n\ - K_7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_7\n\ -snippet K_CTRL_7\n\ - K_CTRL_7 -> { ${1://cuerpo...} }\n\ -# K_ALT_7\n\ -snippet K_ALT_7\n\ - K_ALT_7 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_7\n\ -snippet K_SHIFT_7\n\ - K_SHIFT_7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_7\n\ -snippet K_CTRL_ALT_7\n\ - K_CTRL_ALT_7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_7\n\ -snippet K_CTRL_SHIFT_7\n\ - K_CTRL_SHIFT_7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_7\n\ -snippet K_CTRL_ALT_SHIFT_7\n\ - K_CTRL_ALT_SHIFT_7 -> { ${1://cuerpo...} }\n\ -\n\ -# K_8\n\ -snippet K_8\n\ - K_8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_8\n\ -snippet K_CTRL_8\n\ - K_CTRL_8 -> { ${1://cuerpo...} }\n\ -# K_ALT_8\n\ -snippet K_ALT_8\n\ - K_ALT_8 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_8\n\ -snippet K_SHIFT_8\n\ - K_SHIFT_8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_8\n\ -snippet K_CTRL_ALT_8\n\ - K_CTRL_ALT_8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_8\n\ -snippet K_CTRL_SHIFT_8\n\ - K_CTRL_SHIFT_8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_8\n\ -snippet K_CTRL_ALT_SHIFT_8\n\ - K_CTRL_ALT_SHIFT_8 -> { ${1://cuerpo...} }\n\ -\n\ -# K_9\n\ -snippet K_9\n\ - K_9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_9\n\ -snippet K_CTRL_9\n\ - K_CTRL_9 -> { ${1://cuerpo...} }\n\ -# K_ALT_9\n\ -snippet K_ALT_9\n\ - K_ALT_9 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_9\n\ -snippet K_SHIFT_9\n\ - K_SHIFT_9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_9\n\ -snippet K_CTRL_ALT_9\n\ - K_CTRL_ALT_9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_9\n\ -snippet K_CTRL_SHIFT_9\n\ - K_CTRL_SHIFT_9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_9\n\ -snippet K_CTRL_ALT_SHIFT_9\n\ - K_CTRL_ALT_SHIFT_9 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F1\n\ -snippet K_F1\n\ - K_F1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F1\n\ -snippet K_CTRL_F1\n\ - K_CTRL_F1 -> { ${1://cuerpo...} }\n\ -# K_ALT_F1\n\ -snippet K_ALT_F1\n\ - K_ALT_F1 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F1\n\ -snippet K_SHIFT_F1\n\ - K_SHIFT_F1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F1\n\ -snippet K_CTRL_ALT_F1\n\ - K_CTRL_ALT_F1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F1\n\ -snippet K_CTRL_SHIFT_F1\n\ - K_CTRL_SHIFT_F1 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F1\n\ -snippet K_CTRL_ALT_SHIFT_F1\n\ - K_CTRL_ALT_SHIFT_F1 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F2\n\ -snippet K_F2\n\ - K_F2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F2\n\ -snippet K_CTRL_F2\n\ - K_CTRL_F2 -> { ${1://cuerpo...} }\n\ -# K_ALT_F2\n\ -snippet K_ALT_F2\n\ - K_ALT_F2 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F2\n\ -snippet K_SHIFT_F2\n\ - K_SHIFT_F2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F2\n\ -snippet K_CTRL_ALT_F2\n\ - K_CTRL_ALT_F2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F2\n\ -snippet K_CTRL_SHIFT_F2\n\ - K_CTRL_SHIFT_F2 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F2\n\ -snippet K_CTRL_ALT_SHIFT_F2\n\ - K_CTRL_ALT_SHIFT_F2 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F3\n\ -snippet K_F3\n\ - K_F3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F3\n\ -snippet K_CTRL_F3\n\ - K_CTRL_F3 -> { ${1://cuerpo...} }\n\ -# K_ALT_F3\n\ -snippet K_ALT_F3\n\ - K_ALT_F3 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F3\n\ -snippet K_SHIFT_F3\n\ - K_SHIFT_F3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F3\n\ -snippet K_CTRL_ALT_F3\n\ - K_CTRL_ALT_F3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F3\n\ -snippet K_CTRL_SHIFT_F3\n\ - K_CTRL_SHIFT_F3 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F3\n\ -snippet K_CTRL_ALT_SHIFT_F3\n\ - K_CTRL_ALT_SHIFT_F3 -> { ${1://cuerpo...} }\n\ -\n\ -# K_A\n\ -snippet K_A\n\ - K_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_A\n\ -snippet K_CTRL_A\n\ - K_CTRL_A -> { ${1://cuerpo...} }\n\ -# K_ALT_A\n\ -snippet K_ALT_A\n\ - K_ALT_A -> { ${1://cuerpo...} }\n\ -# K_SHIFT_A\n\ -snippet K_SHIFT_A\n\ - K_SHIFT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_A\n\ -snippet K_CTRL_ALT_A\n\ - K_CTRL_ALT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_A\n\ -snippet K_CTRL_SHIFT_A\n\ - K_CTRL_SHIFT_A -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_A\n\ -snippet K_CTRL_ALT_SHIFT_A\n\ - K_CTRL_ALT_SHIFT_A -> { ${1://cuerpo...} }\n\ -\n\ -# K_F5\n\ -snippet K_F5\n\ - K_F5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F5\n\ -snippet K_CTRL_F5\n\ - K_CTRL_F5 -> { ${1://cuerpo...} }\n\ -# K_ALT_F5\n\ -snippet K_ALT_F5\n\ - K_ALT_F5 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F5\n\ -snippet K_SHIFT_F5\n\ - K_SHIFT_F5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F5\n\ -snippet K_CTRL_ALT_F5\n\ - K_CTRL_ALT_F5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F5\n\ -snippet K_CTRL_SHIFT_F5\n\ - K_CTRL_SHIFT_F5 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F5\n\ -snippet K_CTRL_ALT_SHIFT_F5\n\ - K_CTRL_ALT_SHIFT_F5 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F6\n\ -snippet K_F6\n\ - K_F6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F6\n\ -snippet K_CTRL_F6\n\ - K_CTRL_F6 -> { ${1://cuerpo...} }\n\ -# K_ALT_F6\n\ -snippet K_ALT_F6\n\ - K_ALT_F6 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F6\n\ -snippet K_SHIFT_F6\n\ - K_SHIFT_F6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F6\n\ -snippet K_CTRL_ALT_F6\n\ - K_CTRL_ALT_F6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F6\n\ -snippet K_CTRL_SHIFT_F6\n\ - K_CTRL_SHIFT_F6 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F6\n\ -snippet K_CTRL_ALT_SHIFT_F6\n\ - K_CTRL_ALT_SHIFT_F6 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F7\n\ -snippet K_F7\n\ - K_F7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F7\n\ -snippet K_CTRL_F7\n\ - K_CTRL_F7 -> { ${1://cuerpo...} }\n\ -# K_ALT_F7\n\ -snippet K_ALT_F7\n\ - K_ALT_F7 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F7\n\ -snippet K_SHIFT_F7\n\ - K_SHIFT_F7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F7\n\ -snippet K_CTRL_ALT_F7\n\ - K_CTRL_ALT_F7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F7\n\ -snippet K_CTRL_SHIFT_F7\n\ - K_CTRL_SHIFT_F7 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F7\n\ -snippet K_CTRL_ALT_SHIFT_F7\n\ - K_CTRL_ALT_SHIFT_F7 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F8\n\ -snippet K_F8\n\ - K_F8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F8\n\ -snippet K_CTRL_F8\n\ - K_CTRL_F8 -> { ${1://cuerpo...} }\n\ -# K_ALT_F8\n\ -snippet K_ALT_F8\n\ - K_ALT_F8 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F8\n\ -snippet K_SHIFT_F8\n\ - K_SHIFT_F8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F8\n\ -snippet K_CTRL_ALT_F8\n\ - K_CTRL_ALT_F8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F8\n\ -snippet K_CTRL_SHIFT_F8\n\ - K_CTRL_SHIFT_F8 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F8\n\ -snippet K_CTRL_ALT_SHIFT_F8\n\ - K_CTRL_ALT_SHIFT_F8 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F9\n\ -snippet K_F9\n\ - K_F9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F9\n\ -snippet K_CTRL_F9\n\ - K_CTRL_F9 -> { ${1://cuerpo...} }\n\ -# K_ALT_F9\n\ -snippet K_ALT_F9\n\ - K_ALT_F9 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F9\n\ -snippet K_SHIFT_F9\n\ - K_SHIFT_F9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F9\n\ -snippet K_CTRL_ALT_F9\n\ - K_CTRL_ALT_F9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F9\n\ -snippet K_CTRL_SHIFT_F9\n\ - K_CTRL_SHIFT_F9 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F9\n\ -snippet K_CTRL_ALT_SHIFT_F9\n\ - K_CTRL_ALT_SHIFT_F9 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F10\n\ -snippet K_F10\n\ - K_F10 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F10\n\ -snippet K_CTRL_F10\n\ - K_CTRL_F10 -> { ${1://cuerpo...} }\n\ -# K_ALT_F10\n\ -snippet K_ALT_F10\n\ - K_ALT_F10 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F10\n\ -snippet K_SHIFT_F10\n\ - K_SHIFT_F10 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F10\n\ -snippet K_CTRL_ALT_F10\n\ - K_CTRL_ALT_F10 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F10\n\ -snippet K_CTRL_SHIFT_F10\n\ - K_CTRL_SHIFT_F10 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F10\n\ -snippet K_CTRL_ALT_SHIFT_F10\n\ - K_CTRL_ALT_SHIFT_F10 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F11\n\ -snippet K_F11\n\ - K_F11 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F11\n\ -snippet K_CTRL_F11\n\ - K_CTRL_F11 -> { ${1://cuerpo...} }\n\ -# K_ALT_F11\n\ -snippet K_ALT_F11\n\ - K_ALT_F11 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F11\n\ -snippet K_SHIFT_F11\n\ - K_SHIFT_F11 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F11\n\ -snippet K_CTRL_ALT_F11\n\ - K_CTRL_ALT_F11 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F11\n\ -snippet K_CTRL_SHIFT_F11\n\ - K_CTRL_SHIFT_F11 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F11\n\ -snippet K_CTRL_ALT_SHIFT_F11\n\ - K_CTRL_ALT_SHIFT_F11 -> { ${1://cuerpo...} }\n\ -\n\ -# K_F12\n\ -snippet K_F12\n\ - K_F12 -> { ${1://cuerpo...} }\n\ -# K_CTRL_F12\n\ -snippet K_CTRL_F12\n\ - K_CTRL_F12 -> { ${1://cuerpo...} }\n\ -# K_ALT_F12\n\ -snippet K_ALT_F12\n\ - K_ALT_F12 -> { ${1://cuerpo...} }\n\ -# K_SHIFT_F12\n\ -snippet K_SHIFT_F12\n\ - K_SHIFT_F12 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_F12\n\ -snippet K_CTRL_ALT_F12\n\ - K_CTRL_ALT_F12 -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_F12\n\ -snippet K_CTRL_SHIFT_F12\n\ - K_CTRL_SHIFT_F12 -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_F12\n\ -snippet K_CTRL_ALT_SHIFT_F12\n\ - K_CTRL_ALT_SHIFT_F12 -> { ${1://cuerpo...} }\n\ -\n\ -# K_RETURN\n\ -snippet K_RETURN\n\ - K_RETURN -> { ${1://cuerpo...} }\n\ -# K_CTRL_RETURN\n\ -snippet K_CTRL_RETURN\n\ - K_CTRL_RETURN -> { ${1://cuerpo...} }\n\ -# K_ALT_RETURN\n\ -snippet K_ALT_RETURN\n\ - K_ALT_RETURN -> { ${1://cuerpo...} }\n\ -# K_SHIFT_RETURN\n\ -snippet K_SHIFT_RETURN\n\ - K_SHIFT_RETURN -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_RETURN\n\ -snippet K_CTRL_ALT_RETURN\n\ - K_CTRL_ALT_RETURN -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_RETURN\n\ -snippet K_CTRL_SHIFT_RETURN\n\ - K_CTRL_SHIFT_RETURN -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_RETURN\n\ -snippet K_CTRL_ALT_SHIFT_RETURN\n\ - K_CTRL_ALT_SHIFT_RETURN -> { ${1://cuerpo...} }\n\ -\n\ -# K_SPACE\n\ -snippet K_SPACE\n\ - K_SPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_SPACE\n\ -snippet K_CTRL_SPACE\n\ - K_CTRL_SPACE -> { ${1://cuerpo...} }\n\ -# K_ALT_SPACE\n\ -snippet K_ALT_SPACE\n\ - K_ALT_SPACE -> { ${1://cuerpo...} }\n\ -# K_SHIFT_SPACE\n\ -snippet K_SHIFT_SPACE\n\ - K_SHIFT_SPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SPACE\n\ -snippet K_CTRL_ALT_SPACE\n\ - K_CTRL_ALT_SPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_SPACE\n\ -snippet K_CTRL_SHIFT_SPACE\n\ - K_CTRL_SHIFT_SPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_SPACE\n\ -snippet K_CTRL_ALT_SHIFT_SPACE\n\ - K_CTRL_ALT_SHIFT_SPACE -> { ${1://cuerpo...} }\n\ -\n\ -# K_ESCAPE\n\ -snippet K_ESCAPE\n\ - K_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ESCAPE\n\ -snippet K_CTRL_ESCAPE\n\ - K_CTRL_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_ALT_ESCAPE\n\ -snippet K_ALT_ESCAPE\n\ - K_ALT_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_SHIFT_ESCAPE\n\ -snippet K_SHIFT_ESCAPE\n\ - K_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_ESCAPE\n\ -snippet K_CTRL_ALT_ESCAPE\n\ - K_CTRL_ALT_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_ESCAPE\n\ -snippet K_CTRL_SHIFT_ESCAPE\n\ - K_CTRL_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_ESCAPE\n\ -snippet K_CTRL_ALT_SHIFT_ESCAPE\n\ - K_CTRL_ALT_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n\ -\n\ -# K_BACKSPACE\n\ -snippet K_BACKSPACE\n\ - K_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_BACKSPACE\n\ -snippet K_CTRL_BACKSPACE\n\ - K_CTRL_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_ALT_BACKSPACE\n\ -snippet K_ALT_BACKSPACE\n\ - K_ALT_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_SHIFT_BACKSPACE\n\ -snippet K_SHIFT_BACKSPACE\n\ - K_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_BACKSPACE\n\ -snippet K_CTRL_ALT_BACKSPACE\n\ - K_CTRL_ALT_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_BACKSPACE\n\ -snippet K_CTRL_SHIFT_BACKSPACE\n\ - K_CTRL_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_BACKSPACE\n\ -snippet K_CTRL_ALT_SHIFT_BACKSPACE\n\ - K_CTRL_ALT_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n\ -\n\ -# K_TAB\n\ -snippet K_TAB\n\ - K_TAB -> { ${1://cuerpo...} }\n\ -# K_CTRL_TAB\n\ -snippet K_CTRL_TAB\n\ - K_CTRL_TAB -> { ${1://cuerpo...} }\n\ -# K_ALT_TAB\n\ -snippet K_ALT_TAB\n\ - K_ALT_TAB -> { ${1://cuerpo...} }\n\ -# K_SHIFT_TAB\n\ -snippet K_SHIFT_TAB\n\ - K_SHIFT_TAB -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_TAB\n\ -snippet K_CTRL_ALT_TAB\n\ - K_CTRL_ALT_TAB -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_TAB\n\ -snippet K_CTRL_SHIFT_TAB\n\ - K_CTRL_SHIFT_TAB -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_TAB\n\ -snippet K_CTRL_ALT_SHIFT_TAB\n\ - K_CTRL_ALT_SHIFT_TAB -> { ${1://cuerpo...} }\n\ -\n\ -# K_UP\n\ -snippet K_UP\n\ - K_UP -> { ${1://cuerpo...} }\n\ -# K_CTRL_UP\n\ -snippet K_CTRL_UP\n\ - K_CTRL_UP -> { ${1://cuerpo...} }\n\ -# K_ALT_UP\n\ -snippet K_ALT_UP\n\ - K_ALT_UP -> { ${1://cuerpo...} }\n\ -# K_SHIFT_UP\n\ -snippet K_SHIFT_UP\n\ - K_SHIFT_UP -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_UP\n\ -snippet K_CTRL_ALT_UP\n\ - K_CTRL_ALT_UP -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_UP\n\ -snippet K_CTRL_SHIFT_UP\n\ - K_CTRL_SHIFT_UP -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_UP\n\ -snippet K_CTRL_ALT_SHIFT_UP\n\ - K_CTRL_ALT_SHIFT_UP -> { ${1://cuerpo...} }\n\ -\n\ -# K_DOWN\n\ -snippet K_DOWN\n\ - K_DOWN -> { ${1://cuerpo...} }\n\ -# K_CTRL_DOWN\n\ -snippet K_CTRL_DOWN\n\ - K_CTRL_DOWN -> { ${1://cuerpo...} }\n\ -# K_ALT_DOWN\n\ -snippet K_ALT_DOWN\n\ - K_ALT_DOWN -> { ${1://cuerpo...} }\n\ -# K_SHIFT_DOWN\n\ -snippet K_SHIFT_DOWN\n\ - K_SHIFT_DOWN -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_DOWN\n\ -snippet K_CTRL_ALT_DOWN\n\ - K_CTRL_ALT_DOWN -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_DOWN\n\ -snippet K_CTRL_SHIFT_DOWN\n\ - K_CTRL_SHIFT_DOWN -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_DOWN\n\ -snippet K_CTRL_ALT_SHIFT_DOWN\n\ - K_CTRL_ALT_SHIFT_DOWN -> { ${1://cuerpo...} }\n\ -\n\ -# K_LEFT\n\ -snippet K_LEFT\n\ - K_LEFT -> { ${1://cuerpo...} }\n\ -# K_CTRL_LEFT\n\ -snippet K_CTRL_LEFT\n\ - K_CTRL_LEFT -> { ${1://cuerpo...} }\n\ -# K_ALT_LEFT\n\ -snippet K_ALT_LEFT\n\ - K_ALT_LEFT -> { ${1://cuerpo...} }\n\ -# K_SHIFT_LEFT\n\ -snippet K_SHIFT_LEFT\n\ - K_SHIFT_LEFT -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_LEFT\n\ -snippet K_CTRL_ALT_LEFT\n\ - K_CTRL_ALT_LEFT -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_LEFT\n\ -snippet K_CTRL_SHIFT_LEFT\n\ - K_CTRL_SHIFT_LEFT -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_LEFT\n\ -snippet K_CTRL_ALT_SHIFT_LEFT\n\ - K_CTRL_ALT_SHIFT_LEFT -> { ${1://cuerpo...} }\n\ -\n\ -# K_RIGHT\n\ -snippet K_RIGHT\n\ - K_RIGHT -> { ${1://cuerpo...} }\n\ -# K_CTRL_RIGHT\n\ -snippet K_CTRL_RIGHT\n\ - K_CTRL_RIGHT -> { ${1://cuerpo...} }\n\ -# K_ALT_RIGHT\n\ -snippet K_ALT_RIGHT\n\ - K_ALT_RIGHT -> { ${1://cuerpo...} }\n\ -# K_SHIFT_RIGHT\n\ -snippet K_SHIFT_RIGHT\n\ - K_SHIFT_RIGHT -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_RIGHT\n\ -snippet K_CTRL_ALT_RIGHT\n\ - K_CTRL_ALT_RIGHT -> { ${1://cuerpo...} }\n\ -# K_CTRL_SHIFT_RIGHT\n\ -snippet K_CTRL_SHIFT_RIGHT\n\ - K_CTRL_SHIFT_RIGHT -> { ${1://cuerpo...} }\n\ -# K_CTRL_ALT_SHIFT_RIGHT\n\ -snippet K_CTRL_ALT_SHIFT_RIGHT\n\ - K_CTRL_ALT_SHIFT_RIGHT -> { ${1://cuerpo...} }\n\ -\n\ -# recorrido (simple)\n\ -snippet recorrido (simple)\n\ - ${1:// Ir al inicio}\n\ - while (not ${2:// es último elemento}) {\n\ - ${3:// Procesar el elemento}\n\ - ${4:// Ir al próximo elemento}\n\ - }\n\ - ${5:// Finalizar}\n\ -\n\ -# recorrido (de acumulación)\n\ -snippet recorrido (de acumulación)\n\ - ${1:// Ir al inicio}\n\ - ${2:cantidadVistos} := ${3:// contar elementos en lugar actual}\n\ - while (not ${4:// es último elemento}) {\n\ - ${4:// Ir al próximo elemento}\n\ - ${2:cantidadVistos} := ${2:cantidadVistos} + ${3:// contar elementos en lugar actual}\n\ - }\n\ - return (${2:cantidadVistos})\n\ -\n\ -# recorrido (de búsqueda)\n\ -snippet recorrido (de búsqueda)\n\ - ${1:// Ir al inicio}\n\ - while (not ${2:// encontré lo que buscaba}) {\n\ - ${3:// Ir al próximo elemento}\n\ - }\n\ - return (${2:// encontré lo que buscaba })\n\ -\n\ -# recorrido (de búsqueda con borde)\n\ -snippet recorrido (de búsqueda con borde)\n\ - ${1:// Ir al inicio}\n\ - while (not ${2:// encontré lo que buscaba} && not ${3:// es último elemento}) {\n\ - ${4:// Ir al próximo elemento}\n\ - }\n\ - return (${2:// encontré lo que buscaba })\n\ -\n\ -# recorrido (de tipos enumerativos)\n\ -snippet recorrido (de tipos enumerativos)\n\ - ${1:elementoActual} := ${2:minElemento()}\n\ - while (${1:elementoActual} /= ${3:maxElemento()}) {\n\ - ${4:// Procesar con elemento actual}\n\ - ${1:elementoActual} := siguiente(${1:elementoActual})\n\ - }\n\ - ${4:// Procesar con elemento actual}\n\ -\n\ -# recorrido (de búsqueda sobre lista)\n\ -snippet recorrido (de búsqueda sobre lista)\n\ - ${1:listaRecorrida} := ${2:lista}\n\ - while (primero(${1:listaRecorrida}) /= ${3://elemento buscado}) {\n\ - ${1:elementoActual} := sinElPrimero(${1:elementoActual})\n\ - }\n\ - return (primero(${1:listaRecorrida}))\n\ -\n\ -# recorrido (de búsqueda sobre lista con borde)\n\ -snippet recorrido (de búsqueda sobre lista con borde)\n\ - ${1:listaRecorrida} := ${2:lista}\n\ - while (not esVacía(${1:listaRecorrida}) && primero(${1:listaRecorrida}) /= ${3://elemento buscado}) {\n\ - ${1:elementoActual} := sinElPrimero(${1:elementoActual})\n\ - }\n\ - return (not esVacía(${1:listaRecorrida}))\n\ -\n\ -# docs (procedimiento)\n\ -snippet docs (procedimiento)\n\ - /*\n\ - @PROPÓSITO: ${1:...}\n\ - @PRECONDICIÓN: ${2:...}\n\ - */\n\ -\n\ -# docs (procedimiento con parámetros)\n\ -snippet docs (procedimiento con parámetros)\n\ - /*\n\ - @PROPÓSITO: ${1:...}\n\ - @PRECONDICIÓN: ${2:...}\n\ - @PARÃMETROS:\n\ - * ${3:nombreDelParámetro} : ${4:Tipo} - ${5:descripción}\n\ - */\n\ -\n\ -# docs (función)\n\ -snippet docs (función)\n\ - /*\n\ - @PROPÓSITO: ${1:...}\n\ - @PRECONDICIÓN: ${2:...}\n\ - @TIPO: ${3:...}\n\ - */\n\ -\n\ -# docs (función con parámetros)\n\ -snippet docs (función con parámetros)\n\ - /*\n\ - @PROPÓSITO: ${1:...}\n\ - @PRECONDICIÓN: ${2:...}\n\ - @PARÃMETROS:\n\ - * ${3:nombreDelParámetro} : ${4:Tipo} - ${5:descripción}\n\ - @TIPO: ${6:...}\n\ - */\n\ -"; -exports.scope = "gobstones"; - -}); (function() { - ace.require(["ace/snippets/gobstones"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/golang.js b/src-noconflict/snippets/golang.js deleted file mode 100644 index 2f7fd35..0000000 --- a/src-noconflict/snippets/golang.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/golang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/graphqlschema.js b/src-noconflict/snippets/graphqlschema.js deleted file mode 100644 index 33a7ac4..0000000 --- a/src-noconflict/snippets/graphqlschema.js +++ /dev/null @@ -1,46 +0,0 @@ -ace.define("ace/snippets/graphqlschema",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Type Snippet\n\ -trigger type\n\ -snippet type\n\ - type ${1:type_name} {\n\ - ${2:type_siblings}\n\ - }\n\ -\n\ -# Input Snippet\n\ -trigger input\n\ -snippet input\n\ - input ${1:input_name} {\n\ - ${2:input_siblings}\n\ - }\n\ -\n\ -# Interface Snippet\n\ -trigger interface\n\ -snippet interface\n\ - interface ${1:interface_name} {\n\ - ${2:interface_siblings}\n\ - }\n\ -\n\ -# Interface Snippet\n\ -trigger union\n\ -snippet union\n\ - union ${1:union_name} = ${2:type} | ${3: type}\n\ -\n\ -# Enum Snippet\n\ -trigger enum\n\ -snippet enum\n\ - enum ${1:enum_name} {\n\ - ${2:enum_siblings}\n\ - }\n\ -"; -exports.scope = "graphqlschema"; - -}); (function() { - ace.require(["ace/snippets/graphqlschema"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/groovy.js b/src-noconflict/snippets/groovy.js deleted file mode 100644 index b849053..0000000 --- a/src-noconflict/snippets/groovy.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/groovy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/haml.js b/src-noconflict/snippets/haml.js deleted file mode 100644 index 332e04b..0000000 --- a/src-noconflict/snippets/haml.js +++ /dev/null @@ -1,34 +0,0 @@ -ace.define("ace/snippets/haml",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet t\n\ - %table\n\ - %tr\n\ - %th\n\ - ${1:headers}\n\ - %tr\n\ - %td\n\ - ${2:headers}\n\ -snippet ul\n\ - %ul\n\ - %li\n\ - ${1:item}\n\ - %li\n\ -snippet =rp\n\ - = render :partial => '${1:partial}'\n\ -snippet =rpl\n\ - = render :partial => '${1:partial}', :locals => {}\n\ -snippet =rpc\n\ - = render :partial => '${1:partial}', :collection => @$1\n\ -\n\ -"; -exports.scope = "haml"; - -}); (function() { - ace.require(["ace/snippets/haml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/handlebars.js b/src-noconflict/snippets/handlebars.js deleted file mode 100644 index 108dbe1..0000000 --- a/src-noconflict/snippets/handlebars.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/handlebars"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/haskell.js b/src-noconflict/snippets/haskell.js deleted file mode 100644 index d8abfe4..0000000 --- a/src-noconflict/snippets/haskell.js +++ /dev/null @@ -1,96 +0,0 @@ -ace.define("ace/snippets/haskell",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet lang\n\ - {-# LANGUAGE ${1:OverloadedStrings} #-}\n\ -snippet info\n\ - -- |\n\ - -- Module : ${1:Module.Namespace}\n\ - -- Copyright : ${2:Author} ${3:2011-2012}\n\ - -- License : ${4:BSD3}\n\ - --\n\ - -- Maintainer : ${5:email@something.com}\n\ - -- Stability : ${6:experimental}\n\ - -- Portability : ${7:unknown}\n\ - --\n\ - -- ${8:Description}\n\ - --\n\ -snippet import\n\ - import ${1:Data.Text}\n\ -snippet import2\n\ - import ${1:Data.Text} (${2:head})\n\ -snippet importq\n\ - import qualified ${1:Data.Text} as ${2:T}\n\ -snippet inst\n\ - instance ${1:Monoid} ${2:Type} where\n\ - ${3}\n\ -snippet type\n\ - type ${1:Type} = ${2:Type}\n\ -snippet data\n\ - data ${1:Type} = ${2:$1} ${3:Int}\n\ -snippet newtype\n\ - newtype ${1:Type} = ${2:$1} ${3:Int}\n\ -snippet class\n\ - class ${1:Class} a where\n\ - ${2}\n\ -snippet module\n\ - module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\ - ) where\n\ - `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\ -\n\ -snippet const\n\ - ${1:name} :: ${2:a}\n\ - $1 = ${3:undefined}\n\ -snippet fn\n\ - ${1:fn} :: ${2:a} -> ${3:a}\n\ - $1 ${4} = ${5:undefined}\n\ -snippet fn2\n\ - ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\ - $1 ${5} = ${6:undefined}\n\ -snippet ap\n\ - ${1:map} ${2:fn} ${3:list}\n\ -snippet do\n\ - do\n\ - \n\ -snippet λ\n\ - \\${1:x} -> ${2}\n\ -snippet \\\n\ - \\${1:x} -> ${2}\n\ -snippet <-\n\ - ${1:a} <- ${2:m a}\n\ -snippet â†\n\ - ${1:a} <- ${2:m a}\n\ -snippet ->\n\ - ${1:m a} -> ${2:a}\n\ -snippet →\n\ - ${1:m a} -> ${2:a}\n\ -snippet tup\n\ - (${1:a}, ${2:b})\n\ -snippet tup2\n\ - (${1:a}, ${2:b}, ${3:c})\n\ -snippet tup3\n\ - (${1:a}, ${2:b}, ${3:c}, ${4:d})\n\ -snippet rec\n\ - ${1:Record} { ${2:recFieldA} = ${3:undefined}\n\ - , ${4:recFieldB} = ${5:undefined}\n\ - }\n\ -snippet case\n\ - case ${1:something} of\n\ - ${2} -> ${3}\n\ -snippet let\n\ - let ${1} = ${2}\n\ - in ${3}\n\ -snippet where\n\ - where\n\ - ${1:fn} = ${2:undefined}\n\ -"; -exports.scope = "haskell"; - -}); (function() { - ace.require(["ace/snippets/haskell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/haskell_cabal.js b/src-noconflict/snippets/haskell_cabal.js deleted file mode 100644 index 75399c4..0000000 --- a/src-noconflict/snippets/haskell_cabal.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/haskell_cabal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/haxe.js b/src-noconflict/snippets/haxe.js deleted file mode 100644 index fb6f4a5..0000000 --- a/src-noconflict/snippets/haxe.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/haxe"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/hjson.js b/src-noconflict/snippets/hjson.js deleted file mode 100644 index 3917d3f..0000000 --- a/src-noconflict/snippets/hjson.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/hjson"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/html.js b/src-noconflict/snippets/html.js deleted file mode 100644 index 1b77bc9..0000000 --- a/src-noconflict/snippets/html.js +++ /dev/null @@ -1,867 +0,0 @@ -ace.define("ace/snippets/html",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Some useful Unicode entities\n\ -# Non-Breaking Space\n\ -snippet nbs\n\ -  \n\ -# â†\n\ -snippet left\n\ - ←\n\ -# →\n\ -snippet right\n\ - →\n\ -# ↑\n\ -snippet up\n\ - ↑\n\ -# ↓\n\ -snippet down\n\ - ↓\n\ -# ↩\n\ -snippet return\n\ - ↩\n\ -# ⇤\n\ -snippet backtab\n\ - ⇤\n\ -# ⇥\n\ -snippet tab\n\ - ⇥\n\ -# ⇧\n\ -snippet shift\n\ - ⇧\n\ -# ⌃\n\ -snippet ctrl\n\ - ⌃\n\ -# ⌅\n\ -snippet enter\n\ - ⌅\n\ -# ⌘\n\ -snippet cmd\n\ - ⌘\n\ -# ⌥\n\ -snippet option\n\ - ⌥\n\ -# ⌦\n\ -snippet delete\n\ - ⌦\n\ -# ⌫\n\ -snippet backspace\n\ - ⌫\n\ -# ⎋\n\ -snippet esc\n\ - ⎋\n\ -# Generic Doctype\n\ -snippet doctype HTML 4.01 Strict\n\ - \n\ -snippet doctype HTML 4.01 Transitional\n\ - \n\ -snippet doctype HTML 5\n\ - \n\ -snippet doctype XHTML 1.0 Frameset\n\ - \n\ -snippet doctype XHTML 1.0 Strict\n\ - \n\ -snippet doctype XHTML 1.0 Transitional\n\ - \n\ -snippet doctype XHTML 1.1\n\ - \n\ -# HTML Doctype 4.01 Strict\n\ -snippet docts\n\ - \n\ -# HTML Doctype 4.01 Transitional\n\ -snippet doct\n\ - \n\ -# HTML Doctype 5\n\ -snippet doct5\n\ - \n\ -# XHTML Doctype 1.0 Frameset\n\ -snippet docxf\n\ - \n\ -# XHTML Doctype 1.0 Strict\n\ -snippet docxs\n\ - \n\ -# XHTML Doctype 1.0 Transitional\n\ -snippet docxt\n\ - \n\ -# XHTML Doctype 1.1\n\ -snippet docx\n\ - \n\ -# html5shiv\n\ -snippet html5shiv\n\ - \n\ -snippet html5printshiv\n\ - \n\ -# Attributes\n\ -snippet attr\n\ - ${1:attribute}=\"${2:property}\"\n\ -snippet attr+\n\ - ${1:attribute}=\"${2:property}\" attr+${3}\n\ -snippet .\n\ - class=\"${1}\"${2}\n\ -snippet #\n\ - id=\"${1}\"${2}\n\ -snippet alt\n\ - alt=\"${1}\"${2}\n\ -snippet charset\n\ - charset=\"${1:utf-8}\"${2}\n\ -snippet data\n\ - data-${1}=\"${2:$1}\"${3}\n\ -snippet for\n\ - for=\"${1}\"${2}\n\ -snippet height\n\ - height=\"${1}\"${2}\n\ -snippet href\n\ - href=\"${1:#}\"${2}\n\ -snippet lang\n\ - lang=\"${1:en}\"${2}\n\ -snippet media\n\ - media=\"${1}\"${2}\n\ -snippet name\n\ - name=\"${1}\"${2}\n\ -snippet rel\n\ - rel=\"${1}\"${2}\n\ -snippet scope\n\ - scope=\"${1:row}\"${2}\n\ -snippet src\n\ - src=\"${1}\"${2}\n\ -snippet title=\n\ - title=\"${1}\"${2}\n\ -snippet type\n\ - type=\"${1}\"${2}\n\ -snippet value\n\ - value=\"${1}\"${2}\n\ -snippet width\n\ - width=\"${1}\"${2}\n\ -# Elements\n\ -snippet a\n\ - ${2:$1}\n\ -snippet a.\n\ - ${3:$1}\n\ -snippet a#\n\ - ${3:$1}\n\ -snippet a:ext\n\ - ${2:$1}\n\ -snippet a:mail\n\ - ${3:email me}\n\ -snippet abbr\n\ - ${2}\n\ -snippet address\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet area\n\ - \"${4}\"\n\ -snippet area+\n\ - \"${4}\"\n\ - area+${5}\n\ -snippet area:c\n\ - \"${3}\"\n\ -snippet area:d\n\ - \"${3}\"\n\ -snippet area:p\n\ - \"${3}\"\n\ -snippet area:r\n\ - \"${3}\"\n\ -snippet article\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet article.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet article#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet aside\n\ - \n\ -snippet aside.\n\ - \n\ -snippet aside#\n\ - \n\ -snippet audio\n\ - \n\ -snippet b\n\ - ${1}\n\ -snippet base\n\ - \n\ -snippet bdi\n\ - ${1}\n\ -snippet bdo\n\ - ${2}\n\ -snippet bdo:l\n\ - ${1}\n\ -snippet bdo:r\n\ - ${1}\n\ -snippet blockquote\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet body\n\ - \n\ - ${1}\n\ - \n\ -snippet br\n\ -
    ${1}\n\ -snippet button\n\ - \n\ -snippet button.\n\ - \n\ -snippet button#\n\ - \n\ -snippet button:s\n\ - \n\ -snippet button:r\n\ - \n\ -snippet canvas\n\ - \n\ -snippet caption\n\ - ${1}\n\ -snippet cite\n\ - ${1}\n\ -snippet code\n\ - ${1}\n\ -snippet col\n\ - ${1}\n\ -snippet col+\n\ - \n\ - col+${1}\n\ -snippet colgroup\n\ - \n\ - ${1}\n\ - \n\ -snippet colgroup+\n\ - \n\ - \n\ - col+${1}\n\ - \n\ -snippet command\n\ - \n\ -snippet command:c\n\ - \n\ -snippet command:r\n\ - \n\ -snippet datagrid\n\ - \n\ - ${1}\n\ - \n\ -snippet datalist\n\ - \n\ - ${1}\n\ - \n\ -snippet datatemplate\n\ - \n\ - ${1}\n\ - \n\ -snippet dd\n\ -
    ${1}
    \n\ -snippet dd.\n\ -
    ${2}
    \n\ -snippet dd#\n\ -
    ${2}
    \n\ -snippet del\n\ - ${1}\n\ -snippet details\n\ -
    ${1}
    \n\ -snippet dfn\n\ - ${1}\n\ -snippet dialog\n\ - \n\ - ${1}\n\ - \n\ -snippet div\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet div.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet div#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet dl.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl+\n\ -
    \n\ -
    ${1}
    \n\ -
    ${2}
    \n\ - dt+${3}\n\ -
    \n\ -snippet dt\n\ -
    ${1}
    \n\ -snippet dt.\n\ -
    ${2}
    \n\ -snippet dt#\n\ -
    ${2}
    \n\ -snippet dt+\n\ -
    ${1}
    \n\ -
    ${2}
    \n\ - dt+${3}\n\ -snippet em\n\ - ${1}\n\ -snippet embed\n\ - \n\ -snippet fieldset\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet fieldset.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet fieldset#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet fieldset+\n\ -
    \n\ - ${1}\n\ - ${2}\n\ -
    \n\ - fieldset+${3}\n\ -snippet figcaption\n\ -
    ${1}
    \n\ -snippet figure\n\ -
    ${1}
    \n\ -snippet footer\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet footer.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet footer#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet form\n\ -
    \n\ - ${3}\n\ -
    \n\ -snippet form.\n\ -
    \n\ - ${4}\n\ -
    \n\ -snippet form#\n\ -
    \n\ - ${4}\n\ -
    \n\ -snippet h1\n\ -

    ${1}

    \n\ -snippet h1.\n\ -

    ${2}

    \n\ -snippet h1#\n\ -

    ${2}

    \n\ -snippet h2\n\ -

    ${1}

    \n\ -snippet h2.\n\ -

    ${2}

    \n\ -snippet h2#\n\ -

    ${2}

    \n\ -snippet h3\n\ -

    ${1}

    \n\ -snippet h3.\n\ -

    ${2}

    \n\ -snippet h3#\n\ -

    ${2}

    \n\ -snippet h4\n\ -

    ${1}

    \n\ -snippet h4.\n\ -

    ${2}

    \n\ -snippet h4#\n\ -

    ${2}

    \n\ -snippet h5\n\ -
    ${1}
    \n\ -snippet h5.\n\ -
    ${2}
    \n\ -snippet h5#\n\ -
    ${2}
    \n\ -snippet h6\n\ -
    ${1}
    \n\ -snippet h6.\n\ -
    ${2}
    \n\ -snippet h6#\n\ -
    ${2}
    \n\ -snippet head\n\ - \n\ - \n\ -\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2}\n\ - \n\ -snippet header\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet header.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet header#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet hgroup\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet hgroup.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet hr\n\ -
    ${1}\n\ -snippet html\n\ - \n\ - ${1}\n\ - \n\ -snippet xhtml\n\ - \n\ - ${1}\n\ - \n\ -snippet html5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet xhtml5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet i\n\ - ${1}\n\ -snippet iframe\n\ - ${2}\n\ -snippet iframe.\n\ - ${3}\n\ -snippet iframe#\n\ - ${3}\n\ -snippet img\n\ - \"${2}\"${3}\n\ -snippet img.\n\ - \"${3}\"${4}\n\ -snippet img#\n\ - \"${3}\"${4}\n\ -snippet input\n\ - ${5}\n\ -snippet input.\n\ - ${6}\n\ -snippet input:text\n\ - ${4}\n\ -snippet input:submit\n\ - ${4}\n\ -snippet input:hidden\n\ - ${4}\n\ -snippet input:button\n\ - ${4}\n\ -snippet input:image\n\ - ${5}\n\ -snippet input:checkbox\n\ - ${3}\n\ -snippet input:radio\n\ - ${3}\n\ -snippet input:color\n\ - ${4}\n\ -snippet input:date\n\ - ${4}\n\ -snippet input:datetime\n\ - ${4}\n\ -snippet input:datetime-local\n\ - ${4}\n\ -snippet input:email\n\ - ${4}\n\ -snippet input:file\n\ - ${4}\n\ -snippet input:month\n\ - ${4}\n\ -snippet input:number\n\ - ${4}\n\ -snippet input:password\n\ - ${4}\n\ -snippet input:range\n\ - ${4}\n\ -snippet input:reset\n\ - ${4}\n\ -snippet input:search\n\ - ${4}\n\ -snippet input:time\n\ - ${4}\n\ -snippet input:url\n\ - ${4}\n\ -snippet input:week\n\ - ${4}\n\ -snippet ins\n\ - ${1}\n\ -snippet kbd\n\ - ${1}\n\ -snippet keygen\n\ - ${1}\n\ -snippet label\n\ - \n\ -snippet label:i\n\ - \n\ - ${7}\n\ -snippet label:s\n\ - \n\ - \n\ -snippet legend\n\ - ${1}\n\ -snippet legend+\n\ - ${1}\n\ -snippet li\n\ -
  • ${1}
  • \n\ -snippet li.\n\ -
  • ${2}
  • \n\ -snippet li+\n\ -
  • ${1}
  • \n\ - li+${2}\n\ -snippet lia\n\ -
  • ${1}
  • \n\ -snippet lia+\n\ -
  • ${1}
  • \n\ - lia+${3}\n\ -snippet link\n\ - ${5}\n\ -snippet link:atom\n\ - ${2}\n\ -snippet link:css\n\ - ${4}\n\ -snippet link:favicon\n\ - ${2}\n\ -snippet link:rss\n\ - ${2}\n\ -snippet link:touch\n\ - ${2}\n\ -snippet map\n\ - \n\ - ${2}\n\ - \n\ -snippet map.\n\ - \n\ - ${3}\n\ - \n\ -snippet map#\n\ - \n\ - ${3}\n\ - \n\ -snippet map+\n\ - \n\ - \"${5}\"${6}\n\ - ${7}\n\ -snippet mark\n\ - ${1}\n\ -snippet menu\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:c\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:t\n\ - \n\ - ${1}\n\ - \n\ -snippet meta\n\ - ${3}\n\ -snippet meta:compat\n\ - ${3}\n\ -snippet meta:refresh\n\ - ${3}\n\ -snippet meta:utf\n\ - ${3}\n\ -snippet meter\n\ - ${1}\n\ -snippet nav\n\ - \n\ -snippet nav.\n\ - \n\ -snippet nav#\n\ - \n\ -snippet noscript\n\ - \n\ -snippet object\n\ - \n\ - ${3}\n\ - ${4}\n\ -# Embed QT Movie\n\ -snippet movie\n\ - \n\ - \n\ - \n\ - \n\ - \n\ - ${6}\n\ -snippet ol\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ol.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol+\n\ -
      \n\ -
    1. ${1}
    2. \n\ - li+${2}\n\ -
    \n\ -snippet opt\n\ - \n\ -snippet opt+\n\ - \n\ - opt+${3}\n\ -snippet optt\n\ - \n\ -snippet optgroup\n\ - \n\ - \n\ - opt+${3}\n\ - \n\ -snippet output\n\ - ${1}\n\ -snippet p\n\ -

    ${1}

    \n\ -snippet param\n\ - ${3}\n\ -snippet pre\n\ -
    \n\
    -		${1}\n\
    -	
    \n\ -snippet progress\n\ - ${1}\n\ -snippet q\n\ - ${1}\n\ -snippet rp\n\ - ${1}\n\ -snippet rt\n\ - ${1}\n\ -snippet ruby\n\ - \n\ - ${1}\n\ - \n\ -snippet s\n\ - ${1}\n\ -snippet samp\n\ - \n\ - ${1}\n\ - \n\ -snippet script\n\ - \n\ -snippet scriptsrc\n\ - \n\ -snippet newscript\n\ - \n\ -snippet newscriptsrc\n\ - \n\ -snippet section\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet section.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet section#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet select\n\ - \n\ -snippet select.\n\ - \n\ -snippet select+\n\ - \n\ -snippet small\n\ - ${1}\n\ -snippet source\n\ - \n\ -snippet span\n\ - ${1}\n\ -snippet strong\n\ - ${1}\n\ -snippet style\n\ - \n\ -snippet sub\n\ - ${1}\n\ -snippet summary\n\ - \n\ - ${1}\n\ - \n\ -snippet sup\n\ - ${1}\n\ -snippet table\n\ - \n\ - ${2}\n\ -
    \n\ -snippet table.\n\ - \n\ - ${3}\n\ -
    \n\ -snippet table#\n\ - \n\ - ${3}\n\ -
    \n\ -snippet tbody\n\ - \n\ - ${1}\n\ - \n\ -snippet td\n\ - ${1}\n\ -snippet td.\n\ - ${2}\n\ -snippet td#\n\ - ${2}\n\ -snippet td+\n\ - ${1}\n\ - td+${2}\n\ -snippet textarea\n\ - ${6}\n\ -snippet tfoot\n\ - \n\ - ${1}\n\ - \n\ -snippet th\n\ - ${1}\n\ -snippet th.\n\ - ${2}\n\ -snippet th#\n\ - ${2}\n\ -snippet th+\n\ - ${1}\n\ - th+${2}\n\ -snippet thead\n\ - \n\ - ${1}\n\ - \n\ -snippet time\n\ - \n\ -snippet title\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ -snippet tr\n\ - \n\ - ${1}\n\ - \n\ -snippet tr+\n\ - \n\ - ${1}\n\ - td+${2}\n\ - \n\ -snippet track\n\ - ${5}${6}\n\ -snippet ul\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ul.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul+\n\ -
      \n\ -
    • ${1}
    • \n\ - li+${2}\n\ -
    \n\ -snippet var\n\ - ${1}\n\ -snippet video\n\ - ${8}\n\ -snippet wbr\n\ - ${1}\n\ -"; -exports.scope = "html"; - -}); (function() { - ace.require(["ace/snippets/html"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/html_elixir.js b/src-noconflict/snippets/html_elixir.js deleted file mode 100644 index 647f93b..0000000 --- a/src-noconflict/snippets/html_elixir.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/html_elixir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/html_ruby.js b/src-noconflict/snippets/html_ruby.js deleted file mode 100644 index 51709c4..0000000 --- a/src-noconflict/snippets/html_ruby.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/html_ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ini.js b/src-noconflict/snippets/ini.js deleted file mode 100644 index f603ff8..0000000 --- a/src-noconflict/snippets/ini.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/ini"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/io.js b/src-noconflict/snippets/io.js deleted file mode 100644 index e5108a0..0000000 --- a/src-noconflict/snippets/io.js +++ /dev/null @@ -1,76 +0,0 @@ -ace.define("ace/snippets/io",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippets = [ - { - "content": "assertEquals(${1:expected}, ${2:expr})", - "name": "assertEquals", - "scope": "io", - "tabTrigger": "ae" - }, - { - "content": "${1:${2:newValue} := ${3:Object} }clone do(\n\t$0\n)", - "name": "clone do", - "scope": "io", - "tabTrigger": "cdo" - }, - { - "content": "docSlot(\"${1:slotName}\", \"${2:documentation}\")", - "name": "docSlot", - "scope": "io", - "tabTrigger": "ds" - }, - { - "content": "(${1:header,}\n\t${2:body}\n)$0", - "keyEquivalent": "@(", - "name": "Indented Bracketed Line", - "scope": "io", - "tabTrigger": "(" - }, - { - "content": "\n\t$0\n", - "keyEquivalent": "\r", - "name": "Special: Return Inside Empty Parenthesis", - "scope": "io meta.empty-parenthesis.io, io meta.comma-parenthesis.io" - }, - { - "content": "${1:methodName} := method(${2:args,}\n\t$0\n)", - "name": "method", - "scope": "io", - "tabTrigger": "m" - }, - { - "content": "newSlot(\"${1:slotName}\", ${2:defaultValue}, \"${3:docString}\")$0", - "name": "newSlot", - "scope": "io", - "tabTrigger": "ns" - }, - { - "content": "${1:name} := Object clone do(\n\t$0\n)", - "name": "Object clone do", - "scope": "io", - "tabTrigger": "ocdo" - }, - { - "content": "test${1:SomeFeature} := method(\n\t$0\n)", - "name": "testMethod", - "scope": "io", - "tabTrigger": "ts" - }, - { - "content": "${1:Something}Test := ${2:UnitTest} clone do(\n\t$0\n)", - "name": "UnitTest", - "scope": "io", - "tabTrigger": "ut" - } -]; -exports.scope = "io"; - -}); (function() { - ace.require(["ace/snippets/io"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jack.js b/src-noconflict/snippets/jack.js deleted file mode 100644 index 1d6fa00..0000000 --- a/src-noconflict/snippets/jack.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/jack"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jade.js b/src-noconflict/snippets/jade.js deleted file mode 100644 index c9d9c5c..0000000 --- a/src-noconflict/snippets/jade.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/jade"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/java.js b/src-noconflict/snippets/java.js deleted file mode 100644 index 813302c..0000000 --- a/src-noconflict/snippets/java.js +++ /dev/null @@ -1,254 +0,0 @@ -ace.define("ace/snippets/java",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "## Access Modifiers\n\ -snippet po\n\ - protected\n\ -snippet pu\n\ - public\n\ -snippet pr\n\ - private\n\ -##\n\ -## Annotations\n\ -snippet before\n\ - @Before\n\ - static void ${1:intercept}(${2:args}) { ${3} }\n\ -snippet mm\n\ - @ManyToMany\n\ - ${1}\n\ -snippet mo\n\ - @ManyToOne\n\ - ${1}\n\ -snippet om\n\ - @OneToMany${1:(cascade=CascadeType.ALL)}\n\ - ${2}\n\ -snippet oo\n\ - @OneToOne\n\ - ${1}\n\ -##\n\ -## Basic Java packages and import\n\ -snippet im\n\ - import\n\ -snippet j.b\n\ - java.beans.\n\ -snippet j.i\n\ - java.io.\n\ -snippet j.m\n\ - java.math.\n\ -snippet j.n\n\ - java.net.\n\ -snippet j.u\n\ - java.util.\n\ -##\n\ -## Class\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet in\n\ - interface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\n\ -snippet tc\n\ - public class ${1:`Filename()`} extends ${2:TestCase}\n\ -##\n\ -## Class Enhancements\n\ -snippet ext\n\ - extends \n\ -snippet imp\n\ - implements\n\ -##\n\ -## Comments\n\ -snippet /*\n\ - /*\n\ - * ${1}\n\ - */\n\ -##\n\ -## Constants\n\ -snippet co\n\ - static public final ${1:String} ${2:var} = ${3};${4}\n\ -snippet cos\n\ - static public final String ${1:var} = \"${2}\";${3}\n\ -##\n\ -## Control Statements\n\ -snippet case\n\ - case ${1}:\n\ - ${2}\n\ -snippet def\n\ - default:\n\ - ${2}\n\ -snippet el\n\ - else\n\ -snippet elif\n\ - else if (${1}) ${2}\n\ -snippet if\n\ - if (${1}) ${2}\n\ -snippet sw\n\ - switch (${1}) {\n\ - ${2}\n\ - }\n\ -##\n\ -## Create a Method\n\ -snippet m\n\ - ${1:void} ${2:method}(${3}) ${4:throws }${5}\n\ -##\n\ -## Create a Variable\n\ -snippet v\n\ - ${1:String} ${2:var}${3: = null}${4};${5}\n\ -##\n\ -## Enhancements to Methods, variables, classes, etc.\n\ -snippet ab\n\ - abstract\n\ -snippet fi\n\ - final\n\ -snippet st\n\ - static\n\ -snippet sy\n\ - synchronized\n\ -##\n\ -## Error Methods\n\ -snippet err\n\ - System.err.print(\"${1:Message}\");\n\ -snippet errf\n\ - System.err.printf(\"${1:Message}\", ${2:exception});\n\ -snippet errln\n\ - System.err.println(\"${1:Message}\");\n\ -##\n\ -## Exception Handling\n\ -snippet as\n\ - assert ${1:test} : \"${2:Failure message}\";${3}\n\ -snippet ca\n\ - catch(${1:Exception} ${2:e}) ${3}\n\ -snippet thr\n\ - throw\n\ -snippet ths\n\ - throws\n\ -snippet try\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - }\n\ -snippet tryf\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - } finally {\n\ - }\n\ -##\n\ -## Find Methods\n\ -snippet findall\n\ - List<${1:listName}> ${2:items} = ${1}.findAll();${3}\n\ -snippet findbyid\n\ - ${1:var} ${2:item} = ${1}.findById(${3});${4}\n\ -##\n\ -## Javadocs\n\ -snippet /**\n\ - /**\n\ - * ${1}\n\ - */\n\ -snippet @au\n\ - @author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\n\ -snippet @br\n\ - @brief ${1:Description}\n\ -snippet @fi\n\ - @file ${1:`Filename()`}.java\n\ -snippet @pa\n\ - @param ${1:param}\n\ -snippet @re\n\ - @return ${1:param}\n\ -##\n\ -## Logger Methods\n\ -snippet debug\n\ - Logger.debug(${1:param});${2}\n\ -snippet error\n\ - Logger.error(${1:param});${2}\n\ -snippet info\n\ - Logger.info(${1:param});${2}\n\ -snippet warn\n\ - Logger.warn(${1:param});${2}\n\ -##\n\ -## Loops\n\ -snippet enfor\n\ - for (${1} : ${2}) ${3}\n\ -snippet for\n\ - for (${1}; ${2}; ${3}) ${4}\n\ -snippet wh\n\ - while (${1}) ${2}\n\ -##\n\ -## Main method\n\ -snippet main\n\ - public static void main (String[] args) {\n\ - ${1:/* code */}\n\ - }\n\ -##\n\ -## Print Methods\n\ -snippet print\n\ - System.out.print(\"${1:Message}\");\n\ -snippet printf\n\ - System.out.printf(\"${1:Message}\", ${2:args});\n\ -snippet println\n\ - System.out.println(${1});\n\ -##\n\ -## Render Methods\n\ -snippet ren\n\ - render(${1:param});${2}\n\ -snippet rena\n\ - renderArgs.put(\"${1}\", ${2});${3}\n\ -snippet renb\n\ - renderBinary(${1:param});${2}\n\ -snippet renj\n\ - renderJSON(${1:param});${2}\n\ -snippet renx\n\ - renderXml(${1:param});${2}\n\ -##\n\ -## Setter and Getter Methods\n\ -snippet set\n\ - ${1:public} void set${3:}(${2:String} ${4:}){\n\ - this.$4 = $4;\n\ - }\n\ -snippet get\n\ - ${1:public} ${2:String} get${3:}(){\n\ - return this.${4:};\n\ - }\n\ -##\n\ -## Terminate Methods or Loops\n\ -snippet re\n\ - return\n\ -snippet br\n\ - break;\n\ -##\n\ -## Test Methods\n\ -snippet t\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -snippet test\n\ - @Test\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -##\n\ -## Utils\n\ -snippet Sc\n\ - Scanner\n\ -##\n\ -## Miscellaneous\n\ -snippet action\n\ - public static void ${1:index}(${2:args}) { ${3} }\n\ -snippet rnf\n\ - notFound(${1:param});${2}\n\ -snippet rnfin\n\ - notFoundIfNull(${1:param});${2}\n\ -snippet rr\n\ - redirect(${1:param});${2}\n\ -snippet ru\n\ - unauthorized(${1:param});${2}\n\ -snippet unless\n\ - (unless=${1:param});${2}\n\ -"; -exports.scope = "java"; - -}); (function() { - ace.require(["ace/snippets/java"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/javascript.js b/src-noconflict/snippets/javascript.js deleted file mode 100644 index bcfaf5c..0000000 --- a/src-noconflict/snippets/javascript.js +++ /dev/null @@ -1,209 +0,0 @@ -ace.define("ace/snippets/javascript",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Prototype\n\ -snippet proto\n\ - ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n\ - ${4:// body...}\n\ - };\n\ -# Function\n\ -snippet fun\n\ - function ${1?:function_name}(${2:argument}) {\n\ - ${3:// body...}\n\ - }\n\ -# Anonymous Function\n\ -regex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\n\ -snippet f\n\ - function${M1?: ${1:functionName}}($2) {\n\ - ${0:$TM_SELECTED_TEXT}\n\ - }${M2?;}${M3?,}${M4?)}\n\ -# Immediate function\n\ -trigger \\(?f\\(\n\ -endTrigger \\)?\n\ -snippet f(\n\ - (function(${1}) {\n\ - ${0:${TM_SELECTED_TEXT:/* code */}}\n\ - }(${1}));\n\ -# if\n\ -snippet if\n\ - if (${1:true}) {\n\ - ${0}\n\ - }\n\ -# if ... else\n\ -snippet ife\n\ - if (${1:true}) {\n\ - ${2}\n\ - } else {\n\ - ${0}\n\ - }\n\ -# tertiary conditional\n\ -snippet ter\n\ - ${1:/* condition */} ? ${2:a} : ${3:b}\n\ -# switch\n\ -snippet switch\n\ - switch (${1:expression}) {\n\ - case '${3:case}':\n\ - ${4:// code}\n\ - break;\n\ - ${5}\n\ - default:\n\ - ${2:// code}\n\ - }\n\ -# case\n\ -snippet case\n\ - case '${1:case}':\n\ - ${2:// code}\n\ - break;\n\ - ${3}\n\ -\n\ -# while (...) {...}\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${0:/* code */}\n\ - }\n\ -# try\n\ -snippet try\n\ - try {\n\ - ${0:/* code */}\n\ - } catch (e) {}\n\ -# do...while\n\ -snippet do\n\ - do {\n\ - ${2:/* code */}\n\ - } while (${1:/* condition */});\n\ -# Object Method\n\ -snippet :f\n\ -regex /([,{[])|^\\s*/:f/\n\ - ${1:method_name}: function(${2:attribute}) {\n\ - ${0}\n\ - }${3:,}\n\ -# setTimeout function\n\ -snippet setTimeout\n\ -regex /\\b/st|timeout|setTimeo?u?t?/\n\ - setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n\ -# Get Elements\n\ -snippet gett\n\ - getElementsBy${1:TagName}('${2}')${3}\n\ -# Get Element\n\ -snippet get\n\ - getElementBy${1:Id}('${2}')${3}\n\ -# console.log (Firebug)\n\ -snippet cl\n\ - console.log(${1});\n\ -# return\n\ -snippet ret\n\ - return ${1:result}\n\ -# for (property in object ) { ... }\n\ -snippet fori\n\ - for (var ${1:prop} in ${2:Things}) {\n\ - ${0:$2[$1]}\n\ - }\n\ -# hasOwnProperty\n\ -snippet has\n\ - hasOwnProperty(${1})\n\ -# docstring\n\ -snippet /**\n\ - /**\n\ - * ${1:description}\n\ - *\n\ - */\n\ -snippet @par\n\ -regex /^\\s*\\*\\s*/@(para?m?)?/\n\ - @param {${1:type}} ${2:name} ${3:description}\n\ -snippet @ret\n\ - @return {${1:type}} ${2:description}\n\ -# JSON.parse\n\ -snippet jsonp\n\ - JSON.parse(${1:jstr});\n\ -# JSON.stringify\n\ -snippet jsons\n\ - JSON.stringify(${1:object});\n\ -# self-defining function\n\ -snippet sdf\n\ - var ${1:function_name} = function(${2:argument}) {\n\ - ${3:// initial code ...}\n\ -\n\ - $1 = function($2) {\n\ - ${4:// main code}\n\ - };\n\ - }\n\ -# singleton\n\ -snippet sing\n\ - function ${1:Singleton} (${2:argument}) {\n\ - // the cached instance\n\ - var instance;\n\ -\n\ - // rewrite the constructor\n\ - $1 = function $1($2) {\n\ - return instance;\n\ - };\n\ - \n\ - // carry over the prototype properties\n\ - $1.prototype = this;\n\ -\n\ - // the instance\n\ - instance = new $1();\n\ -\n\ - // reset the constructor pointer\n\ - instance.constructor = $1;\n\ -\n\ - ${3:// code ...}\n\ -\n\ - return instance;\n\ - }\n\ -# class\n\ -snippet class\n\ -regex /^\\s*/clas{0,2}/\n\ - var ${1:class} = function(${20}) {\n\ - $40$0\n\ - };\n\ - \n\ - (function() {\n\ - ${60:this.prop = \"\"}\n\ - }).call(${1:class}.prototype);\n\ - \n\ - exports.${1:class} = ${1:class};\n\ -# \n\ -snippet for-\n\ - for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n\ - ${0:${2:Things}[${1:i}];}\n\ - }\n\ -# for (...) {...}\n\ -snippet for\n\ - for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n\ - ${3:$2[$1]}$0\n\ - }\n\ -# for (...) {...} (Improved Native For-Loop)\n\ -snippet forr\n\ - for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n\ - ${3:$2[$1]}$0\n\ - }\n\ -\n\ -\n\ -#modules\n\ -snippet def\n\ - define(function(require, exports, module) {\n\ - \"use strict\";\n\ - var ${1/.*\\///} = require(\"${1}\");\n\ - \n\ - $TM_SELECTED_TEXT\n\ - });\n\ -snippet req\n\ -guard ^\\s*\n\ - var ${1/.*\\///} = require(\"${1}\");\n\ - $0\n\ -snippet requ\n\ -guard ^\\s*\n\ - var ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n\ - $0\n\ -"; -exports.scope = "javascript"; - -}); (function() { - ace.require(["ace/snippets/javascript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/json.js b/src-noconflict/snippets/json.js deleted file mode 100644 index 1290585..0000000 --- a/src-noconflict/snippets/json.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/json"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/json5.js b/src-noconflict/snippets/json5.js deleted file mode 100644 index 1d6450b..0000000 --- a/src-noconflict/snippets/json5.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/json5"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jsoniq.js b/src-noconflict/snippets/jsoniq.js deleted file mode 100644 index 5177b7b..0000000 --- a/src-noconflict/snippets/jsoniq.js +++ /dev/null @@ -1,75 +0,0 @@ -ace.define("ace/snippets/jsoniq",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet for\n\ - for $${1:item} in ${2:expr}\n\ -snippet return\n\ - return ${1:expr}\n\ -snippet import\n\ - import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ -snippet some\n\ - some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ -snippet every\n\ - every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ -snippet if\n\ - if(${1:true}) then ${2:expr} else ${3:true}\n\ -snippet switch\n\ - switch(${1:\"foo\"})\n\ - case ${2:\"foo\"}\n\ - return ${3:true}\n\ - default return ${4:false}\n\ -snippet try\n\ - try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ -snippet tumbling\n\ - for tumbling window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ -snippet sliding\n\ - for sliding window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ -snippet let\n\ - let $${1:varname} := ${2:expr}\n\ -snippet group\n\ - group by $${1:varname} := ${2:expr}\n\ -snippet order\n\ - order by ${1:expr} ${2:descending}\n\ -snippet stable\n\ - stable order by ${1:expr}\n\ -snippet count\n\ - count $${1:varname}\n\ -snippet ordered\n\ - ordered { ${1:expr} }\n\ -snippet unordered\n\ - unordered { ${1:expr} }\n\ -snippet treat \n\ - treat as ${1:expr}\n\ -snippet castable\n\ - castable as ${1:atomicType}\n\ -snippet cast\n\ - cast as ${1:atomicType}\n\ -snippet typeswitch\n\ - typeswitch(${1:expr})\n\ - case ${2:type} return ${3:expr}\n\ - default return ${4:expr}\n\ -snippet var\n\ - declare variable $${1:varname} := ${2:expr};\n\ -snippet fn\n\ - declare function ${1:ns}:${2:name}(){\n\ - ${3:expr}\n\ - };\n\ -snippet module\n\ - module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ -"; -exports.scope = "jsoniq"; - -}); (function() { - ace.require(["ace/snippets/jsoniq"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jsp.js b/src-noconflict/snippets/jsp.js deleted file mode 100644 index 37d6d35..0000000 --- a/src-noconflict/snippets/jsp.js +++ /dev/null @@ -1,113 +0,0 @@ -ace.define("ace/snippets/jsp",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet @page\n\ - <%@page contentType=\"text/html\" pageEncoding=\"UTF-8\"%>\n\ -snippet jstl\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n\ -snippet jstl:c\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\ -snippet jstl:fn\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n\ -snippet cpath\n\ - ${pageContext.request.contextPath}\n\ -snippet cout\n\ - \n\ -snippet cset\n\ - \n\ -snippet cremove\n\ - \n\ -snippet ccatch\n\ - \n\ -snippet cif\n\ - \n\ - ${2}\n\ - \n\ -snippet cchoose\n\ - \n\ - ${1}\n\ - \n\ -snippet cwhen\n\ - \n\ - ${2}\n\ - \n\ -snippet cother\n\ - \n\ - ${1}\n\ - \n\ -snippet cfore\n\ - \n\ - ${4:}\n\ - \n\ -snippet cfort\n\ - ${2:item1,item2,item3}\n\ - \n\ - ${5:}\n\ - \n\ -snippet cparam\n\ - \n\ -snippet cparam+\n\ - \n\ - cparam+${3}\n\ -snippet cimport\n\ - \n\ -snippet cimport+\n\ - \n\ - \n\ - cparam+${4}\n\ - \n\ -snippet curl\n\ - \n\ - ${3}\n\ -snippet curl+\n\ - \n\ - \n\ - cparam+${6}\n\ - \n\ - ${3}\n\ -snippet credirect\n\ - \n\ -snippet contains\n\ - ${fn:contains(${1:string}, ${2:substr})}\n\ -snippet contains:i\n\ - ${fn:containsIgnoreCase(${1:string}, ${2:substr})}\n\ -snippet endswith\n\ - ${fn:endsWith(${1:string}, ${2:suffix})}\n\ -snippet escape\n\ - ${fn:escapeXml(${1:string})}\n\ -snippet indexof\n\ - ${fn:indexOf(${1:string}, ${2:substr})}\n\ -snippet join\n\ - ${fn:join(${1:collection}, ${2:delims})}\n\ -snippet length\n\ - ${fn:length(${1:collection_or_string})}\n\ -snippet replace\n\ - ${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\n\ -snippet split\n\ - ${fn:split(${1:string}, ${2:delims})}\n\ -snippet startswith\n\ - ${fn:startsWith(${1:string}, ${2:prefix})}\n\ -snippet substr\n\ - ${fn:substring(${1:string}, ${2:begin}, ${3:end})}\n\ -snippet substr:a\n\ - ${fn:substringAfter(${1:string}, ${2:substr})}\n\ -snippet substr:b\n\ - ${fn:substringBefore(${1:string}, ${2:substr})}\n\ -snippet lc\n\ - ${fn:toLowerCase(${1:string})}\n\ -snippet uc\n\ - ${fn:toUpperCase(${1:string})}\n\ -snippet trim\n\ - ${fn:trim(${1:string})}\n\ -"; -exports.scope = "jsp"; - -}); (function() { - ace.require(["ace/snippets/jsp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jssm.js b/src-noconflict/snippets/jssm.js deleted file mode 100644 index e8c4775..0000000 --- a/src-noconflict/snippets/jssm.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/jssm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/jsx.js b/src-noconflict/snippets/jsx.js deleted file mode 100644 index 45505c0..0000000 --- a/src-noconflict/snippets/jsx.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/jsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/julia.js b/src-noconflict/snippets/julia.js deleted file mode 100644 index d3a1234..0000000 --- a/src-noconflict/snippets/julia.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/julia"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/kotlin.js b/src-noconflict/snippets/kotlin.js deleted file mode 100644 index a4ab834..0000000 --- a/src-noconflict/snippets/kotlin.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/kotlin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/latex.js b/src-noconflict/snippets/latex.js deleted file mode 100644 index eec26a2..0000000 --- a/src-noconflict/snippets/latex.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/latex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/latte.js b/src-noconflict/snippets/latte.js deleted file mode 100644 index 28034de..0000000 --- a/src-noconflict/snippets/latte.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/latte"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/less.js b/src-noconflict/snippets/less.js deleted file mode 100644 index 90a2921..0000000 --- a/src-noconflict/snippets/less.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/less"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/liquid.js b/src-noconflict/snippets/liquid.js deleted file mode 100644 index 6887ae8..0000000 --- a/src-noconflict/snippets/liquid.js +++ /dev/null @@ -1,895 +0,0 @@ -ace.define("ace/snippets/liquid",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "\n\ -# liquid specific snippets\n\ -snippet ife\n\ - {% if ${1:condition} %}\n\ -\n\ - {% else %}\n\ -\n\ - {% endif %}\n\ -snippet if\n\ - {% if ${1:condition} %}\n\ - \n\ - {% endif %}\n\ -snippet for\n\ - {% for in ${1:iterator} %}\n\ -\n\ - {% endfor %}\n\ -snippet capture\n\ - {% capture ${1} %}\n\ -\n\ - {% endcapture %}\n\ -snippet comment\n\ - {% comment %}\n\ - ${1:comment}\n\ - {% endcomment %}\n\ -\n\ -# Include html.snippets\n\ -# Some useful Unicode entities\n\ -# Non-Breaking Space\n\ -snippet nbs\n\ -  \n\ -# â†\n\ -snippet left\n\ - ←\n\ -# →\n\ -snippet right\n\ - →\n\ -# ↑\n\ -snippet up\n\ - ↑\n\ -# ↓\n\ -snippet down\n\ - ↓\n\ -# ↩\n\ -snippet return\n\ - ↩\n\ -# ⇤\n\ -snippet backtab\n\ - ⇤\n\ -# ⇥\n\ -snippet tab\n\ - ⇥\n\ -# ⇧\n\ -snippet shift\n\ - ⇧\n\ -# ⌃\n\ -snippet ctrl\n\ - ⌃\n\ -# ⌅\n\ -snippet enter\n\ - ⌅\n\ -# ⌘\n\ -snippet cmd\n\ - ⌘\n\ -# ⌥\n\ -snippet option\n\ - ⌥\n\ -# ⌦\n\ -snippet delete\n\ - ⌦\n\ -# ⌫\n\ -snippet backspace\n\ - ⌫\n\ -# ⎋\n\ -snippet esc\n\ - ⎋\n\ -# Generic Doctype\n\ -snippet doctype HTML 4.01 Strict\n\ - \n\ -snippet doctype HTML 4.01 Transitional\n\ - \n\ -snippet doctype HTML 5\n\ - \n\ -snippet doctype XHTML 1.0 Frameset\n\ - \n\ -snippet doctype XHTML 1.0 Strict\n\ - \n\ -snippet doctype XHTML 1.0 Transitional\n\ - \n\ -snippet doctype XHTML 1.1\n\ - \n\ -# HTML Doctype 4.01 Strict\n\ -snippet docts\n\ - \n\ -# HTML Doctype 4.01 Transitional\n\ -snippet doct\n\ - \n\ -# HTML Doctype 5\n\ -snippet doct5\n\ - \n\ -# XHTML Doctype 1.0 Frameset\n\ -snippet docxf\n\ - \n\ -# XHTML Doctype 1.0 Strict\n\ -snippet docxs\n\ - \n\ -# XHTML Doctype 1.0 Transitional\n\ -snippet docxt\n\ - \n\ -# XHTML Doctype 1.1\n\ -snippet docx\n\ - \n\ -# html5shiv\n\ -snippet html5shiv\n\ - \n\ -snippet html5printshiv\n\ - \n\ -# Attributes\n\ -snippet attr\n\ - ${1:attribute}=\"${2:property}\"\n\ -snippet attr+\n\ - ${1:attribute}=\"${2:property}\" attr+${3}\n\ -snippet .\n\ - class=\"${1}\"${2}\n\ -snippet #\n\ - id=\"${1}\"${2}\n\ -snippet alt\n\ - alt=\"${1}\"${2}\n\ -snippet charset\n\ - charset=\"${1:utf-8}\"${2}\n\ -snippet data\n\ - data-${1}=\"${2:$1}\"${3}\n\ -snippet for\n\ - for=\"${1}\"${2}\n\ -snippet height\n\ - height=\"${1}\"${2}\n\ -snippet href\n\ - href=\"${1:#}\"${2}\n\ -snippet lang\n\ - lang=\"${1:en}\"${2}\n\ -snippet media\n\ - media=\"${1}\"${2}\n\ -snippet name\n\ - name=\"${1}\"${2}\n\ -snippet rel\n\ - rel=\"${1}\"${2}\n\ -snippet scope\n\ - scope=\"${1:row}\"${2}\n\ -snippet src\n\ - src=\"${1}\"${2}\n\ -snippet title=\n\ - title=\"${1}\"${2}\n\ -snippet type\n\ - type=\"${1}\"${2}\n\ -snippet value\n\ - value=\"${1}\"${2}\n\ -snippet width\n\ - width=\"${1}\"${2}\n\ -# Elements\n\ -snippet a\n\ - ${2:$1}\n\ -snippet a.\n\ - ${3:$1}\n\ -snippet a#\n\ - ${3:$1}\n\ -snippet a:ext\n\ - ${2:$1}\n\ -snippet a:mail\n\ - ${3:email me}\n\ -snippet abbr\n\ - ${2}\n\ -snippet address\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet area\n\ - \"${4}\"\n\ -snippet area+\n\ - \"${4}\"\n\ - area+${5}\n\ -snippet area:c\n\ - \"${3}\"\n\ -snippet area:d\n\ - \"${3}\"\n\ -snippet area:p\n\ - \"${3}\"\n\ -snippet area:r\n\ - \"${3}\"\n\ -snippet article\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet article.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet article#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet aside\n\ - \n\ -snippet aside.\n\ - \n\ -snippet aside#\n\ - \n\ -snippet audio\n\ - \n\ -snippet b\n\ - ${1}\n\ -snippet base\n\ - \n\ -snippet bdi\n\ - ${1}\n\ -snippet bdo\n\ - ${2}\n\ -snippet bdo:l\n\ - ${1}\n\ -snippet bdo:r\n\ - ${1}\n\ -snippet blockquote\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet body\n\ - \n\ - ${1}\n\ - \n\ -snippet br\n\ -
    ${1}\n\ -snippet button\n\ - \n\ -snippet button.\n\ - \n\ -snippet button#\n\ - \n\ -snippet button:s\n\ - \n\ -snippet button:r\n\ - \n\ -snippet canvas\n\ - \n\ - ${1}\n\ - \n\ -snippet caption\n\ - ${1}\n\ -snippet cite\n\ - ${1}\n\ -snippet code\n\ - ${1}\n\ -snippet col\n\ - ${1}\n\ -snippet col+\n\ - \n\ - col+${1}\n\ -snippet colgroup\n\ - \n\ - ${1}\n\ - \n\ -snippet colgroup+\n\ - \n\ - \n\ - col+${1}\n\ - \n\ -snippet command\n\ - \n\ -snippet command:c\n\ - \n\ -snippet command:r\n\ - \n\ -snippet datagrid\n\ - \n\ - ${1}\n\ - \n\ -snippet datalist\n\ - \n\ - ${1}\n\ - \n\ -snippet datatemplate\n\ - \n\ - ${1}\n\ - \n\ -snippet dd\n\ -
    ${1}
    \n\ -snippet dd.\n\ -
    ${2}
    \n\ -snippet dd#\n\ -
    ${2}
    \n\ -snippet del\n\ - ${1}\n\ -snippet details\n\ -
    ${1}
    \n\ -snippet dfn\n\ - ${1}\n\ -snippet dialog\n\ - \n\ - ${1}\n\ - \n\ -snippet div\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet div.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet div#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet dl.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet dl+\n\ -
    \n\ -
    ${1}
    \n\ -
    ${2}
    \n\ - dt+${3}\n\ -
    \n\ -snippet dt\n\ -
    ${1}
    \n\ -snippet dt.\n\ -
    ${2}
    \n\ -snippet dt#\n\ -
    ${2}
    \n\ -snippet dt+\n\ -
    ${1}
    \n\ -
    ${2}
    \n\ - dt+${3}\n\ -snippet em\n\ - ${1}\n\ -snippet embed\n\ - \n\ -snippet fieldset\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet fieldset.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet fieldset#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet fieldset+\n\ -
    \n\ - ${1}\n\ - ${2}\n\ -
    \n\ - fieldset+${3}\n\ -snippet figcaption\n\ -
    ${1}
    \n\ -snippet figure\n\ -
    ${1}
    \n\ -snippet footer\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet footer.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet footer#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet form\n\ -
    \n\ - ${3}\n\ -
    \n\ -snippet form.\n\ -
    \n\ - ${4}\n\ -
    \n\ -snippet form#\n\ -
    \n\ - ${4}\n\ -
    \n\ -snippet h1\n\ -

    ${1}

    \n\ -snippet h1.\n\ -

    ${2}

    \n\ -snippet h1#\n\ -

    ${2}

    \n\ -snippet h2\n\ -

    ${1}

    \n\ -snippet h2.\n\ -

    ${2}

    \n\ -snippet h2#\n\ -

    ${2}

    \n\ -snippet h3\n\ -

    ${1}

    \n\ -snippet h3.\n\ -

    ${2}

    \n\ -snippet h3#\n\ -

    ${2}

    \n\ -snippet h4\n\ -

    ${1}

    \n\ -snippet h4.\n\ -

    ${2}

    \n\ -snippet h4#\n\ -

    ${2}

    \n\ -snippet h5\n\ -
    ${1}
    \n\ -snippet h5.\n\ -
    ${2}
    \n\ -snippet h5#\n\ -
    ${2}
    \n\ -snippet h6\n\ -
    ${1}
    \n\ -snippet h6.\n\ -
    ${2}
    \n\ -snippet h6#\n\ -
    ${2}
    \n\ -snippet head\n\ - \n\ - \n\ -\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2}\n\ - \n\ -snippet header\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet header.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet header#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet hgroup\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet hgroup.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet hr\n\ -
    ${1}\n\ -snippet html\n\ - \n\ - ${1}\n\ - \n\ -snippet xhtml\n\ - \n\ - ${1}\n\ - \n\ -snippet html5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet xhtml5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet i\n\ - ${1}\n\ -snippet iframe\n\ - ${2}\n\ -snippet iframe.\n\ - ${3}\n\ -snippet iframe#\n\ - ${3}\n\ -snippet img\n\ - \"${2}\"${3}\n\ -snippet img.\n\ - \"${3}\"${4}\n\ -snippet img#\n\ - \"${3}\"${4}\n\ -snippet input\n\ - ${5}\n\ -snippet input.\n\ - ${6}\n\ -snippet input:text\n\ - ${4}\n\ -snippet input:submit\n\ - ${4}\n\ -snippet input:hidden\n\ - ${4}\n\ -snippet input:button\n\ - ${4}\n\ -snippet input:image\n\ - ${5}\n\ -snippet input:checkbox\n\ - ${3}\n\ -snippet input:radio\n\ - ${3}\n\ -snippet input:color\n\ - ${4}\n\ -snippet input:date\n\ - ${4}\n\ -snippet input:datetime\n\ - ${4}\n\ -snippet input:datetime-local\n\ - ${4}\n\ -snippet input:email\n\ - ${4}\n\ -snippet input:file\n\ - ${4}\n\ -snippet input:month\n\ - ${4}\n\ -snippet input:number\n\ - ${4}\n\ -snippet input:password\n\ - ${4}\n\ -snippet input:range\n\ - ${4}\n\ -snippet input:reset\n\ - ${4}\n\ -snippet input:search\n\ - ${4}\n\ -snippet input:time\n\ - ${4}\n\ -snippet input:url\n\ - ${4}\n\ -snippet input:week\n\ - ${4}\n\ -snippet ins\n\ - ${1}\n\ -snippet kbd\n\ - ${1}\n\ -snippet keygen\n\ - ${1}\n\ -snippet label\n\ - \n\ -snippet label:i\n\ - \n\ - ${7}\n\ -snippet label:s\n\ - \n\ - \n\ -snippet legend\n\ - ${1}\n\ -snippet legend+\n\ - ${1}\n\ -snippet li\n\ -
  • ${1}
  • \n\ -snippet li.\n\ -
  • ${2}
  • \n\ -snippet li+\n\ -
  • ${1}
  • \n\ - li+${2}\n\ -snippet lia\n\ -
  • ${1}
  • \n\ -snippet lia+\n\ -
  • ${1}
  • \n\ - lia+${3}\n\ -snippet link\n\ - ${5}\n\ -snippet link:atom\n\ - ${2}\n\ -snippet link:css\n\ - ${4}\n\ -snippet link:favicon\n\ - ${2}\n\ -snippet link:rss\n\ - ${2}\n\ -snippet link:touch\n\ - ${2}\n\ -snippet map\n\ - \n\ - ${2}\n\ - \n\ -snippet map.\n\ - \n\ - ${3}\n\ - \n\ -snippet map#\n\ - \n\ - ${3}\n\ - \n\ -snippet map+\n\ - \n\ - \"${5}\"${6}\n\ - ${7}\n\ -snippet mark\n\ - ${1}\n\ -snippet menu\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:c\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:t\n\ - \n\ - ${1}\n\ - \n\ -snippet meta\n\ - ${3}\n\ -snippet meta:compat\n\ - ${3}\n\ -snippet meta:refresh\n\ - ${3}\n\ -snippet meta:utf\n\ - ${3}\n\ -snippet meter\n\ - ${1}\n\ -snippet nav\n\ - \n\ -snippet nav.\n\ - \n\ -snippet nav#\n\ - \n\ -snippet noscript\n\ - \n\ -snippet object\n\ - \n\ - ${3}\n\ - ${4}\n\ -# Embed QT Movie\n\ -snippet movie\n\ - \n\ - \n\ - \n\ - \n\ - \n\ - ${6}\n\ -snippet ol\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ol.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol+\n\ -
      \n\ -
    1. ${1}
    2. \n\ - li+${2}\n\ -
    \n\ -snippet opt\n\ - \n\ -snippet opt+\n\ - \n\ - opt+${3}\n\ -snippet optt\n\ - \n\ -snippet optgroup\n\ - \n\ - \n\ - opt+${3}\n\ - \n\ -snippet output\n\ - ${1}\n\ -snippet p\n\ -

    ${1}

    \n\ -snippet param\n\ - ${3}\n\ -snippet pre\n\ -
    \n\
    -		${1}\n\
    -	
    \n\ -snippet progress\n\ - ${1}\n\ -snippet q\n\ - ${1}\n\ -snippet rp\n\ - ${1}\n\ -snippet rt\n\ - ${1}\n\ -snippet ruby\n\ - \n\ - ${1}\n\ - \n\ -snippet s\n\ - ${1}\n\ -snippet samp\n\ - \n\ - ${1}\n\ - \n\ -snippet script\n\ - \n\ -snippet scriptsrc\n\ - \n\ -snippet newscript\n\ - \n\ -snippet newscriptsrc\n\ - \n\ -snippet section\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet section.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet section#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet select\n\ - \n\ -snippet select.\n\ - \n\ -snippet select+\n\ - \n\ -snippet small\n\ - ${1}\n\ -snippet source\n\ - \n\ -snippet span\n\ - ${1}\n\ -snippet strong\n\ - ${1}\n\ -snippet style\n\ - \n\ -snippet sub\n\ - ${1}\n\ -snippet summary\n\ - \n\ - ${1}\n\ - \n\ -snippet sup\n\ - ${1}\n\ -snippet table\n\ - \n\ - ${2}\n\ -
    \n\ -snippet table.\n\ - \n\ - ${3}\n\ -
    \n\ -snippet table#\n\ - \n\ - ${3}\n\ -
    \n\ -snippet tbody\n\ - \n\ - ${1}\n\ - \n\ -snippet td\n\ - ${1}\n\ -snippet td.\n\ - ${2}\n\ -snippet td#\n\ - ${2}\n\ -snippet td+\n\ - ${1}\n\ - td+${2}\n\ -snippet textarea\n\ - ${6}\n\ -snippet tfoot\n\ - \n\ - ${1}\n\ - \n\ -snippet th\n\ - ${1}\n\ -snippet th.\n\ - ${2}\n\ -snippet th#\n\ - ${2}\n\ -snippet th+\n\ - ${1}\n\ - th+${2}\n\ -snippet thead\n\ - \n\ - ${1}\n\ - \n\ -snippet time\n\ - \n\ -snippet title\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ -snippet tr\n\ - \n\ - ${1}\n\ - \n\ -snippet tr+\n\ - \n\ - ${1}\n\ - td+${2}\n\ - \n\ -snippet track\n\ - ${5}${6}\n\ -snippet ul\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ul.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul+\n\ -
      \n\ -
    • ${1}
    • \n\ - li+${2}\n\ -
    \n\ -snippet var\n\ - ${1}\n\ -snippet video\n\ - ${8}\n\ -snippet wbr\n\ - ${1}\n\ -"; -exports.scope = "liquid"; - -}); (function() { - ace.require(["ace/snippets/liquid"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/lisp.js b/src-noconflict/snippets/lisp.js deleted file mode 100644 index fe0fd0f..0000000 --- a/src-noconflict/snippets/lisp.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/lisp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/livescript.js b/src-noconflict/snippets/livescript.js deleted file mode 100644 index 40ac33e..0000000 --- a/src-noconflict/snippets/livescript.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/livescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/logiql.js b/src-noconflict/snippets/logiql.js deleted file mode 100644 index b8d58c0..0000000 --- a/src-noconflict/snippets/logiql.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/logiql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/logtalk.js b/src-noconflict/snippets/logtalk.js deleted file mode 100644 index c0e5a32..0000000 --- a/src-noconflict/snippets/logtalk.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/logtalk"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/lsl.js b/src-noconflict/snippets/lsl.js deleted file mode 100644 index 7193473..0000000 --- a/src-noconflict/snippets/lsl.js +++ /dev/null @@ -1,1246 +0,0 @@ -ace.define("ace/snippets/lsl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet @\n\ - @${1:label};\n\ -snippet CAMERA_ACTIVE\n\ - CAMERA_ACTIVE, ${1:integer isActive}, $0\n\ -snippet CAMERA_BEHINDNESS_ANGLE\n\ - CAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0\n\ -snippet CAMERA_BEHINDNESS_LAG\n\ - CAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_DISTANCE\n\ - CAMERA_DISTANCE, ${1:float meters}, $0\n\ -snippet CAMERA_FOCUS\n\ - CAMERA_FOCUS, ${1:vector position}, $0\n\ -snippet CAMERA_FOCUS_LAG\n\ - CAMERA_FOCUS_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_FOCUS_LOCKED\n\ - CAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0\n\ -snippet CAMERA_FOCUS_OFFSET\n\ - CAMERA_FOCUS_OFFSET, ${1:vector meters}, $0\n\ -snippet CAMERA_FOCUS_THRESHOLD\n\ - CAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0\n\ -snippet CAMERA_PITCH\n\ - CAMERA_PITCH, ${1:float degrees}, $0\n\ -snippet CAMERA_POSITION\n\ - CAMERA_POSITION, ${1:vector position}, $0\n\ -snippet CAMERA_POSITION_LAG\n\ - CAMERA_POSITION_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_POSITION_LOCKED\n\ - CAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0\n\ -snippet CAMERA_POSITION_THRESHOLD\n\ - CAMERA_POSITION_THRESHOLD, ${1:float meters}, $0\n\ -snippet CHARACTER_AVOIDANCE_MODE\n\ - CHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0\n\ -snippet CHARACTER_DESIRED_SPEED\n\ - CHARACTER_DESIRED_SPEED, ${1:float speed}, $0\n\ -snippet CHARACTER_DESIRED_TURN_SPEED\n\ - CHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0\n\ -snippet CHARACTER_LENGTH\n\ - CHARACTER_LENGTH, ${1:float length}, $0\n\ -snippet CHARACTER_MAX_TURN_RADIUS\n\ - CHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0\n\ -snippet CHARACTER_ORIENTATION\n\ - CHARACTER_ORIENTATION, ${1:integer orientation}, $0\n\ -snippet CHARACTER_RADIUS\n\ - CHARACTER_RADIUS, ${1:float radius}, $0\n\ -snippet CHARACTER_STAY_WITHIN_PARCEL\n\ - CHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0\n\ -snippet CHARACTER_TYPE\n\ - CHARACTER_TYPE, ${1:integer type}, $0\n\ -snippet HTTP_BODY_MAXLENGTH\n\ - HTTP_BODY_MAXLENGTH, ${1:integer length}, $0\n\ -snippet HTTP_CUSTOM_HEADER\n\ - HTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0\n\ -snippet HTTP_METHOD\n\ - HTTP_METHOD, ${1:string method}, $0\n\ -snippet HTTP_MIMETYPE\n\ - HTTP_MIMETYPE, ${1:string mimeType}, $0\n\ -snippet HTTP_PRAGMA_NO_CACHE\n\ - HTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0\n\ -snippet HTTP_VERBOSE_THROTTLE\n\ - HTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0\n\ -snippet HTTP_VERIFY_CERT\n\ - HTTP_VERIFY_CERT, ${1:integer verify}, $0\n\ -snippet RC_DATA_FLAGS\n\ - RC_DATA_FLAGS, ${1:integer flags}, $0\n\ -snippet RC_DETECT_PHANTOM\n\ - RC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0\n\ -snippet RC_MAX_HITS\n\ - RC_MAX_HITS, ${1:integer maxHits}, $0\n\ -snippet RC_REJECT_TYPES\n\ - RC_REJECT_TYPES, ${1:integer filterMask}, $0\n\ -snippet at_rot_target\n\ - at_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot})\n\ - {\n\ - $0\n\ - }\n\ -snippet at_target\n\ - at_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos})\n\ - {\n\ - $0\n\ - }\n\ -snippet attach\n\ - attach(${1:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet changed\n\ - changed(${1:integer change})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision\n\ - collision(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision_end\n\ - collision_end(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision_start\n\ - collision_start(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet control\n\ - control(${1:key id}, ${2:integer level}, ${3:integer edge})\n\ - {\n\ - $0\n\ - }\n\ -snippet dataserver\n\ - dataserver(${1:key query_id}, ${2:string data})\n\ - {\n\ - $0\n\ - }\n\ -snippet do\n\ - do\n\ - {\n\ - $0\n\ - }\n\ - while (${1:condition});\n\ -snippet else\n\ - else\n\ - {\n\ - $0\n\ - }\n\ -snippet email\n\ - email(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left})\n\ - {\n\ - $0\n\ - }\n\ -snippet experience_permissions\n\ - experience_permissions(${1:key agent_id})\n\ - {\n\ - $0\n\ - }\n\ -snippet experience_permissions_denied\n\ - experience_permissions_denied(${1:key agent_id}, ${2:integer reason})\n\ - {\n\ - $0\n\ - }\n\ -snippet for\n\ - for (${1:start}; ${3:condition}; ${3:step})\n\ - {\n\ - $0\n\ - }\n\ -snippet http_request\n\ - http_request(${1:key request_id}, ${2:string method}, ${3:string body})\n\ - {\n\ - $0\n\ - }\n\ -snippet http_response\n\ - http_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body})\n\ - {\n\ - $0\n\ - }\n\ -snippet if\n\ - if (${1:condition})\n\ - {\n\ - $0\n\ - }\n\ -snippet jump\n\ - jump ${1:label};\n\ -snippet land_collision\n\ - land_collision(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet land_collision_end\n\ - land_collision_end(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet land_collision_start\n\ - land_collision_start(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet link_message\n\ - link_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet listen\n\ - listen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message})\n\ - {\n\ - $0\n\ - }\n\ -snippet llAbs\n\ - llAbs(${1:integer val})\n\ -snippet llAcos\n\ - llAcos(${1:float val})\n\ -snippet llAddToLandBanList\n\ - llAddToLandBanList(${1:key agent}, ${2:float hours});\n\ - $0\n\ -snippet llAddToLandPassList\n\ - llAddToLandPassList(${1:key agent}, ${2:float hours});\n\ - $0\n\ -snippet llAdjustSoundVolume\n\ - llAdjustSoundVolume(${1:float volume});\n\ - $0\n\ -snippet llAgentInExperience\n\ - llAgentInExperience(${1:key agent})\n\ -snippet llAllowInventoryDrop\n\ - llAllowInventoryDrop(${1:integer add});\n\ - $0\n\ -snippet llAngleBetween\n\ - llAngleBetween(${1:rotation a}, ${2:rotation b})\n\ -snippet llApplyImpulse\n\ - llApplyImpulse(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llApplyRotationalImpulse\n\ - llApplyRotationalImpulse(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llAsin\n\ - llAsin(${1:float val})\n\ -snippet llAtan2\n\ - llAtan2(${1:float y}, ${2:float x})\n\ -snippet llAttachToAvatar\n\ - llAttachToAvatar(${1:integer attach_point});\n\ - $0\n\ -snippet llAttachToAvatarTemp\n\ - llAttachToAvatarTemp(${1:integer attach_point});\n\ - $0\n\ -snippet llAvatarOnLinkSitTarget\n\ - llAvatarOnLinkSitTarget(${1:integer link})\n\ -snippet llAvatarOnSitTarget\n\ - llAvatarOnSitTarget()\n\ -snippet llAxes2Rot\n\ - llAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up})\n\ -snippet llAxisAngle2Rot\n\ - llAxisAngle2Rot(${1:vector axis}, ${2:float angle})\n\ -snippet llBase64ToInteger\n\ - llBase64ToInteger(${1:string str})\n\ -snippet llBase64ToString\n\ - llBase64ToString(${1:string str})\n\ -snippet llBreakAllLinks\n\ - llBreakAllLinks();\n\ - $0\n\ -snippet llBreakLink\n\ - llBreakLink(${1:integer link});\n\ - $0\n\ -snippet llCastRay\n\ - llCastRay(${1:vector start}, ${2:vector end}, ${3:list options});\n\ - $0\n\ -snippet llCeil\n\ - llCeil(${1:float val})\n\ -snippet llClearCameraParams\n\ - llClearCameraParams();\n\ - $0\n\ -snippet llClearLinkMedia\n\ - llClearLinkMedia(${1:integer link}, ${2:integer face});\n\ - $0\n\ -snippet llClearPrimMedia\n\ - llClearPrimMedia(${1:integer face});\n\ - $0\n\ -snippet llCloseRemoteDataChannel\n\ - llCloseRemoteDataChannel(${1:key channel});\n\ - $0\n\ -snippet llCollisionFilter\n\ - llCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept});\n\ - $0\n\ -snippet llCollisionSound\n\ - llCollisionSound(${1:string impact_sound}, ${2:float impact_volume});\n\ - $0\n\ -snippet llCos\n\ - llCos(${1:float theta})\n\ -snippet llCreateCharacter\n\ - llCreateCharacter(${1:list options});\n\ - $0\n\ -snippet llCreateKeyValue\n\ - llCreateKeyValue(${1:string k})\n\ -snippet llCreateLink\n\ - llCreateLink(${1:key target}, ${2:integer parent});\n\ - $0\n\ -snippet llCSV2List\n\ - llCSV2List(${1:string src})\n\ -snippet llDataSizeKeyValue\n\ - llDataSizeKeyValue()\n\ -snippet llDeleteCharacter\n\ - llDeleteCharacter();\n\ - $0\n\ -snippet llDeleteKeyValue\n\ - llDeleteKeyValue(${1:string k})\n\ -snippet llDeleteSubList\n\ - llDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end})\n\ -snippet llDeleteSubString\n\ - llDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end})\n\ -snippet llDetachFromAvatar\n\ - llDetachFromAvatar();\n\ - $0\n\ -snippet llDetectedGrab\n\ - llDetectedGrab(${1:integer number})\n\ -snippet llDetectedGroup\n\ - llDetectedGroup(${1:integer number})\n\ -snippet llDetectedKey\n\ - llDetectedKey(${1:integer number})\n\ -snippet llDetectedLinkNumber\n\ - llDetectedLinkNumber(${1:integer number})\n\ -snippet llDetectedName\n\ - llDetectedName(${1:integer number})\n\ -snippet llDetectedOwner\n\ - llDetectedOwner(${1:integer number})\n\ -snippet llDetectedPos\n\ - llDetectedPosl(${1:integer number})\n\ -snippet llDetectedRot\n\ - llDetectedRot(${1:integer number})\n\ -snippet llDetectedTouchBinormal\n\ - llDetectedTouchBinormal(${1:integer number})\n\ -snippet llDetectedTouchFace\n\ - llDetectedTouchFace(${1:integer number})\n\ -snippet llDetectedTouchNormal\n\ - llDetectedTouchNormal(${1:integer number})\n\ -snippet llDetectedTouchPos\n\ - llDetectedTouchPos(${1:integer number})\n\ -snippet llDetectedTouchST\n\ - llDetectedTouchST(${1:integer number})\n\ -snippet llDetectedTouchUV\n\ - llDetectedTouchUV(${1:integer number})\n\ -snippet llDetectedType\n\ - llDetectedType(${1:integer number})\n\ -snippet llDetectedVel\n\ - llDetectedVel(${1:integer number})\n\ -snippet llDialog\n\ - llDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel});\n\ - $0\n\ -snippet llDie\n\ - llDie();\n\ - $0\n\ -snippet llDumpList2String\n\ - llDumpList2String(${1:list src}, ${2:string separator})\n\ -snippet llEdgeOfWorld\n\ - llEdgeOfWorld(${1:vector pos}, ${2:vector dir})\n\ -snippet llEjectFromLand\n\ - llEjectFromLand(${1:key agent});\n\ - $0\n\ -snippet llEmail\n\ - llEmail(${1:string address}, ${2:string subject}, ${3:string message});\n\ - $0\n\ -snippet llEscapeURL\n\ - llEscapeURL(${1:string url})\n\ -snippet llEuler2Rot\n\ - llEuler2Rot(${1:vector v})\n\ -snippet llExecCharacterCmd\n\ - llExecCharacterCmd(${1:integer command}, ${2:list options});\n\ - $0\n\ -snippet llEvade\n\ - llEvade(${1:key target}, ${2:list options});\n\ - $0\n\ -snippet llFabs\n\ - llFabs(${1:float val})\n\ -snippet llFleeFrom\n\ - llFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options});\n\ - $0\n\ -snippet llFloor\n\ - llFloor(${1:float val})\n\ -snippet llForceMouselook\n\ - llForceMouselook(${1:integer mouselook});\n\ - $0\n\ -snippet llFrand\n\ - llFrand(${1:float mag})\n\ -snippet llGenerateKey\n\ - llGenerateKey()\n\ -snippet llGetAccel\n\ - llGetAccel()\n\ -snippet llGetAgentInfo\n\ - llGetAgentInfo(${1:key id})\n\ -snippet llGetAgentLanguage\n\ - llGetAgentLanguage(${1:key agent})\n\ -snippet llGetAgentList\n\ - llGetAgentList(${1:integer scope}, ${2:list options})\n\ -snippet llGetAgentSize\n\ - llGetAgentSize(${1:key agent})\n\ -snippet llGetAlpha\n\ - llGetAlpha(${1:integer face})\n\ -snippet llGetAndResetTime\n\ - llGetAndResetTime()\n\ -snippet llGetAnimation\n\ - llGetAnimation(${1:key id})\n\ -snippet llGetAnimationList\n\ - llGetAnimationList(${1:key agent})\n\ -snippet llGetAnimationOverride\n\ - llGetAnimationOverride(${1:string anim_state})\n\ -snippet llGetAttached\n\ - llGetAttached()\n\ -snippet llGetAttachedList\n\ - llGetAttachedList(${1:key id})\n\ -snippet llGetBoundingBox\n\ - llGetBoundingBox(${1:key object})\n\ -snippet llGetCameraPos\n\ - llGetCameraPos()\n\ -snippet llGetCameraRot\n\ - llGetCameraRot()\n\ -snippet llGetCenterOfMass\n\ - llGetCenterOfMass()\n\ -snippet llGetClosestNavPoint\n\ - llGetClosestNavPoint(${1:vector point}, ${2:list options})\n\ -snippet llGetColor\n\ - llGetColor(${1:integer face})\n\ -snippet llGetCreator\n\ - llGetCreator()\n\ -snippet llGetDate\n\ - llGetDate()\n\ -snippet llGetDisplayName\n\ - llGetDisplayName(${1:key id})\n\ -snippet llGetEnergy\n\ - llGetEnergy()\n\ -snippet llGetEnv\n\ - llGetEnv(${1:string name})\n\ -snippet llGetExperienceDetails\n\ - llGetExperienceDetails(${1:key experience_id})\n\ -snippet llGetExperienceErrorMessage\n\ - llGetExperienceErrorMessage(${1:integer error})\n\ -snippet llGetForce\n\ - llGetForce()\n\ -snippet llGetFreeMemory\n\ - llGetFreeMemory()\n\ -snippet llGetFreeURLs\n\ - llGetFreeURLs()\n\ -snippet llGetGeometricCenter\n\ - llGetGeometricCenter()\n\ -snippet llGetGMTclock\n\ - llGetGMTclock()\n\ -snippet llGetHTTPHeader\n\ - llGetHTTPHeader(${1:key request_id}, ${2:string header})\n\ -snippet llGetInventoryCreator\n\ - llGetInventoryCreator(${1:string item})\n\ -snippet llGetInventoryKey\n\ - llGetInventoryKey(${1:string name})\n\ -snippet llGetInventoryName\n\ - llGetInventoryName(${1:integer type}, ${2:integer number})\n\ -snippet llGetInventoryNumber\n\ - llGetInventoryNumber(${1:integer type})\n\ -snippet llGetInventoryPermMask\n\ - llGetInventoryPermMask(${1:string item}, ${2:integer mask})\n\ -snippet llGetInventoryType\n\ - llGetInventoryType(${1:string name})\n\ -snippet llGetKey\n\ - llGetKey()\n\ -snippet llGetLandOwnerAt\n\ - llGetLandOwnerAt(${1:vector pos})\n\ -snippet llGetLinkKey\n\ - llGetLinkKey(${1:integer link})\n\ -snippet llGetLinkMedia\n\ - llGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params})\n\ -snippet llGetLinkName\n\ - llGetLinkName(${1:integer link})\n\ -snippet llGetLinkNumber\n\ - llGetLinkNumber()\n\ -snippet llGetLinkNumberOfSides\n\ - llGetLinkNumberOfSides(${1:integer link})\n\ -snippet llGetLinkPrimitiveParams\n\ - llGetLinkPrimitiveParams(${1:integer link}, ${2:list params})\n\ -snippet llGetListEntryType\n\ - llGetListEntryType(${1:list src}, ${2:integer index})\n\ -snippet llGetListLength\n\ - llGetListLength(${1:list src})\n\ -snippet llGetLocalPos\n\ - llGetLocalPos()\n\ -snippet llGetLocalRot\n\ - llGetLocalRot()\n\ -snippet llGetMass\n\ - llGetMass()\n\ -snippet llGetMassMKS\n\ - llGetMassMKS()\n\ -snippet llGetMaxScaleFactor\n\ - llGetMaxScaleFactor()\n\ -snippet llGetMemoryLimit\n\ - llGetMemoryLimit()\n\ -snippet llGetMinScaleFactor\n\ - llGetMinScaleFactor()\n\ -snippet llGetNextEmail\n\ - llGetNextEmail(${1:string address}, ${2:string subject});\n\ - $0\n\ -snippet llGetNotecardLine\n\ - llGetNotecardLine(${1:string name}, ${2:integer line})\n\ -snippet llGetNumberOfNotecardLines\n\ - llGetNumberOfNotecardLines(${1:string name})\n\ -snippet llGetNumberOfPrims\n\ - llGetNumberOfPrims()\n\ -snippet llGetNumberOfSides\n\ - llGetNumberOfSides()\n\ -snippet llGetObjectDesc\n\ - llGetObjectDesc()\n\ -snippet llGetObjectDetails\n\ - llGetObjectDetails(${1:key id}, ${2:list params})\n\ -snippet llGetObjectMass\n\ - llGetObjectMass(${1:key id})\n\ -snippet llGetObjectName\n\ - llGetObjectName()\n\ -snippet llGetObjectPermMask\n\ - llGetObjectPermMask(${1:integer mask})\n\ -snippet llGetObjectPrimCount\n\ - llGetObjectPrimCount(${1:key prim})\n\ -snippet llGetOmega\n\ - llGetOmega()\n\ -snippet llGetOwner\n\ - llGetOwner()\n\ -snippet llGetOwnerKey\n\ - llGetOwnerKey(${1:key id})\n\ -snippet llGetParcelDetails\n\ - llGetParcelDetails(${1:vector pos}, ${2:list params})\n\ -snippet llGetParcelFlags\n\ - llGetParcelFlags(${1:vector pos})\n\ -snippet llGetParcelMaxPrims\n\ - llGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide})\n\ -snippet llGetParcelMusicURL\n\ - llGetParcelMusicURL()\n\ -snippet llGetParcelPrimCount\n\ - llGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide})\n\ -snippet llGetParcelPrimOwners\n\ - llGetParcelPrimOwners(${1:vector pos})\n\ -snippet llGetPermissions\n\ - llGetPermissions()\n\ -snippet llGetPermissionsKey\n\ - llGetPermissionsKey()\n\ -snippet llGetPhysicsMaterial\n\ - llGetPhysicsMaterial()\n\ -snippet llGetPos\n\ - llGetPos()\n\ -snippet llGetPrimitiveParams\n\ - llGetPrimitiveParams(${1:list params})\n\ -snippet llGetPrimMediaParams\n\ - llGetPrimMediaParams(${1:integer face}, ${2:list params})\n\ -snippet llGetRegionAgentCount\n\ - llGetRegionAgentCount()\n\ -snippet llGetRegionCorner\n\ - llGetRegionCorner()\n\ -snippet llGetRegionFlags\n\ - llGetRegionFlags()\n\ -snippet llGetRegionFPS\n\ - llGetRegionFPS()\n\ -snippet llGetRegionName\n\ - llGetRegionName()\n\ -snippet llGetRegionTimeDilation\n\ - llGetRegionTimeDilation()\n\ -snippet llGetRootPosition\n\ - llGetRootPosition()\n\ -snippet llGetRootRotation\n\ - llGetRootRotation()\n\ -snippet llGetRot\n\ - llGetRot()\n\ -snippet llGetScale\n\ - llGetScale()\n\ -snippet llGetScriptName\n\ - llGetScriptName()\n\ -snippet llGetScriptState\n\ - llGetScriptState(${1:string script})\n\ -snippet llGetSimStats\n\ - llGetSimStats(${1:integer stat_type})\n\ -snippet llGetSimulatorHostname\n\ - llGetSimulatorHostname()\n\ -snippet llGetSPMaxMemory\n\ - llGetSPMaxMemory()\n\ -snippet llGetStartParameter\n\ - llGetStartParameter()\n\ -snippet llGetStaticPath\n\ - llGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params})\n\ -snippet llGetStatus\n\ - llGetStatus(${1:integer status})\n\ -snippet llGetSubString\n\ - llGetSubString(${1:string src}, ${2:integer start}, ${3:integer end})\n\ -snippet llGetSunDirection\n\ - llGetSunDirection()\n\ -snippet llGetTexture\n\ - llGetTexture(${1:integer face})\n\ -snippet llGetTextureOffset\n\ - llGetTextureOffset(${1:integer face})\n\ -snippet llGetTextureRot\n\ - llGetTextureRot(${1:integer face})\n\ -snippet llGetTextureScale\n\ - llGetTextureScale(${1:integer face})\n\ -snippet llGetTime\n\ - llGetTime()\n\ -snippet llGetTimeOfDay\n\ - llGetTimeOfDay()\n\ -snippet llGetTimestamp\n\ - llGetTimestamp()\n\ -snippet llGetTorque\n\ - llGetTorque()\n\ -snippet llGetUnixTime\n\ - llGetUnixTime()\n\ -snippet llGetUsedMemory\n\ - llGetUsedMemory()\n\ -snippet llGetUsername\n\ - llGetUsername(${1:key id})\n\ -snippet llGetVel\n\ - llGetVel()\n\ -snippet llGetWallclock\n\ - llGetWallclock()\n\ -snippet llGiveInventory\n\ - llGiveInventory(${1:key destination}, ${2:string inventory});\n\ - $0\n\ -snippet llGiveInventoryList\n\ - llGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory});\n\ - $0\n\ -snippet llGiveMoney\n\ - llGiveMoney(${1:key destination}, ${2:integer amount})\n\ -snippet llGround\n\ - llGround(${1:vector offset})\n\ -snippet llGroundContour\n\ - llGroundContour(${1:vector offset})\n\ -snippet llGroundNormal\n\ - llGroundNormal(${1:vector offset})\n\ -snippet llGroundRepel\n\ - llGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau});\n\ - $0\n\ -snippet llGroundSlope\n\ - llGroundSlope(${1:vector offset})\n\ -snippet llHTTPRequest\n\ - llHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body})\n\ -snippet llHTTPResponse\n\ - llHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body});\n\ - $0\n\ -snippet llInsertString\n\ - llInsertString(${1:string dst}, ${2:integer pos}, ${3:string src})\n\ -snippet llInstantMessage\n\ - llInstantMessage(${1:key user}, ${2:string message});\n\ - $0\n\ -snippet llIntegerToBase64\n\ - llIntegerToBase64(${1:integer number})\n\ -snippet llJson2List\n\ - llJson2List(${1:string json})\n\ -snippet llJsonGetValue\n\ - llJsonGetValue(${1:string json}, ${2:list specifiers})\n\ -snippet llJsonSetValue\n\ - llJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue})\n\ -snippet llJsonValueType\n\ - llJsonValueType(${1:string json}, ${2:list specifiers})\n\ -snippet llKey2Name\n\ - llKey2Name(${1:key id})\n\ -snippet llKeyCountKeyValue\n\ - llKeyCountKeyValue()\n\ -snippet llKeysKeyValue\n\ - llKeysKeyValue(${1:integer first}, ${2:integer count})\n\ -snippet llLinkParticleSystem\n\ - llLinkParticleSystem(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llLinkSitTarget\n\ - llLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot});\n\ - $0\n\ -snippet llList2CSV\n\ - llList2CSV(${1:list src})\n\ -snippet llList2Float\n\ - llList2Float(${1:list src}, ${2:integer index})\n\ -snippet llList2Integer\n\ - llList2Integer(${1:list src}, ${2:integer index})\n\ -snippet llList2Json\n\ - llList2Json(${1:string type}, ${2:list values})\n\ -snippet llList2Key\n\ - llList2Key(${1:list src}, ${2:integer index})\n\ -snippet llList2List\n\ - llList2List(${1:list src}, ${2:integer start}, ${3:integer end})\n\ -snippet llList2ListStrided\n\ - llList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride})\n\ -snippet llList2Rot\n\ - llList2Rot(${1:list src}, ${2:integer index})\n\ -snippet llList2String\n\ - llList2String(${1:list src}, ${2:integer index})\n\ -snippet llList2Vector\n\ - llList2Vector(${1:list src}, ${2:integer index})\n\ -snippet llListen\n\ - llListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg})\n\ -snippet llListenControl\n\ - llListenControl(${1:integer handle}, ${2:integer active});\n\ - $0\n\ -snippet llListenRemove\n\ - llListenRemove(${1:integer handle});\n\ - $0\n\ -snippet llListFindList\n\ - llListFindList(${1:list src}, ${2:list test})\n\ -snippet llListInsertList\n\ - llListInsertList(${1:list dest}, ${2:list src}, ${3:integer start})\n\ -snippet llListRandomize\n\ - llListRandomize(${1:list src}, ${2:integer stride})\n\ -snippet llListReplaceList\n\ - llListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end})\n\ -snippet llListSort\n\ - llListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending})\n\ -snippet llListStatistics\n\ - llListStatistics(${1:integer operation}, ${2:list src})\n\ -snippet llLoadURL\n\ - llLoadURL(${1:key agent}, ${2:string message}, ${3:string url});\n\ - $0\n\ -snippet llLog\n\ - llLog(${1:float val})\n\ -snippet llLog10\n\ - llLog10(${1:float val})\n\ -snippet llLookAt\n\ - llLookAt(${1:vector target}, ${2:float strength}, ${3:float damping});\n\ - $0\n\ -snippet llLoopSound\n\ - llLoopSound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llLoopSoundMaster\n\ - llLoopSoundMaster(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llLoopSoundSlave\n\ - llLoopSoundSlave(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llManageEstateAccess\n\ - llManageEstateAccess(${1:integer action}, ${2:key agent})\n\ -snippet llMapDestination\n\ - llMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at});\n\ - $0\n\ -snippet llMD5String\n\ - llMD5String(${1:string src}, ${2:integer nonce})\n\ -snippet llMessageLinked\n\ - llMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id});\n\ - $0\n\ -snippet llMinEventDelay\n\ - llMinEventDelay(${1:float delay});\n\ - $0\n\ -snippet llModifyLand\n\ - llModifyLand(${1:integer action}, ${2:integer brush});\n\ - $0\n\ -snippet llModPow\n\ - llModPow(${1:integer a}, ${2:integer b}, ${3:integer c})\n\ -snippet llMoveToTarget\n\ - llMoveToTarget(${1:vector target}, ${2:float tau});\n\ - $0\n\ -snippet llNavigateTo\n\ - llNavigateTo(${1:vector pos}, ${2:list options});\n\ - $0\n\ -snippet llOffsetTexture\n\ - llOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\ - $0\n\ -snippet llOpenRemoteDataChannel\n\ - llOpenRemoteDataChannel();\n\ - $0\n\ -snippet llOverMyLand\n\ - llOverMyLand(${1:key id})\n\ -snippet llOwnerSay\n\ - llOwnerSay(${1:string msg});\n\ - $0\n\ -snippet llParcelMediaCommandList\n\ - llParcelMediaCommandList(${1:list commandList});\n\ - $0\n\ -snippet llParcelMediaQuery\n\ - llParcelMediaQuery(${1:list query})\n\ -snippet llParseString2List\n\ - llParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers})\n\ -snippet llParseStringKeepNulls\n\ - llParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers})\n\ -snippet llParticleSystem\n\ - llParticleSystem(${1:list rules});\n\ - $0\n\ -snippet llPassCollisions\n\ - llPassCollisions(${1:integer pass});\n\ - $0\n\ -snippet llPassTouches\n\ - llPassTouches(${1:integer pass});\n\ - $0\n\ -snippet llPatrolPoints\n\ - llPatrolPoints(${1:list patrolPoints}, ${2:list options});\n\ - $0\n\ -snippet llPlaySound\n\ - llPlaySound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llPlaySoundSlave\n\ - llPlaySoundSlave(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llPow\n\ - llPow(${1:float base}, ${2:float exponent})\n\ -snippet llPreloadSound\n\ - llPreloadSound(${1:string sound});\n\ - $0\n\ -snippet llPursue\n\ - llPursue(${1:key target}, ${2:list options});\n\ - $0\n\ -snippet llPushObject\n\ - llPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local});\n\ - $0\n\ -snippet llReadKeyValue\n\ - llReadKeyValue(${1:string k})\n\ -snippet llRegionSay\n\ - llRegionSay(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llRegionSayTo\n\ - llRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg});\n\ - $0\n\ -snippet llReleaseControls\n\ - llReleaseControls();\n\ - $0\n\ -snippet llReleaseURL\n\ - llReleaseURL(${1:string url});\n\ - $0\n\ -snippet llRemoteDataReply\n\ - llRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata});\n\ - $0\n\ -snippet llRemoteLoadScriptPin\n\ - llRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param});\n\ - $0\n\ -snippet llRemoveFromLandBanList\n\ - llRemoveFromLandBanList(${1:key agent});\n\ - $0\n\ -snippet llRemoveFromLandPassList\n\ - llRemoveFromLandPassList(${1:key agent});\n\ - $0\n\ -snippet llRemoveInventory\n\ - llRemoveInventory(${1:string item});\n\ - $0\n\ -snippet llRemoveVehicleFlags\n\ - llRemoveVehicleFlags(${1:integer flags});\n\ - $0\n\ -snippet llRequestAgentData\n\ - llRequestAgentData(${1:key id}, ${2:integer data})\n\ -snippet llRequestDisplayName\n\ - llRequestDisplayName(${1:key id})\n\ -snippet llRequestExperiencePermissions\n\ - llRequestExperiencePermissions(${1:key agent}, ${2:string name})\n\ -snippet llRequestInventoryData\n\ - llRequestInventoryData(${1:string name})\n\ -snippet llRequestPermissions\n\ - llRequestPermissions(${1:key agent}, ${2:integer permissions})\n\ -snippet llRequestSecureURL\n\ - llRequestSecureURL()\n\ -snippet llRequestSimulatorData\n\ - llRequestSimulatorData(${1:string region}, ${2:integer data})\n\ -snippet llRequestURL\n\ - llRequestURL()\n\ -snippet llRequestUsername\n\ - llRequestUsername(${1:key id})\n\ -snippet llResetAnimationOverride\n\ - llResetAnimationOverride(${1:string anim_state});\n\ - $0\n\ -snippet llResetLandBanList\n\ - llResetLandBanList();\n\ - $0\n\ -snippet llResetLandPassList\n\ - llResetLandPassList();\n\ - $0\n\ -snippet llResetOtherScript\n\ - llResetOtherScript(${1:string name});\n\ - $0\n\ -snippet llResetScript\n\ - llResetScript();\n\ - $0\n\ -snippet llResetTime\n\ - llResetTime();\n\ - $0\n\ -snippet llReturnObjectsByID\n\ - llReturnObjectsByID(${1:list objects})\n\ -snippet llReturnObjectsByOwner\n\ - llReturnObjectsByOwner(${1:key owner}, ${2:integer scope})\n\ -snippet llRezAtRoot\n\ - llRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param});\n\ - $0\n\ -snippet llRezObject\n\ - llRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param});\n\ - $0\n\ -snippet llRot2Angle\n\ - llRot2Angle(${1:rotation rot})\n\ -snippet llRot2Axis\n\ - llRot2Axis(${1:rotation rot})\n\ -snippet llRot2Euler\n\ - llRot2Euler(${1:rotation quat})\n\ -snippet llRot2Fwd\n\ - llRot2Fwd(${1:rotation q})\n\ -snippet llRot2Left\n\ - llRot2Left(${1:rotation q})\n\ -snippet llRot2Up\n\ - llRot2Up(${1:rotation q})\n\ -snippet llRotateTexture\n\ - llRotateTexture(${1:float angle}, ${2:integer face});\n\ - $0\n\ -snippet llRotBetween\n\ - llRotBetween(${1:vector start}, ${2:vector end})\n\ -snippet llRotLookAt\n\ - llRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping});\n\ - $0\n\ -snippet llRotTarget\n\ - llRotTarget(${1:rotation rot}, ${2:float error})\n\ -snippet llRotTargetRemove\n\ - llRotTargetRemove(${1:integer handle});\n\ - $0\n\ -snippet llRound\n\ - llRound(${1:float val})\n\ -snippet llSameGroup\n\ - llSameGroup(${1:key group})\n\ -snippet llSay\n\ - llSay(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llScaleByFactor\n\ - llScaleByFactor(${1:float scaling_factor})\n\ -snippet llScaleTexture\n\ - llScaleTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\ - $0\n\ -snippet llScriptDanger\n\ - llScriptDanger(${1:vector pos})\n\ -snippet llScriptProfiler\n\ - llScriptProfiler(${1:integer flags});\n\ - $0\n\ -snippet llSendRemoteData\n\ - llSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata})\n\ -snippet llSensor\n\ - llSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc});\n\ - $0\n\ -snippet llSensorRepeat\n\ - llSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate});\n\ - $0\n\ -snippet llSetAlpha\n\ - llSetAlpha(${1:float alpha}, ${2:integer face});\n\ - $0\n\ -snippet llSetAngularVelocity\n\ - llSetAngularVelocity(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSetAnimationOverride\n\ - llSetAnimationOverride(${1:string anim_state}, ${2:string anim})\n\ -snippet llSetBuoyancy\n\ - llSetBuoyancy(${1:float buoyancy});\n\ - $0\n\ -snippet llSetCameraAtOffset\n\ - llSetCameraAtOffset(${1:vector offset});\n\ - $0\n\ -snippet llSetCameraEyeOffset\n\ - llSetCameraEyeOffset(${1:vector offset});\n\ - $0\n\ -snippet llSetCameraParams\n\ - llSetCameraParams(${1:list rules});\n\ - $0\n\ -snippet llSetClickAction\n\ - llSetClickAction(${1:integer action});\n\ - $0\n\ -snippet llSetColor\n\ - llSetColor(${1:vector color}, ${2:integer face});\n\ - $0\n\ -snippet llSetContentType\n\ - llSetContentType(${1:key request_id}, ${2:integer content_type});\n\ - $0\n\ -snippet llSetDamage\n\ - llSetDamage(${1:float damage});\n\ - $0\n\ -snippet llSetForce\n\ - llSetForce(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSetForceAndTorque\n\ - llSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local});\n\ - $0\n\ -snippet llSetHoverHeight\n\ - llSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau});\n\ - $0\n\ -snippet llSetKeyframedMotion\n\ - llSetKeyframedMotion(${1:list keyframes}, ${2:list options});\n\ - $0\n\ -snippet llSetLinkAlpha\n\ - llSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkCamera\n\ - llSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at});\n\ - $0\n\ -snippet llSetLinkColor\n\ - llSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkMedia\n\ - llSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params});\n\ - $0\n\ -snippet llSetLinkPrimitiveParams\n\ - llSetLinkPrimitiveParams(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llSetLinkPrimitiveParamsFast\n\ - llSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llSetLinkTexture\n\ - llSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkTextureAnim\n\ - llSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate});\n\ - $0\n\ -snippet llSetLocalRot\n\ - llSetLocalRot(${1:rotation rot});\n\ - $0\n\ -snippet llSetMemoryLimit\n\ - llSetMemoryLimit(${1:integer limit})\n\ -snippet llSetObjectDesc\n\ - llSetObjectDesc(${1:string description});\n\ - $0\n\ -snippet llSetObjectName\n\ - llSetObjectName(${1:string name});\n\ - $0\n\ -snippet llSetParcelMusicURL\n\ - llSetParcelMusicURL(${1:string url});\n\ - $0\n\ -snippet llSetPayPrice\n\ - llSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]);\n\ - $0\n\ -snippet llSetPhysicsMaterial\n\ - llSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density});\n\ - $0\n\ -snippet llSetPos\n\ - llSetPos(${1:vector pos});\n\ - $0\n\ -snippet llSetPrimitiveParams\n\ - llSetPrimitiveParams(${1:list rules});\n\ - $0\n\ -snippet llSetPrimMediaParams\n\ - llSetPrimMediaParams(${1:integer face}, ${2:list params});\n\ - $0\n\ -snippet llSetRegionPos\n\ - llSetRegionPos(${1:vector position})\n\ -snippet llSetRemoteScriptAccessPin\n\ - llSetRemoteScriptAccessPin(${1:integer pin});\n\ - $0\n\ -snippet llSetRot\n\ - llSetRot(${1:rotation rot});\n\ - $0\n\ -snippet llSetScale\n\ - llSetScale(${1:vector size});\n\ - $0\n\ -snippet llSetScriptState\n\ - llSetScriptState(${1:string name}, ${2:integer run});\n\ - $0\n\ -snippet llSetSitText\n\ - llSetSitText(${1:string text});\n\ - $0\n\ -snippet llSetSoundQueueing\n\ - llSetSoundQueueing(${1:integer queue});\n\ - $0\n\ -snippet llSetSoundRadius\n\ - llSetSoundRadius(${1:float radius});\n\ - $0\n\ -snippet llSetStatus\n\ - llSetStatus(${1:integer status}, ${2:integer value});\n\ - $0\n\ -snippet llSetText\n\ - llSetText(${1:string text}, ${2:vector color}, ${3:float alpha});\n\ - $0\n\ -snippet llSetTexture\n\ - llSetTexture(${1:string texture}, ${2:integer face});\n\ - $0\n\ -snippet llSetTextureAnim\n\ - llSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate});\n\ - $0\n\ -snippet llSetTimerEvent\n\ - llSetTimerEvent(${1:float sec});\n\ - $0\n\ -snippet llSetTorque\n\ - llSetTorque(${1:vector torque}, ${2:integer local});\n\ - $0\n\ -snippet llSetTouchText\n\ - llSetTouchText(${1:string text});\n\ - $0\n\ -snippet llSetVehicleFlags\n\ - llSetVehicleFlags(${1:integer flags});\n\ - $0\n\ -snippet llSetVehicleFloatParam\n\ - llSetVehicleFloatParam(${1:integer param}, ${2:float value});\n\ - $0\n\ -snippet llSetVehicleRotationParam\n\ - llSetVehicleRotationParam(${1:integer param}, ${2:rotation rot});\n\ - $0\n\ -snippet llSetVehicleType\n\ - llSetVehicleType(${1:integer type});\n\ - $0\n\ -snippet llSetVehicleVectorParam\n\ - llSetVehicleVectorParam(${1:integer param}, ${2:vector vec});\n\ - $0\n\ -snippet llSetVelocity\n\ - llSetVelocity(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSHA1String\n\ - llSHA1String(${1:string src})\n\ -snippet llShout\n\ - llShout(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llSin\n\ - llSin(${1:float theta})\n\ -snippet llSitTarget\n\ - llSitTarget(${1:vector offset}, ${2:rotation rot});\n\ - $0\n\ -snippet llSleep\n\ - llSleep(${1:float sec});\n\ - $0\n\ -snippet llSqrt\n\ - llSqrt(${1:float val})\n\ -snippet llStartAnimation\n\ - llStartAnimation(${1:string anim});\n\ - $0\n\ -snippet llStopAnimation\n\ - llStopAnimation(${1:string anim});\n\ - $0\n\ -snippet llStopHover\n\ - llStopHover();\n\ - $0\n\ -snippet llStopLookAt\n\ - llStopLookAt();\n\ - $0\n\ -snippet llStopMoveToTarget\n\ - llStopMoveToTarget();\n\ - $0\n\ -snippet llStopSound\n\ - llStopSound();\n\ - $0\n\ -snippet llStringLength\n\ - llStringLength(${1:string str})\n\ -snippet llStringToBase64\n\ - llStringToBase64(${1:string str})\n\ -snippet llStringTrim\n\ - llStringTrim(${1:string src}, ${2:integer type})\n\ -snippet llSubStringIndex\n\ - llSubStringIndex(${1:string source}, ${2:string pattern})\n\ -snippet llTakeControls\n\ - llTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on});\n\ - $0\n\ -snippet llTan\n\ - llTan(${1:float theta})\n\ -snippet llTarget\n\ - llTarget(${1:vector position}, ${2:float range})\n\ -snippet llTargetOmega\n\ - llTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain});\n\ - $0\n\ -snippet llTargetRemove\n\ - llTargetRemove(${1:integer handle});\n\ - $0\n\ -snippet llTeleportAgent\n\ - llTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at});\n\ - $0\n\ -snippet llTeleportAgentGlobalCoords\n\ - llTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at});\n\ - $0\n\ -snippet llTeleportAgentHome\n\ - llTeleportAgentHome(${1:key agent});\n\ - $0\n\ -snippet llTextBox\n\ - llTextBox(${1:key agent}, ${2:string message}, ${3:integer channel});\n\ - $0\n\ -snippet llToLower\n\ - llToLower(${1:string src})\n\ -snippet llToUpper\n\ - llToUpper(${1:string src})\n\ -snippet llTransferLindenDollars\n\ - llTransferLindenDollars(${1:key destination}, ${2:integer amount})\n\ -snippet llTriggerSound\n\ - llTriggerSound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llTriggerSoundLimited\n\ - llTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west});\n\ - $0\n\ -snippet llUnescapeURL\n\ - llUnescapeURL(${1:string url})\n\ -snippet llUnSit\n\ - llUnSit(${1:key id});\n\ - $0\n\ -snippet llUpdateCharacter\n\ - llUpdateCharacter(${1:list options})\n\ -snippet llUpdateKeyValue\n\ - llUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov})\n\ -snippet llVecDist\n\ - llVecDist(${1:vector vec_a}, ${2:vector vec_b})\n\ -snippet llVecMag\n\ - llVecMag(${1:vector vec})\n\ -snippet llVecNorm\n\ - llVecNorm(${1:vector vec})\n\ -snippet llVolumeDetect\n\ - llVolumeDetect(${1:integer detect});\n\ - $0\n\ -snippet llWanderWithin\n\ - llWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options});\n\ - $0\n\ -snippet llWater\n\ - llWater(${1:vector offset});\n\ - $0\n\ -snippet llWhisper\n\ - llWhisper(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llWind\n\ - llWind(${1:vector offset});\n\ - $0\n\ -snippet llXorBase64\n\ - llXorBase64(${1:string str1}, ${2:string str2})\n\ -snippet money\n\ - money(${1:key id}, ${2:integer amount})\n\ - {\n\ - $0\n\ - }\n\ -snippet object_rez\n\ - object_rez(${1:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet on_rez\n\ - on_rez(${1:integer start_param})\n\ - {\n\ - $0\n\ - }\n\ -snippet path_update\n\ - path_update(${1:integer type}, ${2:list reserved})\n\ - {\n\ - $0\n\ - }\n\ -snippet remote_data\n\ - remote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata})\n\ - {\n\ - $0\n\ - }\n\ -snippet run_time_permissions\n\ - run_time_permissions(${1:integer perm})\n\ - {\n\ - $0\n\ - }\n\ -snippet sensor\n\ - sensor(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet state\n\ - state ${1:name}\n\ -snippet touch\n\ - touch(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet touch_end\n\ - touch_end(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet touch_start\n\ - touch_start(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet transaction_result\n\ - transaction_result(${1:key id}, ${2:integer success}, ${3:string data})\n\ - {\n\ - $0\n\ - }\n\ -snippet while\n\ - while (${1:condition})\n\ - {\n\ - $0\n\ - }\n\ -"; -exports.scope = "lsl"; - -}); (function() { - ace.require(["ace/snippets/lsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/lua.js b/src-noconflict/snippets/lua.js deleted file mode 100644 index 4dfefac..0000000 --- a/src-noconflict/snippets/lua.js +++ /dev/null @@ -1,35 +0,0 @@ -ace.define("ace/snippets/lua",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env lua\n\ - $1\n\ -snippet local\n\ - local ${1:x} = ${2:1}\n\ -snippet fun\n\ - function ${1:fname}(${2:...})\n\ - ${3:-- body}\n\ - end\n\ -snippet for\n\ - for ${1:i}=${2:1},${3:10} do\n\ - ${4:print(i)}\n\ - end\n\ -snippet forp\n\ - for ${1:i},${2:v} in pairs(${3:table_name}) do\n\ - ${4:-- body}\n\ - end\n\ -snippet fori\n\ - for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\ - ${4:-- body}\n\ - end\n\ -"; -exports.scope = "lua"; - -}); (function() { - ace.require(["ace/snippets/lua"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/luapage.js b/src-noconflict/snippets/luapage.js deleted file mode 100644 index e6db65f..0000000 --- a/src-noconflict/snippets/luapage.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/luapage"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/lucene.js b/src-noconflict/snippets/lucene.js deleted file mode 100644 index dc54d10..0000000 --- a/src-noconflict/snippets/lucene.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/lucene"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/makefile.js b/src-noconflict/snippets/makefile.js deleted file mode 100644 index 935a842..0000000 --- a/src-noconflict/snippets/makefile.js +++ /dev/null @@ -1,18 +0,0 @@ -ace.define("ace/snippets/makefile",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet ifeq\n\ - ifeq (${1:cond0},${2:cond1})\n\ - ${3:code}\n\ - endif\n\ -"; -exports.scope = "makefile"; - -}); (function() { - ace.require(["ace/snippets/makefile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/markdown.js b/src-noconflict/snippets/markdown.js deleted file mode 100644 index 7863696..0000000 --- a/src-noconflict/snippets/markdown.js +++ /dev/null @@ -1,102 +0,0 @@ -ace.define("ace/snippets/markdown",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Markdown\n\ -\n\ -# Includes octopress (http://octopress.org/) snippets\n\ -\n\ -snippet [\n\ - [${1:text}](http://${2:address} \"${3:title}\")\n\ -snippet [*\n\ - [${1:link}](${2:`@*`} \"${3:title}\")${4}\n\ -\n\ -snippet [:\n\ - [${1:id}]: http://${2:url} \"${3:title}\"\n\ -snippet [:*\n\ - [${1:id}]: ${2:`@*`} \"${3:title}\"\n\ -\n\ -snippet ![\n\ - ![${1:alttext}](${2:/images/image.jpg} \"${3:title}\")\n\ -snippet ![*\n\ - ![${1:alt}](${2:`@*`} \"${3:title}\")${4}\n\ -\n\ -snippet ![:\n\ - ![${1:id}]: ${2:url} \"${3:title}\"\n\ -snippet ![:*\n\ - ![${1:id}]: ${2:`@*`} \"${3:title}\"\n\ -\n\ -snippet ===\n\ -regex /^/=+/=*//\n\ - ${PREV_LINE/./=/g}\n\ - \n\ - ${0}\n\ -snippet ---\n\ -regex /^/-+/-*//\n\ - ${PREV_LINE/./-/g}\n\ - \n\ - ${0}\n\ -snippet blockquote\n\ - {% blockquote %}\n\ - ${1:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet blockquote-author\n\ - {% blockquote ${1:author}, ${2:title} %}\n\ - ${3:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet blockquote-link\n\ - {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n\ - ${4:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet bt-codeblock-short\n\ - ```\n\ - ${1:code_snippet}\n\ - ```\n\ -\n\ -snippet bt-codeblock-full\n\ - ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n\ - ${5:code_snippet}\n\ - ```\n\ -\n\ -snippet codeblock-short\n\ - {% codeblock %}\n\ - ${1:code_snippet}\n\ - {% endcodeblock %}\n\ -\n\ -snippet codeblock-full\n\ - {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n\ - ${5:code_snippet}\n\ - {% endcodeblock %}\n\ -\n\ -snippet gist-full\n\ - {% gist ${1:gist_id} ${2:filename} %}\n\ -\n\ -snippet gist-short\n\ - {% gist ${1:gist_id} %}\n\ -\n\ -snippet img\n\ - {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\ -\n\ -snippet youtube\n\ - {% youtube ${1:video_id} %}\n\ -\n\ -# The quote should appear only once in the text. It is inherently part of it.\n\ -# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\ -\n\ -snippet pullquote\n\ - {% pullquote %}\n\ - ${1:text} {\" ${2:quote} \"} ${3:text}\n\ - {% endpullquote %}\n\ -"; -exports.scope = "markdown"; - -}); (function() { - ace.require(["ace/snippets/markdown"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mask.js b/src-noconflict/snippets/mask.js deleted file mode 100644 index 21b38d0..0000000 --- a/src-noconflict/snippets/mask.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mask"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/matlab.js b/src-noconflict/snippets/matlab.js deleted file mode 100644 index 54cfe85..0000000 --- a/src-noconflict/snippets/matlab.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/matlab"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/maze.js b/src-noconflict/snippets/maze.js deleted file mode 100644 index f5cd8e7..0000000 --- a/src-noconflict/snippets/maze.js +++ /dev/null @@ -1,23 +0,0 @@ -ace.define("ace/snippets/maze",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet >\n\ -description assignment\n\ -scope maze\n\ - -> ${1}= ${2}\n\ -\n\ -snippet >\n\ -description if\n\ -scope maze\n\ - -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n\ -"; -exports.scope = "maze"; - -}); (function() { - ace.require(["ace/snippets/maze"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mediawiki.js b/src-noconflict/snippets/mediawiki.js deleted file mode 100644 index 1e7910d..0000000 --- a/src-noconflict/snippets/mediawiki.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mediawiki"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mel.js b/src-noconflict/snippets/mel.js deleted file mode 100644 index 6c09f62..0000000 --- a/src-noconflict/snippets/mel.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mips.js b/src-noconflict/snippets/mips.js deleted file mode 100644 index 112258c..0000000 --- a/src-noconflict/snippets/mips.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mips"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mixal.js b/src-noconflict/snippets/mixal.js deleted file mode 100644 index a5cc05b..0000000 --- a/src-noconflict/snippets/mixal.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mixal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mushcode.js b/src-noconflict/snippets/mushcode.js deleted file mode 100644 index 31ac7f7..0000000 --- a/src-noconflict/snippets/mushcode.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mushcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/mysql.js b/src-noconflict/snippets/mysql.js deleted file mode 100644 index 40c5297..0000000 --- a/src-noconflict/snippets/mysql.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/mysql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/nginx.js b/src-noconflict/snippets/nginx.js deleted file mode 100644 index 43b75c2..0000000 --- a/src-noconflict/snippets/nginx.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/nginx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/nim.js b/src-noconflict/snippets/nim.js deleted file mode 100644 index 243f004..0000000 --- a/src-noconflict/snippets/nim.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/nim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/nix.js b/src-noconflict/snippets/nix.js deleted file mode 100644 index 07d5cc6..0000000 --- a/src-noconflict/snippets/nix.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/nix"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/nsis.js b/src-noconflict/snippets/nsis.js deleted file mode 100644 index 1ab2823..0000000 --- a/src-noconflict/snippets/nsis.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/nsis"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/nunjucks.js b/src-noconflict/snippets/nunjucks.js deleted file mode 100644 index 7a4466b..0000000 --- a/src-noconflict/snippets/nunjucks.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/nunjucks"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/objectivec.js b/src-noconflict/snippets/objectivec.js deleted file mode 100644 index 77c6c2b..0000000 --- a/src-noconflict/snippets/objectivec.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/objectivec"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ocaml.js b/src-noconflict/snippets/ocaml.js deleted file mode 100644 index 6a22b03..0000000 --- a/src-noconflict/snippets/ocaml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/ocaml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/pascal.js b/src-noconflict/snippets/pascal.js deleted file mode 100644 index 0b215e8..0000000 --- a/src-noconflict/snippets/pascal.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/pascal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/perl.js b/src-noconflict/snippets/perl.js deleted file mode 100644 index e72d4c9..0000000 --- a/src-noconflict/snippets/perl.js +++ /dev/null @@ -1,361 +0,0 @@ -ace.define("ace/snippets/perl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# #!/usr/bin/perl\n\ -snippet #!\n\ - #!/usr/bin/env perl\n\ -\n\ -# Hash Pointer\n\ -snippet .\n\ - =>\n\ -# Function\n\ -snippet sub\n\ - sub ${1:function_name} {\n\ - ${2:#body ...}\n\ - }\n\ -# Conditional\n\ -snippet if\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# Conditional if..else\n\ -snippet ife\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ - else {\n\ - ${3:# else...}\n\ - }\n\ -# Conditional if..elsif..else\n\ -snippet ifee\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ - elsif (${3}) {\n\ - ${4:# elsif...}\n\ - }\n\ - else {\n\ - ${5:# else...}\n\ - }\n\ -# Conditional One-line\n\ -snippet xif\n\ - ${1:expression} if ${2:condition};${3}\n\ -# Unless conditional\n\ -snippet unless\n\ - unless (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# Unless conditional One-line\n\ -snippet xunless\n\ - ${1:expression} unless ${2:condition};${3}\n\ -# Try/Except\n\ -snippet eval\n\ - local $@;\n\ - eval {\n\ - ${1:# do something risky...}\n\ - };\n\ - if (my $e = $@) {\n\ - ${2:# handle failure...}\n\ - }\n\ -# While Loop\n\ -snippet wh\n\ - while (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# While Loop One-line\n\ -snippet xwh\n\ - ${1:expression} while ${2:condition};${3}\n\ -# C-style For Loop\n\ -snippet cfor\n\ - for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\ - ${4:# body...}\n\ - }\n\ -# For loop one-line\n\ -snippet xfor\n\ - ${1:expression} for @${2:array};${3}\n\ -# Foreach Loop\n\ -snippet for\n\ - foreach my $${1:x} (@${2:array}) {\n\ - ${3:# body...}\n\ - }\n\ -# Foreach Loop One-line\n\ -snippet fore\n\ - ${1:expression} foreach @${2:array};${3}\n\ -# Package\n\ -snippet package\n\ - package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\ -\n\ - ${2}\n\ -\n\ - 1;\n\ -\n\ - __END__\n\ -# Package syntax perl >= 5.14\n\ -snippet packagev514\n\ - package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\ -\n\ - ${3}\n\ -\n\ - 1;\n\ -\n\ - __END__\n\ -#moose\n\ -snippet moose\n\ - use Moose;\n\ - use namespace::autoclean;\n\ - ${1:#}BEGIN {extends '${2:ParentClass}'};\n\ -\n\ - ${3}\n\ -# parent\n\ -snippet parent\n\ - use parent qw(${1:Parent Class});\n\ -# Read File\n\ -snippet slurp\n\ - my $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n\ - ${3}\n\ -# strict warnings\n\ -snippet strwar\n\ - use strict;\n\ - use warnings;\n\ -# older versioning with perlcritic bypass\n\ -snippet vers\n\ - ## no critic\n\ - our $VERSION = '${1:version}';\n\ - eval $VERSION;\n\ - ## use critic\n\ -# new 'switch' like feature\n\ -snippet switch\n\ - use feature 'switch';\n\ -\n\ -# Anonymous subroutine\n\ -snippet asub\n\ - sub {\n\ - ${1:# body }\n\ - }\n\ -\n\ -\n\ -\n\ -# Begin block\n\ -snippet begin\n\ - BEGIN {\n\ - ${1:# begin body}\n\ - }\n\ -\n\ -# call package function with some parameter\n\ -snippet pkgmv\n\ - __PACKAGE__->${1:package_method}(${2:var})\n\ -\n\ -# call package function without a parameter\n\ -snippet pkgm\n\ - __PACKAGE__->${1:package_method}()\n\ -\n\ -# call package \"get_\" function without a parameter\n\ -snippet pkget\n\ - __PACKAGE__->get_${1:package_method}()\n\ -\n\ -# call package function with a parameter\n\ -snippet pkgetv\n\ - __PACKAGE__->get_${1:package_method}(${2:var})\n\ -\n\ -# complex regex\n\ -snippet qrx\n\ - qr/\n\ - ${1:regex}\n\ - /xms\n\ -\n\ -#simpler regex\n\ -snippet qr/\n\ - qr/${1:regex}/x\n\ -\n\ -#given\n\ -snippet given\n\ - given ($${1:var}) {\n\ - ${2:# cases}\n\ - ${3:# default}\n\ - }\n\ -\n\ -# switch-like case\n\ -snippet when\n\ - when (${1:case}) {\n\ - ${2:# body}\n\ - }\n\ -\n\ -# hash slice\n\ -snippet hslice\n\ - @{ ${1:hash} }{ ${2:array} }\n\ -\n\ -\n\ -# map\n\ -snippet map\n\ - map { ${2: body } } ${1: @array } ;\n\ -\n\ -\n\ -\n\ -# Pod stub\n\ -snippet ppod\n\ - =head1 NAME\n\ -\n\ - ${1:ClassName} - ${2:ShortDesc}\n\ -\n\ - =head1 SYNOPSIS\n\ -\n\ - use $1;\n\ -\n\ - ${3:# synopsis...}\n\ -\n\ - =head1 DESCRIPTION\n\ -\n\ - ${4:# longer description...}\n\ -\n\ -\n\ - =head1 INTERFACE\n\ -\n\ -\n\ - =head1 DEPENDENCIES\n\ -\n\ -\n\ - =head1 SEE ALSO\n\ -\n\ -\n\ -# Heading for a subroutine stub\n\ -snippet psub\n\ - =head2 ${1:MethodName}\n\ -\n\ - ${2:Summary....}\n\ -\n\ -# Heading for inline subroutine pod\n\ -snippet psubi\n\ - =head2 ${1:MethodName}\n\ -\n\ - ${2:Summary...}\n\ -\n\ -\n\ - =cut\n\ -# inline documented subroutine\n\ -snippet subpod\n\ - =head2 $1\n\ -\n\ - Summary of $1\n\ -\n\ - =cut\n\ -\n\ - sub ${1:subroutine_name} {\n\ - ${2:# body...}\n\ - }\n\ -# Subroutine signature\n\ -snippet parg\n\ - =over 2\n\ -\n\ - =item\n\ - Arguments\n\ -\n\ -\n\ - =over 3\n\ -\n\ - =item\n\ - C<${1:DataStructure}>\n\ -\n\ - ${2:Sample}\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ - =item\n\ - Return\n\ -\n\ - =over 3\n\ -\n\ -\n\ - =item\n\ - C<${3:...return data}>\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ -\n\ -# Moose has\n\ -snippet has\n\ - has ${1:attribute} => (\n\ - is => '${2:ro|rw}',\n\ - isa => '${3:Str|Int|HashRef|ArrayRef|etc}',\n\ - default => sub {\n\ - ${4:defaultvalue}\n\ - },\n\ - ${5:# other attributes}\n\ - );\n\ -\n\ -\n\ -# override\n\ -snippet override\n\ - override ${1:attribute} => sub {\n\ - ${2:# my $self = shift;};\n\ - ${3:# my ($self, $args) = @_;};\n\ - };\n\ -\n\ -\n\ -# use test classes\n\ -snippet tuse\n\ - use Test::More;\n\ - use Test::Deep; # (); # uncomment to stop prototype errors\n\ - use Test::Exception;\n\ -\n\ -# local test lib\n\ -snippet tlib\n\ - use lib qw{ ./t/lib };\n\ -\n\ -#test methods\n\ -snippet tmeths\n\ - $ENV{TEST_METHOD} = '${1:regex}';\n\ -\n\ -# runtestclass\n\ -snippet trunner\n\ - use ${1:test_class};\n\ - $1->runtests();\n\ -\n\ -# Test::Class-style test\n\ -snippet tsub\n\ - sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n\ - my $self = shift;\n\ - ${4:# body}\n\ -\n\ - }\n\ -\n\ -# Test::Routine-style test\n\ -snippet trsub\n\ - test ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n\ - my ($self) = @_;\n\ - ${3:# test code}\n\ - };\n\ -\n\ -#prep test method\n\ -snippet tprep\n\ - sub prep${1:number}_${2:test_case} :Test(startup) {\n\ - my $self = shift;\n\ - ${4:# body}\n\ - }\n\ -\n\ -# cause failures to print stack trace\n\ -snippet debug_trace\n\ - use Carp; # 'verbose';\n\ - # cloak \"die\"\n\ - # warn \"warning\"\n\ - $SIG{'__DIE__'} = sub {\n\ - require Carp; Carp::confess\n\ - };\n\ -\n\ -"; -exports.scope = "perl"; - -}); (function() { - ace.require(["ace/snippets/perl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/pgsql.js b/src-noconflict/snippets/pgsql.js deleted file mode 100644 index e72a587..0000000 --- a/src-noconflict/snippets/pgsql.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/pgsql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/php.js b/src-noconflict/snippets/php.js deleted file mode 100644 index d247997..0000000 --- a/src-noconflict/snippets/php.js +++ /dev/null @@ -1,397 +0,0 @@ -ace.define("ace/snippets/php",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet ec\n\ - echo ${1};\n\ -snippet ns\n\ - namespace ${1:Foo\\Bar\\Baz};\n\ - ${2}\n\ -snippet use\n\ - use ${1:Foo\\Bar\\Baz};\n\ - ${2}\n\ -snippet c\n\ - ${1:abstract }class ${2:$FILENAME}\n\ - {\n\ - ${3}\n\ - }\n\ -snippet i\n\ - interface ${1:$FILENAME}\n\ - {\n\ - ${2}\n\ - }\n\ -snippet t.\n\ - $this->${1}\n\ -snippet f\n\ - function ${1:foo}(${2:array }${3:$bar})\n\ - {\n\ - ${4}\n\ - }\n\ -# method\n\ -snippet m\n\ - ${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n\ - {\n\ - ${7}\n\ - }\n\ -# setter method\n\ -snippet sm\n\ - /**\n\ - * Sets the value of ${1:foo}\n\ - *\n\ - * @param ${2:$1} $$1 ${3:description}\n\ - *\n\ - * @return ${4:$FILENAME}\n\ - */\n\ - ${5:public} function set${6:$2}(${7:$2 }$$1)\n\ - {\n\ - $this->${8:$1} = $$1;\n\ - return $this;\n\ - }${9}\n\ -# getter method\n\ -snippet gm\n\ - /**\n\ - * Gets the value of ${1:foo}\n\ - *\n\ - * @return ${2:$1}\n\ - */\n\ - ${3:public} function get${4:$2}()\n\ - {\n\ - return $this->${5:$1};\n\ - }${6}\n\ -#setter\n\ -snippet $s\n\ - ${1:$foo}->set${2:Bar}(${3});\n\ -#getter\n\ -snippet $g\n\ - ${1:$foo}->get${2:Bar}();\n\ -\n\ -# Tertiary conditional\n\ -snippet =?:\n\ - $${1:foo} = ${2:true} ? ${3:a} : ${4};\n\ -snippet ?:\n\ - ${1:true} ? ${2:a} : ${3}\n\ -\n\ -snippet C\n\ - $_COOKIE['${1:variable}']${2}\n\ -snippet E\n\ - $_ENV['${1:variable}']${2}\n\ -snippet F\n\ - $_FILES['${1:variable}']${2}\n\ -snippet G\n\ - $_GET['${1:variable}']${2}\n\ -snippet P\n\ - $_POST['${1:variable}']${2}\n\ -snippet R\n\ - $_REQUEST['${1:variable}']${2}\n\ -snippet S\n\ - $_SERVER['${1:variable}']${2}\n\ -snippet SS\n\ - $_SESSION['${1:variable}']${2}\n\ -\n\ -# the following are old ones\n\ -snippet inc\n\ - include '${1:file}';${2}\n\ -snippet inc1\n\ - include_once '${1:file}';${2}\n\ -snippet req\n\ - require '${1:file}';${2}\n\ -snippet req1\n\ - require_once '${1:file}';${2}\n\ -# Start Docblock\n\ -snippet /*\n\ - /**\n\ - * ${1}\n\ - */\n\ -# Class - post doc\n\ -snippet doc_cp\n\ - /**\n\ - * ${1:undocumented class}\n\ - *\n\ - * @package ${2:default}\n\ - * @subpackage ${3:default}\n\ - * @author ${4:`g:snips_author`}\n\ - */${5}\n\ -# Class Variable - post doc\n\ -snippet doc_vp\n\ - /**\n\ - * ${1:undocumented class variable}\n\ - *\n\ - * @var ${2:string}\n\ - */${3}\n\ -# Class Variable\n\ -snippet doc_v\n\ - /**\n\ - * ${3:undocumented class variable}\n\ - *\n\ - * @var ${4:string}\n\ - */\n\ - ${1:var} $${2};${5}\n\ -# Class\n\ -snippet doc_c\n\ - /**\n\ - * ${3:undocumented class}\n\ - *\n\ - * @package ${4:default}\n\ - * @subpackage ${5:default}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1:}class ${2:}\n\ - {\n\ - ${7}\n\ - } // END $1class $2\n\ -# Constant Definition - post doc\n\ -snippet doc_dp\n\ - /**\n\ - * ${1:undocumented constant}\n\ - */${2}\n\ -# Constant Definition\n\ -snippet doc_d\n\ - /**\n\ - * ${3:undocumented constant}\n\ - */\n\ - define(${1}, ${2});${4}\n\ -# Function - post doc\n\ -snippet doc_fp\n\ - /**\n\ - * ${1:undocumented function}\n\ - *\n\ - * @return ${2:void}\n\ - * @author ${3:`g:snips_author`}\n\ - */${4}\n\ -# Function signature\n\ -snippet doc_s\n\ - /**\n\ - * ${4:undocumented function}\n\ - *\n\ - * @return ${5:void}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1}function ${2}(${3});${7}\n\ -# Function\n\ -snippet doc_f\n\ - /**\n\ - * ${4:undocumented function}\n\ - *\n\ - * @return ${5:void}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1}function ${2}(${3})\n\ - {${7}\n\ - }\n\ -# Header\n\ -snippet doc_h\n\ - /**\n\ - * ${1}\n\ - *\n\ - * @author ${2:`g:snips_author`}\n\ - * @version ${3:$Id$}\n\ - * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n\ - * @package ${5:default}\n\ - */\n\ -\n\ -# Interface\n\ -snippet interface\n\ - /**\n\ - * ${2:undocumented class}\n\ - *\n\ - * @package ${3:default}\n\ - * @author ${4:`g:snips_author`}\n\ - */\n\ - interface ${1:$FILENAME}\n\ - {\n\ - ${5}\n\ - }\n\ -# class ...\n\ -snippet class\n\ - /**\n\ - * ${1}\n\ - */\n\ - class ${2:$FILENAME}\n\ - {\n\ - ${3}\n\ - /**\n\ - * ${4}\n\ - */\n\ - ${5:public} function ${6:__construct}(${7:argument})\n\ - {\n\ - ${8:// code...}\n\ - }\n\ - }\n\ -# define(...)\n\ -snippet def\n\ - define('${1}'${2});${3}\n\ -# defined(...)\n\ -snippet def?\n\ - ${1}defined('${2}')${3}\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -# do ... while\n\ -snippet do\n\ - do {\n\ - ${2:// code... }\n\ - } while (${1:/* condition */});\n\ -snippet if\n\ - if (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -snippet ife\n\ - if (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - } else {\n\ - ${3:// code...}\n\ - }\n\ - ${4}\n\ -snippet else\n\ - else {\n\ - ${1:// code...}\n\ - }\n\ -snippet elseif\n\ - elseif (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -snippet switch\n\ - switch ($${1:variable}) {\n\ - case '${2:value}':\n\ - ${3:// code...}\n\ - break;\n\ - ${5}\n\ - default:\n\ - ${4:// code...}\n\ - break;\n\ - }\n\ -snippet case\n\ - case '${1:value}':\n\ - ${2:// code...}\n\ - break;${3}\n\ -snippet for\n\ - for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\ - ${4: // code...}\n\ - }\n\ -snippet foreach\n\ - foreach ($${1:variable} as $${2:value}) {\n\ - ${3:// code...}\n\ - }\n\ -snippet foreachk\n\ - foreach ($${1:variable} as $${2:key} => $${3:value}) {\n\ - ${4:// code...}\n\ - }\n\ -# $... = array (...)\n\ -snippet array\n\ - $${1:arrayName} = array('${2}' => ${3});${4}\n\ -snippet try\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception} $e) {\n\ - }\n\ -# lambda with closure\n\ -snippet lambda\n\ - ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n\ - ${4}\n\ - };\n\ -# pre_dump();\n\ -snippet pd\n\ - echo '
    '; var_dump(${1}); echo '
    ';\n\ -# pre_dump(); die();\n\ -snippet pdd\n\ - echo '
    '; var_dump(${1}); echo '
    '; die(${2:});\n\ -snippet vd\n\ - var_dump(${1});\n\ -snippet vdd\n\ - var_dump(${1}); die(${2:});\n\ -snippet http_redirect\n\ - header (\"HTTP/1.1 301 Moved Permanently\");\n\ - header (\"Location: \".URL);\n\ - exit();\n\ -# Getters & Setters\n\ -snippet gs\n\ - /**\n\ - * Gets the value of ${1:foo}\n\ - *\n\ - * @return ${2:$1}\n\ - */\n\ - public function get${3:$2}()\n\ - {\n\ - return $this->${4:$1};\n\ - }\n\ -\n\ - /**\n\ - * Sets the value of $1\n\ - *\n\ - * @param $2 $$1 ${5:description}\n\ - *\n\ - * @return ${6:$FILENAME}\n\ - */\n\ - public function set$3(${7:$2 }$$1)\n\ - {\n\ - $this->$4 = $$1;\n\ - return $this;\n\ - }${8}\n\ -# anotation, get, and set, useful for doctrine\n\ -snippet ags\n\ - /**\n\ - * ${1:description}\n\ - *\n\ - * @${7}\n\ - */\n\ - ${2:protected} $${3:foo};\n\ -\n\ - public function get${4:$3}()\n\ - {\n\ - return $this->$3;\n\ - }\n\ -\n\ - public function set$4(${5:$4 }$${6:$3})\n\ - {\n\ - $this->$3 = $$6;\n\ - return $this;\n\ - }\n\ -snippet rett\n\ - return true;\n\ -snippet retf\n\ - return false;\n\ -scope html\n\ -snippet \n\ -# this one is for php5.4\n\ -snippet \n\ -snippet ifil\n\ - \n\ - ${2:}\n\ - \n\ -snippet ifeil\n\ - \n\ - ${2:}\n\ - \n\ - ${3:}\n\ - \n\ - ${4}\n\ -snippet foreachil\n\ - \n\ - ${3:}\n\ - \n\ -snippet foreachkil\n\ - $${3:value}): ?>\n\ - ${4:}\n\ - \n\ -scope html-tag\n\ -snippet ifil\\n\\\n\ - ${2:code}\n\ -snippet ifeil\\n\\\n\ - ${2:code}${3:code}${4}\n\ -"; -exports.scope = "php"; - -}); (function() { - ace.require(["ace/snippets/php"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/php_laravel_blade.js b/src-noconflict/snippets/php_laravel_blade.js deleted file mode 100644 index d51161d..0000000 --- a/src-noconflict/snippets/php_laravel_blade.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/php_laravel_blade"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/pig.js b/src-noconflict/snippets/pig.js deleted file mode 100644 index 9639b74..0000000 --- a/src-noconflict/snippets/pig.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/pig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/plain_text.js b/src-noconflict/snippets/plain_text.js deleted file mode 100644 index a427f91..0000000 --- a/src-noconflict/snippets/plain_text.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/plain_text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/powershell.js b/src-noconflict/snippets/powershell.js deleted file mode 100644 index 3aae531..0000000 --- a/src-noconflict/snippets/powershell.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/powershell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/praat.js b/src-noconflict/snippets/praat.js deleted file mode 100644 index 631609b..0000000 --- a/src-noconflict/snippets/praat.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/praat"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/prisma.js b/src-noconflict/snippets/prisma.js deleted file mode 100644 index c073aff..0000000 --- a/src-noconflict/snippets/prisma.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/prisma"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/prolog.js b/src-noconflict/snippets/prolog.js deleted file mode 100644 index 89af2f8..0000000 --- a/src-noconflict/snippets/prolog.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/prolog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/properties.js b/src-noconflict/snippets/properties.js deleted file mode 100644 index 2d0002e..0000000 --- a/src-noconflict/snippets/properties.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/properties"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/protobuf.js b/src-noconflict/snippets/protobuf.js deleted file mode 100644 index ccdeb06..0000000 --- a/src-noconflict/snippets/protobuf.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/protobuf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/puppet.js b/src-noconflict/snippets/puppet.js deleted file mode 100644 index 1788303..0000000 --- a/src-noconflict/snippets/puppet.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/puppet"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/python.js b/src-noconflict/snippets/python.js deleted file mode 100644 index f99e3b7..0000000 --- a/src-noconflict/snippets/python.js +++ /dev/null @@ -1,172 +0,0 @@ -ace.define("ace/snippets/python",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env python\n\ -snippet imp\n\ - import ${1:module}\n\ -snippet from\n\ - from ${1:package} import ${2:module}\n\ -# Module Docstring\n\ -snippet docs\n\ - '''\n\ - File: ${1:FILENAME:file_name}\n\ - Author: ${2:author}\n\ - Description: ${3}\n\ - '''\n\ -snippet wh\n\ - while ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# dowh - does the same as do...while in other languages\n\ -snippet dowh\n\ - while True:\n\ - ${1:# TODO: write code...}\n\ - if ${2:condition}:\n\ - break\n\ -snippet with\n\ - with ${1:expr} as ${2:var}:\n\ - ${3:# TODO: write code...}\n\ -# New Class\n\ -snippet cl\n\ - class ${1:ClassName}(${2:object}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - def __init__(self, ${4:arg}):\n\ - ${5:super($1, self).__init__()}\n\ - self.$4 = $4\n\ - ${6}\n\ -# New Function\n\ -snippet def\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - ${4:# TODO: write code...}\n\ -snippet deff\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - ${3:# TODO: write code...}\n\ -# New Method\n\ -snippet defs\n\ - def ${1:mname}(self, ${2:arg}):\n\ - ${3:# TODO: write code...}\n\ -# New Property\n\ -snippet property\n\ - def ${1:foo}():\n\ - doc = \"${2:The $1 property.}\"\n\ - def fget(self):\n\ - ${3:return self._$1}\n\ - def fset(self, value):\n\ - ${4:self._$1 = value}\n\ -# Ifs\n\ -snippet if\n\ - if ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -snippet el\n\ - else:\n\ - ${1:# TODO: write code...}\n\ -snippet ei\n\ - elif ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# For\n\ -snippet for\n\ - for ${1:item} in ${2:items}:\n\ - ${3:# TODO: write code...}\n\ -# Encodes\n\ -snippet cutf8\n\ - # -*- coding: utf-8 -*-\n\ -snippet clatin1\n\ - # -*- coding: latin-1 -*-\n\ -snippet cascii\n\ - # -*- coding: ascii -*-\n\ -# Lambda\n\ -snippet ld\n\ - ${1:var} = lambda ${2:vars} : ${3:action}\n\ -snippet .\n\ - self.\n\ -snippet try Try/Except\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ -snippet try Try/Except/Else\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - finally:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Else/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ - finally:\n\ - ${6:# TODO: write code...}\n\ -# if __name__ == '__main__':\n\ -snippet ifmain\n\ - if __name__ == '__main__':\n\ - ${1:main()}\n\ -# __magic__\n\ -snippet _\n\ - __${1:init}__${2}\n\ -# python debugger (pdb)\n\ -snippet pdb\n\ - import pdb; pdb.set_trace()\n\ -# ipython debugger (ipdb)\n\ -snippet ipdb\n\ - import ipdb; ipdb.set_trace()\n\ -# ipython debugger (pdbbb)\n\ -snippet pdbbb\n\ - import pdbpp; pdbpp.set_trace()\n\ -snippet pprint\n\ - import pprint; pprint.pprint(${1})${2}\n\ -snippet \"\n\ - \"\"\"\n\ - ${1:doc}\n\ - \"\"\"\n\ -# test function/method\n\ -snippet test\n\ - def test_${1:description}(${2:self}):\n\ - ${3:# TODO: write code...}\n\ -# test case\n\ -snippet testcase\n\ - class ${1:ExampleCase}(unittest.TestCase):\n\ - \n\ - def test_${2:description}(self):\n\ - ${3:# TODO: write code...}\n\ -snippet fut\n\ - from __future__ import ${1}\n\ -#getopt\n\ -snippet getopt\n\ - try:\n\ - # Short option syntax: \"hv:\"\n\ - # Long option syntax: \"help\" or \"verbose=\"\n\ - opts, args = getopt.getopt(sys.argv[1:], \"${1:short_options}\", [${2:long_options}])\n\ - \n\ - except getopt.GetoptError, err:\n\ - # Print debug info\n\ - print str(err)\n\ - ${3:error_action}\n\ -\n\ - for option, argument in opts:\n\ - if option in (\"-h\", \"--help\"):\n\ - ${4}\n\ - elif option in (\"-v\", \"--verbose\"):\n\ - verbose = argument\n\ -"; -exports.scope = "python"; - -}); (function() { - ace.require(["ace/snippets/python"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/qml.js b/src-noconflict/snippets/qml.js deleted file mode 100644 index 0724dc7..0000000 --- a/src-noconflict/snippets/qml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/qml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/r.js b/src-noconflict/snippets/r.js deleted file mode 100644 index e5ddd87..0000000 --- a/src-noconflict/snippets/r.js +++ /dev/null @@ -1,135 +0,0 @@ -ace.define("ace/snippets/r",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env Rscript\n\ -\n\ -# includes\n\ -snippet lib\n\ - library(${1:package})\n\ -snippet req\n\ - require(${1:package})\n\ -snippet source\n\ - source('${1:file}')\n\ -\n\ -# conditionals\n\ -snippet if\n\ - if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -snippet el\n\ - else {\n\ - ${1:code}\n\ - }\n\ -snippet ei\n\ - else if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -\n\ -# functions\n\ -snippet fun\n\ - ${1:name} = function (${2:variables}) {\n\ - ${3:code}\n\ - }\n\ -snippet ret\n\ - return(${1:code})\n\ -\n\ -# dataframes, lists, etc\n\ -snippet df\n\ - ${1:name}[${2:rows}, ${3:cols}]\n\ -snippet c\n\ - c(${1:items})\n\ -snippet li\n\ - list(${1:items})\n\ -snippet mat\n\ - matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\ -\n\ -# apply functions\n\ -snippet apply\n\ - apply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet lapply\n\ - lapply(${1:list}, ${2:function})\n\ -snippet sapply\n\ - sapply(${1:list}, ${2:function})\n\ -snippet vapply\n\ - vapply(${1:list}, ${2:function}, ${3:type})\n\ -snippet mapply\n\ - mapply(${1:function}, ${2:...})\n\ -snippet tapply\n\ - tapply(${1:vector}, ${2:index}, ${3:function})\n\ -snippet rapply\n\ - rapply(${1:list}, ${2:function})\n\ -\n\ -# plyr functions\n\ -snippet dd\n\ - ddply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet dl\n\ - dlply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet da\n\ - daply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet d_\n\ - d_ply(${1:frame}, ${2:variables}, ${3:function})\n\ -\n\ -snippet ad\n\ - adply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet al\n\ - alply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet aa\n\ - aaply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet a_\n\ - a_ply(${1:array}, ${2:margin}, ${3:function})\n\ -\n\ -snippet ld\n\ - ldply(${1:list}, ${2:function})\n\ -snippet ll\n\ - llply(${1:list}, ${2:function})\n\ -snippet la\n\ - laply(${1:list}, ${2:function})\n\ -snippet l_\n\ - l_ply(${1:list}, ${2:function})\n\ -\n\ -snippet md\n\ - mdply(${1:matrix}, ${2:function})\n\ -snippet ml\n\ - mlply(${1:matrix}, ${2:function})\n\ -snippet ma\n\ - maply(${1:matrix}, ${2:function})\n\ -snippet m_\n\ - m_ply(${1:matrix}, ${2:function})\n\ -\n\ -# plot functions\n\ -snippet pl\n\ - plot(${1:x}, ${2:y})\n\ -snippet ggp\n\ - ggplot(${1:data}, aes(${2:aesthetics}))\n\ -snippet img\n\ - ${1:(jpeg,bmp,png,tiff)}(filename=\"${2:filename}\", width=${3}, height=${4}, unit=\"${5}\")\n\ - ${6:plot}\n\ - dev.off()\n\ -\n\ -# statistical test functions\n\ -snippet fis\n\ - fisher.test(${1:x}, ${2:y})\n\ -snippet chi\n\ - chisq.test(${1:x}, ${2:y})\n\ -snippet tt\n\ - t.test(${1:x}, ${2:y})\n\ -snippet wil\n\ - wilcox.test(${1:x}, ${2:y})\n\ -snippet cor\n\ - cor.test(${1:x}, ${2:y})\n\ -snippet fte\n\ - var.test(${1:x}, ${2:y})\n\ -snippet kvt \n\ - kv.test(${1:x}, ${2:y})\n\ -"; -exports.scope = "r"; - -}); (function() { - ace.require(["ace/snippets/r"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/raku.js b/src-noconflict/snippets/raku.js deleted file mode 100644 index 3df698f..0000000 --- a/src-noconflict/snippets/raku.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/raku"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/razor.js b/src-noconflict/snippets/razor.js deleted file mode 100644 index e0ae231..0000000 --- a/src-noconflict/snippets/razor.js +++ /dev/null @@ -1,17 +0,0 @@ -ace.define("ace/snippets/razor",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet if\n\ -(${1} == ${2}) {\n\ - ${3}\n\ -}"; -exports.scope = "razor"; - -}); (function() { - ace.require(["ace/snippets/razor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/rdoc.js b/src-noconflict/snippets/rdoc.js deleted file mode 100644 index c27c818..0000000 --- a/src-noconflict/snippets/rdoc.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/rdoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/red.js b/src-noconflict/snippets/red.js deleted file mode 100644 index 76d4909..0000000 --- a/src-noconflict/snippets/red.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/red"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/redshift.js b/src-noconflict/snippets/redshift.js deleted file mode 100644 index bf9f1cf..0000000 --- a/src-noconflict/snippets/redshift.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/redshift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/rhtml.js b/src-noconflict/snippets/rhtml.js deleted file mode 100644 index 7097842..0000000 --- a/src-noconflict/snippets/rhtml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/rhtml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/rst.js b/src-noconflict/snippets/rst.js deleted file mode 100644 index 171bab4..0000000 --- a/src-noconflict/snippets/rst.js +++ /dev/null @@ -1,36 +0,0 @@ -ace.define("ace/snippets/rst",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# rst\n\ -\n\ -snippet :\n\ - :${1:field name}: ${2:field body}\n\ -snippet *\n\ - *${1:Emphasis}*\n\ -snippet **\n\ - **${1:Strong emphasis}**\n\ -snippet _\n\ - \\`${1:hyperlink-name}\\`_\n\ - .. _\\`$1\\`: ${2:link-block}\n\ -snippet =\n\ - ${1:Title}\n\ - =====${2:=}\n\ - ${3}\n\ -snippet -\n\ - ${1:Title}\n\ - -----${2:-}\n\ - ${3}\n\ -snippet cont:\n\ - .. contents::\n\ - \n\ -"; -exports.scope = "rst"; - -}); (function() { - ace.require(["ace/snippets/rst"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/ruby.js b/src-noconflict/snippets/ruby.js deleted file mode 100644 index eb0d506..0000000 --- a/src-noconflict/snippets/ruby.js +++ /dev/null @@ -1,942 +0,0 @@ -ace.define("ace/snippets/ruby",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "########################################\n\ -# Ruby snippets - for Rails, see below #\n\ -########################################\n\ -\n\ -# encoding for Ruby 1.9\n\ -snippet enc\n\ - # encoding: utf-8\n\ -\n\ -# #!/usr/bin/env ruby\n\ -snippet #!\n\ - #!/usr/bin/env ruby\n\ - # encoding: utf-8\n\ -\n\ -# New Block\n\ -snippet =b\n\ - =begin rdoc\n\ - ${1}\n\ - =end\n\ -snippet y\n\ - :yields: ${1:arguments}\n\ -snippet rb\n\ - #!/usr/bin/env ruby -wKU\n\ -snippet beg\n\ - begin\n\ - ${3}\n\ - rescue ${1:Exception} => ${2:e}\n\ - end\n\ -\n\ -snippet req require\n\ - require \"${1}\"${2}\n\ -snippet #\n\ - # =>\n\ -snippet end\n\ - __END__\n\ -snippet case\n\ - case ${1:object}\n\ - when ${2:condition}\n\ - ${3}\n\ - end\n\ -snippet when\n\ - when ${1:condition}\n\ - ${2}\n\ -snippet def\n\ - def ${1:method_name}\n\ - ${2}\n\ - end\n\ -snippet deft\n\ - def test_${1:case_name}\n\ - ${2}\n\ - end\n\ -snippet if\n\ - if ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet ife\n\ - if ${1:condition}\n\ - ${2}\n\ - else\n\ - ${3}\n\ - end\n\ -snippet elsif\n\ - elsif ${1:condition}\n\ - ${2}\n\ -snippet unless\n\ - unless ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet while\n\ - while ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet for\n\ - for ${1:e} in ${2:c}\n\ - ${3}\n\ - end\n\ -snippet until\n\ - until ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet cla class .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet cla class .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - def initialize(${2:args})\n\ - ${3}\n\ - end\n\ - end\n\ -snippet cla class .. < ParentClass .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < ${2:ParentClass}\n\ - def initialize(${3:args})\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla ClassName = Struct .. do .. end\n\ - ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} = Struct.new(:${2:attr_names}) do\n\ - def ${3:method_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla class BlankSlate .. initialize .. end\n\ - class ${1:BlankSlate}\n\ - instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n\ - end\n\ -snippet cla class << self .. end\n\ - class << ${1:self}\n\ - ${2}\n\ - end\n\ -# class .. < DelegateClass .. initialize .. end\n\ -snippet cla-\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < DelegateClass(${2:ParentClass})\n\ - def initialize(${3:args})\n\ - super(${4:del_obj})\n\ -\n\ - ${5}\n\ - end\n\ - end\n\ -snippet mod module .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet mod module .. module_function .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module_function\n\ -\n\ - ${2}\n\ - end\n\ -snippet mod module .. ClassMethods .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module ClassMethods\n\ - ${2}\n\ - end\n\ -\n\ - module InstanceMethods\n\ -\n\ - end\n\ -\n\ - def self.included(receiver)\n\ - receiver.extend ClassMethods\n\ - receiver.send :include, InstanceMethods\n\ - end\n\ - end\n\ -# attr_reader\n\ -snippet r\n\ - attr_reader :${1:attr_names}\n\ -# attr_writer\n\ -snippet w\n\ - attr_writer :${1:attr_names}\n\ -# attr_accessor\n\ -snippet rw\n\ - attr_accessor :${1:attr_names}\n\ -snippet atp\n\ - attr_protected :${1:attr_names}\n\ -snippet ata\n\ - attr_accessible :${1:attr_names}\n\ -# include Enumerable\n\ -snippet Enum\n\ - include Enumerable\n\ -\n\ - def each(&block)\n\ - ${1}\n\ - end\n\ -# include Comparable\n\ -snippet Comp\n\ - include Comparable\n\ -\n\ - def <=>(other)\n\ - ${1}\n\ - end\n\ -# extend Forwardable\n\ -snippet Forw-\n\ - extend Forwardable\n\ -# def self\n\ -snippet defs\n\ - def self.${1:class_method_name}\n\ - ${2}\n\ - end\n\ -# def method_missing\n\ -snippet defmm\n\ - def method_missing(meth, *args, &blk)\n\ - ${1}\n\ - end\n\ -snippet defd\n\ - def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\n\ -snippet defds\n\ - def_delegators :${1:@del_obj}, :${2:del_methods}\n\ -snippet am\n\ - alias_method :${1:new_name}, :${2:old_name}\n\ -snippet app\n\ - if __FILE__ == $PROGRAM_NAME\n\ - ${1}\n\ - end\n\ -# usage_if()\n\ -snippet usai\n\ - if ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -# usage_unless()\n\ -snippet usau\n\ - unless ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -snippet array\n\ - Array.new(${1:10}) { |${2:i}| ${3} }\n\ -snippet hash\n\ - Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\n\ -snippet file File.foreach() { |line| .. }\n\ - File.foreach(${1:\"path/to/file\"}) { |${2:line}| ${3} }\n\ -snippet file File.read()\n\ - File.read(${1:\"path/to/file\"})${2}\n\ -snippet Dir Dir.global() { |file| .. }\n\ - Dir.glob(${1:\"dir/glob/*\"}) { |${2:file}| ${3} }\n\ -snippet Dir Dir[\"..\"]\n\ - Dir[${1:\"glob/**/*.rb\"}]${2}\n\ -snippet dir\n\ - Filename.dirname(__FILE__)\n\ -snippet deli\n\ - delete_if { |${1:e}| ${2} }\n\ -snippet fil\n\ - fill(${1:range}) { |${2:i}| ${3} }\n\ -# flatten_once()\n\ -snippet flao\n\ - inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\n\ -snippet zip\n\ - zip(${1:enums}) { |${2:row}| ${3} }\n\ -# downto(0) { |n| .. }\n\ -snippet dow\n\ - downto(${1:0}) { |${2:n}| ${3} }\n\ -snippet ste\n\ - step(${1:2}) { |${2:n}| ${3} }\n\ -snippet tim\n\ - times { |${1:n}| ${2} }\n\ -snippet upt\n\ - upto(${1:1.0/0.0}) { |${2:n}| ${3} }\n\ -snippet loo\n\ - loop { ${1} }\n\ -snippet ea\n\ - each { |${1:e}| ${2} }\n\ -snippet ead\n\ - each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet eab\n\ - each_byte { |${1:byte}| ${2} }\n\ -snippet eac- each_char { |chr| .. }\n\ - each_char { |${1:chr}| ${2} }\n\ -snippet eac- each_cons(..) { |group| .. }\n\ - each_cons(${1:2}) { |${2:group}| ${3} }\n\ -snippet eai\n\ - each_index { |${1:i}| ${2} }\n\ -snippet eaid\n\ - each_index do |${1:i}|\n\ - ${2}\n\ - end\n\ -snippet eak\n\ - each_key { |${1:key}| ${2} }\n\ -snippet eakd\n\ - each_key do |${1:key}|\n\ - ${2}\n\ - end\n\ -snippet eal\n\ - each_line { |${1:line}| ${2} }\n\ -snippet eald\n\ - each_line do |${1:line}|\n\ - ${2}\n\ - end\n\ -snippet eap\n\ - each_pair { |${1:name}, ${2:val}| ${3} }\n\ -snippet eapd\n\ - each_pair do |${1:name}, ${2:val}|\n\ - ${3}\n\ - end\n\ -snippet eas-\n\ - each_slice(${1:2}) { |${2:group}| ${3} }\n\ -snippet easd-\n\ - each_slice(${1:2}) do |${2:group}|\n\ - ${3}\n\ - end\n\ -snippet eav\n\ - each_value { |${1:val}| ${2} }\n\ -snippet eavd\n\ - each_value do |${1:val}|\n\ - ${2}\n\ - end\n\ -snippet eawi\n\ - each_with_index { |${1:e}, ${2:i}| ${3} }\n\ -snippet eawid\n\ - each_with_index do |${1:e},${2:i}|\n\ - ${3}\n\ - end\n\ -snippet reve\n\ - reverse_each { |${1:e}| ${2} }\n\ -snippet reved\n\ - reverse_each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet inj\n\ - inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\n\ -snippet injd\n\ - inject(${1:init}) do |${2:mem}, ${3:var}|\n\ - ${4}\n\ - end\n\ -snippet map\n\ - map { |${1:e}| ${2} }\n\ -snippet mapd\n\ - map do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet mapwi-\n\ - enum_with_index.map { |${1:e}, ${2:i}| ${3} }\n\ -snippet sor\n\ - sort { |a, b| ${1} }\n\ -snippet sorb\n\ - sort_by { |${1:e}| ${2} }\n\ -snippet ran\n\ - sort_by { rand }\n\ -snippet all\n\ - all? { |${1:e}| ${2} }\n\ -snippet any\n\ - any? { |${1:e}| ${2} }\n\ -snippet cl\n\ - classify { |${1:e}| ${2} }\n\ -snippet col\n\ - collect { |${1:e}| ${2} }\n\ -snippet cold\n\ - collect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet det\n\ - detect { |${1:e}| ${2} }\n\ -snippet detd\n\ - detect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fet\n\ - fetch(${1:name}) { |${2:key}| ${3} }\n\ -snippet fin\n\ - find { |${1:e}| ${2} }\n\ -snippet find\n\ - find do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fina\n\ - find_all { |${1:e}| ${2} }\n\ -snippet finad\n\ - find_all do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet gre\n\ - grep(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet sub\n\ - ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\n\ -snippet sca\n\ - scan(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet scad\n\ - scan(${1:/pattern/}) do |${2:match}|\n\ - ${3}\n\ - end\n\ -snippet max\n\ - max { |a, b| ${1} }\n\ -snippet min\n\ - min { |a, b| ${1} }\n\ -snippet par\n\ - partition { |${1:e}| ${2} }\n\ -snippet pard\n\ - partition do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet rej\n\ - reject { |${1:e}| ${2} }\n\ -snippet rejd\n\ - reject do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet sel\n\ - select { |${1:e}| ${2} }\n\ -snippet seld\n\ - select do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet lam\n\ - lambda { |${1:args}| ${2} }\n\ -snippet doo\n\ - do\n\ - ${1}\n\ - end\n\ -snippet dov\n\ - do |${1:variable}|\n\ - ${2}\n\ - end\n\ -snippet :\n\ - :${1:key} => ${2:\"value\"}${3}\n\ -snippet ope\n\ - open(${1:\"path/or/url/or/pipe\"}, \"${2:w}\") { |${3:io}| ${4} }\n\ -# path_from_here()\n\ -snippet fpath\n\ - File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n\ -# unix_filter {}\n\ -snippet unif\n\ - ARGF.each_line${1} do |${2:line}|\n\ - ${3}\n\ - end\n\ -# option_parse {}\n\ -snippet optp\n\ - require \"optparse\"\n\ -\n\ - options = {${1:default => \"args\"}}\n\ -\n\ - ARGV.options do |opts|\n\ - opts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}\n\ -snippet opt\n\ - opts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n\ - \"${4:Option description.}\") do |${5:opt}|\n\ - ${6}\n\ - end\n\ -snippet tc\n\ - require \"test/unit\"\n\ -\n\ - require \"${1:library_file_name}\"\n\ -\n\ - class Test${2:$1} < Test::Unit::TestCase\n\ - def test_${3:case_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet ts\n\ - require \"test/unit\"\n\ -\n\ - require \"tc_${1:test_case_file}\"\n\ - require \"tc_${2:test_case_file}\"${3}\n\ -snippet as\n\ - assert ${1:test}, \"${2:Failure message.}\"${3}\n\ -snippet ase\n\ - assert_equal ${1:expected}, ${2:actual}${3}\n\ -snippet asne\n\ - assert_not_equal ${1:unexpected}, ${2:actual}${3}\n\ -snippet asid\n\ - assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\n\ -snippet asio\n\ - assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\n\ -snippet asko\n\ - assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\n\ -snippet asn\n\ - assert_nil ${1:instance}${2}\n\ -snippet asnn\n\ - assert_not_nil ${1:instance}${2}\n\ -snippet asm\n\ - assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\n\ -snippet asnm\n\ - assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\n\ -snippet aso\n\ - assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\n\ -snippet asr\n\ - assert_raise ${1:Exception} { ${2} }\n\ -snippet asrd\n\ - assert_raise ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asnr\n\ - assert_nothing_raised ${1:Exception} { ${2} }\n\ -snippet asnrd\n\ - assert_nothing_raised ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asrt\n\ - assert_respond_to ${1:object}, :${2:method}${3}\n\ -snippet ass assert_same(..)\n\ - assert_same ${1:expected}, ${2:actual}${3}\n\ -snippet ass assert_send(..)\n\ - assert_send [${1:object}, :${2:message}, ${3:args}]${4}\n\ -snippet asns\n\ - assert_not_same ${1:unexpected}, ${2:actual}${3}\n\ -snippet ast\n\ - assert_throws :${1:expected} { ${2} }\n\ -snippet astd\n\ - assert_throws :${1:expected} do\n\ - ${2}\n\ - end\n\ -snippet asnt\n\ - assert_nothing_thrown { ${1} }\n\ -snippet asntd\n\ - assert_nothing_thrown do\n\ - ${1}\n\ - end\n\ -snippet fl\n\ - flunk \"${1:Failure message.}\"${2}\n\ -# Benchmark.bmbm do .. end\n\ -snippet bm-\n\ - TESTS = ${1:10_000}\n\ - Benchmark.bmbm do |results|\n\ - ${2}\n\ - end\n\ -snippet rep\n\ - results.report(\"${1:name}:\") { TESTS.times { ${2} }}\n\ -# Marshal.dump(.., file)\n\ -snippet Md\n\ - File.open(${1:\"path/to/file.dump\"}, \"wb\") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n\ -# Mashal.load(obj)\n\ -snippet Ml\n\ - File.open(${1:\"path/to/file.dump\"}, \"rb\") { |${2:file}| Marshal.load($2) }${3}\n\ -# deep_copy(..)\n\ -snippet deec\n\ - Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\n\ -snippet Pn-\n\ - PStore.new(${1:\"file_name.pstore\"})${2}\n\ -snippet tra\n\ - transaction(${1:true}) { ${2} }\n\ -# xmlread(..)\n\ -snippet xml-\n\ - REXML::Document.new(File.read(${1:\"path/to/file\"}))${2}\n\ -# xpath(..) { .. }\n\ -snippet xpa\n\ - elements.each(${1:\"//Xpath\"}) do |${2:node}|\n\ - ${3}\n\ - end\n\ -# class_from_name()\n\ -snippet clafn\n\ - split(\"::\").inject(Object) { |par, const| par.const_get(const) }\n\ -# singleton_class()\n\ -snippet sinc\n\ - class << self; self end\n\ -snippet nam\n\ - namespace :${1:`Filename()`} do\n\ - ${2}\n\ - end\n\ -snippet tas\n\ - desc \"${1:Task description}\"\n\ - task :${2:task_name => [:dependent, :tasks]} do\n\ - ${3}\n\ - end\n\ -# block\n\ -snippet b\n\ - { |${1:var}| ${2} }\n\ -snippet begin\n\ - begin\n\ - raise 'A test exception.'\n\ - rescue Exception => e\n\ - puts e.message\n\ - puts e.backtrace.inspect\n\ - else\n\ - # other exception\n\ - ensure\n\ - # always executed\n\ - end\n\ -\n\ -#debugging\n\ -snippet debug\n\ - require 'ruby-debug'; debugger; true;\n\ -snippet pry\n\ - require 'pry'; binding.pry\n\ -\n\ -#############################################\n\ -# Rails snippets - for pure Ruby, see above #\n\ -#############################################\n\ -snippet art\n\ - assert_redirected_to ${1::action => \"${2:index}\"}\n\ -snippet artnp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\n\ -snippet artnpp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\n\ -snippet artp\n\ - assert_redirected_to ${1:model}_path(${2:@$1})\n\ -snippet artpp\n\ - assert_redirected_to ${1:model}s_path\n\ -snippet asd\n\ - assert_difference \"${1:Model}.${2:count}\", $1 do\n\ - ${3}\n\ - end\n\ -snippet asnd\n\ - assert_no_difference \"${1:Model}.${2:count}\" do\n\ - ${3}\n\ - end\n\ -snippet asre\n\ - assert_response :${1:success}, @response.body${2}\n\ -snippet asrj\n\ - assert_rjs :${1:replace}, \"${2:dom id}\"\n\ -snippet ass assert_select(..)\n\ - assert_select '${1:path}', :${2:text} => '${3:inner_html' ${4:do}\n\ -snippet bf\n\ - before_filter :${1:method}\n\ -snippet bt\n\ - belongs_to :${1:association}\n\ -snippet crw\n\ - cattr_accessor :${1:attr_names}\n\ -snippet defcreate\n\ - def create\n\ - @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.save\n\ - flash[:notice] = '$2 was successfully created.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n\ - else\n\ - wants.html { render :action => \"new\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet defdestroy\n\ - def destroy\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - @$1.destroy\n\ -\n\ - respond_to do |wants|\n\ - wants.html { redirect_to($1s_url) }\n\ - wants.xml { head :ok }\n\ - end\n\ - end${3}\n\ -snippet defedit\n\ - def edit\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - end\n\ -snippet defindex\n\ - def index\n\ - @${1:model_class_name} = ${2:ModelClassName}.all\n\ -\n\ - respond_to do |wants|\n\ - wants.html # index.html.erb\n\ - wants.xml { render :xml => @$1s }\n\ - end\n\ - end${3}\n\ -snippet defnew\n\ - def new\n\ - @${1:model_class_name} = ${2:ModelClassName}.new\n\ -\n\ - respond_to do |wants|\n\ - wants.html # new.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defshow\n\ - def show\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - wants.html # show.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defupdate\n\ - def update\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.update_attributes(params[:$1])\n\ - flash[:notice] = '$2 was successfully updated.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { head :ok }\n\ - else\n\ - wants.html { render :action => \"edit\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet flash\n\ - flash[:${1:notice}] = \"${2}\"\n\ -snippet habtm\n\ - has_and_belongs_to_many :${1:object}, :join_table => \"${2:table_name}\", :foreign_key => \"${3}_id\"${4}\n\ -snippet hm\n\ - has_many :${1:object}\n\ -snippet hmd\n\ - has_many :${1:other}s, :class_name => \"${2:$1}\", :foreign_key => \"${3:$1}_id\", :dependent => :destroy${4}\n\ -snippet hmt\n\ - has_many :${1:object}, :through => :${2:object}\n\ -snippet ho\n\ - has_one :${1:object}\n\ -snippet i18\n\ - I18n.t('${1:type.key}')${2}\n\ -snippet ist\n\ - <%= image_submit_tag(\"${1:agree.png}\", :id => \"${2:id}\"${3} %>\n\ -snippet log\n\ - Rails.logger.${1:debug} ${2}\n\ -snippet log2\n\ - RAILS_DEFAULT_LOGGER.${1:debug} ${2}\n\ -snippet logd\n\ - logger.debug { \"${1:message}\" }${2}\n\ -snippet loge\n\ - logger.error { \"${1:message}\" }${2}\n\ -snippet logf\n\ - logger.fatal { \"${1:message}\" }${2}\n\ -snippet logi\n\ - logger.info { \"${1:message}\" }${2}\n\ -snippet logw\n\ - logger.warn { \"${1:message}\" }${2}\n\ -snippet mapc\n\ - ${1:map}.${2:connect} '${3:controller/:action/:id}'\n\ -snippet mapca\n\ - ${1:map}.catch_all \"*${2:anything}\", :controller => \"${3:default}\", :action => \"${4:error}\"${5}\n\ -snippet mapr\n\ - ${1:map}.resource :${2:resource}\n\ -snippet maprs\n\ - ${1:map}.resources :${2:resource}\n\ -snippet mapwo\n\ - ${1:map}.with_options :${2:controller} => '${3:thing}' do |$3|\n\ - ${4}\n\ - end\n\ -snippet mbs\n\ - before_save :${1:method}\n\ -snippet mcht\n\ - change_table :${1:table_name} do |t|\n\ - ${2}\n\ - end\n\ -snippet mp\n\ - map(&:${1:id})\n\ -snippet mrw\n\ - mattr_accessor :${1:attr_names}\n\ -snippet oa\n\ - order(\"${1:field}\")\n\ -snippet od\n\ - order(\"${1:field} DESC\")\n\ -snippet pa\n\ - params[:${1:id}]${2}\n\ -snippet ra\n\ - render :action => \"${1:action}\"\n\ -snippet ral\n\ - render :action => \"${1:action}\", :layout => \"${2:layoutname}\"\n\ -snippet rest\n\ - respond_to do |wants|\n\ - wants.${1:html} { ${2} }\n\ - end\n\ -snippet rf\n\ - render :file => \"${1:filepath}\"\n\ -snippet rfu\n\ - render :file => \"${1:filepath}\", :use_full_path => ${2:false}\n\ -snippet ri\n\ - render :inline => \"${1:<%= 'hello' %>}\"\n\ -snippet ril\n\ - render :inline => \"${1:<%= 'hello' %>}\", :locals => { ${2::name} => \"${3:value}\"${4} }\n\ -snippet rit\n\ - render :inline => \"${1:<%= 'hello' %>}\", :type => ${2::rxml}\n\ -snippet rjson\n\ - render :json => ${1:text to render}\n\ -snippet rl\n\ - render :layout => \"${1:layoutname}\"\n\ -snippet rn\n\ - render :nothing => ${1:true}\n\ -snippet rns\n\ - render :nothing => ${1:true}, :status => ${2:401}\n\ -snippet rp\n\ - render :partial => \"${1:item}\"\n\ -snippet rpc\n\ - render :partial => \"${1:item}\", :collection => ${2:@$1s}\n\ -snippet rpl\n\ - render :partial => \"${1:item}\", :locals => { :${2:$1} => ${3:@$1}\n\ -snippet rpo\n\ - render :partial => \"${1:item}\", :object => ${2:@$1}\n\ -snippet rps\n\ - render :partial => \"${1:item}\", :status => ${2:500}\n\ -snippet rt\n\ - render :text => \"${1:text to render}\"\n\ -snippet rtl\n\ - render :text => \"${1:text to render}\", :layout => \"${2:layoutname}\"\n\ -snippet rtlt\n\ - render :text => \"${1:text to render}\", :layout => ${2:true}\n\ -snippet rts\n\ - render :text => \"${1:text to render}\", :status => ${2:401}\n\ -snippet ru\n\ - render :update do |${1:page}|\n\ - $1.${2}\n\ - end\n\ -snippet rxml\n\ - render :xml => ${1:text to render}\n\ -snippet sc\n\ - scope :${1:name}, :where(:@${2:field} => ${3:value})\n\ -snippet sl\n\ - scope :${1:name}, lambda do |${2:value}|\n\ - where(\"${3:field = ?}\", ${4:bind var})\n\ - end\n\ -snippet sha1\n\ - Digest::SHA1.hexdigest(${1:string})\n\ -snippet sweeper\n\ - class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n\ - observe $1\n\ -\n\ - def after_save(${2:model_class_name})\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def after_destroy($2)\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def expire_cache($2)\n\ - expire_page\n\ - end\n\ - end\n\ -snippet tcb\n\ - t.boolean :${1:title}\n\ - ${2}\n\ -snippet tcbi\n\ - t.binary :${1:title}, :limit => ${2:2}.megabytes\n\ - ${3}\n\ -snippet tcd\n\ - t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n\ - ${4}\n\ -snippet tcda\n\ - t.date :${1:title}\n\ - ${2}\n\ -snippet tcdt\n\ - t.datetime :${1:title}\n\ - ${2}\n\ -snippet tcf\n\ - t.float :${1:title}\n\ - ${2}\n\ -snippet tch\n\ - t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n\ - ${5}\n\ -snippet tci\n\ - t.integer :${1:title}\n\ - ${2}\n\ -snippet tcl\n\ - t.integer :lock_version, :null => false, :default => 0\n\ - ${1}\n\ -snippet tcr\n\ - t.references :${1:taggable}, :polymorphic => { :default => '${2:Photo}' }\n\ - ${3}\n\ -snippet tcs\n\ - t.string :${1:title}\n\ - ${2}\n\ -snippet tct\n\ - t.text :${1:title}\n\ - ${2}\n\ -snippet tcti\n\ - t.time :${1:title}\n\ - ${2}\n\ -snippet tcts\n\ - t.timestamp :${1:title}\n\ - ${2}\n\ -snippet tctss\n\ - t.timestamps\n\ - ${1}\n\ -snippet va\n\ - validates_associated :${1:attribute}\n\ -snippet vao\n\ - validates_acceptance_of :${1:terms}\n\ -snippet vc\n\ - validates_confirmation_of :${1:attribute}\n\ -snippet ve\n\ - validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\n\ -snippet vf\n\ - validates_format_of :${1:attribute}, :with => /${2:regex}/\n\ -snippet vi\n\ - validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\n\ -snippet vl\n\ - validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\n\ -snippet vn\n\ - validates_numericality_of :${1:attribute}\n\ -snippet vpo\n\ - validates_presence_of :${1:attribute}\n\ -snippet vu\n\ - validates_uniqueness_of :${1:attribute}\n\ -snippet wants\n\ - wants.${1:js|xml|html} { ${2} }\n\ -snippet wc\n\ - where(${1:\"conditions\"}${2:, bind_var})\n\ -snippet wh\n\ - where(${1:field} => ${2:value})\n\ -snippet xdelete\n\ - xhr :delete, :${1:destroy}, :id => ${2:1}${3}\n\ -snippet xget\n\ - xhr :get, :${1:show}, :id => ${2:1}${3}\n\ -snippet xpost\n\ - xhr :post, :${1:create}, :${2:object} => { ${3} }\n\ -snippet xput\n\ - xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\n\ -snippet test\n\ - test \"should ${1:do something}\" do\n\ - ${2}\n\ - end\n\ -#migrations\n\ -snippet mac\n\ - add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\n\ -snippet mrc\n\ - remove_column :${1:table_name}, :${2:column_name}\n\ -snippet mrnc\n\ - rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\n\ -snippet mcc\n\ - change_column :${1:table}, :${2:column}, :${3:type}\n\ -snippet mccc\n\ - t.column :${1:title}, :${2:string}\n\ -snippet mct\n\ - create_table :${1:table_name} do |t|\n\ - t.column :${2:name}, :${3:type}\n\ - end\n\ -snippet migration\n\ - class ${1:class_name} < ActiveRecord::Migration\n\ - def self.up\n\ - ${2}\n\ - end\n\ -\n\ - def self.down\n\ - end\n\ - end\n\ -\n\ -snippet trc\n\ - t.remove :${1:column}\n\ -snippet tre\n\ - t.rename :${1:old_column_name}, :${2:new_column_name}\n\ - ${3}\n\ -snippet tref\n\ - t.references :${1:model}\n\ -\n\ -#rspec\n\ -snippet it\n\ - it \"${1:spec_name}\" do\n\ - ${2}\n\ - end\n\ -snippet itp\n\ - it \"${1:spec_name}\"\n\ - ${2}\n\ -snippet desc\n\ - describe ${1:class_name} do\n\ - ${2}\n\ - end\n\ -snippet cont\n\ - context \"${1:message}\" do\n\ - ${2}\n\ - end\n\ -snippet bef\n\ - before :${1:each} do\n\ - ${2}\n\ - end\n\ -snippet aft\n\ - after :${1:each} do\n\ - ${2}\n\ - end\n\ -"; -exports.scope = "ruby"; - -}); (function() { - ace.require(["ace/snippets/ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/rust.js b/src-noconflict/snippets/rust.js deleted file mode 100644 index 6689d6c..0000000 --- a/src-noconflict/snippets/rust.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/rust"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sass.js b/src-noconflict/snippets/sass.js deleted file mode 100644 index 138dbd1..0000000 --- a/src-noconflict/snippets/sass.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/sass"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/scad.js b/src-noconflict/snippets/scad.js deleted file mode 100644 index 27df173..0000000 --- a/src-noconflict/snippets/scad.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/scad"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/scala.js b/src-noconflict/snippets/scala.js deleted file mode 100644 index fd83bde..0000000 --- a/src-noconflict/snippets/scala.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/scala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/scheme.js b/src-noconflict/snippets/scheme.js deleted file mode 100644 index e5e1d7f..0000000 --- a/src-noconflict/snippets/scheme.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/scheme"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/scrypt.js b/src-noconflict/snippets/scrypt.js deleted file mode 100644 index a67364d..0000000 --- a/src-noconflict/snippets/scrypt.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/scrypt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/scss.js b/src-noconflict/snippets/scss.js deleted file mode 100644 index 4267bd6..0000000 --- a/src-noconflict/snippets/scss.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/scss"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sh.js b/src-noconflict/snippets/sh.js deleted file mode 100644 index c17caab..0000000 --- a/src-noconflict/snippets/sh.js +++ /dev/null @@ -1,97 +0,0 @@ -ace.define("ace/snippets/sh",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\n\ -snippet #!\n\ - #!/usr/bin/env bash\n\ - \n\ -snippet if\n\ - if [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ - fi\n\ -snippet elif\n\ - elif [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ -snippet for\n\ - for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n\ - ${3:#statements}\n\ - done\n\ -snippet fori\n\ - for ${1:needle} in ${2:haystack} ; do\n\ - ${3:#statements}\n\ - done\n\ -snippet wh\n\ - while [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet until\n\ - until [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet case\n\ - case ${1:word} in\n\ - ${2:pattern})\n\ - ${3};;\n\ - esac\n\ -snippet go \n\ - while getopts '${1:o}' ${2:opts} \n\ - do \n\ - case $$2 in\n\ - ${3:o0})\n\ - ${4:#staments};;\n\ - esac\n\ - done\n\ -# Set SCRIPT_DIR variable to directory script is located.\n\ -snippet sdir\n\ - SCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\ -# getopt\n\ -snippet getopt\n\ - __ScriptVersion=\"${1:version}\"\n\ -\n\ - #=== FUNCTION ================================================================\n\ - # NAME: usage\n\ - # DESCRIPTION: Display usage information.\n\ - #===============================================================================\n\ - function usage ()\n\ - {\n\ - cat <<- EOT\n\ -\n\ - Usage : $${0:0} [options] [--] \n\ -\n\ - Options: \n\ - -h|help Display this message\n\ - -v|version Display script version\n\ -\n\ - EOT\n\ - } # ---------- end of function usage ----------\n\ -\n\ - #-----------------------------------------------------------------------\n\ - # Handle command line arguments\n\ - #-----------------------------------------------------------------------\n\ -\n\ - while getopts \":hv\" opt\n\ - do\n\ - case $opt in\n\ -\n\ - h|help ) usage; exit 0 ;;\n\ -\n\ - v|version ) echo \"$${0:0} -- Version $__ScriptVersion\"; exit 0 ;;\n\ -\n\ - \\? ) echo -e \"\\n Option does not exist : $OPTARG\\n\"\n\ - usage; exit 1 ;;\n\ -\n\ - esac # --- end of case ---\n\ - done\n\ - shift $(($OPTIND-1))\n\ -\n\ -"; -exports.scope = "sh"; - -}); (function() { - ace.require(["ace/snippets/sh"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sjs.js b/src-noconflict/snippets/sjs.js deleted file mode 100644 index 0835787..0000000 --- a/src-noconflict/snippets/sjs.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/sjs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/slim.js b/src-noconflict/snippets/slim.js deleted file mode 100644 index 8edba80..0000000 --- a/src-noconflict/snippets/slim.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/slim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/smarty.js b/src-noconflict/snippets/smarty.js deleted file mode 100644 index fe06e0f..0000000 --- a/src-noconflict/snippets/smarty.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/smarty"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/smithy.js b/src-noconflict/snippets/smithy.js deleted file mode 100644 index 6a8fcae..0000000 --- a/src-noconflict/snippets/smithy.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/smithy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/snippets.js b/src-noconflict/snippets/snippets.js deleted file mode 100644 index cc39c82..0000000 --- a/src-noconflict/snippets/snippets.js +++ /dev/null @@ -1,23 +0,0 @@ -ace.define("ace/snippets/snippets",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# snippets for making snippets :)\n\ -snippet snip\n\ - snippet ${1:trigger}\n\ - ${2}\n\ -snippet msnip\n\ - snippet ${1:trigger} ${2:description}\n\ - ${3}\n\ -snippet v\n\ - {VISUAL}\n\ -"; -exports.scope = "snippets"; - -}); (function() { - ace.require(["ace/snippets/snippets"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/soy_template.js b/src-noconflict/snippets/soy_template.js deleted file mode 100644 index 7d48d60..0000000 --- a/src-noconflict/snippets/soy_template.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/soy_template"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/space.js b/src-noconflict/snippets/space.js deleted file mode 100644 index 3492122..0000000 --- a/src-noconflict/snippets/space.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/space"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sparql.js b/src-noconflict/snippets/sparql.js deleted file mode 100644 index 29ac73e..0000000 --- a/src-noconflict/snippets/sparql.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/sparql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sql.js b/src-noconflict/snippets/sql.js deleted file mode 100644 index fe0217d..0000000 --- a/src-noconflict/snippets/sql.js +++ /dev/null @@ -1,40 +0,0 @@ -ace.define("ace/snippets/sql",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet tbl\n\ - create table ${1:table} (\n\ - ${2:columns}\n\ - );\n\ -snippet col\n\ - ${1:name} ${2:type} ${3:default ''} ${4:not null}\n\ -snippet ccol\n\ - ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\n\ -snippet ncol\n\ - ${1:name} number ${3:default 0} ${4:not null}\n\ -snippet dcol\n\ - ${1:name} date ${3:default sysdate} ${4:not null}\n\ -snippet ind\n\ - create index ${3:$1_$2} on ${1:table}(${2:column});\n\ -snippet uind\n\ - create unique index ${1:name} on ${2:table}(${3:column});\n\ -snippet tblcom\n\ - comment on table ${1:table} is '${2:comment}';\n\ -snippet colcom\n\ - comment on column ${1:table}.${2:column} is '${3:comment}';\n\ -snippet addcol\n\ - alter table ${1:table} add (${2:column} ${3:type});\n\ -snippet seq\n\ - create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\n\ -snippet s*\n\ - select * from ${1:table}\n\ -"; -exports.scope = "sql"; - -}); (function() { - ace.require(["ace/snippets/sql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/sqlserver.js b/src-noconflict/snippets/sqlserver.js deleted file mode 100644 index 65b3675..0000000 --- a/src-noconflict/snippets/sqlserver.js +++ /dev/null @@ -1,83 +0,0 @@ -ace.define("ace/snippets/sqlserver",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# ISNULL\n\ -snippet isnull\n\ - ISNULL(${1:check_expression}, ${2:replacement_value})\n\ -# FORMAT\n\ -snippet format\n\ - FORMAT(${1:value}, ${2:format})\n\ -# CAST\n\ -snippet cast\n\ - CAST(${1:expression} AS ${2:data_type})\n\ -# CONVERT\n\ -snippet convert\n\ - CONVERT(${1:data_type}, ${2:expression})\n\ -# DATEPART\n\ -snippet datepart\n\ - DATEPART(${1:datepart}, ${2:date})\n\ -# DATEDIFF\n\ -snippet datediff\n\ - DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})\n\ -# DATEADD\n\ -snippet dateadd\n\ - DATEADD(${1:datepart}, ${2:number}, ${3:date})\n\ -# DATEFROMPARTS \n\ -snippet datefromparts\n\ - DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})\n\ -# OBJECT_DEFINITION\n\ -snippet objectdef\n\ - SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))\n\ -# STUFF XML\n\ -snippet stuffxml\n\ - STUFF((SELECT ', ' + ${1:ColumnName}\n\ - FROM ${2:TableName}\n\ - WHERE ${3:WhereClause}\n\ - FOR XML PATH('')), 1, 1, '') AS ${4:Alias}\n\ - ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}\n\ -# Create Procedure\n\ -snippet createproc\n\ - -- =============================================\n\ - -- Author: ${1:Author}\n\ - -- Create date: ${2:Date}\n\ - -- Description: ${3:Description}\n\ - -- =============================================\n\ - CREATE PROCEDURE ${4:Procedure_Name}\n\ - ${5:/*Add the parameters for the stored procedure here*/}\n\ - AS\n\ - BEGIN\n\ - -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.\n\ - SET NOCOUNT ON;\n\ - \n\ - ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ - \n\ - END\n\ - GO\n\ -# Create Scalar Function\n\ -snippet createfn\n\ - -- =============================================\n\ - -- Author: ${1:Author}\n\ - -- Create date: ${2:Date}\n\ - -- Description: ${3:Description}\n\ - -- =============================================\n\ - CREATE FUNCTION ${4:Scalar_Function_Name}\n\ - -- Add the parameters for the function here\n\ - RETURNS ${5:Function_Data_Type}\n\ - AS\n\ - BEGIN\n\ - DECLARE @Result ${5:Function_Data_Type}\n\ - \n\ - ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ - \n\ - END\n\ - GO"; -exports.scope = "sqlserver"; - -}); (function() { - ace.require(["ace/snippets/sqlserver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/stylus.js b/src-noconflict/snippets/stylus.js deleted file mode 100644 index 0f157fb..0000000 --- a/src-noconflict/snippets/stylus.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/stylus"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/svg.js b/src-noconflict/snippets/svg.js deleted file mode 100644 index 0c014ed..0000000 --- a/src-noconflict/snippets/svg.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/svg"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/swift.js b/src-noconflict/snippets/swift.js deleted file mode 100644 index 6c1d60d..0000000 --- a/src-noconflict/snippets/swift.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/swift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/tcl.js b/src-noconflict/snippets/tcl.js deleted file mode 100644 index 08e7bc1..0000000 --- a/src-noconflict/snippets/tcl.js +++ /dev/null @@ -1,106 +0,0 @@ -ace.define("ace/snippets/tcl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# #!/usr/bin/env tclsh\n\ -snippet #!\n\ - #!/usr/bin/env tclsh\n\ - \n\ -# Process\n\ -snippet pro\n\ - proc ${1:function_name} {${2:args}} {\n\ - ${3:#body ...}\n\ - }\n\ -#xif\n\ -snippet xif\n\ - ${1:expr}? ${2:true} : ${3:false}\n\ -# Conditional\n\ -snippet if\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# Conditional if..else\n\ -snippet ife\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } else {\n\ - ${3:# else...}\n\ - }\n\ -# Conditional if..elsif..else\n\ -snippet ifee\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } elseif {${3}} {\n\ - ${4:# elsif...}\n\ - } else {\n\ - ${5:# else...}\n\ - }\n\ -# If catch then\n\ -snippet ifc\n\ - if { [catch {${1:#do something...}} ${2:err}] } {\n\ - ${3:# handle failure...}\n\ - }\n\ -# Catch\n\ -snippet catch\n\ - catch {${1}} ${2:err} ${3:options}\n\ -# While Loop\n\ -snippet wh\n\ - while {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# For Loop\n\ -snippet for\n\ - for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\ - ${4:# body...}\n\ - }\n\ -# Foreach Loop\n\ -snippet fore\n\ - foreach ${1:x} {${2:#list}} {\n\ - ${3:# body...}\n\ - }\n\ -# after ms script...\n\ -snippet af\n\ - after ${1:ms} ${2:#do something}\n\ -# after cancel id\n\ -snippet afc\n\ - after cancel ${1:id or script}\n\ -# after idle\n\ -snippet afi\n\ - after idle ${1:script}\n\ -# after info id\n\ -snippet afin\n\ - after info ${1:id}\n\ -# Expr\n\ -snippet exp\n\ - expr {${1:#expression here}}\n\ -# Switch\n\ -snippet sw\n\ - switch ${1:var} {\n\ - ${3:pattern 1} {\n\ - ${4:#do something}\n\ - }\n\ - default {\n\ - ${2:#do something}\n\ - }\n\ - }\n\ -# Case\n\ -snippet ca\n\ - ${1:pattern} {\n\ - ${2:#do something}\n\ - }${3}\n\ -# Namespace eval\n\ -snippet ns\n\ - namespace eval ${1:path} {${2:#script...}}\n\ -# Namespace current\n\ -snippet nsc\n\ - namespace current\n\ -"; -exports.scope = "tcl"; - -}); (function() { - ace.require(["ace/snippets/tcl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/terraform.js b/src-noconflict/snippets/terraform.js deleted file mode 100644 index 02e4cc6..0000000 --- a/src-noconflict/snippets/terraform.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/terraform"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/tex.js b/src-noconflict/snippets/tex.js deleted file mode 100644 index a5c6117..0000000 --- a/src-noconflict/snippets/tex.js +++ /dev/null @@ -1,204 +0,0 @@ -ace.define("ace/snippets/tex",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "#PREAMBLE\n\ -#newcommand\n\ -snippet nc\n\ - \\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n\ -#usepackage\n\ -snippet up\n\ - \\usepackage[${1:[options}]{${2:package}}\n\ -#newunicodechar\n\ -snippet nuc\n\ - \\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n\ -#DeclareMathOperator\n\ -snippet dmo\n\ - \\DeclareMathOperator{${1}}{${2}}\n\ -\n\ -#DOCUMENT\n\ -# \\begin{}...\\end{}\n\ -snippet begin\n\ - \\begin{${1:env}}\n\ - ${2}\n\ - \\end{$1}\n\ -# Tabular\n\ -snippet tab\n\ - \\begin{${1:tabular}}{${2:c}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet thm\n\ - \\begin[${1:author}]{${2:thm}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet center\n\ - \\begin{center}\n\ - ${1}\n\ - \\end{center}\n\ -# Align(ed)\n\ -snippet ali\n\ - \\begin{align${1:ed}}\n\ - ${2}\n\ - \\end{align$1}\n\ -# Gather(ed)\n\ -snippet gat\n\ - \\begin{gather${1:ed}}\n\ - ${2}\n\ - \\end{gather$1}\n\ -# Equation\n\ -snippet eq\n\ - \\begin{equation}\n\ - ${1}\n\ - \\end{equation}\n\ -# Equation\n\ -snippet eq*\n\ - \\begin{equation*}\n\ - ${1}\n\ - \\end{equation*}\n\ -# Unnumbered Equation\n\ -snippet \\\n\ - \\[\n\ - ${1}\n\ - \\]\n\ -# Enumerate\n\ -snippet enum\n\ - \\begin{enumerate}\n\ - \\item ${1}\n\ - \\end{enumerate}\n\ -# Itemize\n\ -snippet itemize\n\ - \\begin{itemize}\n\ - \\item ${1}\n\ - \\end{itemize}\n\ -# Description\n\ -snippet desc\n\ - \\begin{description}\n\ - \\item[${1}] ${2}\n\ - \\end{description}\n\ -# Matrix\n\ -snippet mat\n\ - \\begin{${1:p/b/v/V/B/small}matrix}\n\ - ${2}\n\ - \\end{$1matrix}\n\ -# Cases\n\ -snippet cas\n\ - \\begin{cases}\n\ - ${1:equation}, &\\text{ if }${2:case}\\\\\n\ - ${3}\n\ - \\end{cases}\n\ -# Split\n\ -snippet spl\n\ - \\begin{split}\n\ - ${1}\n\ - \\end{split}\n\ -# Part\n\ -snippet part\n\ - \\part{${1:part name}} % (fold)\n\ - \\label{prt:${2:$1}}\n\ - ${3}\n\ - % part $2 (end)\n\ -# Chapter\n\ -snippet cha\n\ - \\chapter{${1:chapter name}}\n\ - \\label{cha:${2:$1}}\n\ - ${3}\n\ -# Section\n\ -snippet sec\n\ - \\section{${1:section name}}\n\ - \\label{sec:${2:$1}}\n\ - ${3}\n\ -# Sub Section\n\ -snippet sub\n\ - \\subsection{${1:subsection name}}\n\ - \\label{sub:${2:$1}}\n\ - ${3}\n\ -# Sub Sub Section\n\ -snippet subs\n\ - \\subsubsection{${1:subsubsection name}}\n\ - \\label{ssub:${2:$1}}\n\ - ${3}\n\ -# Paragraph\n\ -snippet par\n\ - \\paragraph{${1:paragraph name}}\n\ - \\label{par:${2:$1}}\n\ - ${3}\n\ -# Sub Paragraph\n\ -snippet subp\n\ - \\subparagraph{${1:subparagraph name}}\n\ - \\label{subp:${2:$1}}\n\ - ${3}\n\ -#References\n\ -snippet itd\n\ - \\item[${1:description}] ${2:item}\n\ -snippet figure\n\ - ${1:Figure}~\\ref{${2:fig:}}${3}\n\ -snippet table\n\ - ${1:Table}~\\ref{${2:tab:}}${3}\n\ -snippet listing\n\ - ${1:Listing}~\\ref{${2:list}}${3}\n\ -snippet section\n\ - ${1:Section}~\\ref{${2:sec:}}${3}\n\ -snippet page\n\ - ${1:page}~\\pageref{${2}}${3}\n\ -snippet index\n\ - \\index{${1:index}}${2}\n\ -#Citations\n\ -snippet cite\n\ - \\cite[${1}]{${2}}${3}\n\ -snippet fcite\n\ - \\footcite[${1}]{${2}}${3}\n\ -#Formating text: italic, bold, underline, small capital, emphase ..\n\ -snippet it\n\ - \\textit{${1:text}}\n\ -snippet bf\n\ - \\textbf{${1:text}}\n\ -snippet under\n\ - \\underline{${1:text}}\n\ -snippet emp\n\ - \\emph{${1:text}}\n\ -snippet sc\n\ - \\textsc{${1:text}}\n\ -#Choosing font\n\ -snippet sf\n\ - \\textsf{${1:text}}\n\ -snippet rm\n\ - \\textrm{${1:text}}\n\ -snippet tt\n\ - \\texttt{${1:text}}\n\ -#misc\n\ -snippet ft\n\ - \\footnote{${1:text}}\n\ -snippet fig\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\includegraphics[scale=${1}]{Figures/${2}}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -snippet tikz\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\begin{tikzpicture}[scale=${1:1}]\n\ - ${2}\n\ - \\end{tikzpicture}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -#math\n\ -snippet stackrel\n\ - \\stackrel{${1:above}}{${2:below}} ${3}\n\ -snippet frac\n\ - \\frac{${1:num}}{${2:denom}}\n\ -snippet sum\n\ - \\sum^{${1:n}}_{${2:i=1}}{${3}}"; -exports.scope = "tex"; - -}); (function() { - ace.require(["ace/snippets/tex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/text.js b/src-noconflict/snippets/text.js deleted file mode 100644 index ea8b0e6..0000000 --- a/src-noconflict/snippets/text.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/textile.js b/src-noconflict/snippets/textile.js deleted file mode 100644 index 9db81ad..0000000 --- a/src-noconflict/snippets/textile.js +++ /dev/null @@ -1,44 +0,0 @@ -ace.define("ace/snippets/textile",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Jekyll post header\n\ -snippet header\n\ - ---\n\ - title: ${1:title}\n\ - layout: post\n\ - date: ${2:date} ${3:hour:minute:second} -05:00\n\ - ---\n\ -\n\ -# Image\n\ -snippet img\n\ - !${1:url}(${2:title}):${3:link}!\n\ -\n\ -# Table\n\ -snippet |\n\ - |${1}|${2}\n\ -\n\ -# Link\n\ -snippet link\n\ - \"${1:link text}\":${2:url}\n\ -\n\ -# Acronym\n\ -snippet (\n\ - (${1:Expand acronym})${2}\n\ -\n\ -# Footnote\n\ -snippet fn\n\ - [${1:ref number}] ${3}\n\ -\n\ - fn$1. ${2:footnote}\n\ - \n\ -"; -exports.scope = "textile"; - -}); (function() { - ace.require(["ace/snippets/textile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/toml.js b/src-noconflict/snippets/toml.js deleted file mode 100644 index 9b2248e..0000000 --- a/src-noconflict/snippets/toml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/toml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/tsx.js b/src-noconflict/snippets/tsx.js deleted file mode 100644 index 2bbdd63..0000000 --- a/src-noconflict/snippets/tsx.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/tsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/turtle.js b/src-noconflict/snippets/turtle.js deleted file mode 100644 index 29fadd1..0000000 --- a/src-noconflict/snippets/turtle.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/turtle"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/twig.js b/src-noconflict/snippets/twig.js deleted file mode 100644 index 89fd77d..0000000 --- a/src-noconflict/snippets/twig.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/twig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/typescript.js b/src-noconflict/snippets/typescript.js deleted file mode 100644 index 815382d..0000000 --- a/src-noconflict/snippets/typescript.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/typescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/vala.js b/src-noconflict/snippets/vala.js deleted file mode 100644 index 296ed53..0000000 --- a/src-noconflict/snippets/vala.js +++ /dev/null @@ -1,200 +0,0 @@ -ace.define("ace/snippets/vala",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippets = [ - { - "content": "case ${1:condition}:\n\t$0\n\tbreak;\n", - "name": "case", - "scope": "vala", - "tabTrigger": "case" - }, - { - "content": "/**\n * ${6}\n */\n${1:public} class ${2:MethodName}${3: : GLib.Object} {\n\n\t/**\n\t * ${7}\n\t */\n\tpublic ${2}(${4}) {\n\t\t${5}\n\t}\n\n\t$0\n}", - "name": "class", - "scope": "vala", - "tabTrigger": "class" - }, - { - "content": "(${1}) => {\n\t${0}\n}\n", - "name": "closure", - "scope": "vala", - "tabTrigger": "=>" - }, - { - "content": "/*\n * $0\n */", - "name": "Comment (multiline)", - "scope": "vala", - "tabTrigger": "/*" - }, - { - "content": "Console.WriteLine($1);\n$0", - "name": "Console.WriteLine (writeline)", - "scope": "vala", - "tabTrigger": "writeline" - }, - { - "content": "[DBus(name = \"$0\")]", - "name": "DBus annotation", - "scope": "vala", - "tabTrigger": "[DBus" - }, - { - "content": "delegate ${1:void} ${2:DelegateName}($0);", - "name": "delegate", - "scope": "vala", - "tabTrigger": "delegate" - }, - { - "content": "do {\n\t$0\n} while ($1);\n", - "name": "do while", - "scope": "vala", - "tabTrigger": "dowhile" - }, - { - "content": "/**\n * $0\n */", - "name": "DocBlock", - "scope": "vala", - "tabTrigger": "/**" - }, - { - "content": "else if ($1) {\n\t$0\n}\n", - "name": "else if (elseif)", - "scope": "vala", - "tabTrigger": "elseif" - }, - { - "content": "else {\n\t$0\n}", - "name": "else", - "scope": "vala", - "tabTrigger": "else" - }, - { - "content": "enum {$1:EnumName} {\n\t$0\n}", - "name": "enum", - "scope": "vala", - "tabTrigger": "enum" - }, - { - "content": "public errordomain ${1:Error} {\n\t$0\n}", - "name": "error domain", - "scope": "vala", - "tabTrigger": "errordomain" - }, - { - "content": "for ($1;$2;$3) {\n\t$0\n}", - "name": "for", - "scope": "vala", - "tabTrigger": "for" - }, - { - "content": "foreach ($1 in $2) {\n\t$0\n}", - "name": "foreach", - "scope": "vala", - "tabTrigger": "foreach" - }, - { - "content": "Gee.ArrayList<${1:G}>($0);", - "name": "Gee.ArrayList", - "scope": "vala", - "tabTrigger": "ArrayList" - }, - { - "content": "Gee.HashMap<${1:K},${2:V}>($0);", - "name": "Gee.HashMap", - "scope": "vala", - "tabTrigger": "HashMap" - }, - { - "content": "Gee.HashSet<${1:G}>($0);", - "name": "Gee.HashSet", - "scope": "vala", - "tabTrigger": "HashSet" - }, - { - "content": "if ($1) {\n\t$0\n}", - "name": "if", - "scope": "vala", - "tabTrigger": "if" - }, - { - "content": "interface ${1:InterfaceName}{$2: : SuperInterface} {\n\t$0\n}", - "name": "interface", - "scope": "vala", - "tabTrigger": "interface" - }, - { - "content": "public static int main(string [] argv) {\n\t${0}\n\treturn 0;\n}", - "name": "Main function", - "scope": "vala", - "tabTrigger": "main" - }, - { - "content": "namespace $1 {\n\t$0\n}\n", - "name": "namespace (ns)", - "scope": "vala", - "tabTrigger": "ns" - }, - { - "content": "stdout.printf($0);", - "name": "printf", - "scope": "vala", - "tabTrigger": "printf" - }, - { - "content": "${1:public} ${2:Type} ${3:Name} {\n\tset {\n\t\t$0\n\t}\n\tget {\n\n\t}\n}", - "name": "property (prop)", - "scope": "vala", - "tabTrigger": "prop" - }, - { - "content": "${1:public} ${2:Type} ${3:Name} {\n\tget {\n\t\t$0\n\t}\n}", - "name": "read-only property (roprop)", - "scope": "vala", - "tabTrigger": "roprop" - }, - { - "content": "@\"${1:\\$var}\"", - "name": "String template (@)", - "scope": "vala", - "tabTrigger": "@" - }, - { - "content": "struct ${1:StructName} {\n\t$0\n}", - "name": "struct", - "scope": "vala", - "tabTrigger": "struct" - }, - { - "content": "switch ($1) {\n\t$0\n}", - "name": "switch", - "scope": "vala", - "tabTrigger": "switch" - }, - { - "content": "try {\n\t$2\n} catch (${1:Error} e) {\n\t$0\n}", - "name": "try/catch", - "scope": "vala", - "tabTrigger": "try" - }, - { - "content": "\"\"\"$0\"\"\";", - "name": "Verbatim string (\"\"\")", - "scope": "vala", - "tabTrigger": "verbatim" - }, - { - "content": "while ($1) {\n\t$0\n}", - "name": "while", - "scope": "vala", - "tabTrigger": "while" - } -]; -exports.scope = ""; - -}); (function() { - ace.require(["ace/snippets/vala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/vbscript.js b/src-noconflict/snippets/vbscript.js deleted file mode 100644 index 460b70f..0000000 --- a/src-noconflict/snippets/vbscript.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/vbscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/velocity.js b/src-noconflict/snippets/velocity.js deleted file mode 100644 index 0d6d2af..0000000 --- a/src-noconflict/snippets/velocity.js +++ /dev/null @@ -1,43 +0,0 @@ -ace.define("ace/snippets/velocity",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# macro\n\ -snippet #macro\n\ - #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ - ${3:## macro code}\n\ - #end\n\ -# foreach\n\ -snippet #foreach\n\ - #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ - ${3:## foreach code}\n\ - #end\n\ -# if\n\ -snippet #if\n\ - #if ( ${1:true} )\n\ - ${0}\n\ - #end\n\ -# if ... else\n\ -snippet #ife\n\ - #if ( ${1:true} )\n\ - ${2}\n\ - #else\n\ - ${0}\n\ - #end\n\ -#import\n\ -snippet #import\n\ - #import ( \"${1:path/to/velocity/format}\" )\n\ -# set\n\ -snippet #set\n\ - #set ( $${1:var} = ${0} )\n\ -"; -exports.scope = "velocity"; -exports.includeScopes = ["html", "javascript", "css"]; - -}); (function() { - ace.require(["ace/snippets/velocity"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/verilog.js b/src-noconflict/snippets/verilog.js deleted file mode 100644 index b4765c0..0000000 --- a/src-noconflict/snippets/verilog.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/verilog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/vhdl.js b/src-noconflict/snippets/vhdl.js deleted file mode 100644 index 3be778a..0000000 --- a/src-noconflict/snippets/vhdl.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/vhdl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/visualforce.js b/src-noconflict/snippets/visualforce.js deleted file mode 100644 index a682103..0000000 --- a/src-noconflict/snippets/visualforce.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/visualforce"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/wollok.js b/src-noconflict/snippets/wollok.js deleted file mode 100644 index dbbf360..0000000 --- a/src-noconflict/snippets/wollok.js +++ /dev/null @@ -1,98 +0,0 @@ -ace.define("ace/snippets/wollok",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "##\n\ -## Basic Java packages and import\n\ -snippet im\n\ - import\n\ -snippet w.l\n\ - wollok.lang\n\ -snippet w.i\n\ - wollok.lib\n\ -\n\ -## Class and object\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet obj\n\ - object ${1:`Filename(\"\", \"untitled\")`} ${2:inherits Parent}${3}\n\ -snippet te\n\ - test ${1:`Filename(\"\", \"untitled\")`}\n\ -\n\ -##\n\ -## Enhancements\n\ -snippet inh\n\ - inherits\n\ -\n\ -##\n\ -## Comments\n\ -snippet /*\n\ - /*\n\ - * ${1}\n\ - */\n\ -\n\ -##\n\ -## Control Statements\n\ -snippet el\n\ - else\n\ -snippet if\n\ - if (${1}) ${2}\n\ -\n\ -##\n\ -## Create a Method\n\ -snippet m\n\ - method ${1:method}(${2}) ${5}\n\ -\n\ -## \n\ -## Tests\n\ -snippet as\n\ - assert.equals(${1:expected}, ${2:actual})\n\ -\n\ -##\n\ -## Exceptions\n\ -snippet ca\n\ - catch ${1:e} : (${2:Exception} ) ${3}\n\ -snippet thr\n\ - throw\n\ -snippet try\n\ - try {\n\ - ${3}\n\ - } catch ${1:e} : ${2:Exception} {\n\ - }\n\ -\n\ -##\n\ -## Javadocs\n\ -snippet /**\n\ - /**\n\ - * ${1}\n\ - */\n\ -\n\ -##\n\ -## Print Methods\n\ -snippet print\n\ - console.println(\"${1:Message}\")\n\ -\n\ -##\n\ -## Setter and Getter Methods\n\ -snippet set\n\ - method set${1:}(${2:}) {\n\ - $1 = $2\n\ - }\n\ -snippet get\n\ - method get${1:}() {\n\ - return ${1:};\n\ - }\n\ -\n\ -##\n\ -## Terminate Methods or Loops\n\ -snippet re\n\ - return"; -exports.scope = "wollok"; - -}); (function() { - ace.require(["ace/snippets/wollok"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/xml.js b/src-noconflict/snippets/xml.js deleted file mode 100644 index ec33fac..0000000 --- a/src-noconflict/snippets/xml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/xml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/xquery.js b/src-noconflict/snippets/xquery.js deleted file mode 100644 index c090819..0000000 --- a/src-noconflict/snippets/xquery.js +++ /dev/null @@ -1,75 +0,0 @@ -ace.define("ace/snippets/xquery",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet for\n\ - for $${1:item} in ${2:expr}\n\ -snippet return\n\ - return ${1:expr}\n\ -snippet import\n\ - import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ -snippet some\n\ - some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ -snippet every\n\ - every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ -snippet if\n\ - if(${1:true}) then ${2:expr} else ${3:true}\n\ -snippet switch\n\ - switch(${1:\"foo\"})\n\ - case ${2:\"foo\"}\n\ - return ${3:true}\n\ - default return ${4:false}\n\ -snippet try\n\ - try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ -snippet tumbling\n\ - for tumbling window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ -snippet sliding\n\ - for sliding window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ -snippet let\n\ - let $${1:varname} := ${2:expr}\n\ -snippet group\n\ - group by $${1:varname} := ${2:expr}\n\ -snippet order\n\ - order by ${1:expr} ${2:descending}\n\ -snippet stable\n\ - stable order by ${1:expr}\n\ -snippet count\n\ - count $${1:varname}\n\ -snippet ordered\n\ - ordered { ${1:expr} }\n\ -snippet unordered\n\ - unordered { ${1:expr} }\n\ -snippet treat \n\ - treat as ${1:expr}\n\ -snippet castable\n\ - castable as ${1:atomicType}\n\ -snippet cast\n\ - cast as ${1:atomicType}\n\ -snippet typeswitch\n\ - typeswitch(${1:expr})\n\ - case ${2:type} return ${3:expr}\n\ - default return ${4:expr}\n\ -snippet var\n\ - declare variable $${1:varname} := ${2:expr};\n\ -snippet fn\n\ - declare function ${1:ns}:${2:name}(){\n\ - ${3:expr}\n\ - };\n\ -snippet module\n\ - module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ -"; -exports.scope = "xquery"; - -}); (function() { - ace.require(["ace/snippets/xquery"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/yaml.js b/src-noconflict/snippets/yaml.js deleted file mode 100644 index 6760624..0000000 --- a/src-noconflict/snippets/yaml.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/yaml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/snippets/zeek.js b/src-noconflict/snippets/zeek.js deleted file mode 100644 index a93c94c..0000000 --- a/src-noconflict/snippets/zeek.js +++ /dev/null @@ -1,9 +0,0 @@ - -; (function() { - ace.require(["ace/snippets/zeek"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-ambiance.js b/src-noconflict/theme-ambiance.js deleted file mode 100644 index 8652933..0000000 --- a/src-noconflict/theme-ambiance.js +++ /dev/null @@ -1,185 +0,0 @@ -ace.define("ace/theme/ambiance",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-ambiance"; -exports.cssText = ".ace-ambiance .ace_gutter {\ -background-color: #3d3d3d;\ -background-image: linear-gradient(left, #3D3D3D, #333);\ -background-repeat: repeat-x;\ -border-right: 1px solid #4d4d4d;\ -text-shadow: 0px 1px 1px #4d4d4d;\ -color: #222;\ -}\ -.ace-ambiance .ace_gutter-layer {\ -background: repeat left top;\ -}\ -.ace-ambiance .ace_gutter-active-line {\ -background-color: #3F3F3F;\ -}\ -.ace-ambiance .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-ambiance .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start,\ -.ace-ambiance .ace_fold-widget.ace_end,\ -.ace-ambiance .ace_fold-widget.ace_closed{\ -background: none !important;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-ambiance .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-ambiance .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-ambiance .ace_print-margin {\ -border-left: 1px dotted #2D2D2D;\ -right: 0;\ -background: #262626;\ -}\ -.ace-ambiance .ace_scroller {\ --webkit-box-shadow: inset 0 0 10px black;\ --moz-box-shadow: inset 0 0 10px black;\ --o-box-shadow: inset 0 0 10px black;\ -box-shadow: inset 0 0 10px black;\ -}\ -.ace-ambiance {\ -color: #E6E1DC;\ -background-color: #202020;\ -}\ -.ace-ambiance .ace_cursor {\ -border-left: 1px solid #7991E8;\ -}\ -.ace-ambiance .ace_overwrite-cursors .ace_cursor {\ -border: 1px solid #FFE300;\ -background: #766B13;\ -}\ -.ace-ambiance.normal-mode .ace_cursor-layer {\ -z-index: 0;\ -}\ -.ace-ambiance .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20);\ -}\ -.ace-ambiance .ace_marker-layer .ace_selected-word {\ -border-radius: 4px;\ -border: 8px solid #3f475d;\ -box-shadow: 0 0 4px black;\ -}\ -.ace-ambiance .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-ambiance .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25);\ -}\ -.ace-ambiance .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031);\ -}\ -.ace-ambiance .ace_invisible {\ -color: #333;\ -}\ -.ace-ambiance .ace_paren {\ -color: #24C2C7;\ -}\ -.ace-ambiance .ace_keyword {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_keyword.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_punctuation.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_identifier {\ -}\ -.ace-ambiance .ace-statement {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_constant {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_language {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_library {\ -}\ -.ace-ambiance .ace_constant.ace_numeric {\ -color: #78CF8A;\ -}\ -.ace-ambiance .ace_invalid {\ -text-decoration: underline;\ -}\ -.ace-ambiance .ace_invalid.ace_illegal {\ -color:#F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75);\ -}\ -.ace-ambiance .ace_invalid,\ -.ace-ambiance .ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1;\ -}\ -.ace-ambiance .ace_support {\ -color: #9B859D;\ -}\ -.ace-ambiance .ace_support.ace_function {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_function.ace_buildin {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_string {\ -color: #8f9d6a;\ -}\ -.ace-ambiance .ace_string.ace_regexp {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_comment {\ -font-style: italic;\ -color: #555;\ -}\ -.ace-ambiance .ace_comment.ace_doc {\ -}\ -.ace-ambiance .ace_comment.ace_doc.ace_tag {\ -color: #666;\ -font-style: normal;\ -}\ -.ace-ambiance .ace_definition,\ -.ace-ambiance .ace_type {\ -color: #aac6e3;\ -}\ -.ace-ambiance .ace_variable {\ -color: #9999cc;\ -}\ -.ace-ambiance .ace_variable.ace_language {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_xml-pe {\ -color: #494949;\ -}\ -.ace-ambiance .ace_gutter-layer,\ -.ace-ambiance .ace_text-layer {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\ -}\ -.ace-ambiance .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); (function() { - ace.require(["ace/theme/ambiance"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-chaos.js b/src-noconflict/theme-chaos.js deleted file mode 100644 index e92592d..0000000 --- a/src-noconflict/theme-chaos.js +++ /dev/null @@ -1,163 +0,0 @@ -ace.define("ace/theme/chaos",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-chaos"; -exports.cssText = ".ace-chaos .ace_gutter {\ -background: #141414;\ -color: #595959;\ -border-right: 1px solid #282828;\ -}\ -.ace-chaos .ace_gutter-cell.ace_warning {\ -background-image: none;\ -background: #FC0;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_gutter-cell.ace_error {\ -background-position: -6px center;\ -background-image: none;\ -background: #F10;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_print-margin {\ -border-left: 1px solid #555;\ -right: 0;\ -background: #1D1D1D;\ -}\ -.ace-chaos {\ -background-color: #161616;\ -color: #E6E1DC;\ -}\ -.ace-chaos .ace_cursor {\ -border-left: 2px solid #FFFFFF;\ -}\ -.ace-chaos .ace_cursor.ace_overwrite {\ -border-left: 0px;\ -border-bottom: 1px solid #FFFFFF;\ -}\ -.ace-chaos .ace_marker-layer .ace_selection {\ -background: #494836;\ -}\ -.ace-chaos .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-chaos .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #FCE94F;\ -}\ -.ace-chaos .ace_marker-layer .ace_active-line {\ -background: #333;\ -}\ -.ace-chaos .ace_gutter-active-line {\ -background-color: #222;\ -}\ -.ace-chaos .ace_invisible {\ -color: #404040;\ -}\ -.ace-chaos .ace_keyword {\ -color:#00698F;\ -}\ -.ace-chaos .ace_keyword.ace_operator {\ -color:#FF308F;\ -}\ -.ace-chaos .ace_constant {\ -color:#1EDAFB;\ -}\ -.ace-chaos .ace_constant.ace_language {\ -color:#FDC251;\ -}\ -.ace-chaos .ace_constant.ace_library {\ -color:#8DFF0A;\ -}\ -.ace-chaos .ace_constant.ace_numeric {\ -color:#58C554;\ -}\ -.ace-chaos .ace_invalid {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_invalid.ace_deprecated {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_support {\ -color: #999;\ -}\ -.ace-chaos .ace_support.ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_string {\ -color:#58C554;\ -}\ -.ace-chaos .ace_comment {\ -color:#555;\ -font-style:italic;\ -padding-bottom: 0px;\ -}\ -.ace-chaos .ace_variable {\ -color:#997744;\ -}\ -.ace-chaos .ace_meta.ace_tag {\ -color:#BE53E6;\ -}\ -.ace-chaos .ace_entity.ace_other.ace_attribute-name {\ -color:#FFFF89;\ -}\ -.ace-chaos .ace_markup.ace_underline {\ -text-decoration: underline;\ -}\ -.ace-chaos .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-chaos .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-chaos .ace_fold-widget.ace_start,\ -.ace-chaos .ace_fold-widget.ace_end,\ -.ace-chaos .ace_fold-widget.ace_closed{\ -background: none !important;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-chaos .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-chaos .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-chaos .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-chaos .ace_indent-guide {\ -border-right:1px dotted #333;\ -margin-right:-1px;\ -}\ -.ace-chaos .ace_fold { \ -background: #222; \ -border-radius: 3px; \ -color: #7AF; \ -border: none; \ -}\ -.ace-chaos .ace_fold:hover {\ -background: #CCC; \ -color: #000;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); (function() { - ace.require(["ace/theme/chaos"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-chrome.js b/src-noconflict/theme-chrome.js deleted file mode 100644 index 6b04fbb..0000000 --- a/src-noconflict/theme-chrome.js +++ /dev/null @@ -1,135 +0,0 @@ -ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-chrome"; -exports.cssText = ".ace-chrome .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-chrome .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-chrome {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-chrome .ace_cursor {\ -color: black;\ -}\ -.ace-chrome .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-chrome .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-chrome .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-chrome .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-chrome .ace_fold {\ -}\ -.ace-chrome .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-chrome .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_support.ace_type,\ -.ace-chrome .ace_support.ace_class\ -.ace-chrome .ace_support.ace_other {\ -color: rgb(109, 121, 222);\ -}\ -.ace-chrome .ace_variable.ace_parameter {\ -font-style:italic;\ -color:#FD971F;\ -}\ -.ace-chrome .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-chrome .ace_comment {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc.ace_tag {\ -color: #236e24;\ -}\ -.ace-chrome .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-chrome .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-chrome .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-chrome .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-chrome .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-chrome .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-chrome .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-chrome .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-chrome .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-chrome .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-chrome .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-chrome .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-chrome .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-chrome .ace_storage,\ -.ace-chrome .ace_keyword,\ -.ace-chrome .ace_meta.ace_tag {\ -color: rgb(147, 15, 128);\ -}\ -.ace-chrome .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-chrome .ace_string {\ -color: #1A1AA6;\ -}\ -.ace-chrome .ace_entity.ace_other.ace_attribute-name {\ -color: #994409;\ -}\ -.ace-chrome .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/chrome"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-clouds.js b/src-noconflict/theme-clouds.js deleted file mode 100644 index ac67c3f..0000000 --- a/src-noconflict/theme-clouds.js +++ /dev/null @@ -1,102 +0,0 @@ -ace.define("ace/theme/clouds",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-clouds"; -exports.cssText = ".ace-clouds .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-clouds .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-clouds {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-clouds .ace_cursor {\ -color: #000000\ -}\ -.ace-clouds .ace_marker-layer .ace_selection {\ -background: #BDD5FC\ -}\ -.ace-clouds.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-clouds .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-clouds .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds .ace_marker-layer .ace_active-line {\ -background: #FFFBD1\ -}\ -.ace-clouds .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-clouds .ace_marker-layer .ace_selected-word {\ -border: 1px solid #BDD5FC\ -}\ -.ace-clouds .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-clouds .ace_keyword,\ -.ace-clouds .ace_meta,\ -.ace-clouds .ace_support.ace_constant.ace_property-value {\ -color: #AF956F\ -}\ -.ace-clouds .ace_keyword.ace_operator {\ -color: #484848\ -}\ -.ace-clouds .ace_keyword.ace_other.ace_unit {\ -color: #96DC5F\ -}\ -.ace-clouds .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds .ace_constant.ace_character.ace_entity {\ -color: #BF78CC\ -}\ -.ace-clouds .ace_invalid {\ -background-color: #FF002A\ -}\ -.ace-clouds .ace_fold {\ -background-color: #AF956F;\ -border-color: #000000\ -}\ -.ace-clouds .ace_storage,\ -.ace-clouds .ace_support.ace_class,\ -.ace-clouds .ace_support.ace_function,\ -.ace-clouds .ace_support.ace_other,\ -.ace-clouds .ace_support.ace_type {\ -color: #C52727\ -}\ -.ace-clouds .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds .ace_comment {\ -color: #BCC8BA\ -}\ -.ace-clouds .ace_entity.ace_name.ace_tag,\ -.ace-clouds .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/clouds"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-clouds_midnight.js b/src-noconflict/theme-clouds_midnight.js deleted file mode 100644 index 2535be9..0000000 --- a/src-noconflict/theme-clouds_midnight.js +++ /dev/null @@ -1,103 +0,0 @@ -ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-clouds-midnight"; -exports.cssText = ".ace-clouds-midnight .ace_gutter {\ -background: #232323;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-clouds-midnight {\ -background-color: #191919;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_cursor {\ -color: #7DA5DC\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selection {\ -background: #000000\ -}\ -.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #191919;\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_active-line {\ -background: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_gutter-active-line {\ -background-color: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\ -border: 1px solid #000000\ -}\ -.ace-clouds-midnight .ace_invisible {\ -color: #666\ -}\ -.ace-clouds-midnight .ace_keyword,\ -.ace-clouds-midnight .ace_meta,\ -.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\ -color: #927C5D\ -}\ -.ace-clouds-midnight .ace_keyword.ace_operator {\ -color: #4B4B4B\ -}\ -.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\ -color: #366F1A\ -}\ -.ace-clouds-midnight .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds-midnight .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\ -color: #A165AC\ -}\ -.ace-clouds-midnight .ace_invalid {\ -color: #FFFFFF;\ -background-color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_fold {\ -background-color: #927C5D;\ -border-color: #929292\ -}\ -.ace-clouds-midnight .ace_storage,\ -.ace-clouds-midnight .ace_support.ace_class,\ -.ace-clouds-midnight .ace_support.ace_function,\ -.ace-clouds-midnight .ace_support.ace_other,\ -.ace-clouds-midnight .ace_support.ace_type {\ -color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds-midnight .ace_comment {\ -color: #3C403B\ -}\ -.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\ -.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds-midnight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/clouds_midnight"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-cobalt.js b/src-noconflict/theme-cobalt.js deleted file mode 100644 index 4114542..0000000 --- a/src-noconflict/theme-cobalt.js +++ /dev/null @@ -1,120 +0,0 @@ -ace.define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-cobalt"; -exports.cssText = ".ace-cobalt .ace_gutter {\ -background: #011e3a;\ -color: rgb(128,145,160)\ -}\ -.ace-cobalt .ace_print-margin {\ -width: 1px;\ -background: #555555\ -}\ -.ace-cobalt {\ -background-color: #002240;\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_marker-layer .ace_selection {\ -background: rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002240;\ -}\ -.ace-cobalt .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-cobalt .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt .ace_invisible {\ -color: rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_keyword,\ -.ace-cobalt .ace_meta {\ -color: #FF9D00\ -}\ -.ace-cobalt .ace_constant,\ -.ace-cobalt .ace_constant.ace_character,\ -.ace-cobalt .ace_constant.ace_character.ace_escape,\ -.ace-cobalt .ace_constant.ace_other {\ -color: #FF628C\ -}\ -.ace-cobalt .ace_invalid {\ -color: #F8F8F8;\ -background-color: #800F00\ -}\ -.ace-cobalt .ace_support {\ -color: #80FFBB\ -}\ -.ace-cobalt .ace_support.ace_constant {\ -color: #EB939A\ -}\ -.ace-cobalt .ace_fold {\ -background-color: #FF9D00;\ -border-color: #FFFFFF\ -}\ -.ace-cobalt .ace_support.ace_function {\ -color: #FFB054\ -}\ -.ace-cobalt .ace_storage {\ -color: #FFEE80\ -}\ -.ace-cobalt .ace_entity {\ -color: #FFDD00\ -}\ -.ace-cobalt .ace_string {\ -color: #3AD900\ -}\ -.ace-cobalt .ace_string.ace_regexp {\ -color: #80FFC2\ -}\ -.ace-cobalt .ace_comment {\ -font-style: italic;\ -color: #0088FF\ -}\ -.ace-cobalt .ace_heading,\ -.ace-cobalt .ace_markup.ace_heading {\ -color: #C8E4FD;\ -background-color: #001221\ -}\ -.ace-cobalt .ace_list,\ -.ace-cobalt .ace_markup.ace_list {\ -background-color: #130D26\ -}\ -.ace-cobalt .ace_variable {\ -color: #CCCCCC\ -}\ -.ace-cobalt .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-cobalt .ace_meta.ace_tag {\ -color: #9EFFFF\ -}\ -.ace-cobalt .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/cobalt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-crimson_editor.js b/src-noconflict/theme-crimson_editor.js deleted file mode 100644 index f467801..0000000 --- a/src-noconflict/theme-crimson_editor.js +++ /dev/null @@ -1,125 +0,0 @@ -ace.define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -exports.isDark = false; -exports.cssText = ".ace-crimson-editor .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-crimson-editor .ace_gutter-layer {\ -width: 100%;\ -text-align: right;\ -}\ -.ace-crimson-editor .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-crimson-editor {\ -background-color: #FFFFFF;\ -color: rgb(64, 64, 64);\ -}\ -.ace-crimson-editor .ace_cursor {\ -color: black;\ -}\ -.ace-crimson-editor .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-crimson-editor .ace_identifier {\ -color: black;\ -}\ -.ace-crimson-editor .ace_keyword {\ -color: blue;\ -}\ -.ace-crimson-editor .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-crimson-editor .ace_constant.ace_language {\ -color: rgb(255, 156, 0);\ -}\ -.ace-crimson-editor .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_invalid {\ -text-decoration: line-through;\ -color: rgb(224, 0, 0);\ -}\ -.ace-crimson-editor .ace_fold {\ -}\ -.ace-crimson-editor .ace_support.ace_function {\ -color: rgb(192, 0, 0);\ -}\ -.ace-crimson-editor .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_support.ace_type,\ -.ace-crimson-editor .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-crimson-editor .ace_keyword.ace_operator {\ -color: rgb(49, 132, 149);\ -}\ -.ace-crimson-editor .ace_string {\ -color: rgb(128, 0, 128);\ -}\ -.ace-crimson-editor .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-crimson-editor .ace_constant.ace_numeric {\ -color: rgb(0, 0, 64);\ -}\ -.ace-crimson-editor .ace_variable {\ -color: rgb(0, 64, 128);\ -}\ -.ace-crimson-editor .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-crimson-editor .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-crimson-editor .ace_meta.ace_tag {\ -color:rgb(28, 2, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-crimson-editor .ace_string.ace_regex {\ -color: rgb(192, 0, 192);\ -}\ -.ace-crimson-editor .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -exports.cssClass = "ace-crimson-editor"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/crimson_editor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-dawn.js b/src-noconflict/theme-dawn.js deleted file mode 100644 index 93ce00b..0000000 --- a/src-noconflict/theme-dawn.js +++ /dev/null @@ -1,115 +0,0 @@ -ace.define("ace/theme/dawn",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-dawn"; -exports.cssText = ".ace-dawn .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-dawn .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-dawn {\ -background-color: #F9F9F9;\ -color: #080808\ -}\ -.ace-dawn .ace_cursor {\ -color: #000000\ -}\ -.ace-dawn .ace_marker-layer .ace_selection {\ -background: rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #F9F9F9;\ -}\ -.ace-dawn .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-dawn .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_marker-layer .ace_active-line {\ -background: rgba(36, 99, 180, 0.12)\ -}\ -.ace-dawn .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-dawn .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn .ace_invisible {\ -color: rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_keyword,\ -.ace-dawn .ace_meta {\ -color: #794938\ -}\ -.ace-dawn .ace_constant,\ -.ace-dawn .ace_constant.ace_character,\ -.ace-dawn .ace_constant.ace_character.ace_escape,\ -.ace-dawn .ace_constant.ace_other {\ -color: #811F24\ -}\ -.ace-dawn .ace_invalid.ace_illegal {\ -text-decoration: underline;\ -font-style: italic;\ -color: #F8F8F8;\ -background-color: #B52A1D\ -}\ -.ace-dawn .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #B52A1D\ -}\ -.ace-dawn .ace_support {\ -color: #691C97\ -}\ -.ace-dawn .ace_support.ace_constant {\ -color: #B4371F\ -}\ -.ace-dawn .ace_fold {\ -background-color: #794938;\ -border-color: #080808\ -}\ -.ace-dawn .ace_list,\ -.ace-dawn .ace_markup.ace_list,\ -.ace-dawn .ace_support.ace_function {\ -color: #693A17\ -}\ -.ace-dawn .ace_storage {\ -font-style: italic;\ -color: #A71D5D\ -}\ -.ace-dawn .ace_string {\ -color: #0B6125\ -}\ -.ace-dawn .ace_string.ace_regexp {\ -color: #CF5628\ -}\ -.ace-dawn .ace_comment {\ -font-style: italic;\ -color: #5A525F\ -}\ -.ace-dawn .ace_heading,\ -.ace-dawn .ace_markup.ace_heading {\ -color: #19356D\ -}\ -.ace-dawn .ace_variable {\ -color: #234A97\ -}\ -.ace-dawn .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/dawn"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-dracula.js b/src-noconflict/theme-dracula.js deleted file mode 100644 index 1be9c31..0000000 --- a/src-noconflict/theme-dracula.js +++ /dev/null @@ -1,135 +0,0 @@ -ace.define("ace/theme/dracula",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-dracula"; -exports.cssText = "\ -.ace-dracula .ace_gutter {\ -background: #282a36;\ -color: rgb(144,145,148)\ -}\ -.ace-dracula .ace_print-margin {\ -width: 1px;\ -background: #44475a\ -}\ -.ace-dracula {\ -background-color: #282a36;\ -color: #f8f8f2\ -}\ -.ace-dracula .ace_cursor {\ -color: #f8f8f0\ -}\ -.ace-dracula .ace_marker-layer .ace_selection {\ -background: #44475a\ -}\ -.ace-dracula.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #282a36;\ -border-radius: 2px\ -}\ -.ace-dracula .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-dracula .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #a29709\ -}\ -.ace-dracula .ace_marker-layer .ace_active-line {\ -background: #44475a\ -}\ -.ace-dracula .ace_gutter-active-line {\ -background-color: #44475a\ -}\ -.ace-dracula .ace_marker-layer .ace_selected-word {\ -box-shadow: 0px 0px 0px 1px #a29709;\ -border-radius: 3px;\ -}\ -.ace-dracula .ace_fold {\ -background-color: #50fa7b;\ -border-color: #f8f8f2\ -}\ -.ace-dracula .ace_keyword {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_constant.ace_language {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_numeric {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_character {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_character.ace_escape {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_constant.ace_other {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_support.ace_function {\ -color: #8be9fd\ -}\ -.ace-dracula .ace_support.ace_constant {\ -color: #6be5fd\ -}\ -.ace-dracula .ace_support.ace_class {\ -font-style: italic;\ -color: #66d9ef\ -}\ -.ace-dracula .ace_support.ace_type {\ -font-style: italic;\ -color: #66d9ef\ -}\ -.ace-dracula .ace_storage {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_storage.ace_type {\ -font-style: italic;\ -color: #8be9fd\ -}\ -.ace-dracula .ace_invalid {\ -color: #F8F8F0;\ -background-color: #ff79c6\ -}\ -.ace-dracula .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #bd93f9\ -}\ -.ace-dracula .ace_string {\ -color: #f1fa8c\ -}\ -.ace-dracula .ace_comment {\ -color: #6272a4\ -}\ -.ace-dracula .ace_variable {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #ffb86c\ -}\ -.ace-dracula .ace_entity.ace_other.ace_attribute-name {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_entity.ace_name.ace_function {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_entity.ace_name.ace_tag {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_invisible {\ -color: #626680;\ -}\ -.ace-dracula .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; -exports.$selectionColorConflict = true; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/dracula"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-dreamweaver.js b/src-noconflict/theme-dreamweaver.js deleted file mode 100644 index a37dff4..0000000 --- a/src-noconflict/theme-dreamweaver.js +++ /dev/null @@ -1,148 +0,0 @@ -ace.define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -exports.isDark = false; -exports.cssClass = "ace-dreamweaver"; -exports.cssText = ".ace-dreamweaver .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-dreamweaver .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-dreamweaver {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-dreamweaver .ace_fold {\ -background-color: #757AD8;\ -}\ -.ace-dreamweaver .ace_cursor {\ -color: black;\ -}\ -.ace-dreamweaver .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-dreamweaver .ace_storage,\ -.ace-dreamweaver .ace_keyword {\ -color: blue;\ -}\ -.ace-dreamweaver .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-dreamweaver .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-dreamweaver .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_support.ace_type,\ -.ace-dreamweaver .ace_support.ace_class {\ -color: #009;\ -}\ -.ace-dreamweaver .ace_support.ace_php_tag {\ -color: #f00;\ -}\ -.ace-dreamweaver .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-dreamweaver .ace_string {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-dreamweaver .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-dreamweaver .ace_variable {\ -color: #06F\ -}\ -.ace-dreamweaver .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-dreamweaver .ace_entity.ace_name.ace_function {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-dreamweaver .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-dreamweaver .ace_gutter-active-line {\ -background-color : #DCDCDC;\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-dreamweaver .ace_meta.ace_tag {\ -color:#009;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\ -color:#060;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_form {\ -color:#F90;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_image {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_script {\ -color:#900;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_style {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_table {\ -color:#099;\ -}\ -.ace-dreamweaver .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-dreamweaver .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/dreamweaver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-eclipse.js b/src-noconflict/theme-eclipse.js deleted file mode 100644 index 04c070a..0000000 --- a/src-noconflict/theme-eclipse.js +++ /dev/null @@ -1,105 +0,0 @@ -ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -exports.isDark = false; -exports.cssText = ".ace-eclipse .ace_gutter {\ -background: #ebebeb;\ -border-right: 1px solid rgb(159, 159, 159);\ -color: rgb(136, 136, 136);\ -}\ -.ace-eclipse .ace_print-margin {\ -width: 1px;\ -background: #ebebeb;\ -}\ -.ace-eclipse {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-eclipse .ace_fold {\ -background-color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_cursor {\ -color: black;\ -}\ -.ace-eclipse .ace_storage,\ -.ace-eclipse .ace_keyword,\ -.ace-eclipse .ace_variable {\ -color: rgb(127, 0, 85);\ -}\ -.ace-eclipse .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-eclipse .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-eclipse .ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_string {\ -color: rgb(42, 0, 255);\ -}\ -.ace-eclipse .ace_comment {\ -color: rgb(113, 150, 130);\ -}\ -.ace-eclipse .ace_comment.ace_doc {\ -color: rgb(63, 95, 191);\ -}\ -.ace-eclipse .ace_comment.ace_doc.ace_tag {\ -color: rgb(127, 159, 191);\ -}\ -.ace-eclipse .ace_constant.ace_numeric {\ -color: darkblue;\ -}\ -.ace-eclipse .ace_tag {\ -color: rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_type {\ -color: rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-eclipse .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-eclipse .ace_meta.ace_tag {\ -color:rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_invisible {\ -color: #ddd;\ -}\ -.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\ -color:rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0);\ -}\ -.ace-eclipse .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-eclipse .ace_gutter-active-line {\ -background-color : #DADADA;\ -}\ -.ace-eclipse .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -exports.cssClass = "ace-eclipse"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/eclipse"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-github.js b/src-noconflict/theme-github.js deleted file mode 100644 index 8b3c27d..0000000 --- a/src-noconflict/theme-github.js +++ /dev/null @@ -1,110 +0,0 @@ -ace.define("ace/theme/github",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-github"; -exports.cssText = "\ -.ace-github .ace_gutter {\ -background: #e8e8e8;\ -color: #AAA;\ -}\ -.ace-github {\ -background: #fff;\ -color: #000;\ -}\ -.ace-github .ace_keyword {\ -font-weight: bold;\ -}\ -.ace-github .ace_string {\ -color: #D14;\ -}\ -.ace-github .ace_variable.ace_class {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_numeric {\ -color: #099;\ -}\ -.ace-github .ace_constant.ace_buildin {\ -color: #0086B3;\ -}\ -.ace-github .ace_support.ace_function {\ -color: #0086B3;\ -}\ -.ace-github .ace_comment {\ -color: #998;\ -font-style: italic;\ -}\ -.ace-github .ace_variable.ace_language {\ -color: #0086B3;\ -}\ -.ace-github .ace_paren {\ -font-weight: bold;\ -}\ -.ace-github .ace_boolean {\ -font-weight: bold;\ -}\ -.ace-github .ace_string.ace_regexp {\ -color: #009926;\ -font-weight: normal;\ -}\ -.ace-github .ace_variable.ace_instance {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_language {\ -font-weight: bold;\ -}\ -.ace-github .ace_cursor {\ -color: black;\ -}\ -.ace-github.ace_focus .ace_marker-layer .ace_active-line {\ -background: rgb(255, 255, 204);\ -}\ -.ace-github .ace_marker-layer .ace_active-line {\ -background: rgb(245, 245, 245);\ -}\ -.ace-github .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-github.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-github.ace_nobold .ace_line > span {\ -font-weight: normal !important;\ -}\ -.ace-github .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-github .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-github .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-github .ace_gutter-active-line {\ -background-color : rgba(0, 0, 0, 0.07);\ -}\ -.ace-github .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-github .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-github .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-github .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/github"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-gob.js b/src-noconflict/theme-gob.js deleted file mode 100644 index 0070c33..0000000 --- a/src-noconflict/theme-gob.js +++ /dev/null @@ -1,119 +0,0 @@ -ace.define("ace/theme/gob",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-gob"; -exports.cssText = ".ace-gob .ace_gutter {\ -background: #0B1818;\ -color: #03EE03\ -}\ -.ace-gob .ace_print-margin {\ -width: 1px;\ -background: #131313\ -}\ -.ace-gob {\ -background-color: #0B0B0B;\ -color: #00FF00\ -}\ -.ace-gob .ace_cursor {\ -border-color: rgba(16, 248, 255, 0.90);\ -background-color: rgba(16, 240, 248, 0.70);\ -opacity: 0.4;\ -}\ -.ace-gob .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-gob.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #141414;\ -}\ -.ace-gob .ace_marker-layer .ace_step {\ -background: rgb(16, 128, 0)\ -}\ -.ace-gob .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(64, 255, 255, 0.25)\ -}\ -.ace-gob .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.04)\ -}\ -.ace-gob .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.04)\ -}\ -.ace-gob .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(192, 240, 255, 0.20)\ -}\ -.ace-gob .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-gob .ace_keyword,\ -.ace-gob .ace_meta {\ -color: #10D8E8\ -}\ -.ace-gob .ace_constant,\ -.ace-gob .ace_constant.ace_character,\ -.ace-gob .ace_constant.ace_character.ace_escape,\ -.ace-gob .ace_constant.ace_other,\ -.ace-gob .ace_heading,\ -.ace-gob .ace_markup.ace_heading,\ -.ace-gob .ace_support.ace_constant {\ -color: #10F0A0\ -}\ -.ace-gob .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-gob .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #20F8C0\ -}\ -.ace-gob .ace_support {\ -color: #20E8B0\ -}\ -.ace-gob .ace_fold {\ -background-color: #50B8B8;\ -border-color: #70F8F8\ -}\ -.ace-gob .ace_support.ace_function {\ -color: #00F800\ -}\ -.ace-gob .ace_list,\ -.ace-gob .ace_markup.ace_list,\ -.ace-gob .ace_storage {\ -color: #10FF98\ -}\ -.ace-gob .ace_entity.ace_name.ace_function,\ -.ace-gob .ace_meta.ace_tag,\ -.ace-gob .ace_variable {\ -color: #00F868\ -}\ -.ace-gob .ace_string {\ -color: #10F060\ -}\ -.ace-gob .ace_string.ace_regexp {\ -color: #20F090;\ -}\ -.ace-gob .ace_comment {\ -font-style: italic;\ -color: #00E060;\ -}\ -.ace-gob .ace_variable {\ -color: #00F888;\ -}\ -.ace-gob .ace_xml-pe {\ -color: #488858;\ -}\ -.ace-gob .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/gob"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-gruvbox.js b/src-noconflict/theme-gruvbox.js deleted file mode 100644 index 1aaf47d..0000000 --- a/src-noconflict/theme-gruvbox.js +++ /dev/null @@ -1,89 +0,0 @@ -ace.define("ace/theme/gruvbox",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-gruvbox"; -exports.cssText = ".ace-gruvbox .ace_gutter-active-line {\ -background-color: #3C3836;\ -}\ -.ace-gruvbox {\ -color: #EBDAB4;\ -background-color: #1D2021;\ -}\ -.ace-gruvbox .ace_invisible {\ -color: #504945;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_selection {\ -background: rgba(179, 101, 57, 0.75)\ -}\ -.ace-gruvbox.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002240;\ -}\ -.ace-gruvbox .ace_keyword {\ -color: #8ec07c;\ -}\ -.ace-gruvbox .ace_comment {\ -font-style: italic;\ -color: #928375;\ -}\ -.ace-gruvbox .ace-statement {\ -color: red;\ -}\ -.ace-gruvbox .ace_variable {\ -color: #84A598;\ -}\ -.ace-gruvbox .ace_variable.ace_language {\ -color: #D2879B;\ -}\ -.ace-gruvbox .ace_constant {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_constant.ace_language {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_constant.ace_numeric {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_string {\ -color: #B8BA37;\ -}\ -.ace-gruvbox .ace_support {\ -color: #F9BC41;\ -}\ -.ace-gruvbox .ace_support.ace_function {\ -color: #F84B3C;\ -}\ -.ace-gruvbox .ace_storage {\ -color: #8FBF7F;\ -}\ -.ace-gruvbox .ace_keyword.ace_operator {\ -color: #EBDAB4;\ -}\ -.ace-gruvbox .ace_punctuation.ace_operator {\ -color: yellow;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_active-line {\ -background: #3C3836;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_selected-word {\ -border-radius: 4px;\ -border: 8px solid #3f475d;\ -}\ -.ace-gruvbox .ace_print-margin {\ -width: 5px;\ -background: #3C3836;\ -}\ -.ace-gruvbox .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); (function() { - ace.require(["ace/theme/gruvbox"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-idle_fingers.js b/src-noconflict/theme-idle_fingers.js deleted file mode 100644 index 9b774ba..0000000 --- a/src-noconflict/theme-idle_fingers.js +++ /dev/null @@ -1,103 +0,0 @@ -ace.define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-idle-fingers"; -exports.cssText = ".ace-idle-fingers .ace_gutter {\ -background: #3b3b3b;\ -color: rgb(153,153,153)\ -}\ -.ace-idle-fingers .ace_print-margin {\ -width: 1px;\ -background: #3b3b3b\ -}\ -.ace-idle-fingers {\ -background-color: #323232;\ -color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_cursor {\ -color: #91FF00\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selection {\ -background: rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #323232;\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_active-line {\ -background: #353637\ -}\ -.ace-idle-fingers .ace_gutter-active-line {\ -background-color: #353637\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers .ace_invisible {\ -color: #404040\ -}\ -.ace-idle-fingers .ace_keyword,\ -.ace-idle-fingers .ace_meta {\ -color: #CC7833\ -}\ -.ace-idle-fingers .ace_constant,\ -.ace-idle-fingers .ace_constant.ace_character,\ -.ace-idle-fingers .ace_constant.ace_character.ace_escape,\ -.ace-idle-fingers .ace_constant.ace_other,\ -.ace-idle-fingers .ace_support.ace_constant {\ -color: #6C99BB\ -}\ -.ace-idle-fingers .ace_invalid {\ -color: #FFFFFF;\ -background-color: #FF0000\ -}\ -.ace-idle-fingers .ace_fold {\ -background-color: #CC7833;\ -border-color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_support.ace_function {\ -color: #B83426\ -}\ -.ace-idle-fingers .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-idle-fingers .ace_string {\ -color: #A5C261\ -}\ -.ace-idle-fingers .ace_string.ace_regexp {\ -color: #CCCC33\ -}\ -.ace-idle-fingers .ace_comment {\ -font-style: italic;\ -color: #BC9458\ -}\ -.ace-idle-fingers .ace_meta.ace_tag {\ -color: #FFE5BB\ -}\ -.ace-idle-fingers .ace_entity.ace_name {\ -color: #FFC66D\ -}\ -.ace-idle-fingers .ace_collab.ace_user1 {\ -color: #323232;\ -background-color: #FFF980\ -}\ -.ace-idle-fingers .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/idle_fingers"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-iplastic.js b/src-noconflict/theme-iplastic.js deleted file mode 100644 index d95c87e..0000000 --- a/src-noconflict/theme-iplastic.js +++ /dev/null @@ -1,128 +0,0 @@ -ace.define("ace/theme/iplastic",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-iplastic"; -exports.cssText = ".ace-iplastic .ace_gutter {\ -background: #dddddd;\ -color: #666666\ -}\ -.ace-iplastic .ace_print-margin {\ -width: 1px;\ -background: #bbbbbb\ -}\ -.ace-iplastic {\ -background-color: #eeeeee;\ -color: #333333\ -}\ -.ace-iplastic .ace_cursor {\ -color: #333\ -}\ -.ace-iplastic .ace_marker-layer .ace_selection {\ -background: #BAD6FD;\ -}\ -.ace-iplastic.ace_multiselect .ace_selection.ace_start {\ -border-radius: 4px\ -}\ -.ace-iplastic .ace_marker-layer .ace_step {\ -background: #444444\ -}\ -.ace-iplastic .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #49483E;\ -background: #FFF799\ -}\ -.ace-iplastic .ace_marker-layer .ace_active-line {\ -background: #e5e5e5\ -}\ -.ace-iplastic .ace_gutter-active-line {\ -background-color: #eeeeee\ -}\ -.ace-iplastic .ace_marker-layer .ace_selected-word {\ -border: 1px solid #555555;\ -border-radius:4px\ -}\ -.ace-iplastic .ace_invisible {\ -color: #999999\ -}\ -.ace-iplastic .ace_entity.ace_name.ace_tag,\ -.ace-iplastic .ace_keyword,\ -.ace-iplastic .ace_meta.ace_tag,\ -.ace-iplastic .ace_storage {\ -color: #0000FF\ -}\ -.ace-iplastic .ace_punctuation,\ -.ace-iplastic .ace_punctuation.ace_tag {\ -color: #000\ -}\ -.ace-iplastic .ace_constant {\ -color: #333333;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_constant.ace_character,\ -.ace-iplastic .ace_constant.ace_language,\ -.ace-iplastic .ace_constant.ace_numeric,\ -.ace-iplastic .ace_constant.ace_other {\ -color: #0066FF;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_constant.ace_numeric{\ -font-weight: 100\ -}\ -.ace-iplastic .ace_invalid {\ -color: #F8F8F0;\ -background-color: #F92672\ -}\ -.ace-iplastic .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #AE81FF\ -}\ -.ace-iplastic .ace_support.ace_constant,\ -.ace-iplastic .ace_support.ace_function {\ -color: #333333;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_fold {\ -background-color: #464646;\ -border-color: #F8F8F2\ -}\ -.ace-iplastic .ace_storage.ace_type,\ -.ace-iplastic .ace_support.ace_class,\ -.ace-iplastic .ace_support.ace_type {\ -color: #3333fc;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_entity.ace_name.ace_function,\ -.ace-iplastic .ace_entity.ace_other,\ -.ace-iplastic .ace_entity.ace_other.ace_attribute-name,\ -.ace-iplastic .ace_variable {\ -color: #3366cc;\ -font-style: italic\ -}\ -.ace-iplastic .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #2469E0\ -}\ -.ace-iplastic .ace_string {\ -color: #a55f03\ -}\ -.ace-iplastic .ace_comment {\ -color: #777777;\ -font-style: italic\ -}\ -.ace-iplastic .ace_fold-widget {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);\ -}\ -.ace-iplastic .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/iplastic"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-katzenmilch.js b/src-noconflict/theme-katzenmilch.js deleted file mode 100644 index 1e9ae55..0000000 --- a/src-noconflict/theme-katzenmilch.js +++ /dev/null @@ -1,128 +0,0 @@ -ace.define("ace/theme/katzenmilch",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-katzenmilch"; -exports.cssText = ".ace-katzenmilch .ace_gutter,\ -.ace-katzenmilch .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-katzenmilch .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-katzenmilch {\ -background-color: #f3f2f3;\ -color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_cursor {\ -border-left: 2px solid #100011\ -}\ -.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\ -border-left: 0px;\ -border-bottom: 1px solid #100011\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selection {\ -background: rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #f3f2f3;\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(0, 0, 0, 0.33);\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_gutter-active-line {\ -background-color: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-katzenmilch .ace_fold {\ -background-color: rgba(2, 95, 73, 0.97);\ -border-color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_keyword {\ -color: #674Aa8;\ -rbackground-color: rgba(163, 170, 216, 0.055)\ -}\ -.ace-katzenmilch .ace_constant.ace_language {\ -color: #7D7e52;\ -rbackground-color: rgba(189, 190, 130, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_numeric {\ -color: rgba(79, 130, 123, 0.93);\ -rbackground-color: rgba(119, 194, 187, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_character,\ -.ace-katzenmilch .ace_constant.ace_other {\ -color: rgba(2, 95, 105, 1.0);\ -rbackground-color: rgba(127, 34, 153, 0.063)\ -}\ -.ace-katzenmilch .ace_support.ace_function {\ -color: #9D7e62;\ -rbackground-color: rgba(189, 190, 130, 0.039)\ -}\ -.ace-katzenmilch .ace_support.ace_class {\ -color: rgba(239, 106, 167, 1.0);\ -rbackground-color: rgba(239, 106, 167, 0.063)\ -}\ -.ace-katzenmilch .ace_storage {\ -color: rgba(123, 92, 191, 1.0);\ -rbackground-color: rgba(139, 93, 223, 0.051)\ -}\ -.ace-katzenmilch .ace_invalid {\ -color: #DFDFD5;\ -rbackground-color: #CC1B27\ -}\ -.ace-katzenmilch .ace_string {\ -color: #5a5f9b;\ -rbackground-color: rgba(170, 175, 219, 0.035)\ -}\ -.ace-katzenmilch .ace_comment {\ -font-style: italic;\ -color: rgba(64, 79, 80, 0.67);\ -rbackground-color: rgba(95, 15, 255, 0.0078)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_function,\ -.ace-katzenmilch .ace_variable {\ -color: rgba(2, 95, 73, 0.97);\ -rbackground-color: rgba(34, 255, 73, 0.12)\ -}\ -.ace-katzenmilch .ace_variable.ace_language {\ -color: #316fcf;\ -rbackground-color: rgba(58, 175, 255, 0.039)\ -}\ -.ace-katzenmilch .ace_variable.ace_parameter {\ -font-style: italic;\ -color: rgba(51, 150, 159, 0.87);\ -rbackground-color: rgba(5, 214, 249, 0.043)\ -}\ -.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\ -color: rgba(73, 70, 194, 0.93);\ -rbackground-color: rgba(73, 134, 194, 0.035)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_tag {\ -color: #3976a2;\ -rbackground-color: rgba(73, 166, 210, 0.039)\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/katzenmilch"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-kr_theme.js b/src-noconflict/theme-kr_theme.js deleted file mode 100644 index d8cf8de..0000000 --- a/src-noconflict/theme-kr_theme.js +++ /dev/null @@ -1,111 +0,0 @@ -ace.define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-kr-theme"; -exports.cssText = ".ace-kr-theme .ace_gutter {\ -background: #1c1917;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_print-margin {\ -width: 1px;\ -background: #1c1917\ -}\ -.ace-kr-theme {\ -background-color: #0B0A09;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_cursor {\ -color: #FF9900\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selection {\ -background: rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0B0A09;\ -}\ -.ace-kr-theme .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_active-line {\ -background: #38403D\ -}\ -.ace-kr-theme .ace_gutter-active-line {\ -background-color : #38403D\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme .ace_invisible {\ -color: rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_keyword,\ -.ace-kr-theme .ace_meta {\ -color: #949C8B\ -}\ -.ace-kr-theme .ace_constant,\ -.ace-kr-theme .ace_constant.ace_character,\ -.ace-kr-theme .ace_constant.ace_character.ace_escape,\ -.ace-kr-theme .ace_constant.ace_other {\ -color: rgba(210, 117, 24, 0.76)\ -}\ -.ace-kr-theme .ace_invalid {\ -color: #F8F8F8;\ -background-color: #A41300\ -}\ -.ace-kr-theme .ace_support {\ -color: #9FC28A\ -}\ -.ace-kr-theme .ace_support.ace_constant {\ -color: #C27E66\ -}\ -.ace-kr-theme .ace_fold {\ -background-color: #949C8B;\ -border-color: #FCFFE0\ -}\ -.ace-kr-theme .ace_support.ace_function {\ -color: #85873A\ -}\ -.ace-kr-theme .ace_storage {\ -color: #FFEE80\ -}\ -.ace-kr-theme .ace_string {\ -color: rgba(164, 161, 181, 0.8)\ -}\ -.ace-kr-theme .ace_string.ace_regexp {\ -color: rgba(125, 255, 192, 0.65)\ -}\ -.ace-kr-theme .ace_comment {\ -font-style: italic;\ -color: #706D5B\ -}\ -.ace-kr-theme .ace_variable {\ -color: #D1A796\ -}\ -.ace-kr-theme .ace_list,\ -.ace-kr-theme .ace_markup.ace_list {\ -background-color: #0F0040\ -}\ -.ace-kr-theme .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-kr-theme .ace_meta.ace_tag {\ -color: #BABD9C\ -}\ -.ace-kr-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/kr_theme"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-kuroir.js b/src-noconflict/theme-kuroir.js deleted file mode 100644 index 4ea0fbc..0000000 --- a/src-noconflict/theme-kuroir.js +++ /dev/null @@ -1,68 +0,0 @@ -ace.define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-kuroir"; -exports.cssText = "\ -.ace-kuroir .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-kuroir .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-kuroir {\ -background-color: #E8E9E8;\ -color: #363636;\ -}\ -.ace-kuroir .ace_cursor {\ -color: #202020;\ -}\ -.ace-kuroir .ace_marker-layer .ace_selection {\ -background: rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #E8E9E8;\ -}\ -.ace-kuroir .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-kuroir .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(0, 0, 0, 0.29);\ -}\ -.ace-kuroir .ace_marker-layer .ace_active-line {\ -background: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_gutter-active-line {\ -background-color: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-kuroir .ace_fold {\ -border-color: #363636;\ -}\ -.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\ -background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\ -font-style:italic;\ -color:#FD1732;\ -background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\ -background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\ -background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\ -background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/kuroir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-merbivore.js b/src-noconflict/theme-merbivore.js deleted file mode 100644 index 1bb3885..0000000 --- a/src-noconflict/theme-merbivore.js +++ /dev/null @@ -1,102 +0,0 @@ -ace.define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-merbivore"; -exports.cssText = ".ace-merbivore .ace_gutter {\ -background: #202020;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-merbivore {\ -background-color: #161616;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore .ace_marker-layer .ace_selection {\ -background: #454545\ -}\ -.ace-merbivore.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #161616;\ -}\ -.ace-merbivore .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore .ace_marker-layer .ace_selected-word {\ -border: 1px solid #454545\ -}\ -.ace-merbivore .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore .ace_entity.ace_name.ace_tag,\ -.ace-merbivore .ace_keyword,\ -.ace-merbivore .ace_meta,\ -.ace-merbivore .ace_meta.ace_tag,\ -.ace-merbivore .ace_storage,\ -.ace-merbivore .ace_support.ace_function {\ -color: #FC6F09\ -}\ -.ace-merbivore .ace_constant,\ -.ace-merbivore .ace_constant.ace_character,\ -.ace-merbivore .ace_constant.ace_character.ace_escape,\ -.ace-merbivore .ace_constant.ace_other,\ -.ace-merbivore .ace_support.ace_type {\ -color: #1EDAFB\ -}\ -.ace-merbivore .ace_constant.ace_character.ace_escape {\ -color: #519F50\ -}\ -.ace-merbivore .ace_constant.ace_language {\ -color: #FDC251\ -}\ -.ace-merbivore .ace_constant.ace_library,\ -.ace-merbivore .ace_string,\ -.ace-merbivore .ace_support.ace_constant {\ -color: #8DFF0A\ -}\ -.ace-merbivore .ace_constant.ace_numeric {\ -color: #58C554\ -}\ -.ace-merbivore .ace_invalid {\ -color: #FFFFFF;\ -background-color: #990000\ -}\ -.ace-merbivore .ace_fold {\ -background-color: #FC6F09;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore .ace_comment {\ -font-style: italic;\ -color: #AD2EA4\ -}\ -.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\ -color: #FFFF89\ -}\ -.ace-merbivore .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/merbivore"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-merbivore_soft.js b/src-noconflict/theme-merbivore_soft.js deleted file mode 100644 index 3b08c1e..0000000 --- a/src-noconflict/theme-merbivore_soft.js +++ /dev/null @@ -1,103 +0,0 @@ -ace.define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-merbivore-soft"; -exports.cssText = ".ace-merbivore-soft .ace_gutter {\ -background: #262424;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_print-margin {\ -width: 1px;\ -background: #262424\ -}\ -.ace-merbivore-soft {\ -background-color: #1C1C1C;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selection {\ -background: #494949\ -}\ -.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1C1C1C;\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore-soft .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\ -border: 1px solid #494949\ -}\ -.ace-merbivore-soft .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\ -.ace-merbivore-soft .ace_keyword,\ -.ace-merbivore-soft .ace_meta,\ -.ace-merbivore-soft .ace_meta.ace_tag,\ -.ace-merbivore-soft .ace_storage {\ -color: #FC803A\ -}\ -.ace-merbivore-soft .ace_constant,\ -.ace-merbivore-soft .ace_constant.ace_character,\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\ -.ace-merbivore-soft .ace_constant.ace_other,\ -.ace-merbivore-soft .ace_support.ace_type {\ -color: #68C1D8\ -}\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\ -color: #B3E5B4\ -}\ -.ace-merbivore-soft .ace_constant.ace_language {\ -color: #E1C582\ -}\ -.ace-merbivore-soft .ace_constant.ace_library,\ -.ace-merbivore-soft .ace_string,\ -.ace-merbivore-soft .ace_support.ace_constant {\ -color: #8EC65F\ -}\ -.ace-merbivore-soft .ace_constant.ace_numeric {\ -color: #7FC578\ -}\ -.ace-merbivore-soft .ace_invalid,\ -.ace-merbivore-soft .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #FE3838\ -}\ -.ace-merbivore-soft .ace_fold {\ -background-color: #FC803A;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_comment,\ -.ace-merbivore-soft .ace_meta {\ -font-style: italic;\ -color: #AC4BB8\ -}\ -.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\ -color: #EAF1A3\ -}\ -.ace-merbivore-soft .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/merbivore_soft"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-mono_industrial.js b/src-noconflict/theme-mono_industrial.js deleted file mode 100644 index 5b419ee..0000000 --- a/src-noconflict/theme-mono_industrial.js +++ /dev/null @@ -1,114 +0,0 @@ -ace.define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-mono-industrial"; -exports.cssText = ".ace-mono-industrial .ace_gutter {\ -background: #1d2521;\ -color: #C5C9C9\ -}\ -.ace-mono-industrial .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-mono-industrial {\ -background-color: #222C28;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selection {\ -background: rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #222C28;\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_active-line {\ -background: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_gutter-active-line {\ -background-color: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial .ace_invisible {\ -color: rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_string {\ -background-color: #151C19;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_keyword,\ -.ace-mono-industrial .ace_meta {\ -color: #A39E64\ -}\ -.ace-mono-industrial .ace_constant,\ -.ace-mono-industrial .ace_constant.ace_character,\ -.ace-mono-industrial .ace_constant.ace_character.ace_escape,\ -.ace-mono-industrial .ace_constant.ace_numeric,\ -.ace-mono-industrial .ace_constant.ace_other {\ -color: #E98800\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_function,\ -.ace-mono-industrial .ace_keyword.ace_operator,\ -.ace-mono-industrial .ace_variable {\ -color: #A8B3AB\ -}\ -.ace-mono-industrial .ace_invalid {\ -color: #FFFFFF;\ -background-color: rgba(153, 0, 0, 0.68)\ -}\ -.ace-mono-industrial .ace_support.ace_constant {\ -color: #C87500\ -}\ -.ace-mono-industrial .ace_fold {\ -background-color: #A8B3AB;\ -border-color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_support.ace_function {\ -color: #588E60\ -}\ -.ace-mono-industrial .ace_entity.ace_name,\ -.ace-mono-industrial .ace_support.ace_class,\ -.ace-mono-industrial .ace_support.ace_type {\ -color: #5778B6\ -}\ -.ace-mono-industrial .ace_storage {\ -color: #C23B00\ -}\ -.ace-mono-industrial .ace_variable.ace_language,\ -.ace-mono-industrial .ace_variable.ace_parameter {\ -color: #648BD2\ -}\ -.ace-mono-industrial .ace_comment {\ -color: #666C68;\ -background-color: #151C19\ -}\ -.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\ -color: #909993\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_tag {\ -color: #A65EFF\ -}\ -.ace-mono-industrial .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/mono_industrial"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-monokai.js b/src-noconflict/theme-monokai.js deleted file mode 100644 index 72fc105..0000000 --- a/src-noconflict/theme-monokai.js +++ /dev/null @@ -1,112 +0,0 @@ -ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-monokai"; -exports.cssText = ".ace-monokai .ace_gutter {\ -background: #2F3129;\ -color: #8F908A\ -}\ -.ace-monokai .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-monokai {\ -background-color: #272822;\ -color: #F8F8F2\ -}\ -.ace-monokai .ace_cursor {\ -color: #F8F8F0\ -}\ -.ace-monokai .ace_marker-layer .ace_selection {\ -background: #49483E\ -}\ -.ace-monokai.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #272822;\ -}\ -.ace-monokai .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-monokai .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_marker-layer .ace_active-line {\ -background: #202020\ -}\ -.ace-monokai .ace_gutter-active-line {\ -background-color: #272727\ -}\ -.ace-monokai .ace_marker-layer .ace_selected-word {\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_invisible {\ -color: #52524d\ -}\ -.ace-monokai .ace_entity.ace_name.ace_tag,\ -.ace-monokai .ace_keyword,\ -.ace-monokai .ace_meta.ace_tag,\ -.ace-monokai .ace_storage {\ -color: #F92672\ -}\ -.ace-monokai .ace_punctuation,\ -.ace-monokai .ace_punctuation.ace_tag {\ -color: #fff\ -}\ -.ace-monokai .ace_constant.ace_character,\ -.ace-monokai .ace_constant.ace_language,\ -.ace-monokai .ace_constant.ace_numeric,\ -.ace-monokai .ace_constant.ace_other {\ -color: #AE81FF\ -}\ -.ace-monokai .ace_invalid {\ -color: #F8F8F0;\ -background-color: #F92672\ -}\ -.ace-monokai .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #AE81FF\ -}\ -.ace-monokai .ace_support.ace_constant,\ -.ace-monokai .ace_support.ace_function {\ -color: #66D9EF\ -}\ -.ace-monokai .ace_fold {\ -background-color: #A6E22E;\ -border-color: #F8F8F2\ -}\ -.ace-monokai .ace_storage.ace_type,\ -.ace-monokai .ace_support.ace_class,\ -.ace-monokai .ace_support.ace_type {\ -font-style: italic;\ -color: #66D9EF\ -}\ -.ace-monokai .ace_entity.ace_name.ace_function,\ -.ace-monokai .ace_entity.ace_other,\ -.ace-monokai .ace_entity.ace_other.ace_attribute-name,\ -.ace-monokai .ace_variable {\ -color: #A6E22E\ -}\ -.ace-monokai .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #FD971F\ -}\ -.ace-monokai .ace_string {\ -color: #E6DB74\ -}\ -.ace-monokai .ace_comment {\ -color: #75715E\ -}\ -.ace-monokai .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/monokai"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-nord_dark.js b/src-noconflict/theme-nord_dark.js deleted file mode 100644 index e4c0a57..0000000 --- a/src-noconflict/theme-nord_dark.js +++ /dev/null @@ -1,102 +0,0 @@ -ace.define("ace/theme/nord_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-nord-dark"; -exports.cssText = ".ace-nord-dark .ace_gutter {\ -color: #616e88;\ -}\ -.ace-nord-dark .ace_print-margin {\ -width: 1px;\ -background: #4c566a;\ -}\ -.ace-nord-dark {\ -background-color: #2e3440;\ -color: #d8dee9;\ -}\ -.ace-nord-dark .ace_entity.ace_other.ace_attribute-name,\ -.ace-nord-dark .ace_storage {\ -color: #d8dee9;\ -}\ -.ace-nord-dark .ace_cursor {\ -color: #d8dee9;\ -},\ -.ace-nord-dark .ace_string.ace_regexp {\ -color: #bf616a;\ -}\ -.ace-nord-dark .ace_marker-layer .ace_active-line {\ -background: #434c5ecc;\ -}\ -.ace-nord-dark .ace_marker-layer .ace_selection {\ -background: #434c5ecc;\ -}\ -.ace-nord-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2e3440;\ -}\ -.ace-nord-dark .ace_marker-layer .ace_step {\ -background: #ebcb8b;\ -}\ -.ace-nord-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #88c0d066;\ -}\ -.ace-nord-dark .ace_gutter-active-line {\ -background-color: #434c5ecc;\ -}\ -.ace-nord-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #88c0d066;\ -}\ -.ace-nord-dark .ace_invisible {\ -color: #4c566a;\ -}\ -.ace-nord-dark .ace_keyword,\ -.ace-nord-dark .ace_meta,\ -.ace-nord-dark .ace_support.ace_class,\ -.ace-nord-dark .ace_support.ace_type {\ -color: #81a1c1;\ -}\ -.ace-nord-dark .ace_constant.ace_character,\ -.ace-nord-dark .ace_constant.ace_other {\ -color: #d8dee9;\ -}\ -.ace-nord-dark .ace_constant.ace_language {\ -color: #5e81ac;\ -}\ -.ace-nord-dark .ace_constant.ace_escape {\ -color: #ebcB8b;\ -}\ -.ace-nord-dark .ace_constant.ace_numeric {\ -color: #b48ead;\ -}\ -.ace-nord-dark .ace_fold {\ -background-color: #4c566a;\ -border-color: #d8dee9;\ -}\ -.ace-nord-dark .ace_entity.ace_name.ace_function,\ -.ace-nord-dark .ace_entity.ace_name.ace_tag,\ -.ace-nord-dark .ace_support.ace_function,\ -.ace-nord-dark .ace_variable,\ -.ace-nord-dark .ace_variable.ace_language {\ -color: #8fbcbb;\ -}\ -.ace-nord-dark .ace_string {\ -color: #a3be8c;\ -}\ -.ace-nord-dark .ace_comment {\ -color: #616e88;\ -}\ -.ace-nord-dark .ace_indent-guide {\ -box-shadow: inset -1px 0 0 0 #434c5eb3;\ -}\ -"; -exports.$selectionColorConflict = true; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/nord_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-one_dark.js b/src-noconflict/theme-one_dark.js deleted file mode 100644 index 5955f7f..0000000 --- a/src-noconflict/theme-one_dark.js +++ /dev/null @@ -1,139 +0,0 @@ -ace.define("ace/theme/one_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - - exports.isDark = true; - exports.cssClass = "ace-one-dark"; - exports.cssText = ".ace-one-dark .ace_gutter {\ -background: #282c34;\ -color: #6a6f7a\ -}\ -.ace-one-dark .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-one-dark {\ -background-color: #282c34;\ -color: #abb2bf\ -}\ -.ace-one-dark .ace_cursor {\ -color: #528bff\ -}\ -.ace-one-dark .ace_marker-layer .ace_selection {\ -background: #3d4350\ -}\ -.ace-one-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0 #282c34;\ -border-radius: 2px\ -}\ -.ace-one-dark .ace_marker-layer .ace_step {\ -background: #c6dbae\ -}\ -.ace-one-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #747369\ -}\ -.ace-one-dark .ace_marker-layer .ace_active-line {\ -background: rgba(76, 87, 103, .19)\ -}\ -.ace-one-dark .ace_gutter-active-line {\ -background-color: rgba(76, 87, 103, .19)\ -}\ -.ace-one-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #3d4350\ -}\ -.ace-one-dark .ace_fold {\ -background-color: #61afef;\ -border-color: #abb2bf\ -}\ -.ace-one-dark .ace_keyword {\ -color: #c678dd\ -}\ -.ace-one-dark .ace_keyword.ace_operator {\ -color: #c678dd\ -}\ -.ace-one-dark .ace_keyword.ace_other.ace_unit {\ -color: #d19a66\ -}\ -.ace-one-dark .ace_constant.ace_language {\ -color: #d19a66\ -}\ -.ace-one-dark .ace_constant.ace_numeric {\ -color: #d19a66\ -}\ -.ace-one-dark .ace_constant.ace_character {\ -color: #56b6c2\ -}\ -.ace-one-dark .ace_constant.ace_other {\ -color: #56b6c2\ -}\ -.ace-one-dark .ace_support.ace_function {\ -color: #61afef\ -}\ -.ace-one-dark .ace_support.ace_constant {\ -color: #d19a66\ -}\ -.ace-one-dark .ace_support.ace_class {\ -color: #e5c07b\ -}\ -.ace-one-dark .ace_support.ace_type {\ -color: #e5c07b\ -}\ -.ace-one-dark .ace_storage {\ -color: #c678dd\ -}\ -.ace-one-dark .ace_storage.ace_type {\ -color: #c678dd\ -}\ -.ace-one-dark .ace_invalid {\ -color: #fff;\ -background-color: #f2777a\ -}\ -.ace-one-dark .ace_invalid.ace_deprecated {\ -color: #272b33;\ -background-color: #d27b53\ -}\ -.ace-one-dark .ace_string {\ -color: #98c379\ -}\ -.ace-one-dark .ace_string.ace_regexp {\ -color: #e06c75\ -}\ -.ace-one-dark .ace_comment {\ -font-style: italic;\ -color: #5c6370\ -}\ -.ace-one-dark .ace_variable {\ -color: #e06c75\ -}\ -.ace-one-dark .ace_variable.ace_parameter {\ -color: #d19a66\ -}\ -.ace-one-dark .ace_meta.ace_tag {\ -color: #e06c75\ -}\ -.ace-one-dark .ace_entity.ace_other.ace_attribute-name {\ -color: #e06c75\ -}\ -.ace-one-dark .ace_entity.ace_name.ace_function {\ -color: #61afef\ -}\ -.ace-one-dark .ace_entity.ace_name.ace_tag {\ -color: #e06c75\ -}\ -.ace-one-dark .ace_markup.ace_heading {\ -color: #98c379\ -}\ -.ace-one-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass, false); - }); (function() { - ace.require(["ace/theme/one_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-pastel_on_dark.js b/src-noconflict/theme-pastel_on_dark.js deleted file mode 100644 index 606d69e..0000000 --- a/src-noconflict/theme-pastel_on_dark.js +++ /dev/null @@ -1,115 +0,0 @@ -ace.define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-pastel-on-dark"; -exports.cssText = ".ace-pastel-on-dark .ace_gutter {\ -background: #353030;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_print-margin {\ -width: 1px;\ -background: #353030\ -}\ -.ace-pastel-on-dark {\ -background-color: #2C2828;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2C2828;\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_keyword,\ -.ace-pastel-on-dark .ace_meta {\ -color: #757aD8\ -}\ -.ace-pastel-on-dark .ace_constant,\ -.ace-pastel-on-dark .ace_constant.ace_character,\ -.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\ -.ace-pastel-on-dark .ace_constant.ace_other {\ -color: #4FB7C5\ -}\ -.ace-pastel-on-dark .ace_keyword.ace_operator {\ -color: #797878\ -}\ -.ace-pastel-on-dark .ace_constant.ace_character {\ -color: #AFA472\ -}\ -.ace-pastel-on-dark .ace_constant.ace_language {\ -color: #DE8E30\ -}\ -.ace-pastel-on-dark .ace_constant.ace_numeric {\ -color: #CCCCCC\ -}\ -.ace-pastel-on-dark .ace_invalid,\ -.ace-pastel-on-dark .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-pastel-on-dark .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-pastel-on-dark .ace_fold {\ -background-color: #757aD8;\ -border-color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_support.ace_function {\ -color: #AEB2F8\ -}\ -.ace-pastel-on-dark .ace_string {\ -color: #66A968\ -}\ -.ace-pastel-on-dark .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-pastel-on-dark .ace_comment {\ -color: #A6C6FF\ -}\ -.ace-pastel-on-dark .ace_variable {\ -color: #BEBF55\ -}\ -.ace-pastel-on-dark .ace_variable.ace_language {\ -color: #C1C144\ -}\ -.ace-pastel-on-dark .ace_xml-pe {\ -color: #494949\ -}\ -.ace-pastel-on-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/pastel_on_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-solarized_dark.js b/src-noconflict/theme-solarized_dark.js deleted file mode 100644 index 2969b62..0000000 --- a/src-noconflict/theme-solarized_dark.js +++ /dev/null @@ -1,95 +0,0 @@ -ace.define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-solarized-dark"; -exports.cssText = ".ace-solarized-dark .ace_gutter {\ -background: #01313f;\ -color: #d0edf7\ -}\ -.ace-solarized-dark .ace_print-margin {\ -width: 1px;\ -background: #33555E\ -}\ -.ace-solarized-dark {\ -background-color: #002B36;\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\ -.ace-solarized-dark .ace_storage {\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_cursor,\ -.ace-solarized-dark .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_active-line,\ -.ace-solarized-dark .ace_marker-layer .ace_selection {\ -background: rgba(255, 255, 255, 0.1)\ -}\ -.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002B36;\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_gutter-active-line {\ -background-color: #0d3440\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #073642\ -}\ -.ace-solarized-dark .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_keyword,\ -.ace-solarized-dark .ace_meta,\ -.ace-solarized-dark .ace_support.ace_class,\ -.ace-solarized-dark .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-dark .ace_constant.ace_character,\ -.ace-solarized-dark .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-dark .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-dark .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-dark .ace_fold {\ -background-color: #268BD2;\ -border-color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_name.ace_function,\ -.ace-solarized-dark .ace_entity.ace_name.ace_tag,\ -.ace-solarized-dark .ace_support.ace_function,\ -.ace-solarized-dark .ace_variable,\ -.ace-solarized-dark .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-dark .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-dark .ace_comment {\ -font-style: italic;\ -color: #657B83\ -}\ -.ace-solarized-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/solarized_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-solarized_light.js b/src-noconflict/theme-solarized_light.js deleted file mode 100644 index 05a2d2c..0000000 --- a/src-noconflict/theme-solarized_light.js +++ /dev/null @@ -1,98 +0,0 @@ -ace.define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-solarized-light"; -exports.cssText = ".ace-solarized-light .ace_gutter {\ -background: #fbf1d3;\ -color: #333\ -}\ -.ace-solarized-light .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-solarized-light {\ -background-color: #FDF6E3;\ -color: #586E75\ -}\ -.ace-solarized-light .ace_cursor {\ -color: #000000\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selection {\ -background: rgba(7, 54, 67, 0.09)\ -}\ -.ace-solarized-light.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FDF6E3;\ -}\ -.ace-solarized-light .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_active-line {\ -background: #EEE8D5\ -}\ -.ace-solarized-light .ace_gutter-active-line {\ -background-color : #EDE5C1\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selected-word {\ -border: 1px solid #7f9390\ -}\ -.ace-solarized-light .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_keyword,\ -.ace-solarized-light .ace_meta,\ -.ace-solarized-light .ace_support.ace_class,\ -.ace-solarized-light .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-light .ace_constant.ace_character,\ -.ace-solarized-light .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-light .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-light .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-light .ace_fold {\ -background-color: #268BD2;\ -border-color: #586E75\ -}\ -.ace-solarized-light .ace_entity.ace_name.ace_function,\ -.ace-solarized-light .ace_entity.ace_name.ace_tag,\ -.ace-solarized-light .ace_support.ace_function,\ -.ace-solarized-light .ace_variable,\ -.ace-solarized-light .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-light .ace_storage {\ -color: #073642\ -}\ -.ace-solarized-light .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-light .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-light .ace_comment,\ -.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\ -color: #93A1A1\ -}\ -.ace-solarized-light .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/solarized_light"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-sqlserver.js b/src-noconflict/theme-sqlserver.js deleted file mode 100644 index 3694f21..0000000 --- a/src-noconflict/theme-sqlserver.js +++ /dev/null @@ -1,145 +0,0 @@ -ace.define("ace/theme/sqlserver",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-sqlserver"; -exports.cssText = ".ace-sqlserver .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow: hidden;\ -}\ -.ace-sqlserver .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-sqlserver {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-sqlserver .ace_identifier {\ -color: black;\ -}\ -.ace-sqlserver .ace_keyword {\ -color: #0000FF;\ -}\ -.ace-sqlserver .ace_numeric {\ -color: black;\ -}\ -.ace-sqlserver .ace_storage {\ -color: #11B7BE;\ -}\ -.ace-sqlserver .ace_keyword.ace_operator,\ -.ace-sqlserver .ace_lparen,\ -.ace-sqlserver .ace_rparen,\ -.ace-sqlserver .ace_punctuation {\ -color: #808080;\ -}\ -.ace-sqlserver .ace_set.ace_statement {\ -color: #0000FF;\ -text-decoration: underline;\ -}\ -.ace-sqlserver .ace_cursor {\ -color: black;\ -}\ -.ace-sqlserver .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-sqlserver .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-sqlserver .ace_constant.ace_language {\ -color: #979797;\ -}\ -.ace-sqlserver .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-sqlserver .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-sqlserver .ace_support.ace_function {\ -color: #FF00FF;\ -}\ -.ace-sqlserver .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-sqlserver .ace_class {\ -color: #008080;\ -}\ -.ace-sqlserver .ace_support.ace_other {\ -color: #6D79DE;\ -}\ -.ace-sqlserver .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #FD971F;\ -}\ -.ace-sqlserver .ace_comment {\ -color: #008000;\ -}\ -.ace-sqlserver .ace_constant.ace_numeric {\ -color: black;\ -}\ -.ace-sqlserver .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-sqlserver .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-sqlserver .ace_support.ace_storedprocedure {\ -color: #800000;\ -}\ -.ace-sqlserver .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-sqlserver .ace_list {\ -color: rgb(185, 6, 144);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-sqlserver .ace_gutter-active-line {\ -background-color: #dcdcdc;\ -}\ -.ace-sqlserver .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-sqlserver .ace_meta.ace_tag {\ -color: #0000FF;\ -}\ -.ace-sqlserver .ace_string.ace_regex {\ -color: #FF0000;\ -}\ -.ace-sqlserver .ace_string {\ -color: #FF0000;\ -}\ -.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {\ -color: #994409;\ -}\ -.ace-sqlserver .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/sqlserver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-terminal.js b/src-noconflict/theme-terminal.js deleted file mode 100644 index a8ed039..0000000 --- a/src-noconflict/theme-terminal.js +++ /dev/null @@ -1,121 +0,0 @@ -ace.define("ace/theme/terminal",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-terminal-theme"; -exports.cssText = ".ace-terminal-theme .ace_gutter {\ -background: #1a0005;\ -color: steelblue\ -}\ -.ace-terminal-theme .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-terminal-theme {\ -background-color: black;\ -color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px black;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_step {\ -background: rgb(0, 0, 0)\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #900\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-terminal-theme .ace_gutter-active-line {\ -background-color: #2A112A\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid #424242\ -}\ -.ace-terminal-theme .ace_invisible {\ -color: #343434\ -}\ -.ace-terminal-theme .ace_keyword,\ -.ace-terminal-theme .ace_meta,\ -.ace-terminal-theme .ace_storage,\ -.ace-terminal-theme .ace_storage.ace_type,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: tomato\ -}\ -.ace-terminal-theme .ace_keyword.ace_operator {\ -color: deeppink\ -}\ -.ace-terminal-theme .ace_constant.ace_character,\ -.ace-terminal-theme .ace_constant.ace_language,\ -.ace-terminal-theme .ace_constant.ace_numeric,\ -.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\ -.ace-terminal-theme .ace_support.ace_constant,\ -.ace-terminal-theme .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-terminal-theme .ace_constant.ace_other {\ -color: gold\ -}\ -.ace-terminal-theme .ace_invalid {\ -color: yellow;\ -background-color: red\ -}\ -.ace-terminal-theme .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-terminal-theme .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_function,\ -.ace-terminal-theme .ace_support.ace_function,\ -.ace-terminal-theme .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-terminal-theme .ace_support.ace_class,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-terminal-theme .ace_heading,\ -.ace-terminal-theme .ace_string {\ -color: #B9CA4A\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_tag,\ -.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\ -.ace-terminal-theme .ace_meta.ace_tag,\ -.ace-terminal-theme .ace_string.ace_regexp,\ -.ace-terminal-theme .ace_variable {\ -color: #D54E53\ -}\ -.ace-terminal-theme .ace_comment {\ -color: orangered\ -}\ -.ace-terminal-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/terminal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-textmate.js b/src-noconflict/theme-textmate.js deleted file mode 100644 index b96bfd2..0000000 --- a/src-noconflict/theme-textmate.js +++ /dev/null @@ -1,137 +0,0 @@ -ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; -exports.$id = "ace/theme/textmate"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/textmate"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-tomorrow.js b/src-noconflict/theme-tomorrow.js deleted file mode 100644 index 32c5acd..0000000 --- a/src-noconflict/theme-tomorrow.js +++ /dev/null @@ -1,115 +0,0 @@ -ace.define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-tomorrow"; -exports.cssText = ".ace-tomorrow .ace_gutter {\ -background: #f6f6f6;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_print-margin {\ -width: 1px;\ -background: #f6f6f6\ -}\ -.ace-tomorrow {\ -background-color: #FFFFFF;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selection {\ -background: #D6D6D6\ -}\ -.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-tomorrow .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-tomorrow .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #D1D1D1\ -}\ -.ace-tomorrow .ace_marker-layer .ace_active-line {\ -background: #EFEFEF\ -}\ -.ace-tomorrow .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selected-word {\ -border: 1px solid #D6D6D6\ -}\ -.ace-tomorrow .ace_invisible {\ -color: #D1D1D1\ -}\ -.ace-tomorrow .ace_keyword,\ -.ace-tomorrow .ace_meta,\ -.ace-tomorrow .ace_storage,\ -.ace-tomorrow .ace_storage.ace_type,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #8959A8\ -}\ -.ace-tomorrow .ace_keyword.ace_operator {\ -color: #3E999F\ -}\ -.ace-tomorrow .ace_constant.ace_character,\ -.ace-tomorrow .ace_constant.ace_language,\ -.ace-tomorrow .ace_constant.ace_numeric,\ -.ace-tomorrow .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow .ace_support.ace_constant,\ -.ace-tomorrow .ace_variable.ace_parameter {\ -color: #F5871F\ -}\ -.ace-tomorrow .ace_constant.ace_other {\ -color: #666969\ -}\ -.ace-tomorrow .ace_invalid {\ -color: #FFFFFF;\ -background-color: #C82829\ -}\ -.ace-tomorrow .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #8959A8\ -}\ -.ace-tomorrow .ace_fold {\ -background-color: #4271AE;\ -border-color: #4D4D4C\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_function,\ -.ace-tomorrow .ace_support.ace_function,\ -.ace-tomorrow .ace_variable {\ -color: #4271AE\ -}\ -.ace-tomorrow .ace_support.ace_class,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #C99E00\ -}\ -.ace-tomorrow .ace_heading,\ -.ace-tomorrow .ace_markup.ace_heading,\ -.ace-tomorrow .ace_string {\ -color: #718C00\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow .ace_meta.ace_tag,\ -.ace-tomorrow .ace_string.ace_regexp,\ -.ace-tomorrow .ace_variable {\ -color: #C82829\ -}\ -.ace-tomorrow .ace_comment {\ -color: #8E908C\ -}\ -.ace-tomorrow .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/tomorrow"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-tomorrow_night.js b/src-noconflict/theme-tomorrow_night.js deleted file mode 100644 index ec0ea76..0000000 --- a/src-noconflict/theme-tomorrow_night.js +++ /dev/null @@ -1,115 +0,0 @@ -ace.define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night"; -exports.cssText = ".ace-tomorrow-night .ace_gutter {\ -background: #25282c;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_print-margin {\ -width: 1px;\ -background: #25282c\ -}\ -.ace-tomorrow-night {\ -background-color: #1D1F21;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selection {\ -background: #373B41\ -}\ -.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1D1F21;\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #4B4E55\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_active-line {\ -background: #282A2E\ -}\ -.ace-tomorrow-night .ace_gutter-active-line {\ -background-color: #282A2E\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selected-word {\ -border: 1px solid #373B41\ -}\ -.ace-tomorrow-night .ace_invisible {\ -color: #4B4E55\ -}\ -.ace-tomorrow-night .ace_keyword,\ -.ace-tomorrow-night .ace_meta,\ -.ace-tomorrow-night .ace_storage,\ -.ace-tomorrow-night .ace_storage.ace_type,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #B294BB\ -}\ -.ace-tomorrow-night .ace_keyword.ace_operator {\ -color: #8ABEB7\ -}\ -.ace-tomorrow-night .ace_constant.ace_character,\ -.ace-tomorrow-night .ace_constant.ace_language,\ -.ace-tomorrow-night .ace_constant.ace_numeric,\ -.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night .ace_support.ace_constant,\ -.ace-tomorrow-night .ace_variable.ace_parameter {\ -color: #DE935F\ -}\ -.ace-tomorrow-night .ace_constant.ace_other {\ -color: #CED1CF\ -}\ -.ace-tomorrow-night .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night .ace_fold {\ -background-color: #81A2BE;\ -border-color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night .ace_support.ace_function,\ -.ace-tomorrow-night .ace_variable {\ -color: #81A2BE\ -}\ -.ace-tomorrow-night .ace_support.ace_class,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #F0C674\ -}\ -.ace-tomorrow-night .ace_heading,\ -.ace-tomorrow-night .ace_markup.ace_heading,\ -.ace-tomorrow-night .ace_string {\ -color: #B5BD68\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night .ace_meta.ace_tag,\ -.ace-tomorrow-night .ace_string.ace_regexp,\ -.ace-tomorrow-night .ace_variable {\ -color: #CC6666\ -}\ -.ace-tomorrow-night .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/tomorrow_night"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-tomorrow_night_blue.js b/src-noconflict/theme-tomorrow_night_blue.js deleted file mode 100644 index 729eebc..0000000 --- a/src-noconflict/theme-tomorrow_night_blue.js +++ /dev/null @@ -1,113 +0,0 @@ -ace.define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-blue"; -exports.cssText = ".ace-tomorrow-night-blue .ace_gutter {\ -background: #00204b;\ -color: #7388b5\ -}\ -.ace-tomorrow-night-blue .ace_print-margin {\ -width: 1px;\ -background: #00204b\ -}\ -.ace-tomorrow-night-blue {\ -background-color: #002451;\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_other,\ -.ace-tomorrow-night-blue .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\ -background: #003F8E\ -}\ -.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002451;\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\ -background: #00346E\ -}\ -.ace-tomorrow-night-blue .ace_gutter-active-line {\ -background-color: #022040\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\ -border: 1px solid #003F8E\ -}\ -.ace-tomorrow-night-blue .ace_invisible {\ -color: #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_keyword,\ -.ace-tomorrow-night-blue .ace_meta,\ -.ace-tomorrow-night-blue .ace_storage,\ -.ace-tomorrow-night-blue .ace_storage.ace_type,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_keyword.ace_operator {\ -color: #99FFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_character,\ -.ace-tomorrow-night-blue .ace_constant.ace_language,\ -.ace-tomorrow-night-blue .ace_constant.ace_numeric,\ -.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-blue .ace_support.ace_constant,\ -.ace-tomorrow-night-blue .ace_variable.ace_parameter {\ -color: #FFC58F\ -}\ -.ace-tomorrow-night-blue .ace_invalid {\ -color: #FFFFFF;\ -background-color: #F99DA5\ -}\ -.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_fold {\ -background-color: #BBDAFF;\ -border-color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-blue .ace_support.ace_function,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #BBDAFF\ -}\ -.ace-tomorrow-night-blue .ace_support.ace_class,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #FFEEAD\ -}\ -.ace-tomorrow-night-blue .ace_heading,\ -.ace-tomorrow-night-blue .ace_markup.ace_heading,\ -.ace-tomorrow-night-blue .ace_string {\ -color: #D1F1A9\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-blue .ace_meta.ace_tag,\ -.ace-tomorrow-night-blue .ace_string.ace_regexp,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #FF9DA4\ -}\ -.ace-tomorrow-night-blue .ace_comment {\ -color: #7285B7\ -}\ -.ace-tomorrow-night-blue .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/tomorrow_night_blue"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-tomorrow_night_bright.js b/src-noconflict/theme-tomorrow_night_bright.js deleted file mode 100644 index 99fb314..0000000 --- a/src-noconflict/theme-tomorrow_night_bright.js +++ /dev/null @@ -1,128 +0,0 @@ -ace.define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-bright"; -exports.cssText = ".ace-tomorrow-night-bright .ace_gutter {\ -background: #1a1a1a;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-tomorrow-night-bright {\ -background-color: #000000;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #000000;\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {\ -border: 1px solid rgb(110, 119, 0);\ -border-bottom: 0;\ -box-shadow: inset 0 -1px rgb(110, 119, 0);\ -margin: -1px 0 0 -1px;\ -background: rgba(255, 235, 0, 0.1)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_gutter-active-line {\ -background-color: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background-color: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_invisible {\ -color: #343434\ -}\ -.ace-tomorrow-night-bright .ace_keyword,\ -.ace-tomorrow-night-bright .ace_meta,\ -.ace-tomorrow-night-bright .ace_storage,\ -.ace-tomorrow-night-bright .ace_storage.ace_type,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #C397D8\ -}\ -.ace-tomorrow-night-bright .ace_keyword.ace_operator {\ -color: #70C0B1\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_character,\ -.ace-tomorrow-night-bright .ace_constant.ace_language,\ -.ace-tomorrow-night-bright .ace_constant.ace_numeric,\ -.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-bright .ace_support.ace_constant,\ -.ace-tomorrow-night-bright .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_other {\ -color: #EEEEEE\ -}\ -.ace-tomorrow-night-bright .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night-bright .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-bright .ace_support.ace_function,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-tomorrow-night-bright .ace_support.ace_class,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-tomorrow-night-bright .ace_heading,\ -.ace-tomorrow-night-bright .ace_markup.ace_heading,\ -.ace-tomorrow-night-bright .ace_string {\ -color: #B9CA4A\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-bright .ace_meta.ace_tag,\ -.ace-tomorrow-night-bright .ace_string.ace_regexp,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #D54E53\ -}\ -.ace-tomorrow-night-bright .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {\ -color: #C2C280\ -}\ -.ace-tomorrow-night-bright .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/tomorrow_night_bright"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-tomorrow_night_eighties.js b/src-noconflict/theme-tomorrow_night_eighties.js deleted file mode 100644 index a9dc8e6..0000000 --- a/src-noconflict/theme-tomorrow_night_eighties.js +++ /dev/null @@ -1,115 +0,0 @@ -ace.define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-eighties"; -exports.cssText = ".ace-tomorrow-night-eighties .ace_gutter {\ -background: #272727;\ -color: #CCC\ -}\ -.ace-tomorrow-night-eighties .ace_print-margin {\ -width: 1px;\ -background: #272727\ -}\ -.ace-tomorrow-night-eighties {\ -background-color: #2D2D2D;\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_other,\ -.ace-tomorrow-night-eighties .ace_cursor {\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\ -background: #515151\ -}\ -.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2D2D2D;\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #6A6A6A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {\ -background: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_gutter-active-line {\ -background-color: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {\ -border: 1px solid #515151\ -}\ -.ace-tomorrow-night-eighties .ace_invisible {\ -color: #6A6A6A\ -}\ -.ace-tomorrow-night-eighties .ace_keyword,\ -.ace-tomorrow-night-eighties .ace_meta,\ -.ace-tomorrow-night-eighties .ace_storage,\ -.ace-tomorrow-night-eighties .ace_storage.ace_type,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\ -color: #66CCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_character,\ -.ace-tomorrow-night-eighties .ace_constant.ace_language,\ -.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\ -.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-eighties .ace_support.ace_constant,\ -.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\ -color: #F99157\ -}\ -.ace-tomorrow-night-eighties .ace_invalid {\ -color: #CDCDCD;\ -background-color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\ -color: #CDCDCD;\ -background-color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_fold {\ -background-color: #6699CC;\ -border-color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-eighties .ace_support.ace_function,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #6699CC\ -}\ -.ace-tomorrow-night-eighties .ace_support.ace_class,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #FFCC66\ -}\ -.ace-tomorrow-night-eighties .ace_heading,\ -.ace-tomorrow-night-eighties .ace_markup.ace_heading,\ -.ace-tomorrow-night-eighties .ace_string {\ -color: #99CC99\ -}\ -.ace-tomorrow-night-eighties .ace_comment {\ -color: #999999\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-eighties .ace_meta.ace_tag,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/tomorrow_night_eighties"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-twilight.js b/src-noconflict/theme-twilight.js deleted file mode 100644 index 8374b17..0000000 --- a/src-noconflict/theme-twilight.js +++ /dev/null @@ -1,116 +0,0 @@ -ace.define("ace/theme/twilight",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-twilight"; -exports.cssText = ".ace-twilight .ace_gutter {\ -background: #232323;\ -color: #E2E2E2\ -}\ -.ace-twilight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-twilight {\ -background-color: #141414;\ -color: #F8F8F8\ -}\ -.ace-twilight .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-twilight .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #141414;\ -}\ -.ace-twilight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-twilight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_keyword,\ -.ace-twilight .ace_meta {\ -color: #CDA869\ -}\ -.ace-twilight .ace_constant,\ -.ace-twilight .ace_constant.ace_character,\ -.ace-twilight .ace_constant.ace_character.ace_escape,\ -.ace-twilight .ace_constant.ace_other,\ -.ace-twilight .ace_heading,\ -.ace-twilight .ace_markup.ace_heading,\ -.ace-twilight .ace_support.ace_constant {\ -color: #CF6A4C\ -}\ -.ace-twilight .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-twilight .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-twilight .ace_support {\ -color: #9B859D\ -}\ -.ace-twilight .ace_fold {\ -background-color: #AC885B;\ -border-color: #F8F8F8\ -}\ -.ace-twilight .ace_support.ace_function {\ -color: #DAD085\ -}\ -.ace-twilight .ace_list,\ -.ace-twilight .ace_markup.ace_list,\ -.ace-twilight .ace_storage {\ -color: #F9EE98\ -}\ -.ace-twilight .ace_entity.ace_name.ace_function,\ -.ace-twilight .ace_meta.ace_tag {\ -color: #AC885B\ -}\ -.ace-twilight .ace_string {\ -color: #8F9D6A\ -}\ -.ace-twilight .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-twilight .ace_comment {\ -font-style: italic;\ -color: #5F5A60\ -}\ -.ace-twilight .ace_variable {\ -color: #7587A6\ -}\ -.ace-twilight .ace_xml-pe {\ -color: #494949\ -}\ -.ace-twilight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/twilight"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-vibrant_ink.js b/src-noconflict/theme-vibrant_ink.js deleted file mode 100644 index 851f773..0000000 --- a/src-noconflict/theme-vibrant_ink.js +++ /dev/null @@ -1,101 +0,0 @@ -ace.define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-vibrant-ink"; -exports.cssText = ".ace-vibrant-ink .ace_gutter {\ -background: #1a1a1a;\ -color: #BEBEBE\ -}\ -.ace-vibrant-ink .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-vibrant-ink {\ -background-color: #0F0F0F;\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selection {\ -background: #6699CC\ -}\ -.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0F0F0F;\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_active-line {\ -background: #333333\ -}\ -.ace-vibrant-ink .ace_gutter-active-line {\ -background-color: #333333\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selected-word {\ -border: 1px solid #6699CC\ -}\ -.ace-vibrant-ink .ace_invisible {\ -color: #404040\ -}\ -.ace-vibrant-ink .ace_keyword,\ -.ace-vibrant-ink .ace_meta {\ -color: #FF6600\ -}\ -.ace-vibrant-ink .ace_constant,\ -.ace-vibrant-ink .ace_constant.ace_character,\ -.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\ -.ace-vibrant-ink .ace_constant.ace_other {\ -color: #339999\ -}\ -.ace-vibrant-ink .ace_constant.ace_numeric {\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_invalid,\ -.ace-vibrant-ink .ace_invalid.ace_deprecated {\ -color: #CCFF33;\ -background-color: #000000\ -}\ -.ace-vibrant-ink .ace_fold {\ -background-color: #FFCC00;\ -border-color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_entity.ace_name.ace_function,\ -.ace-vibrant-ink .ace_support.ace_function,\ -.ace-vibrant-ink .ace_variable {\ -color: #FFCC00\ -}\ -.ace-vibrant-ink .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-vibrant-ink .ace_string {\ -color: #66FF00\ -}\ -.ace-vibrant-ink .ace_string.ace_regexp {\ -color: #44B4CC\ -}\ -.ace-vibrant-ink .ace_comment {\ -color: #9933CC\ -}\ -.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\ -font-style: italic;\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/vibrant_ink"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/theme-xcode.js b/src-noconflict/theme-xcode.js deleted file mode 100644 index 8d456e8..0000000 --- a/src-noconflict/theme-xcode.js +++ /dev/null @@ -1,95 +0,0 @@ -ace.define("ace/theme/xcode",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-xcode"; -exports.cssText = "\ -.ace-xcode .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-xcode .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-xcode {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-xcode .ace_cursor {\ -color: #000000\ -}\ -.ace-xcode .ace_marker-layer .ace_selection {\ -background: #B5D5FF\ -}\ -.ace-xcode.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-xcode .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-xcode .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-xcode .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_marker-layer .ace_selected-word {\ -border: 1px solid #B5D5FF\ -}\ -.ace-xcode .ace_constant.ace_language,\ -.ace-xcode .ace_keyword,\ -.ace-xcode .ace_meta,\ -.ace-xcode .ace_variable.ace_language {\ -color: #C800A4\ -}\ -.ace-xcode .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-xcode .ace_constant.ace_character,\ -.ace-xcode .ace_constant.ace_other {\ -color: #275A5E\ -}\ -.ace-xcode .ace_constant.ace_numeric {\ -color: #3A00DC\ -}\ -.ace-xcode .ace_entity.ace_other.ace_attribute-name,\ -.ace-xcode .ace_support.ace_constant,\ -.ace-xcode .ace_support.ace_function {\ -color: #450084\ -}\ -.ace-xcode .ace_fold {\ -background-color: #C800A4;\ -border-color: #000000\ -}\ -.ace-xcode .ace_entity.ace_name.ace_tag,\ -.ace-xcode .ace_support.ace_class,\ -.ace-xcode .ace_support.ace_type {\ -color: #790EAD\ -}\ -.ace-xcode .ace_storage {\ -color: #C900A4\ -}\ -.ace-xcode .ace_string {\ -color: #DF0002\ -}\ -.ace-xcode .ace_comment {\ -color: #008E00\ -}\ -.ace-xcode .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); -}); (function() { - ace.require(["ace/theme/xcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/src-noconflict/worker-base.js b/src-noconflict/worker-base.js deleted file mode 100644 index 136d4d0..0000000 --- a/src-noconflict/worker-base.js +++ /dev/null @@ -1,1421 +0,0 @@ -"no use strict"; -!(function(window) { -if (typeof window.window != "undefined" && window.document) - return; -if (window.require && window.define) - return; - -if (!window.console) { - window.console = function() { - var msgs = Array.prototype.slice.call(arguments, 0); - postMessage({type: "log", data: msgs}); - }; - window.console.error = - window.console.warn = - window.console.log = - window.console.trace = window.console; -} -window.window = window; -window.ace = window; - -window.onerror = function(message, file, line, col, err) { - postMessage({type: "error", data: { - message: message, - data: err.data, - file: file, - line: line, - col: col, - stack: err.stack - }}); -}; - -window.normalizeModule = function(parentId, moduleName) { - // normalize plugin requires - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); - } - // normalize relative requires - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = (base ? base + "/" : "") + moduleName; - - while (moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - - return moduleName; -}; - -window.require = function require(parentId, id) { - if (!id) { - id = parentId; - parentId = null; - } - if (!id.charAt) - throw new Error("worker.js require() accepts only (parentId, id) as arguments"); - - id = window.normalizeModule(parentId, id); - - var module = window.require.modules[id]; - if (module) { - if (!module.initialized) { - module.initialized = true; - module.exports = module.factory().exports; - } - return module.exports; - } - - if (!window.require.tlns) - return console.log("unable to load " + id); - - var path = resolveModuleId(id, window.require.tlns); - if (path.slice(-3) != ".js") path += ".js"; - - window.require.id = id; - window.require.modules[id] = {}; // prevent infinite loop on broken modules - importScripts(path); - return window.require(parentId, id); -}; -function resolveModuleId(id, paths) { - var testPath = id, tail = ""; - while (testPath) { - var alias = paths[testPath]; - if (typeof alias == "string") { - return alias + tail; - } else if (alias) { - return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); - } else if (alias === false) { - return ""; - } - var i = testPath.lastIndexOf("/"); - if (i === -1) break; - tail = testPath.substr(i) + tail; - testPath = testPath.slice(0, i); - } - return id; -} -window.require.modules = {}; -window.require.tlns = {}; - -window.define = function(id, deps, factory) { - if (arguments.length == 2) { - factory = deps; - if (typeof id != "string") { - deps = id; - id = window.require.id; - } - } else if (arguments.length == 1) { - factory = id; - deps = []; - id = window.require.id; - } - - if (typeof factory != "function") { - window.require.modules[id] = { - exports: factory, - initialized: true - }; - return; - } - - if (!deps.length) - // If there is no dependencies, we inject "require", "exports" and - // "module" as dependencies, to provide CommonJS compatibility. - deps = ["require", "exports", "module"]; - - var req = function(childId) { - return window.require(id, childId); - }; - - window.require.modules[id] = { - exports: {}, - factory: function() { - var module = this; - var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { - switch (dep) { - // Because "require", "exports" and "module" aren't actual - // dependencies, we must handle them seperately. - case "require": return req; - case "exports": return module.exports; - case "module": return module; - // But for all other dependencies, we can just go ahead and - // require them. - default: return req(dep); - } - })); - if (returnExports) - module.exports = returnExports; - return module; - } - }; -}; -window.define.amd = {}; -require.tlns = {}; -window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { - for (var i in topLevelNamespaces) - require.tlns[i] = topLevelNamespaces[i]; -}; - -window.initSender = function initSender() { - - var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; - var oop = window.require("ace/lib/oop"); - - var Sender = function() {}; - - (function() { - - oop.implement(this, EventEmitter); - - this.callback = function(data, callbackId) { - postMessage({ - type: "call", - id: callbackId, - data: data - }); - }; - - this.emit = function(name, data) { - postMessage({ - type: "event", - name: name, - data: data - }); - }; - - }).call(Sender.prototype); - - return new Sender(); -}; - -var main = window.main = null; -var sender = window.sender = null; - -window.onmessage = function(e) { - var msg = e.data; - if (msg.event && sender) { - sender._signal(msg.event, msg.data); - } - else if (msg.command) { - if (main[msg.command]) - main[msg.command].apply(main, msg.args); - else if (window[msg.command]) - window[msg.command].apply(window, msg.args); - else - throw new Error("Unknown command:" + msg.command); - } - else if (msg.init) { - window.initBaseUrls(msg.tlns); - sender = window.sender = window.initSender(); - var clazz = require(msg.module)[msg.classname]; - main = window.main = new clazz(sender); - } -}; -})(this); - -ace.define("ace/range",[], function(require, exports, module) { -"use strict"; -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define("ace/lib/oop",[], function(require, exports, module) { -"use strict"; - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -exports.mixin = function(obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; - -exports.implement = function(proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define("ace/apply_delta",[], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} - -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} - -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} - -exports.applyDelta = function(docLines, delta, doNotValidate) { - - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); - } - break; - } -}; -}); - -ace.define("ace/lib/event_emitter",[], function(require, exports, module) { -"use strict"; - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column - }; - } - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.off("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define("ace/document",[], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - this.getLinesForRange = function(range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - this.insertLines = function(row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - this.removeLines = function(firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - this.insert = function(position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - - return this.insertMergedLines(position, this.$split(text)); - }; - this.insertInLine = function(position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - - return this.clonePos(end); - }; - - this.clippedPos = function(row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } else if (row < 0) { - row = 0; - } else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; - }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; - }; - - this.pos = function(row, column) { - return {row: row, column: column}; - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - this.insertFullLines = function(row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - - return this.clonePos(end); - }; - this.remove = function(range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }); - return this.clonePos(start); - }; - this.removeInLine = function(row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }, true); - - return this.clonePos(start); - }; - this.removeFullLines = function(firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - this.removeNewLine = function(row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - this.replace = function(range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - this.revertDelta(deltas[i]); - } - }; - this.applyDelta = function(delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - - this.$safeApplyDelta = function(delta) { - var docLength = this.$lines.length; - if ( - delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength - ) { - this.applyDelta(delta); - } - }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - this.revertDelta = function(delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: index + lines[l-1].length + newlineLength}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define("ace/lib/lang",[], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define("ace/apply_delta",[], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} - -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} - -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} - -exports.applyDelta = function(docLines, delta, doNotValidate) { - - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); - } - break; - } -}; -}); - -ace.define("ace/lib/event_emitter",[], function(require, exports, module) { -"use strict"; - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column - }; - } - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.off("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define("ace/document",[], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - this.getLinesForRange = function(range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - this.insertLines = function(row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - this.removeLines = function(firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - this.insert = function(position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - - return this.insertMergedLines(position, this.$split(text)); - }; - this.insertInLine = function(position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - - return this.clonePos(end); - }; - - this.clippedPos = function(row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } else if (row < 0) { - row = 0; - } else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; - }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; - }; - - this.pos = function(row, column) { - return {row: row, column: column}; - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - this.insertFullLines = function(row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - - return this.clonePos(end); - }; - this.remove = function(range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }); - return this.clonePos(start); - }; - this.removeInLine = function(row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }, true); - - return this.clonePos(start); - }; - this.removeFullLines = function(firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - this.removeNewLine = function(row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - this.replace = function(range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - this.revertDelta(deltas[i]); - } - }; - this.applyDelta = function(delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - - this.$safeApplyDelta = function(delta) { - var docLength = this.$lines.length; - if ( - delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength - ) { - this.applyDelta(delta); - } - }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - this.revertDelta = function(delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: index + lines[l-1].length + newlineLength}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define("ace/lib/lang",[], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i=6"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",browser:"./lib/coffeescript/browser",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"babel-core":"~6.26.0","babel-preset-babili":"~0.1.4","babel-preset-env":"~1.6.1","babel-preset-minify":"^0.3.0",codemirror:"^5.32.0",docco:"~0.8.0","highlight.js":"~9.12.0",jison:">=0.4.18","markdown-it":"~8.4.0",underscore:"~1.8.3",webpack:"~3.10.0"},dependencies:{}}}(),require["./helpers"]=function(){var e={};return function(){var a,t,o,n,r,l,s,i;e.starts=function(e,a,t){return a===e.substr(t,a.length)},e.ends=function(e,a,t){var o;return o=a.length,a===e.substr(e.length-o-(t||0),o)},e.repeat=s=function(e,a){var t;for(t="";0>>=1,e+=e;return t},e.compact=function(e){var a,t,o,n;for(n=[],a=0,o=e.length;ar)return n.returnOnNegativeLevel?void 0:o.call(this,i,e);e+=1}return e-1}},{key:"removeLeadingNewlines",value:function removeLeadingNewlines(){var e,a,t,o,n,r,l,s,i;for(l=this.tokens,e=a=0,n=l.length;a=n&&n>r;o=0<=r?++n:--n)if(null!=i[o]&&("string"==typeof i[o]&&(i[o]=[i[o]]),l=this.tag(e+o+t),0>a.call(i[o],l)))return-1;return e+o+t-1}},{key:"looksObjectish",value:function looksObjectish(e){var t,o;return-1!==this.indexOfTag(e,"@",null,":")||-1!==this.indexOfTag(e,null,":")||(o=this.indexOfTag(e,c),!!(-1!==o&&(t=null,this.detectEnd(o+1,function(e){var t;return t=e[0],0<=a.call(d,t)},function(e,a){return t=a}),":"===this.tag(t+1))))}},{key:"findTagsBackwards",value:function findTagsBackwards(e,t){var o,n,r,l,s,i,p;for(o=[];0<=e&&(o.length||(l=this.tag(e),0>a.call(t,l))&&((s=this.tag(e),0>a.call(c,s))||this.tokens[e].generated)&&(i=this.tag(e),0>a.call(g,i)));)(n=this.tag(e),0<=a.call(d,n))&&o.push(this.tag(e)),(r=this.tag(e),0<=a.call(c,r))&&o.length&&o.pop(),e-=1;return p=this.tag(e),0<=a.call(t,p)}},{key:"addImplicitBracesAndParens",value:function addImplicitBracesAndParens(){var e,t;return e=[],t=null,this.scanTokens(function(o,l,f){var i=this,y=_slicedToArray(o,1),T,v,b,$,_,C,D,E,x,I,S,A,R,k,O,L,F,w,P,j,M,U,V,s,B,G,H,W,X,Y,q,z,J;J=y[0];var K=P=0"!==w&&"->"!==w&&"["!==w&&"("!==w&&","!==w&&"{"!==w&&"ELSE"!==w&&"="!==w)for(;D()||x()&&":"!==w;)D()?T():v();return E()&&e.pop(),e.push([J,l]),b(1)}if(0<=a.call(c,J))return e.push([J,l]),b(1);if(0<=a.call(d,J)){for(;C();)D()?T():x()?v():e.pop();t=e.pop()}if(_=function(){var e,t,n,r;return(n=i.findTagsBackwards(l,["FOR"])&&i.findTagsBackwards(l,["FORIN","FOROF","FORFROM"]),e=n||i.findTagsBackwards(l,["WHILE","UNTIL","LOOP","LEADING_WHEN"]),!!e)&&(t=!1,r=o[2].first_line,i.detectEnd(l,function(e){var t;return t=e[0],0<=a.call(g,t)},function(e,a){var o=f[a-1]||[],n=_slicedToArray(o,3),l;return w=n[0],l=n[2].first_line,t=r===l&&("->"===w||"=>"===w)},{returnOnNegativeLevel:!0}),t)},(0<=a.call(m,J)&&o.spaced||"?"===J&&0a.call(d,e):return t[1];case"@"!==this.tag(l-2):return l-2;default:return l-1}}.call(this),z=0>=V||(M=this.tag(V-1),0<=a.call(g,M))||f[V-1].newLine,W()){var ae=W(),te=_slicedToArray(ae,2);if(H=te[0],B=te[1],("{"===H||"INDENT"===H&&"{"===this.tag(B-1))&&(z||","===this.tag(V-1)||"{"===this.tag(V-1)))return b(1)}return q(V,!!z),b(2)}if(0<=a.call(g,J))for(R=e.length-1;0<=R&&(G=e[R],!!I(G));R+=-1)A(G)&&(G[2].sameLine=!1);if(k="OUTDENT"===w||P.newLine,0<=a.call(u,J)||0<=a.call(n,J)&&k||(".."===J||"..."===J)&&this.findTagsBackwards(l,["INDEX_START"]))for(;C();){var oe=W(),ne=_slicedToArray(oe,3);H=ne[0],B=ne[1];var re=ne[2];if(s=re.sameLine,z=re.startsLine,D()&&","!==w||","===w&&"TERMINATOR"===J&&null==O)T();else if(x()&&s&&"TERMINATOR"!==J&&":"!==w&&!(("POST_IF"===J||"FOR"===J||"WHILE"===J||"UNTIL"===J)&&z&&$(l+1)))v();else if(x()&&"TERMINATOR"===J&&","!==w&&!(z&&this.looksObjectish(l+1)))v();else break}if(","===J&&!this.looksObjectish(l+1)&&x()&&"FOROF"!==(U=this.tag(l+2))&&"FORIN"!==U&&("TERMINATOR"!==O||!this.looksObjectish(l+2)))for(F="OUTDENT"===O?1:0;x();)v(l+F);return b(1)})}},{key:"enforceValidCSXAttributes",value:function enforceValidCSXAttributes(){return this.scanTokens(function(e,a,t){var o,n;return e.csxColon&&(o=t[a+1],"STRING_START"!==(n=o[0])&&"STRING"!==n&&"("!==n&&C("expected wrapped or quoted JSX attribute",o[2])),1})}},{key:"rescueStowawayComments",value:function rescueStowawayComments(){var e,t,o;return e=function(e,a,t,o){return"TERMINATOR"!==t[a][0]&&t[o](N("TERMINATOR","\n",t[a])),t[o](N("JS","",t[a],e))},o=function(t,o,n){var r,s,i,d,c,p,u;for(s=o;s!==n.length&&(c=n[s][0],0<=a.call(l,c));)s++;if(!(s===n.length||(p=n[s][0],0<=a.call(l,p)))){for(u=t.comments,i=0,d=u.length;ia.call(n,r)))return this.tokens.splice(o,0,N("(","(",this.tokens[o])),this.tokens.splice(t+1,0,N(")",")",this.tokens[t]))},o=null,this.scanTokens(function(a,n){var r,l;return"do"===a[1]?(o=n,r=n+1,"PARAM_START"===this.tag(n+1)&&(r=null,this.detectEnd(n+1,function(e,a){return"PARAM_END"===this.tag(a-1)},function(e,a){return r=a})),null==r||"->"!==(l=this.tag(r))&&"=>"!==l||"INDENT"!==this.tag(r+1))?1:(this.detectEnd(r+1,t,e),2):1})}},{key:"normalizeLines",value:function normalizeLines(){var e=this,t,o,r,l,d,c,p,u,m;return m=d=u=null,p=null,c=null,l=[],r=function(e,t){var o,r,l,i;return";"!==e[1]&&(o=e[0],0<=a.call(y,o))&&!("TERMINATOR"===e[0]&&(r=this.tag(t+1),0<=a.call(s,r)))&&!("ELSE"===e[0]&&("THEN"!==m||c||p))&&("CATCH"!==(l=e[0])&&"FINALLY"!==l||"->"!==m&&"=>"!==m)||(i=e[0],0<=a.call(n,i))&&(this.tokens[t-1].newLine||"OUTDENT"===this.tokens[t-1][0])},t=function(e,a){return"ELSE"===e[0]&&"THEN"===m&&l.pop(),this.tokens.splice(","===this.tag(a-1)?a-1:a,0,u)},o=function(a,t){var o,n,r;if(r=l.length,!(0"===v||"=>"===v)&&this.findTagsBackwards(n,["IF","WHILE","FOR","UNTIL","SWITCH","WHEN","LEADING_WHEN","[","INDEX_START"])&&!this.findTagsBackwards(n,["THEN","..","..."]),"TERMINATOR"===v){if("ELSE"===this.tag(n+1)&&"OUTDENT"!==this.tag(n-1))return i.splice.apply(i,[n,1].concat(_toConsumableArray(this.indentation()))),1;if(k=this.tag(n+1),0<=a.call(s,k))return i.splice(n,1),0}if("CATCH"===v)for(f=y=1;2>=y;f=++y)if("OUTDENT"===(N=this.tag(n+f))||"TERMINATOR"===N||"FINALLY"===N)return i.splice.apply(i,[n+f,0].concat(_toConsumableArray(this.indentation()))),2+f;if(("->"===v||"=>"===v)&&(","===this.tag(n+1)||"."===this.tag(n+1)&&e.newLine)){var b=this.indentation(i[n]),$=_slicedToArray(b,2);return d=$[0],u=$[1],i.splice(n+1,0,d,u),1}if(0<=a.call(T,v)&&"INDENT"!==this.tag(n+1)&&("ELSE"!==v||"IF"!==this.tag(n+1))&&!g){m=v;var _=this.indentation(i[n]),C=_slicedToArray(_,2);return d=C[0],u=C[1],"THEN"===m&&(d.fromThen=!0),"THEN"===v&&(p=this.findTagsBackwards(n,["LEADING_WHEN"])&&"IF"===this.tag(n+1),c=this.findTagsBackwards(n,["IF"])&&"IF"===this.tag(n+1)),"THEN"===v&&this.findTagsBackwards(n,["IF"])&&l.push(n),"ELSE"===v&&"OUTDENT"!==this.tag(n-1)&&(n=o(i,n)),i.splice(n+1,0,d),this.detectEnd(n+2,r,t),"THEN"===v&&i.splice(n,1),1}return 1})}},{key:"tagPostfixConditionals",value:function tagPostfixConditionals(){var e,t,o;return o=null,t=function(e,t){var o=_slicedToArray(e,1),n,r;r=o[0];var l=_slicedToArray(this.tokens[t-1],1);return n=l[0],"TERMINATOR"===r||"INDENT"===r&&0>a.call(T,n)},e=function(e){if("INDENT"!==e[0]||e.generated&&!e.fromThen)return o[0]="POST_"+o[0]},this.scanTokens(function(a,n){return"IF"===a[0]?(o=a,this.detectEnd(n+1,t,e),1):1})}},{key:"indentation",value:function indentation(e){var a,t;return a=["INDENT",2],t=["OUTDENT",2],e?(a.generated=t.generated=!0,a.origin=t.origin=e):a.explicit=t.explicit=!0,[a,t]}},{key:"tag",value:function tag(e){var a;return null==(a=this.tokens[e])?void 0:a[0]}}]),e}();return e.prototype.generate=N,e}.call(this),o=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],e.INVERSES=i={},c=[],d=[],v=0,b=o.length;v","=>","[","(","{","--","++"],h=["+","-"],u=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],T=["ELSE","->","=>","TRY","FINALLY","THEN"],y=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],g=["TERMINATOR","INDENT","OUTDENT"],n=[".","?.","::","?::"],r=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],l=["(",")","[","]","{","}",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","LEADING_WHEN","OUTDENT","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(h.concat(u.concat(n.concat(r))))}.call(this),{exports:e}.exports}(),require["./lexer"]=function(){var e={};return function(){var a=[].indexOf,t=[].slice,o=require("./rewriter"),n,r,l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b,$,_,C,D,E,x,I,S,A,R,O,L,F,w,P,j,M,U,V,B,G,H,W,X,Y,q,z,J,K,Z,Q,ee,ae,te,oe,ne,re,le,se,ie,de,ce,pe,ue,me,he,ge,fe,ye,ke,Te,Ne,ve,be,$e;z=o.Rewriter,S=o.INVERSES;var _e=require("./helpers");he=_e.count,be=_e.starts,me=_e.compact,ve=_e.repeat,ge=_e.invertLiterate,Ne=_e.merge,ue=_e.attachCommentsToNode,Te=_e.locationDataToString,$e=_e.throwSyntaxError,e.Lexer=w=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"tokenize",value:function tokenize(e){var a=1this.indent){if(s)return this.indebt=d-this.indent,this.suppressNewlines(),o.length;if(!this.tokens.length)return this.baseIndent=this.indent=d,this.indentLiteral=l,o.length;t=d-this.indent+this.outdebt,this.token("INDENT",t,o.length-d,d),this.indents.push(t),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=d,this.indentLiteral=l}else da.call(u,h)))))return 0;var N=d,v=_slicedToArray(N,3);return i=v[0],s=v[1],o=v[2],c=this.token("CSX_TAG",s,1,s.length),this.token("CALL_START","("),this.token("[","["),this.ends.push({tag:"/>",origin:c,name:s}),this.csxDepth++,s.length+1}if(n=this.atCSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("]","]",0,2),this.token("CALL_END",")",0,2),this.csxDepth--,2;if("{"===l)return":"===m?(g=this.token("(","("),this.csxObjAttribute[this.csxDepth]=!1):(g=this.token("{","{"),this.csxObjAttribute[this.csxDepth]=!0),this.ends.push({tag:"}",origin:g}),1;if(">"===l){this.pair("/>"),c=this.token("]","]"),this.token(",",",");var b=this.matchWithInterpolations(I,">",""})}),d=y.exec(this.chunk.slice(r))||f.exec(this.chunk.slice(r)),d&&d[1]===n.name||this.error("expected corresponding CSX closing tag for "+n.name,n.origin[2]),t=r+n.name.length,">"!==this.chunk[t]&&this.error("missing closing > after tag name",{offset:t,length:1}),this.token("CALL_END",")",r,n.name.length+1),this.csxDepth--,t+1}return 0}return this.atCSXTag(1)?"}"===l?(this.pair(l),this.csxObjAttribute[this.csxDepth]?(this.token("}","}"),this.csxObjAttribute[this.csxDepth]=!1):this.token(")",")"),this.token(",",","),1):0:0}},{key:"atCSXTag",value:function atCSXTag(){var e=0"===(null==t?void 0:t.tag)&&t}},{key:"literalToken",value:function literalToken(){var e,t,o,n,r,i,d,c,p,u,g,f,y;if(e=V.exec(this.chunk)){var k=e,T=_slicedToArray(k,1);y=T[0],s.test(y)&&this.tagParameters()}else y=this.chunk.charAt(0);if(g=y,n=this.prev(),n&&0<=a.call(["="].concat(_toConsumableArray(h)),y)&&(u=!1,"="!==y||"||"!==(r=n[1])&&"&&"!==r||n.spaced||(n[0]="COMPOUND_ASSIGN",n[1]+="=",n=this.tokens[this.tokens.length-2],u=!0),n&&"PROPERTY"!==n[0]&&(o=null==(i=n.origin)?n:i,t=ye(n[1],o[1]),t&&this.error(t,o[2])),u))return y.length;if("{"===y&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===y?this.importSpecifierList=!1:"{"===y&&"EXPORT"===(null==n?void 0:n[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===y&&(this.exportSpecifierList=!1),";"===y)(d=null==n?void 0:n[0],0<=a.call(["="].concat(_toConsumableArray(ie)),d))&&this.error("unexpected ;"),this.seenFor=this.seenImport=this.seenExport=!1,g="TERMINATOR";else if("*"===y&&"EXPORT"===(null==n?void 0:n[0]))g="EXPORT_ALL";else if(0<=a.call(P,y))g="MATH";else if(0<=a.call(m,y))g="COMPARE";else if(0<=a.call(h,y))g="COMPOUND_ASSIGN";else if(0<=a.call(le,y))g="UNARY";else if(0<=a.call(se,y))g="UNARY_MATH";else if(0<=a.call(J,y))g="SHIFT";else if("?"===y&&(null==n?void 0:n.spaced))g="BIN?";else if(n)if("("===y&&!n.spaced&&(c=n[0],0<=a.call(l,c)))"?"===n[0]&&(n[0]="FUNC_EXIST"),g="CALL_START";else if("["===y&&((p=n[0],0<=a.call(x,p))&&!n.spaced||"::"===n[0]))switch(g="INDEX_START",n[0]){case"?":n[0]="INDEX_SOAK"}return f=this.makeToken(g,y),"("===y||"{"===y||"["===y?this.ends.push({tag:S[y],origin:f}):")"===y||"}"===y||"]"===y?this.pair(y):void 0,this.tokens.push(this.makeToken(g,y)),y.length}},{key:"tagParameters",value:function tagParameters(){var e,a,t,o,n;if(")"!==this.tag())return this;for(t=[],n=this.tokens,e=n.length,a=n[--e],a[0]="PARAM_END";o=n[--e];)switch(o[0]){case")":t.push(o);break;case"(":case"CALL_START":if(t.length)t.pop();else return"("===o[0]?(o[0]="PARAM_START",this):(a[0]="CALL_END",this)}return this}},{key:"closeIndentation",value:function closeIndentation(){return this.outdentToken(this.indent)}},{key:"matchWithInterpolations",value:function matchWithInterpolations(a,o,n,r){var l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b,$,_,C,D,E;if(null==n&&(n=o),null==r&&(r=/^#\{/),E=[],v=o.length,this.chunk.slice(0,v)!==o)return null;for(C=this.chunk.slice(v);;){var x=a.exec(C),I=_slicedToArray(x,1);if(D=I[0],this.validateEscapes(D,{isRegex:"/"===o.charAt(0),offsetInChunk:v}),E.push(this.makeToken("NEOSTRING",D,v)),C=C.slice(D.length),v+=D.length,!(T=r.exec(C)))break;var S=T,A=_slicedToArray(S,1);f=A[0],g=f.length-1;var R=this.getLineAndColumnFromChunk(v+g),O=_slicedToArray(R,2);k=O[0],u=O[1],_=C.slice(g);var L=(new e).tokenize(_,{line:k,column:u,untilBalanced:!0});if(N=L.tokens,h=L.index,h+=g,c="}"===C[h-1],c){var F,w,P,j;F=N,w=_slicedToArray(F,1),b=w[0],F,P=t.call(N,-1),j=_slicedToArray(P,1),p=j[0],P,b[0]=b[1]="(",p[0]=p[1]=")",p.origin=["","end of interpolation",p[2]]}"TERMINATOR"===(null==($=N[1])?void 0:$[0])&&N.splice(1,1),c||(b=this.makeToken("(","(",v,0),p=this.makeToken(")",")",v+h,0),N=[b].concat(_toConsumableArray(N),[p])),E.push(["TOKENS",N]),C=C.slice(h),v+=h}return C.slice(0,n.length)!==n&&this.error("missing "+n,{length:o.length}),l=E,s=_slicedToArray(l,1),m=s[0],l,i=t.call(E,-1),d=_slicedToArray(i,1),y=d[0],i,m[2].first_column-=o.length,"\n"===y[1].substr(-1)?(y[2].last_line+=1,y[2].last_column=n.length-1):y[2].last_column+=n.length,0===y[1].length&&(y[2].last_column-=1),{tokens:E,index:v+n.length}}},{key:"mergeInterpolationTokens",value:function mergeInterpolationTokens(e,a,o){var n,r,l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b;for(1l&&(f=this.token("+","+"),f[2]={first_line:m[2].first_line,first_column:m[2].first_column,last_line:m[2].first_line,last_column:m[2].first_column}),($=this.tokens).push.apply($,_toConsumableArray(N))}if(h){var E=t.call(e,-1),x=_slicedToArray(E,1);return c=x[0],h.origin=["STRING",null,{first_line:h[2].first_line,first_column:h[2].first_column,last_line:c[2].last_line,last_column:c[2].last_column}],h[2]=h.origin[2],y=this.token("STRING_END",")"),y[2]={first_line:c[2].last_line,first_column:c[2].last_column,last_line:c[2].last_line,last_column:c[2].last_column}}}},{key:"pair",value:function pair(e){var a,o,n,r,l,s,i;if(l=this.ends,a=t.call(l,-1),o=_slicedToArray(a,1),r=o[0],a,e!==(i=null==r?void 0:r.tag)){var d,c;return"OUTDENT"!==i&&this.error("unmatched "+e),s=this.indents,d=t.call(s,-1),c=_slicedToArray(d,1),n=c[0],d,this.outdentToken(n,!0),this.pair(e)}return this.ends.pop()}},{key:"getLineAndColumnFromChunk",value:function getLineAndColumnFromChunk(e){var a,o,n,r,l;if(0===e)return[this.chunkLine,this.chunkColumn];if(l=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),n=he(l,"\n"),a=this.chunkColumn,0e)?o(e):(a=_Mathfloor((e-65536)/1024)+55296,t=(e-65536)%1024+56320,""+o(a)+o(t))}},{key:"replaceUnicodeCodePointEscapes",value:function replaceUnicodeCodePointEscapes(e,t){var o=this,n;return n=null!=t.flags&&0>a.call(t.flags,"u"),e.replace(de,function(e,a,r,l){var s;return a?a:(s=parseInt(r,16),1114111a.call([].concat(_toConsumableArray(R),_toConsumableArray(c)),e):return"keyword '"+t+"' can't be assigned";case 0>a.call(Z,e):return"'"+t+"' can't be assigned";case 0>a.call(q,e):return"reserved word '"+t+"' can't be assigned";default:return!1}},e.isUnassignable=ye,fe=function(e){var a;return"IDENTIFIER"===e[0]?("from"===e[1]&&(e[1][0]="IDENTIFIER",!0),!0):"FOR"!==e[0]&&"{"!==(a=e[1])&&"["!==a&&","!==a&&":"!==a},R=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],c=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],d={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},i=function(){var e;for(ke in e=[],d)e.push(ke);return e}(),c=c.concat(i),q=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],Z=["arguments","eval"],e.JS_FORBIDDEN=R.concat(q).concat(Z),n=65279,D=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,y=/^(?![\d<])((?:(?!\s)[\.\-$\w\x7f-\uffff])+)/,f=/^()>/,g=/^(?!\d)((?:(?!\s)[\-$\w\x7f-\uffff])+)([^\S]*=(?!=))?/,U=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,V=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,pe=/^[^\n\S]+/,p=/^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,s=/^[-=]>/,j=/^(?:\n[^\n\S]*)+/,A=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,C=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,oe=/^(?:'''|"""|'|")/,te=/^(?:[^\\']|\\[\s\S])*/,Q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,b=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,N=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,I=/^(?:[^\{<])*/,k=/^(?:\{|<(?!\/))/,ae=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,K=/\s*\n\s*/g,v=/\n+([^\n\S]*)(?=\S)/g,G=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,H=/^\w*/,ce=/^(?!.*(.).*\1)[imguy]*$/,$=/^(?:[^\\\/#\s]|\\[\s\S]|\/(?!\/\/)|\#(?!\{)|\s+(?:#(?!\{).*)?)*/,_=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,W=/^(\/|\/{3}\s*)(\*)/,B=/^\/=?\s/,T=/\*\//,F=/^\s*(?:,|\??\.(?![.\d])|::)/,ee=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,X=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,de=/(\\\\)|\\u\{([\da-fA-F]+)\}/g,O=/^[^\n\S]*\n/,ne=/\n[^\n\S]*$/,re=/\s+$/,h=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],le=["NEW","TYPEOF","DELETE","DO"],se=["!","~"],J=["<<",">>",">>>"],m=["==","!=","<",">","<=",">="],P=["*","/","%","//","%%"],Y=["IN","OF","INSTANCEOF"],r=["TRUE","FALSE"],l=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER"],x=l.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),u=["IDENTIFIER",")","]","NUMBER"],M=x.concat(["++","--"]),L=["INDENT","OUTDENT","TERMINATOR"],E=[")","}","]"],ie=["\\",".","?.","?::","UNARY","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS"]}.call(this),{exports:e}.exports}(),require["./parser"]=function(){var e={},a={exports:e},t=function(){function e(){this.yy={}}var a=function(e,a,t,o){for(t=t||{},o=e.length;o--;t[e[o]]=a);return t},t=[1,24],o=[1,56],n=[1,91],r=[1,92],l=[1,87],s=[1,93],i=[1,94],d=[1,89],c=[1,90],p=[1,64],u=[1,66],m=[1,67],h=[1,68],g=[1,69],f=[1,70],y=[1,72],k=[1,73],T=[1,58],N=[1,42],v=[1,36],b=[1,76],$=[1,77],_=[1,86],C=[1,54],D=[1,59],E=[1,60],x=[1,74],I=[1,75],S=[1,47],A=[1,55],R=[1,71],O=[1,81],L=[1,82],F=[1,83],w=[1,84],P=[1,53],j=[1,80],M=[1,38],U=[1,39],V=[1,40],B=[1,41],G=[1,43],H=[1,44],W=[1,95],X=[1,6,36,47,146],Y=[1,6,35,36,47,69,70,93,127,135,146,149,157],q=[1,113],z=[1,114],J=[1,115],K=[1,110],Z=[1,98],Q=[1,97],ee=[1,96],ae=[1,99],te=[1,100],oe=[1,101],ne=[1,102],re=[1,103],le=[1,104],se=[1,105],ie=[1,106],de=[1,107],ce=[1,108],pe=[1,109],ue=[1,117],me=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],he=[2,196],ge=[1,123],fe=[1,128],ye=[1,124],ke=[1,125],Te=[1,126],Ne=[1,129],ve=[1,122],be=[1,6,35,36,47,69,70,93,127,135,146,148,149,150,156,157,174],$e=[1,6,35,36,45,46,47,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],_e=[2,122],Ce=[2,126],De=[6,35,88,93],Ee=[2,99],xe=[1,141],Ie=[1,135],Se=[1,140],Ae=[1,144],Re=[1,149],Oe=[1,147],Le=[1,151],Fe=[1,155],we=[1,153],Pe=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],je=[2,119],Me=[1,6,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Ue=[2,31],Ve=[1,183],Be=[2,86],Ge=[1,187],He=[1,193],We=[1,208],Xe=[1,203],Ye=[1,212],qe=[1,209],ze=[1,214],Je=[1,215],Ke=[1,217],Ze=[14,32,35,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],Qe=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,111,125,126,127,135,146,148,149,150,156,157,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],ea=[1,228],aa=[2,142],ta=[1,250],oa=[1,245],na=[1,256],ra=[1,6,35,36,45,46,47,65,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],la=[1,6,33,35,36,45,46,47,61,65,69,70,80,81,83,88,93,101,102,103,105,109,111,117,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],sa=[1,6,35,36,45,46,47,52,65,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],ia=[1,286],da=[45,46,126],ca=[1,297],pa=[1,296],ua=[6,35],ma=[2,97],ha=[1,303],ga=[6,35,36,88,93],fa=[6,35,36,61,70,88,93],ya=[1,6,35,36,47,69,70,80,81,83,88,93,101,102,103,105,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],ka=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,183,184,185,186,187,188,189,190,191,192,193],Ta=[2,347],Na=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,183,185,186,187,188,189,190,191,192,193],va=[45,46,80,81,101,102,103,105,125,126],ba=[1,330],$a=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174],_a=[2,84],Ca=[1,346],Da=[1,348],Ea=[1,353],xa=[1,355],Ia=[6,35,69,93],Sa=[2,221],Aa=[2,222],Ra=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Oa=[1,369],La=[6,14,32,35,36,38,39,43,45,46,49,50,54,55,56,57,58,59,68,69,70,77,84,85,86,90,91,93,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],Fa=[6,35,36,69,93],wa=[6,35,36,69,93,127],Pa=[1,6,35,36,45,46,47,61,65,69,70,80,81,83,88,93,101,102,103,105,109,111,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],ja=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,157,174],Ma=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,149,157,174],Ua=[2,273],Va=[164,165,166],Ba=[93,164,165,166],Ga=[6,35,109],Ha=[1,393],Wa=[6,35,36,93,109],Xa=[6,35,36,65,93,109],Ya=[1,399],qa=[1,400],za=[6,35,36,61,65,70,80,81,93,109,126],Ja=[6,35,36,70,80,81,93,109,126],Ka=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,185,186,187,188,189,190,191,192,193],Za=[2,339],Qa=[2,338],et=[1,6,35,36,45,46,47,52,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],at=[1,422],tt=[14,32,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,83,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],ot=[2,207],nt=[6,35,36],rt=[2,98],lt=[1,431],st=[1,432],it=[1,6,35,36,47,69,70,80,81,83,88,93,101,102,103,105,109,127,135,142,143,146,148,149,150,156,157,169,171,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],dt=[1,312],ct=[36,169,171],pt=[1,6,36,47,69,70,83,88,93,109,127,135,146,149,157,174],ut=[1,467],mt=[1,473],ht=[1,6,35,36,47,69,70,93,127,135,146,149,157,174],gt=[2,113],ft=[1,486],yt=[1,487],kt=[6,35,36,69],Tt=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,169,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Nt=[1,6,35,36,47,69,70,93,127,135,146,149,157,169],vt=[2,286],bt=[2,287],$t=[2,302],_t=[1,510],Ct=[1,511],Dt=[6,35,36,109],Et=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,150,156,157,174],xt=[1,532],It=[6,35,36,93,127],St=[6,35,36,93],At=[1,6,35,36,47,69,70,83,88,93,109,127,135,142,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Rt=[35,93],Ot=[1,560],Lt=[1,561],Ft=[1,567],wt=[1,568],Pt=[2,258],jt=[2,261],Mt=[2,274],Ut=[1,617],Vt=[1,618],Bt=[2,288],Gt=[2,292],Ht=[2,289],Wt=[2,293],Xt=[2,290],Yt=[2,291],qt=[2,303],zt=[2,304],Jt=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,174],Kt=[2,294],Zt=[2,296],Qt=[2,298],eo=[2,300],ao=[2,295],to=[2,297],oo=[2,299],no=[2,301],ro={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,ExpressionLine:8,Statement:9,FuncDirective:10,YieldReturn:11,AwaitReturn:12,Return:13,STATEMENT:14,Import:15,Export:16,Value:17,Code:18,Operation:19,Assign:20,If:21,Try:22,While:23,For:24,Switch:25,Class:26,Throw:27,Yield:28,CodeLine:29,IfLine:30,OperationLine:31,YIELD:32,FROM:33,Block:34,INDENT:35,OUTDENT:36,Identifier:37,IDENTIFIER:38,CSX_TAG:39,Property:40,PROPERTY:41,AlphaNumeric:42,NUMBER:43,String:44,STRING:45,STRING_START:46,STRING_END:47,Regex:48,REGEX:49,REGEX_START:50,Invocation:51,REGEX_END:52,Literal:53,JS:54,UNDEFINED:55,NULL:56,BOOL:57,INFINITY:58,NAN:59,Assignable:60,"=":61,AssignObj:62,ObjAssignable:63,ObjRestValue:64,":":65,SimpleObjAssignable:66,ThisProperty:67,"[":68,"]":69,"...":70,ObjSpreadExpr:71,ObjSpreadIdentifier:72,Object:73,Parenthetical:74,Super:75,This:76,SUPER:77,Arguments:78,ObjSpreadAccessor:79,".":80,INDEX_START:81,IndexValue:82,INDEX_END:83,RETURN:84,AWAIT:85,PARAM_START:86,ParamList:87,PARAM_END:88,FuncGlyph:89,"->":90,"=>":91,OptComma:92,",":93,Param:94,ParamVar:95,Array:96,Splat:97,SimpleAssignable:98,Accessor:99,Range:100,"?.":101,"::":102,"?::":103,Index:104,INDEX_SOAK:105,Slice:106,"{":107,AssignList:108,"}":109,CLASS:110,EXTENDS:111,IMPORT:112,ImportDefaultSpecifier:113,ImportNamespaceSpecifier:114,ImportSpecifierList:115,ImportSpecifier:116,AS:117,DEFAULT:118,IMPORT_ALL:119,EXPORT:120,ExportSpecifierList:121,EXPORT_ALL:122,ExportSpecifier:123,OptFuncExist:124,FUNC_EXIST:125,CALL_START:126,CALL_END:127,ArgList:128,THIS:129,"@":130,Elisions:131,ArgElisionList:132,OptElisions:133,RangeDots:134,"..":135,Arg:136,ArgElision:137,Elision:138,SimpleArgs:139,TRY:140,Catch:141,FINALLY:142,CATCH:143,THROW:144,"(":145,")":146,WhileLineSource:147,WHILE:148,WHEN:149,UNTIL:150,WhileSource:151,Loop:152,LOOP:153,ForBody:154,ForLineBody:155,FOR:156,BY:157,ForStart:158,ForSource:159,ForLineSource:160,ForVariables:161,OWN:162,ForValue:163,FORIN:164,FOROF:165,FORFROM:166,SWITCH:167,Whens:168,ELSE:169,When:170,LEADING_WHEN:171,IfBlock:172,IF:173,POST_IF:174,IfBlockLine:175,UNARY:176,UNARY_MATH:177,"-":178,"+":179,"--":180,"++":181,"?":182,MATH:183,"**":184,SHIFT:185,COMPARE:186,"&":187,"^":188,"|":189,"&&":190,"||":191,"BIN?":192,RELATION:193,COMPOUND_ASSIGN:194,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",14:"STATEMENT",32:"YIELD",33:"FROM",35:"INDENT",36:"OUTDENT",38:"IDENTIFIER",39:"CSX_TAG",41:"PROPERTY",43:"NUMBER",45:"STRING",46:"STRING_START",47:"STRING_END",49:"REGEX",50:"REGEX_START",52:"REGEX_END",54:"JS",55:"UNDEFINED",56:"NULL",57:"BOOL",58:"INFINITY",59:"NAN",61:"=",65:":",68:"[",69:"]",70:"...",77:"SUPER",80:".",81:"INDEX_START",83:"INDEX_END",84:"RETURN",85:"AWAIT",86:"PARAM_START",88:"PARAM_END",90:"->",91:"=>",93:",",101:"?.",102:"::",103:"?::",105:"INDEX_SOAK",107:"{",109:"}",110:"CLASS",111:"EXTENDS",112:"IMPORT",117:"AS",118:"DEFAULT",119:"IMPORT_ALL",120:"EXPORT",122:"EXPORT_ALL",125:"FUNC_EXIST",126:"CALL_START",127:"CALL_END",129:"THIS",130:"@",135:"..",140:"TRY",142:"FINALLY",143:"CATCH",144:"THROW",145:"(",146:")",148:"WHILE",149:"WHEN",150:"UNTIL",153:"LOOP",156:"FOR",157:"BY",162:"OWN",164:"FORIN",165:"FOROF",166:"FORFROM",167:"SWITCH",169:"ELSE",171:"LEADING_WHEN",173:"IF",174:"POST_IF",176:"UNARY",177:"UNARY_MATH",178:"-",179:"+",180:"--",181:"++",182:"?",183:"MATH",184:"**",185:"SHIFT",186:"COMPARE",187:"&",188:"^",189:"|",190:"&&",191:"||",192:"BIN?",193:"RELATION",194:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[5,1],[10,1],[10,1],[9,1],[9,1],[9,1],[9,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[8,1],[8,1],[8,1],[28,1],[28,2],[28,3],[34,2],[34,3],[37,1],[37,1],[40,1],[42,1],[42,1],[44,1],[44,3],[48,1],[48,3],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[20,3],[20,4],[20,5],[62,1],[62,1],[62,3],[62,5],[62,3],[62,5],[66,1],[66,1],[66,1],[66,3],[63,1],[63,1],[64,2],[64,2],[64,2],[64,2],[71,1],[71,1],[71,1],[71,1],[71,1],[71,2],[71,2],[71,2],[72,2],[72,2],[79,2],[79,3],[13,2],[13,4],[13,1],[11,3],[11,2],[12,3],[12,2],[18,5],[18,2],[29,5],[29,2],[89,1],[89,1],[92,0],[92,1],[87,0],[87,1],[87,3],[87,4],[87,6],[94,1],[94,2],[94,2],[94,3],[94,1],[95,1],[95,1],[95,1],[95,1],[97,2],[97,2],[98,1],[98,2],[98,2],[98,1],[60,1],[60,1],[60,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[75,3],[75,4],[99,2],[99,2],[99,2],[99,2],[99,1],[99,1],[104,3],[104,2],[82,1],[82,1],[73,4],[108,0],[108,1],[108,3],[108,4],[108,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[15,2],[15,4],[15,4],[15,5],[15,7],[15,6],[15,9],[115,1],[115,3],[115,4],[115,4],[115,6],[116,1],[116,3],[116,1],[116,3],[113,1],[114,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,5],[16,4],[16,7],[121,1],[121,3],[121,4],[121,4],[121,6],[123,1],[123,3],[123,3],[123,1],[123,3],[51,3],[51,3],[51,3],[124,0],[124,1],[78,2],[78,4],[76,1],[76,1],[67,2],[96,2],[96,3],[96,4],[134,1],[134,1],[100,5],[100,5],[106,3],[106,2],[106,3],[106,2],[106,2],[106,1],[128,1],[128,3],[128,4],[128,4],[128,6],[136,1],[136,1],[136,1],[136,1],[132,1],[132,3],[132,4],[132,4],[132,6],[137,1],[137,2],[133,1],[133,2],[131,1],[131,2],[138,1],[139,1],[139,1],[139,3],[139,3],[22,2],[22,3],[22,4],[22,5],[141,3],[141,3],[141,2],[27,2],[27,4],[74,3],[74,5],[147,2],[147,4],[147,2],[147,4],[151,2],[151,4],[151,4],[151,2],[151,4],[151,4],[23,2],[23,2],[23,2],[23,2],[23,1],[152,2],[152,2],[24,2],[24,2],[24,2],[24,2],[154,2],[154,4],[154,2],[155,4],[155,2],[158,2],[158,3],[163,1],[163,1],[163,1],[163,1],[161,1],[161,3],[159,2],[159,2],[159,4],[159,4],[159,4],[159,4],[159,4],[159,4],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,2],[159,4],[159,4],[160,2],[160,2],[160,4],[160,4],[160,4],[160,4],[160,4],[160,4],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,2],[160,4],[160,4],[25,5],[25,5],[25,7],[25,7],[25,4],[25,6],[168,1],[168,2],[170,3],[170,4],[172,3],[172,5],[21,1],[21,3],[21,3],[21,3],[175,3],[175,5],[30,1],[30,3],[30,3],[30,3],[31,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4]],performAction:function(e,a,t,o,n,r,l){var s=r.length-1;switch(n){case 1:return this.$=o.addDataToNode(o,l[s],l[s])(new o.Block);break;case 2:return this.$=r[s];break;case 3:this.$=o.addDataToNode(o,l[s],l[s])(o.Block.wrap([r[s]]));break;case 4:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].push(r[s]));break;case 5:this.$=r[s-1];break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 40:case 45:case 47:case 57:case 62:case 63:case 64:case 66:case 67:case 72:case 73:case 74:case 75:case 76:case 97:case 98:case 109:case 110:case 111:case 112:case 118:case 119:case 122:case 127:case 136:case 221:case 222:case 223:case 225:case 237:case 238:case 280:case 281:case 330:case 336:case 342:this.$=r[s];break;case 13:this.$=o.addDataToNode(o,l[s],l[s])(new o.StatementLiteral(r[s]));break;case 31:this.$=o.addDataToNode(o,l[s],l[s])(new o.Op(r[s],new o.Value(new o.Literal(""))));break;case 32:case 346:case 347:case 348:case 351:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op(r[s-1],r[s]));break;case 33:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op(r[s-2].concat(r[s-1]),r[s]));break;case 34:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Block);break;case 35:case 83:case 137:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-1]);break;case 36:this.$=o.addDataToNode(o,l[s],l[s])(new o.IdentifierLiteral(r[s]));break;case 37:this.$=o.addDataToNode(o,l[s],l[s])(new o.CSXTag(r[s]));break;case 38:this.$=o.addDataToNode(o,l[s],l[s])(new o.PropertyName(r[s]));break;case 39:this.$=o.addDataToNode(o,l[s],l[s])(new o.NumberLiteral(r[s]));break;case 41:this.$=o.addDataToNode(o,l[s],l[s])(new o.StringLiteral(r[s]));break;case 42:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.StringWithInterpolations(r[s-1]));break;case 43:this.$=o.addDataToNode(o,l[s],l[s])(new o.RegexLiteral(r[s]));break;case 44:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.RegexWithInterpolations(r[s-1].args));break;case 46:this.$=o.addDataToNode(o,l[s],l[s])(new o.PassthroughLiteral(r[s]));break;case 48:this.$=o.addDataToNode(o,l[s],l[s])(new o.UndefinedLiteral(r[s]));break;case 49:this.$=o.addDataToNode(o,l[s],l[s])(new o.NullLiteral(r[s]));break;case 50:this.$=o.addDataToNode(o,l[s],l[s])(new o.BooleanLiteral(r[s]));break;case 51:this.$=o.addDataToNode(o,l[s],l[s])(new o.InfinityLiteral(r[s]));break;case 52:this.$=o.addDataToNode(o,l[s],l[s])(new o.NaNLiteral(r[s]));break;case 53:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(r[s-2],r[s]));break;case 54:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Assign(r[s-3],r[s]));break;case 55:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(r[s-4],r[s-1]));break;case 56:case 115:case 120:case 121:case 123:case 124:case 125:case 126:case 128:case 282:case 283:this.$=o.addDataToNode(o,l[s],l[s])(new o.Value(r[s]));break;case 58:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),r[s],"object",{operatorToken:o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1]))}));break;case 59:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(o.addDataToNode(o,l[s-4])(new o.Value(r[s-4])),r[s-1],"object",{operatorToken:o.addDataToNode(o,l[s-3])(new o.Literal(r[s-3]))}));break;case 60:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),r[s],null,{operatorToken:o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1]))}));break;case 61:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(o.addDataToNode(o,l[s-4])(new o.Value(r[s-4])),r[s-1],null,{operatorToken:o.addDataToNode(o,l[s-3])(new o.Literal(r[s-3]))}));break;case 65:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Value(new o.ComputedPropertyName(r[s-1])));break;case 68:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(new o.Value(r[s-1])));break;case 69:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(new o.Value(r[s])));break;case 70:case 113:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(r[s-1]));break;case 71:case 114:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(r[s]));break;case 77:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.SuperCall(o.addDataToNode(o,l[s-1])(new o.Super),r[s],!1,r[s-1]));break;case 78:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Call(new o.Value(r[s-1]),r[s]));break;case 79:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Call(r[s-1],r[s]));break;case 80:case 81:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(r[s-1]).add(r[s]));break;case 82:case 131:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Access(r[s]));break;case 84:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Return(r[s]));break;case 85:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Return(new o.Value(r[s-1])));break;case 86:this.$=o.addDataToNode(o,l[s],l[s])(new o.Return);break;case 87:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.YieldReturn(r[s]));break;case 88:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.YieldReturn);break;case 89:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.AwaitReturn(r[s]));break;case 90:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.AwaitReturn);break;case 91:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Code(r[s-3],r[s],r[s-1],o.addDataToNode(o,l[s-4])(new o.Literal(r[s-4]))));break;case 92:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Code([],r[s],r[s-1]));break;case 93:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Code(r[s-3],o.addDataToNode(o,l[s])(o.Block.wrap([r[s]])),r[s-1],o.addDataToNode(o,l[s-4])(new o.Literal(r[s-4]))));break;case 94:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Code([],o.addDataToNode(o,l[s])(o.Block.wrap([r[s]])),r[s-1]));break;case 95:case 96:this.$=o.addDataToNode(o,l[s],l[s])(new o.FuncGlyph(r[s]));break;case 99:case 142:case 232:this.$=o.addDataToNode(o,l[s],l[s])([]);break;case 100:case 143:case 162:case 183:case 216:case 230:case 234:case 284:this.$=o.addDataToNode(o,l[s],l[s])([r[s]]);break;case 101:case 144:case 163:case 184:case 217:case 226:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].concat(r[s]));break;case 102:case 145:case 164:case 185:case 218:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-3].concat(r[s]));break;case 103:case 146:case 166:case 187:case 220:this.$=o.addDataToNode(o,l[s-5],l[s])(r[s-5].concat(r[s-2]));break;case 104:this.$=o.addDataToNode(o,l[s],l[s])(new o.Param(r[s]));break;case 105:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Param(r[s-1],null,!0));break;case 106:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Param(r[s],null,!0));break;case 107:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Param(r[s-2],r[s]));break;case 108:case 224:this.$=o.addDataToNode(o,l[s],l[s])(new o.Expansion);break;case 116:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].add(r[s]));break;case 117:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(r[s-1]).add(r[s]));break;case 129:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Super(o.addDataToNode(o,l[s])(new o.Access(r[s])),[],!1,r[s-2]));break;case 130:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Super(o.addDataToNode(o,l[s-1])(new o.Index(r[s-1])),[],!1,r[s-3]));break;case 132:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Access(r[s],"soak"));break;case 133:this.$=o.addDataToNode(o,l[s-1],l[s])([o.addDataToNode(o,l[s-1])(new o.Access(new o.PropertyName("prototype"))),o.addDataToNode(o,l[s])(new o.Access(r[s]))]);break;case 134:this.$=o.addDataToNode(o,l[s-1],l[s])([o.addDataToNode(o,l[s-1])(new o.Access(new o.PropertyName("prototype"),"soak")),o.addDataToNode(o,l[s])(new o.Access(r[s]))]);break;case 135:this.$=o.addDataToNode(o,l[s],l[s])(new o.Access(new o.PropertyName("prototype")));break;case 138:this.$=o.addDataToNode(o,l[s-1],l[s])(o.extend(r[s],{soak:!0}));break;case 139:this.$=o.addDataToNode(o,l[s],l[s])(new o.Index(r[s]));break;case 140:this.$=o.addDataToNode(o,l[s],l[s])(new o.Slice(r[s]));break;case 141:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Obj(r[s-2],r[s-3].generated));break;case 147:this.$=o.addDataToNode(o,l[s],l[s])(new o.Class);break;case 148:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Class(null,null,r[s]));break;case 149:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Class(null,r[s]));break;case 150:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Class(null,r[s-1],r[s]));break;case 151:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Class(r[s]));break;case 152:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Class(r[s-1],null,r[s]));break;case 153:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Class(r[s-2],r[s]));break;case 154:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Class(r[s-3],r[s-1],r[s]));break;case 155:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.ImportDeclaration(null,r[s]));break;case 156:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-2],null),r[s]));break;case 157:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ImportDeclaration(new o.ImportClause(null,r[s-2]),r[s]));break;case 158:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList([])),r[s]));break;case 159:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList(r[s-4])),r[s]));break;case 160:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-4],r[s-2]),r[s]));break;case 161:this.$=o.addDataToNode(o,l[s-8],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-7],new o.ImportSpecifierList(r[s-4])),r[s]));break;case 165:case 186:case 199:case 219:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-2]);break;case 167:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportSpecifier(r[s]));break;case 168:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportSpecifier(r[s-2],r[s]));break;case 169:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportSpecifier(new o.Literal(r[s])));break;case 170:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 171:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportDefaultSpecifier(r[s]));break;case 172:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportNamespaceSpecifier(new o.Literal(r[s-2]),r[s]));break;case 173:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList([])));break;case 174:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-2])));break;case 175:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.ExportNamedDeclaration(r[s]));break;case 176:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-2],r[s],null,{moduleDeclaration:"export"})));break;case 177:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-3],r[s],null,{moduleDeclaration:"export"})));break;case 178:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-4],r[s-1],null,{moduleDeclaration:"export"})));break;case 179:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportDefaultDeclaration(r[s]));break;case 180:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportDefaultDeclaration(new o.Value(r[s-1])));break;case 181:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ExportAllDeclaration(new o.Literal(r[s-2]),r[s]));break;case 182:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-4]),r[s]));break;case 188:this.$=o.addDataToNode(o,l[s],l[s])(new o.ExportSpecifier(r[s]));break;case 189:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(r[s-2],r[s]));break;case 190:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(r[s-2],new o.Literal(r[s])));break;case 191:this.$=o.addDataToNode(o,l[s],l[s])(new o.ExportSpecifier(new o.Literal(r[s])));break;case 192:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 193:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.TaggedTemplateCall(r[s-2],r[s],r[s-1]));break;case 194:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Call(r[s-2],r[s],r[s-1]));break;case 195:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.SuperCall(o.addDataToNode(o,l[s-2])(new o.Super),r[s],r[s-1],r[s-2]));break;case 196:this.$=o.addDataToNode(o,l[s],l[s])(!1);break;case 197:this.$=o.addDataToNode(o,l[s],l[s])(!0);break;case 198:this.$=o.addDataToNode(o,l[s-1],l[s])([]);break;case 200:case 201:this.$=o.addDataToNode(o,l[s],l[s])(new o.Value(new o.ThisLiteral(r[s])));break;case 202:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(o.addDataToNode(o,l[s-1])(new o.ThisLiteral(r[s-1])),[o.addDataToNode(o,l[s])(new o.Access(r[s]))],"this"));break;case 203:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Arr([]));break;case 204:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Arr(r[s-1]));break;case 205:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Arr([].concat(r[s-2],r[s-1])));break;case 206:this.$=o.addDataToNode(o,l[s],l[s])("inclusive");break;case 207:this.$=o.addDataToNode(o,l[s],l[s])("exclusive");break;case 208:case 209:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Range(r[s-3],r[s-1],r[s-2]));break;case 210:case 212:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Range(r[s-2],r[s],r[s-1]));break;case 211:case 213:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Range(r[s-1],null,r[s]));break;case 214:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Range(null,r[s],r[s-1]));break;case 215:this.$=o.addDataToNode(o,l[s],l[s])(new o.Range(null,null,r[s]));break;case 227:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-3].concat(r[s-2],r[s]));break;case 228:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-2].concat(r[s-1]));break;case 229:this.$=o.addDataToNode(o,l[s-5],l[s])(r[s-5].concat(r[s-4],r[s-2],r[s-1]));break;case 231:case 235:case 331:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].concat(r[s]));break;case 233:this.$=o.addDataToNode(o,l[s-1],l[s])([].concat(r[s]));break;case 236:this.$=o.addDataToNode(o,l[s],l[s])(new o.Elision);break;case 239:case 240:this.$=o.addDataToNode(o,l[s-2],l[s])([].concat(r[s-2],r[s]));break;case 241:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Try(r[s]));break;case 242:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Try(r[s-1],r[s][0],r[s][1]));break;case 243:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Try(r[s-2],null,null,r[s]));break;case 244:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Try(r[s-3],r[s-2][0],r[s-2][1],r[s]));break;case 245:this.$=o.addDataToNode(o,l[s-2],l[s])([r[s-1],r[s]]);break;case 246:this.$=o.addDataToNode(o,l[s-2],l[s])([o.addDataToNode(o,l[s-1])(new o.Value(r[s-1])),r[s]]);break;case 247:this.$=o.addDataToNode(o,l[s-1],l[s])([null,r[s]]);break;case 248:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Throw(r[s]));break;case 249:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Throw(new o.Value(r[s-1])));break;case 250:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Parens(r[s-1]));break;case 251:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Parens(r[s-2]));break;case 252:case 256:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(r[s]));break;case 253:case 257:case 258:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.While(r[s-2],{guard:r[s]}));break;case 254:case 259:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(r[s],{invert:!0}));break;case 255:case 260:case 261:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.While(r[s-2],{invert:!0,guard:r[s]}));break;case 262:case 263:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].addBody(r[s]));break;case 264:case 265:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s].addBody(o.addDataToNode(o,l[s-1])(o.Block.wrap([r[s-1]]))));break;case 266:this.$=o.addDataToNode(o,l[s],l[s])(r[s]);break;case 267:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(o.addDataToNode(o,l[s-1])(new o.BooleanLiteral("true"))).addBody(r[s]));break;case 268:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(o.addDataToNode(o,l[s-1])(new o.BooleanLiteral("true"))).addBody(o.addDataToNode(o,l[s])(o.Block.wrap([r[s]]))));break;case 269:case 270:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.For(r[s-1],r[s]));break;case 271:case 272:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.For(r[s],r[s-1]));break;case 273:this.$=o.addDataToNode(o,l[s-1],l[s])({source:o.addDataToNode(o,l[s])(new o.Value(r[s]))});break;case 274:case 276:this.$=o.addDataToNode(o,l[s-3],l[s])({source:o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),step:r[s]});break;case 275:case 277:this.$=o.addDataToNode(o,l[s-1],l[s])(function(){return r[s].own=r[s-1].own,r[s].ownTag=r[s-1].ownTag,r[s].name=r[s-1][0],r[s].index=r[s-1][1],r[s]}());break;case 278:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s]);break;case 279:this.$=o.addDataToNode(o,l[s-2],l[s])(function(){return r[s].own=!0,r[s].ownTag=o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1])),r[s]}());break;case 285:this.$=o.addDataToNode(o,l[s-2],l[s])([r[s-2],r[s]]);break;case 286:case 305:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s]});break;case 287:case 306:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s],object:!0});break;case 288:case 289:case 307:case 308:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s]});break;case 290:case 291:case 309:case 310:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s],object:!0});break;case 292:case 293:case 311:case 312:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],step:r[s]});break;case 294:case 295:case 296:case 297:case 313:case 314:case 315:case 316:this.$=o.addDataToNode(o,l[s-5],l[s])({source:r[s-4],guard:r[s-2],step:r[s]});break;case 298:case 299:case 300:case 301:case 317:case 318:case 319:case 320:this.$=o.addDataToNode(o,l[s-5],l[s])({source:r[s-4],step:r[s-2],guard:r[s]});break;case 302:case 321:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s],from:!0});break;case 303:case 304:case 322:case 323:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s],from:!0});break;case 324:case 325:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Switch(r[s-3],r[s-1]));break;case 326:case 327:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.Switch(r[s-5],r[s-3],r[s-1]));break;case 328:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Switch(null,r[s-1]));break;case 329:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.Switch(null,r[s-3],r[s-1]));break;case 332:this.$=o.addDataToNode(o,l[s-2],l[s])([[r[s-1],r[s]]]);break;case 333:this.$=o.addDataToNode(o,l[s-3],l[s])([[r[s-2],r[s-1]]]);break;case 334:case 340:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s-1],r[s],{type:r[s-2]}));break;case 335:case 341:this.$=o.addDataToNode(o,l[s-4],l[s])(r[s-4].addElse(o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s-1],r[s],{type:r[s-2]}))));break;case 337:case 343:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].addElse(r[s]));break;case 338:case 339:case 344:case 345:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s],o.addDataToNode(o,l[s-2])(o.Block.wrap([r[s-2]])),{type:r[s-1],statement:!0}));break;case 349:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("-",r[s]));break;case 350:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("+",r[s]));break;case 352:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("--",r[s]));break;case 353:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("++",r[s]));break;case 354:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("--",r[s-1],null,!0));break;case 355:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("++",r[s-1],null,!0));break;case 356:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Existence(r[s-1]));break;case 357:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op("+",r[s-2],r[s]));break;case 358:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op("-",r[s-2],r[s]));break;case 359:case 360:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 368:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op(r[s-1],r[s-2],r[s]));break;case 369:this.$=o.addDataToNode(o,l[s-2],l[s])(function(){return"!"===r[s-1].charAt(0)?new o.Op(r[s-1].slice(1),r[s-2],r[s]).invert():new o.Op(r[s-1],r[s-2],r[s])}());break;case 370:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(r[s-2],r[s],r[s-1]));break;case 371:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(r[s-4],r[s-1],r[s-3]));break;case 372:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Assign(r[s-3],r[s],r[s-2]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{1:[3]},{1:[2,2],6:W},a(X,[2,3]),a(Y,[2,6],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,7]),a(Y,[2,8],{158:116,151:118,154:119,148:q,150:z,156:J,174:ue}),a(Y,[2,9]),a(me,[2,16],{124:120,99:121,104:127,45:he,46:he,126:he,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne,125:ve}),a(me,[2,17],{104:127,99:130,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne}),a(me,[2,18]),a(me,[2,19]),a(me,[2,20]),a(me,[2,21]),a(me,[2,22]),a(me,[2,23]),a(me,[2,24]),a(me,[2,25]),a(me,[2,26]),a(me,[2,27]),a(Y,[2,28]),a(Y,[2,29]),a(Y,[2,30]),a(be,[2,12]),a(be,[2,13]),a(be,[2,14]),a(be,[2,15]),a(Y,[2,10]),a(Y,[2,11]),a($e,_e,{61:[1,131]}),a($e,[2,123]),a($e,[2,124]),a($e,[2,125]),a($e,Ce),a($e,[2,127]),a($e,[2,128]),a(De,Ee,{87:132,94:133,95:134,37:136,67:137,96:138,73:139,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{5:143,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,34:142,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:145,8:146,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:150,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:156,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:157,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:158,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:[1,159],85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:160,100:32,107:_,129:x,130:I,145:R},{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:164,100:32,107:_,129:x,130:I,145:R},a(Pe,je,{180:[1,165],181:[1,166],194:[1,167]}),a(me,[2,336],{169:[1,168]}),{34:169,35:Ae},{34:170,35:Ae},{34:171,35:Ae},a(me,[2,266]),{34:172,35:Ae},{34:173,35:Ae},{7:174,8:175,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:[1,176],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Me,[2,147],{53:30,74:31,100:32,51:33,76:34,75:35,96:61,73:62,42:63,48:65,37:78,67:79,44:88,89:152,17:161,18:162,60:163,34:177,98:179,35:Ae,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,86:Le,90:b,91:$,107:_,111:[1,178],129:x,130:I,145:R}),{7:180,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,181],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,35,36,47,69,70,93,127,135,146,148,149,150,156,157,174,182,183,184,185,186,187,188,189,190,191,192,193],Ue,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:182,14:t,32:Re,33:Ve,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:[1,184],85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(Y,[2,342],{169:[1,185]}),a([1,6,36,47,69,70,93,127,135,146,148,149,150,156,157,174],Be,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:186,14:t,32:Re,35:Ge,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{37:192,38:n,39:r,44:188,45:s,46:i,107:[1,191],113:189,114:190,119:He},{26:195,37:196,38:n,39:r,107:[1,194],110:C,118:[1,197],122:[1,198]},a(Pe,[2,120]),a(Pe,[2,121]),a($e,[2,45]),a($e,[2,46]),a($e,[2,47]),a($e,[2,48]),a($e,[2,49]),a($e,[2,50]),a($e,[2,51]),a($e,[2,52]),{4:199,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,35:[1,200],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:201,8:202,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:Xe,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:204,132:205,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{80:ze,81:Je,124:213,125:ve,126:he},a($e,[2,200]),a($e,[2,201],{40:216,41:Ke}),a(Ze,[2,95]),a(Ze,[2,96]),a(Qe,[2,115]),a(Qe,[2,118]),{7:218,8:219,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:220,8:221,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:222,8:223,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:225,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,34:224,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{37:230,38:n,39:r,67:231,68:y,73:233,96:232,100:226,107:_,130:Se,161:227,162:ea,163:229},{159:234,160:235,164:[1,236],165:[1,237],166:[1,238]},a([6,35,93,109],aa,{44:88,108:239,62:240,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),a(ra,[2,39]),a(ra,[2,40]),a($e,[2,43]),{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:257,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:258,100:32,107:_,129:x,130:I,145:R},a(la,[2,36]),a(la,[2,37]),a(sa,[2,41]),{4:259,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(X,[2,5],{7:4,8:5,9:6,10:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,11:27,12:28,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,5:260,14:t,32:o,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:N,86:v,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(me,[2,356]),{7:261,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:262,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:263,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:264,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:265,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:266,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:267,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:268,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:269,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:270,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:271,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:272,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:273,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:274,8:275,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,265]),a(me,[2,270]),{7:220,8:276,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:222,8:277,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{37:230,38:n,39:r,67:231,68:y,73:233,96:232,100:278,107:_,130:Se,161:227,162:ea,163:229},{159:234,164:[1,279],165:[1,280],166:[1,281]},{7:282,8:283,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,264]),a(me,[2,269]),{44:284,45:s,46:i,78:285,126:ia},a(Qe,[2,116]),a(da,[2,197]),{40:287,41:Ke},{40:288,41:Ke},a(Qe,[2,135],{40:289,41:Ke}),{40:290,41:Ke},a(Qe,[2,136]),{7:292,8:294,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:ca,73:62,74:31,75:35,76:34,77:k,82:291,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,106:293,107:_,110:C,112:D,120:E,129:x,130:I,134:295,135:pa,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{81:fe,104:298,105:Ne},a(Qe,[2,117]),{6:[1,300],7:299,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,301],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ua,ma,{92:304,88:[1,302],93:ha}),a(ga,[2,100]),a(ga,[2,104],{61:[1,306],70:[1,305]}),a(ga,[2,108],{37:136,67:137,96:138,73:139,95:307,38:n,39:r,68:xe,107:_,130:Se}),a(fa,[2,109]),a(fa,[2,110]),a(fa,[2,111]),a(fa,[2,112]),{40:216,41:Ke},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:Xe,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:204,132:205,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ya,[2,92]),a(Y,[2,94]),{4:311,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,36:[1,310],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ka,Ta,{151:111,154:112,158:116,182:ee}),a(Y,[2,346]),{7:158,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{148:q,150:z,151:118,154:119,156:J,158:116,174:ue},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,182,183,184,185,186,187,188,189,190,191,192,193],Ue,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:182,14:t,32:Re,33:Ve,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(Na,[2,348],{151:111,154:112,158:116,182:ee,184:te}),a(De,Ee,{94:133,95:134,37:136,67:137,96:138,73:139,87:313,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{34:142,35:Ae},{7:314,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{148:q,150:z,151:118,154:119,156:J,158:116,174:[1,315]},{7:316,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Na,[2,349],{151:111,154:112,158:116,182:ee,184:te}),a(Na,[2,350],{151:111,154:112,158:116,182:ee,184:te}),a(ka,[2,351],{151:111,154:112,158:116,182:ee}),a(Y,[2,90],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:317,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:Be,150:Be,156:Be,174:Be,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(me,[2,352],{45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je}),a(da,he,{124:120,99:121,104:127,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne,125:ve}),{80:ge,81:fe,99:130,101:ye,102:ke,103:Te,104:127,105:Ne},a(va,_e),a(me,[2,353],{45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je}),a(me,[2,354]),a(me,[2,355]),{6:[1,320],7:318,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,319],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{34:321,35:Ae,173:[1,322]},a(me,[2,241],{141:323,142:[1,324],143:[1,325]}),a(me,[2,262]),a(me,[2,263]),a(me,[2,271]),a(me,[2,272]),{35:[1,326],148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[1,327]},{168:328,170:329,171:ba},a(me,[2,148]),{7:331,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Me,[2,151],{34:332,35:Ae,45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je,111:[1,333]}),a($a,[2,248],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:334,107:_},a($a,[2,32],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:335,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,36,47,69,70,93,127,135,146,149,157],[2,88],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:336,14:t,32:Re,35:Ge,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:Be,150:Be,156:Be,174:Be,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{34:337,35:Ae,173:[1,338]},a(be,_a,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:339,107:_},a(be,[2,155]),{33:[1,340],93:[1,341]},{33:[1,342]},{35:Ca,37:347,38:n,39:r,109:[1,343],115:344,116:345,118:Da},a([33,93],[2,171]),{117:[1,349]},{35:Ea,37:354,38:n,39:r,109:[1,350],118:xa,121:351,123:352},a(be,[2,175]),{61:[1,356]},{7:357,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,358],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{33:[1,359]},{6:W,146:[1,360]},{4:361,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ia,Sa,{151:111,154:112,158:116,134:362,70:[1,363],135:pa,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ia,Aa,{134:364,70:ca,135:pa}),a(Ra,[2,203]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:[1,365],70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:367,138:366,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a([6,35,69],ma,{133:368,92:370,93:Oa}),a(La,[2,234]),a(Fa,[2,225]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,132:371,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(La,[2,236]),a(Fa,[2,230]),a(wa,[2,223]),a(wa,[2,224],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:373,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{78:374,126:ia},{40:375,41:Ke},{7:376,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Pa,[2,202]),a(Pa,[2,38]),{34:377,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{34:378,35:Ae},a(ja,[2,256],{151:111,154:112,158:116,148:q,149:[1,379],150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:[2,252],149:[1,380]},a(ja,[2,259],{151:111,154:112,158:116,148:q,149:[1,381],150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:[2,254],149:[1,382]},a(me,[2,267]),a(Ma,[2,268],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:Ua,157:[1,383]},a(Va,[2,278]),{37:230,38:n,39:r,67:231,68:xe,73:233,96:232,107:_,130:Se,161:384,163:229},a(Va,[2,284],{93:[1,385]}),a(Ba,[2,280]),a(Ba,[2,281]),a(Ba,[2,282]),a(Ba,[2,283]),a(me,[2,275]),{35:[2,277]},{7:386,8:387,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:388,8:389,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:390,8:391,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ga,ma,{92:392,93:Ha}),a(Wa,[2,143]),a(Wa,[2,56],{65:[1,394]}),a(Wa,[2,57]),a(Xa,[2,66],{78:397,79:398,61:[1,395],70:[1,396],80:Ya,81:qa,126:ia}),a(Xa,[2,67]),{37:247,38:n,39:r,40:248,41:Ke,66:401,67:249,68:ta,71:402,72:251,73:252,74:253,75:254,76:255,77:na,107:_,129:x,130:I,145:R},{70:[1,403],78:404,79:405,80:Ya,81:qa,126:ia},a(za,[2,62]),a(za,[2,63]),a(za,[2,64]),{7:406,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ja,[2,72]),a(Ja,[2,73]),a(Ja,[2,74]),a(Ja,[2,75]),a(Ja,[2,76]),{78:407,80:ze,81:Je,126:ia},a(va,Ce,{52:[1,408]}),a(va,je),{6:W,47:[1,409]},a(X,[2,4]),a(Ka,[2,357],{151:111,154:112,158:116,182:ee,183:ae,184:te}),a(Ka,[2,358],{151:111,154:112,158:116,182:ee,183:ae,184:te}),a(Na,[2,359],{151:111,154:112,158:116,182:ee,184:te}),a(Na,[2,360],{151:111,154:112,158:116,182:ee,184:te}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,185,186,187,188,189,190,191,192,193],[2,361],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,186,187,188,189,190,191,192],[2,362],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,187,188,189,190,191,192],[2,363],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,188,189,190,191,192],[2,364],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,189,190,191,192],[2,365],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,190,191,192],[2,366],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,191,192],[2,367],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,192],[2,368],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,186,187,188,189,190,191,192,193],[2,369],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe}),a(Ma,Za,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,345]),{149:[1,410]},{149:[1,411]},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Ua,{157:[1,412]}),{7:413,8:414,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:415,8:416,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:417,8:418,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ma,Qa,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,344]),a(et,[2,193]),a(et,[2,194]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,127:[1,419],128:420,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Qe,[2,131]),a(Qe,[2,132]),a(Qe,[2,133]),a(Qe,[2,134]),{83:[1,423]},{70:ca,83:[2,139],134:424,135:pa,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{83:[2,140]},{70:ca,134:425,135:pa},{7:426,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,215],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(tt,[2,206]),a(tt,ot),a(Qe,[2,138]),a($a,[2,53],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:427,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:428,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{89:429,90:b,91:$},a(nt,rt,{95:134,37:136,67:137,96:138,73:139,94:430,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{6:lt,35:st},a(ga,[2,105]),{7:433,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ga,[2,106]),a(wa,Sa,{151:111,154:112,158:116,70:[1,434],148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(wa,Aa),a(it,[2,34]),{6:W,36:[1,435]},{7:436,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ua,ma,{92:304,88:[1,437],93:ha}),a(ka,Ta,{151:111,154:112,158:116,182:ee}),{7:438,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{34:377,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Y,[2,89],{151:111,154:112,158:116,148:_a,150:_a,156:_a,174:_a,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,[2,370],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:439,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:440,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(me,[2,337]),{7:441,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(me,[2,242],{142:[1,442]}),{34:443,35:Ae},{34:446,35:Ae,37:444,38:n,39:r,73:445,107:_},{168:447,170:329,171:ba},{168:448,170:329,171:ba},{36:[1,449],169:[1,450],170:451,171:ba},a(ct,[2,330]),{7:453,8:454,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,139:452,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(pt,[2,149],{151:111,154:112,158:116,34:455,35:Ae,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(me,[2,152]),{7:456,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{36:[1,457]},a($a,[2,33],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,87],{151:111,154:112,158:116,148:_a,150:_a,156:_a,174:_a,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,343]),{7:459,8:458,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{36:[1,460]},{44:461,45:s,46:i},{107:[1,463],114:462,119:He},{44:464,45:s,46:i},{33:[1,465]},a(Ga,ma,{92:466,93:ut}),a(Wa,[2,162]),{35:Ca,37:347,38:n,39:r,115:468,116:345,118:Da},a(Wa,[2,167],{117:[1,469]}),a(Wa,[2,169],{117:[1,470]}),{37:471,38:n,39:r},a(be,[2,173]),a(Ga,ma,{92:472,93:mt}),a(Wa,[2,183]),{35:Ea,37:354,38:n,39:r,118:xa,121:474,123:352},a(Wa,[2,188],{117:[1,475]}),a(Wa,[2,191],{117:[1,476]}),{6:[1,478],7:477,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,479],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ht,[2,179],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:480,107:_},{44:481,45:s,46:i},a($e,[2,250]),{6:W,36:[1,482]},{7:483,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([14,32,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],ot,{6:gt,35:gt,69:gt,93:gt}),{7:484,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ra,[2,204]),a(La,[2,235]),a(Fa,[2,231]),{6:ft,35:yt,69:[1,485]},a(kt,rt,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,138:206,136:210,97:211,7:308,8:309,137:488,131:489,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,93:qe,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(kt,[2,232]),a(nt,ma,{92:370,133:490,93:Oa}),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:367,138:366,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(wa,[2,114],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(et,[2,195]),a($e,[2,129]),{83:[1,491],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Tt,[2,334]),a(Nt,[2,340]),{7:492,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:493,8:494,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:495,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:496,8:497,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:498,8:499,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Va,[2,279]),{37:230,38:n,39:r,67:231,68:xe,73:233,96:232,107:_,130:Se,163:500},{35:vt,148:q,149:[1,501],150:z,151:111,154:112,156:J,157:[1,502],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,305],149:[1,503],157:[1,504]},{35:bt,148:q,149:[1,505],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,306],149:[1,506]},{35:$t,148:q,149:[1,507],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,321],149:[1,508]},{6:_t,35:Ct,109:[1,509]},a(Dt,rt,{44:88,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,62:512,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),{7:513,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,514],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:515,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,516],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,68]),a(Ja,[2,78]),a(Ja,[2,80]),{40:517,41:Ke},{7:292,8:294,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:ca,73:62,74:31,75:35,76:34,77:k,82:518,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,106:293,107:_,110:C,112:D,120:E,129:x,130:I,134:295,135:pa,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,69],{78:397,79:398,80:Ya,81:qa,126:ia}),a(Wa,[2,71],{78:404,79:405,80:Ya,81:qa,126:ia}),a(Wa,[2,70]),a(Ja,[2,79]),a(Ja,[2,81]),{69:[1,519],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ja,[2,77]),a($e,[2,44]),a(sa,[2,42]),{7:520,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:521,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:522,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,150,156,174],vt,{151:111,154:112,158:116,149:[1,523],157:[1,524],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,525],157:[1,526]},a(Et,bt,{151:111,154:112,158:116,149:[1,527],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,528]},a(Et,$t,{151:111,154:112,158:116,149:[1,529],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,530]},a(et,[2,198]),a([6,35,127],ma,{92:531,93:xt}),a(It,[2,216]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,128:533,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Qe,[2,137]),{7:534,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,211],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:535,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,213],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{83:[2,214],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a($a,[2,54],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,536],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{5:538,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,34:537,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ga,[2,101]),{37:136,38:n,39:r,67:137,68:xe,70:Ie,73:139,94:539,95:134,96:138,107:_,130:Se},a(St,Ee,{94:133,95:134,37:136,67:137,96:138,73:139,87:540,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),a(ga,[2,107],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(wa,gt),a(it,[2,35]),a(Ma,Za,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{89:541,90:b,91:$},a(Ma,Qa,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,542],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a($a,[2,372],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{34:543,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{34:544,35:Ae},a(me,[2,243]),{34:545,35:Ae},{34:546,35:Ae},a(At,[2,247]),{36:[1,547],169:[1,548],170:451,171:ba},{36:[1,549],169:[1,550],170:451,171:ba},a(me,[2,328]),{34:551,35:Ae},a(ct,[2,331]),{34:552,35:Ae,93:[1,553]},a(Rt,[2,237],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Rt,[2,238]),a(me,[2,150]),a(pt,[2,153],{151:111,154:112,158:116,34:554,35:Ae,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(me,[2,249]),{34:555,35:Ae},{148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(be,[2,85]),a(be,[2,156]),{33:[1,556]},{35:Ca,37:347,38:n,39:r,115:557,116:345,118:Da},a(be,[2,157]),{44:558,45:s,46:i},{6:Ot,35:Lt,109:[1,559]},a(Dt,rt,{37:347,116:562,38:n,39:r,118:Da}),a(nt,ma,{92:563,93:ut}),{37:564,38:n,39:r},{37:565,38:n,39:r},{33:[2,172]},{6:Ft,35:wt,109:[1,566]},a(Dt,rt,{37:354,123:569,38:n,39:r,118:xa}),a(nt,ma,{92:570,93:mt}),{37:571,38:n,39:r,118:[1,572]},{37:573,38:n,39:r},a(ht,[2,176],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:574,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:575,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{36:[1,576]},a(be,[2,181]),{146:[1,577]},{69:[1,578],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{69:[1,579],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ra,[2,205]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,136:210,137:580,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,132:581,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Fa,[2,226]),a(kt,[2,233],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,97:211,7:308,8:309,138:366,136:367,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,93:qe,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),{6:ft,35:yt,36:[1,582]},a($e,[2,130]),a(Ma,[2,257],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:Pt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,253]},a(Ma,[2,260],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:jt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,255]},{35:Mt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,276]},a(Va,[2,285]),{7:583,8:584,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:585,8:586,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:587,8:588,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:589,8:590,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:591,8:592,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:593,8:594,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:595,8:596,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:597,8:598,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ra,[2,141]),{37:247,38:n,39:r,40:248,41:Ke,42:244,43:l,44:88,45:s,46:i,62:599,63:241,64:242,66:243,67:249,68:ta,70:oa,71:246,72:251,73:252,74:253,75:254,76:255,77:na,107:_,129:x,130:I,145:R},a(St,aa,{44:88,62:240,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,108:600,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),a(Wa,[2,144]),a(Wa,[2,58],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:601,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,60],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:602,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ja,[2,82]),{83:[1,603]},a(za,[2,65]),a(Ma,Pt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ma,jt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ma,Mt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:604,8:605,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:606,8:607,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:608,8:609,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:610,8:611,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:612,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:613,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:614,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:615,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{6:Ut,35:Vt,127:[1,616]},a([6,35,36,127],rt,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,97:211,7:308,8:309,136:619,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(nt,ma,{92:620,93:xt}),{83:[2,210],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{83:[2,212],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(me,[2,55]),a(ya,[2,91]),a(Y,[2,93]),a(ga,[2,102]),a(nt,ma,{92:621,93:ha}),{34:537,35:Ae},a(me,[2,371]),a(Tt,[2,335]),a(me,[2,244]),a(At,[2,245]),a(At,[2,246]),a(me,[2,324]),{34:622,35:Ae},a(me,[2,325]),{34:623,35:Ae},{36:[1,624]},a(ct,[2,332],{6:[1,625]}),{7:626,8:627,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,154]),a(Nt,[2,341]),{44:628,45:s,46:i},a(Ga,ma,{92:629,93:ut}),a(be,[2,158]),{33:[1,630]},{37:347,38:n,39:r,116:631,118:Da},{35:Ca,37:347,38:n,39:r,115:632,116:345,118:Da},a(Wa,[2,163]),{6:Ot,35:Lt,36:[1,633]},a(Wa,[2,168]),a(Wa,[2,170]),a(be,[2,174],{33:[1,634]}),{37:354,38:n,39:r,118:xa,123:635},{35:Ea,37:354,38:n,39:r,118:xa,121:636,123:352},a(Wa,[2,184]),{6:Ft,35:wt,36:[1,637]},a(Wa,[2,189]),a(Wa,[2,190]),a(Wa,[2,192]),a(ht,[2,177],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,638],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(be,[2,180]),a($e,[2,251]),a($e,[2,208]),a($e,[2,209]),a(Fa,[2,227]),a(nt,ma,{92:370,133:639,93:Oa}),a(Fa,[2,228]),{35:Bt,148:q,150:z,151:111,154:112,156:J,157:[1,640],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,307],157:[1,641]},{35:Gt,148:q,149:[1,642],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,311],149:[1,643]},{35:Ht,148:q,150:z,151:111,154:112,156:J,157:[1,644],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,308],157:[1,645]},{35:Wt,148:q,149:[1,646],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,312],149:[1,647]},{35:Xt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,309]},{35:Yt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,310]},{35:qt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,322]},{35:zt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,323]},a(Wa,[2,145]),a(nt,ma,{92:648,93:Ha}),{36:[1,649],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{36:[1,650],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ja,[2,83]),a(Jt,Bt,{151:111,154:112,158:116,157:[1,651],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{157:[1,652]},a(Et,Gt,{151:111,154:112,158:116,149:[1,653],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,654]},a(Jt,Ht,{151:111,154:112,158:116,157:[1,655],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{157:[1,656]},a(Et,Wt,{151:111,154:112,158:116,149:[1,657],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,658]},a($a,Xt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Yt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,qt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,zt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(et,[2,199]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:659,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,128:660,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(It,[2,217]),{6:Ut,35:Vt,36:[1,661]},{6:lt,35:st,36:[1,662]},{36:[1,663]},{36:[1,664]},a(me,[2,329]),a(ct,[2,333]),a(Rt,[2,239],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Rt,[2,240]),a(be,[2,160]),{6:Ot,35:Lt,109:[1,665]},{44:666,45:s,46:i},a(Wa,[2,164]),a(nt,ma,{92:667,93:ut}),a(Wa,[2,165]),{44:668,45:s,46:i},a(Wa,[2,185]),a(nt,ma,{92:669,93:mt}),a(Wa,[2,186]),a(be,[2,178]),{6:ft,35:yt,36:[1,670]},{7:671,8:672,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:673,8:674,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:675,8:676,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:677,8:678,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:679,8:680,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:681,8:682,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:683,8:684,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:685,8:686,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{6:_t,35:Ct,36:[1,687]},a(Wa,[2,59]),a(Wa,[2,61]),{7:688,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:689,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:690,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:691,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:692,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:693,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:694,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:695,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(It,[2,218]),a(nt,ma,{92:696,93:xt}),a(It,[2,219]),a(ga,[2,103]),a(me,[2,326]),a(me,[2,327]),{33:[1,697]},a(be,[2,159]),{6:Ot,35:Lt,36:[1,698]},a(be,[2,182]),{6:Ft,35:wt,36:[1,699]},a(Fa,[2,229]),{35:Kt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,313]},{35:Zt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,315]},{35:Qt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,317]},{35:eo,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,319]},{35:ao,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,314]},{35:to,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,316]},{35:oo,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,318]},{35:no,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,320]},a(Wa,[2,146]),a($a,Kt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Zt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Qt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,eo,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,ao,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,to,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,oo,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,no,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{6:Ut,35:Vt,36:[1,700]},{44:701,45:s,46:i},a(Wa,[2,166]),a(Wa,[2,187]),a(It,[2,220]),a(be,[2,161])],defaultActions:{235:[2,277],293:[2,140],471:[2,172],494:[2,253],497:[2,255],499:[2,276],592:[2,309],594:[2,310],596:[2,322],598:[2,323],672:[2,313],674:[2,315],676:[2,317],678:[2,319],680:[2,314],682:[2,316],684:[2,318],686:[2,320]},parseError:function(e,a){if(a.recoverable)this.trace(e);else{var t=new Error(e);throw t.hash=a,t}},parse:function(e){var a=this,t=[0],o=[null],n=[],l=this.table,s="",i=0,d=0,c=0,u=1,m=n.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,"undefined"==typeof h.yylloc&&(h.yylloc={});var y=h.yylloc;n.push(y);var k=h.options&&h.options.ranges;this.parseError="function"==typeof g.yy.parseError?g.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var T=function(){var e;return e=h.lex()||u,"number"!=typeof e&&(e=a.symbols_[e]||e),e};for(var N={},v,b,$,_,C,D,p,E,x;;){if($=t[t.length-1],this.defaultActions[$]?_=this.defaultActions[$]:((null===v||"undefined"==typeof v)&&(v=T()),_=l[$]&&l[$][v]),"undefined"==typeof _||!_.length||!_[0]){var I="";for(D in x=[],l[$])this.terminals_[D]&&D>2&&x.push("'"+this.terminals_[D]+"'");I=h.showPosition?"Parse error on line "+(i+1)+":\n"+h.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(i+1)+": Unexpected "+(v==u?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(I,{text:h.match,token:this.terminals_[v]||v,line:h.yylineno,loc:y,expected:x})}if(_[0]instanceof Array&&1<_.length)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+v);switch(_[0]){case 1:t.push(v),o.push(h.yytext),n.push(h.yylloc),t.push(_[1]),v=null,b?(v=b,b=null):(d=h.yyleng,s=h.yytext,i=h.yylineno,y=h.yylloc,0a.call(this.compiledComments,l)))&&(this.compiledComments.push(l),s=l.here?new S(l).compileNode(e):new J(l).compileNode(e),s.isHereComment&&!s.newLine||t.includeCommentFragments()?p(s):(0===o.length&&o.push(this.makeCode("")),s.unshift?(null==(n=o[0]).precedingComments&&(n.precedingComments=[]),o[0].precedingComments.push(s)):(null==(r=o[o.length-1]).followingComments&&(r.followingComments=[]),o[o.length-1].followingComments.push(s))));return o}},{key:"cache",value:function cache(e,a,t){var o,n,r;return o=null==t?this.shouldCache():t(this),o?(n=new R(e.scope.freeVariable("ref")),r=new d(n,this),a?[r.compileToFragments(e,a),[this.makeCode(n.value)]]:[r,n]):(n=a?this.compileToFragments(e,a):this,[n,n])}},{key:"hoist",value:function hoist(){var e,a,t;return this.hoisted=!0,t=new A(this),e=this.compileNode,a=this.compileToFragments,this.compileNode=function(a){return t.update(e,a)},this.compileToFragments=function(e){return t.update(a,e)},t}},{key:"cacheToCodeFragments",value:function cacheToCodeFragments(e){return[We(e[0]),We(e[1])]}},{key:"makeReturn",value:function makeReturn(e){var a;return a=this.unwrapAll(),e?new u(new K(e+".push"),[a]):new ge(a)}},{key:"contains",value:function contains(e){var a;return a=void 0,this.traverseChildren(!1,function(t){if(e(t))return a=t,!1}),a}},{key:"lastNode",value:function lastNode(e){return 0===e.length?null:e[e.length-1]}},{key:"toString",value:function toString(){var e=0=X?this.wrapInParentheses(a):a)}},{key:"compileRoot",value:function compileRoot(e){var a,t,o,n,r,l;for(e.indent=e.bare?"":De,e.level=z,this.spaced=!0,e.scope=new ye(null,this,null,null==(r=e.referencedVars)?[]:r),l=e.locals||[],t=0,o=l.length;t=Y?this.wrapInParentheses(a):a}}]),a}(re),e.StringLiteral=ve=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(){var e;return e=this.csx?[this.makeCode(this.unquote(!0,!0))]:_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this)}},{key:"unquote",value:function unquote(){var e=!!(0=H?"(void 0)":"void 0")]}}]),a}(K),e.NullLiteral=ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"null"))}return _inherits(a,e),a}(K),e.BooleanLiteral=i=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(K),e.Return=ge=function(){var e=function(e){function t(e){_classCallCheck(this,t);var a=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a.expression=e,a}return _inherits(t,e),_createClass(t,[{key:"compileToFragments",value:function compileToFragments(e,a){var o,n;return o=null==(n=this.expression)?void 0:n.makeReturn(),o&&!(o instanceof t)?o.compileToFragments(e,a):_get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"compileToFragments",this).call(this,e,a)}},{key:"compileNode",value:function compileNode(e){var t,o,n,r;if(t=[],this.expression){for(t=this.expression.compileToFragments(e,q),la(t,this.makeCode(this.tab+"return ")),n=0,r=t.length;nthis.properties.length&&!this.base.shouldCache()&&(null==s||!s.shouldCache()))?[this,this]:(r=new a(this.base,this.properties.slice(0,-1)),r.shouldCache()&&(l=new R(e.scope.freeVariable("base")),r=new a(new de(new d(l,r)))),!s)?[r,l]:(s.shouldCache()&&(i=new R(e.scope.freeVariable("name")),s=new V(new d(i,s.index)),i=new V(i)),[r.add(s),new a(l||r.base,[i||s])])}},{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;for(this.base.front=this.front,r=this.properties,a=r.length&&null!=this.base.cached?this.base.cached:this.base.compileToFragments(e,r.length?H:null),r.length&&fe.test(We(a))&&a.push(this.makeCode(".")),t=0,o=r.length;tn.length&&(n=r);this.content=this.content.replace(RegExp("^("+r+")","gm"),"")}return this.content="/*"+this.content+(t?" ":"")+"*/",e=this.makeCode(this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.multiline=i,e.isComment=e.isHereComment=!0,e}}]),t}(l),e.LineComment=J=function(e){function a(e){var t=e.content,o=e.newLine,n=e.unshift;_classCallCheck(this,a);var r=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return r.content=t,r.newLine=o,r.unshift=n,r}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(){var e;return e=this.makeCode(/^\s*$/.test(this.content)?"":"//"+this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.trail=!this.newLine&&!this.unshift,e.isComment=e.isLineComment=!0,e}}]),a}(l),e.Call=u=function(){var e=function(e){function a(e){var t=1")),(g=i).push.apply(g,_toConsumableArray(l.compileNode(e,X))),(f=i).push.apply(f,[this.makeCode("")]))}else i.push(this.makeCode(" />"));return i}}]),a}(l);return e.prototype.children=["variable","args"],e}.call(this),e.SuperCall=_e=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function isStatement(e){var a;return(null==(a=this.expressions)?void 0:a.length)&&e.level===z}},{key:"compileNode",value:function compileNode(e){var t,o,n,r;if(null==(o=this.expressions)||!o.length)return _get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e);if(r=new K(We(_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e))),n=new c(this.expressions.slice()),e.level>z){var l=r.cache(e,null,we),s=_slicedToArray(l,2);r=s[0],t=s[1],n.push(t)}return n.unshift(r),n.compileToFragments(e,e.level===z?e.level:X)}}]),a}(u);return e.prototype.children=u.prototype.children.concat(["expressions"]),e}.call(this),e.Super=$e=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.accessor=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a,t,o,n,r,l,s,i;if(t=e.scope.namedMethod(),(null==t?void 0:t.isMethod)||this.error("cannot use super outside of an instance method"),null==t.ctor&&null==this.accessor){var c=t;o=c.name,i=c.variable,(o.shouldCache()||o instanceof V&&o.index.isAssignable())&&(n=new R(e.scope.parent.freeVariable("name")),o.index=new d(n,o.index)),this.accessor=null==n?o:new V(n)}return(null==(r=this.accessor)||null==(l=r.name)?void 0:l.comments)&&(s=this.accessor.name.comments,delete this.accessor.name.comments),a=new Le(new K("super"),this.accessor?[this.accessor]:[]).compileToFragments(e),s&&Me(s,this.accessor.name),a}}]),a}(l);return e.prototype.children=["accessor"],e}.call(this),e.RegexWithInterpolations=he=function(e){function a(){var e=0"+this.equals;var f=[this.fromNum,this.toNum];return o=f[0],m=f[1],p=this.stepNum?this.stepNum+" !== 0":this.stepVar+" !== 0",t=s?null==this.step?o<=m?d+" "+m:n+" "+m:(i=o+" <= "+r+" && "+d+" "+m,h=o+" >= "+r+" && "+n+" "+m,o<=m?p+" && "+i:p+" && "+h):(i=this.fromVar+" <= "+r+" && "+d+" "+this.toVar,h=this.fromVar+" >= "+r+" && "+n+" "+this.toVar,p+" && ("+this.fromVar+" <= "+this.toVar+" ? "+i+" : "+h+")"),a=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,u=this.stepVar?r+" += "+this.stepVar:s?c?o<=m?"++"+r:"--"+r:o<=m?r+"++":r+"--":c?a+" ? ++"+r+" : --"+r:a+" ? "+r+"++ : "+r+"--",c&&(g=l+" = "+g),c&&(u=l+" = "+u),[this.makeCode(g+"; "+t+"; "+u)]}},{key:"compileArray",value:function compileArray(e){var a,t,o,n,r,l,s,i,d,c,p,u,m;return(s=null!=this.fromNum&&null!=this.toNum,s&&20>=_Mathabs(this.fromNum-this.toNum))?(c=function(){for(var e=[],a=p=this.fromNum,t=this.toNum;p<=t?a<=t:a>=t;p<=t?a++:a--)e.push(a);return e}.apply(this),this.exclusive&&c.pop(),[this.makeCode("["+c.join(", ")+"]")]):(l=this.tab+De,r=e.scope.freeVariable("i",{single:!0,reserve:!1}),u=e.scope.freeVariable("results",{reserve:!1}),d="\n"+l+"var "+u+" = [];",s?(e.index=r,t=We(this.compileNode(e))):(m=r+" = "+this.fromC+(this.toC===this.toVar?"":", "+this.toC),o=this.fromVar+" <= "+this.toVar,t="var "+m+"; "+o+" ? "+r+" <"+this.equals+" "+this.toVar+" : "+r+" >"+this.equals+" "+this.toVar+"; "+o+" ? "+r+"++ : "+r+"--"),i="{ "+u+".push("+r+"); }\n"+l+"return "+u+";\n"+e.indent,n=function(e){return null==e?void 0:e.contains(qe)},(n(this.from)||n(this.to))&&(a=", arguments"),[this.makeCode("(function() {"+d+"\n"+l+"for ("+t+")"+i+"}).apply(this"+(null==a?"":a)+")")])}}]),a}(l);return e.prototype.children=["from","to"],e}.call(this),e.Slice=ke=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.range=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a=this.range,t,o,n,r,l,s;return l=a.to,n=a.from,(null==n?void 0:n.shouldCache())&&(n=new Le(new de(n))),(null==l?void 0:l.shouldCache())&&(l=new Le(new de(l))),r=(null==n?void 0:n.compileToFragments(e,q))||[this.makeCode("0")],l&&(t=l.compileToFragments(e,q),o=We(t),(this.range.exclusive||-1!=+o)&&(s=", "+(this.range.exclusive?o:l.isNumber()?""+(+o+1):(t=l.compileToFragments(e,H),"+"+We(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+We(r)+(s||"")+")")]}}]),a}(l);return e.prototype.children=["range"],e}.call(this),e.Obj=le=function(){var e=function(e){function a(e){var t=!!(1N)return l.push(new Le(new le(y.slice(N,a),!0)))};e=y[a];)(d=this.addInitializerExpression(e))&&(k(),l.push(d),i.push(d),N=a+1),a++;k(),t.apply(r,[s,s-s+1].concat(l)),l,s+=l.length}else(d=this.addInitializerExpression(n))&&(i.push(d),r[s]=d),s+=1;for(u=0,g=i.length;uX||l&&this.variable.base instanceof le&&!this.nestedLhs&&!0!==this.param?this.wrapInParentheses(o):o)}},{key:"compileObjectDestruct",value:function compileObjectDestruct(e){var a,t,o,l,i,d,p,m,h,g,f,y;if(t=function(a){var t;if(a instanceof n){var o=a.variable.cache(e),r=_slicedToArray(o,2);return a.variable=r[0],t=r[1],t}return a},o=function(a){var o,r;return r=t(a),o=a instanceof n&&a.variable!==r,o||!r.isAssignable()?r:new K("'"+r.compileWithoutComments(e)+"'")},h=function traverseRest(a,l){var i,d,c,u,m,g,f,y,p,k,T;for(k=[],T=void 0,null==l.properties&&(l=new Le(l)),d=c=0,u=a.length;c=Y?this.wrapInParentheses(d):d;var W=I,q=_slicedToArray(W,1);return E=q[0],1===S&&E instanceof N&&E.error("Destructuring assignment has no target"),j=function(){var e,a,t;for(t=[],v=e=0,a=I.length;ea.call(g,v):return new Le(E.base);default:return E}}(),k=function(){switch(!1){case!(E instanceof Te):return c(i,v);default:return new Le(new K(i),[new V(new re(v))])}}();h=Je(s.unwrap().value),h&&s.error(h),f.push(l.push(new n(s,k,null,{param:t.param,subpattern:!0}).compileToFragments(e,X)))}return f},o=function(a,o,r){var i;return o=new Le(new s(a,!0)),i=r instanceof Le?r:new Le(new K(r)),l.push(new n(o,i,null,{param:t.param,subpattern:!0}).compileToFragments(e,X))},A=function(e,a,t){return m(e)?D(e,a,t):o(e,a,t)},M.length?(h=M[0],C=I.slice(0,h+(_?1:0)),w=I.slice(h+1),0!==C.length&&A(C,G,H),0!==w.length&&(L=function(){switch(!1){case!_:return p(I[h].unwrapAll().value,-1*w.length);case!b:return c(H,-1*w.length)}}(),m(w)&&(F=L,L=e.scope.freeVariable("ref"),l.push([this.makeCode(L+" = ")].concat(_toConsumableArray(F.compileToFragments(e,X))))),A(w,G,L))):A(I,G,H),U||this.subpattern||l.push(G),f=this.joinFragmentArrays(l,", "),e.levelz?this.wrapInParentheses(o):o}},{key:"eachName",value:function eachName(e){return this.variable.unwrapAll().eachName(e)}}]),n}(l);return e.prototype.children=["variable","value"],e.prototype.isAssignable=we,e}.call(this),e.FuncGlyph=I=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.glyph=e,t}return _inherits(a,e),a}(l),e.Code=h=function(){var e=function(e){function t(e,a,n,r){_classCallCheck(this,t);var l=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),s;return l.funcGlyph=n,l.paramStart=r,l.params=e||[],l.body=a||new c,l.bound="=>"===(null==(s=l.funcGlyph)?void 0:s.glyph),l.isGenerator=!1,l.isAsync=!1,l.isMethod=!1,l.body.traverseChildren(!1,function(e){if((e instanceof se&&e.isYield()||e instanceof Pe)&&(l.isGenerator=!0),(e instanceof se&&e.isAwait()||e instanceof o)&&(l.isAsync=!0),l.isGenerator&&l.isAsync)return e.error("function can't contain both yield and await")}),l}return _inherits(t,e),_createClass(t,[{key:"isStatement",value:function isStatement(){return this.isMethod}},{key:"makeScope",value:function makeScope(e){return new ye(e,this.body,this)}},{key:"compileNode",value:function compileNode(e){var t,o,n,r,c,p,h,g,f,y,T,v,i,b,$,k,l,_,C,D,m,E,x,I,S,A,L,F,w,P,j,M,U,V,B,W,X,Y,q,z,J,Z,Q;for(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator&&this.name.error("Class constructor may not be a generator")),this.bound&&((null==(P=e.scope.method)?void 0:P.bound)&&(this.context=e.scope.method.context),!this.context&&(this.context="this")),e.scope=Ve(e,"classScope")||this.makeScope(e.scope),e.scope.shared=Ve(e,"sharedScope"),e.indent+=De,delete e.bare,delete e.isExistentialEquals,L=[],g=[],J=null==(j=null==(M=this.thisAssignments)?void 0:M.slice())?[]:j,F=[],T=!1,y=!1,S=[],this.eachParamName(function(t,o,n,r){var l,s;if(0<=a.call(S,t)&&o.error("multiple parameters named '"+t+"'"),S.push(t),o.this)return t=o.properties[0].name.value,0<=a.call(G,t)&&(t="_"+t),s=new R(e.scope.freeVariable(t,{reserve:!1})),l=n.name instanceof le&&r instanceof d&&"="===r.operatorToken.value?new d(new R(t),s,"object"):s,n.renameParam(o,l),J.push(new d(o,s))}),U=this.params,v=b=0,l=U.length;b")),n.push(this.makeCode(" {")),null==r?void 0:r.length){var re;(re=n).push.apply(re,[this.makeCode("\n")].concat(_toConsumableArray(r),[this.makeCode("\n"+this.tab)]))}return n.push(this.makeCode("}")),this.isMethod?Ye(n,this):this.front||e.level>=H?this.wrapInParentheses(n):n}},{key:"eachParamName",value:function eachParamName(e){var a,t,o,n,r;for(n=this.params,r=[],a=0,t=n.length;a"===e||">="===e||"<="===e||"==="===e||"!=="===e}},{key:"invert",value:function invert(){var e,a,t,r,l;if(this.isChainable()&&this.first.isChainable()){for(e=!0,a=this;a&&a.operator;)e&&(e=a.operator in o),a=a.first;if(!e)return new de(this).invert();for(a=this;a&&a.operator;)a.invert=!a.invert,a.operator=o[a.operator],a=a.first;return this}return(r=o[this.operator])?(this.operator=r,this.first.unwrap()instanceof n&&this.first.invert(),this):this.second?new de(this).invert():"!"===this.operator&&(t=this.first.unwrap())instanceof n&&("!"===(l=t.operator)||"in"===l||"instanceof"===l)?t:new n("!",this)}},{key:"unfoldSoak",value:function unfoldSoak(e){var a;return("++"===(a=this.operator)||"--"===a||"delete"===a)&&ra(e,this,"first")}},{key:"generateDo",value:function generateDo(e){var a,t,o,n,r,l,s,i;for(l=[],t=e instanceof d&&(s=e.value.unwrap())instanceof h?s:e,i=t.params||[],o=0,n=i.length;o=H?new de(this).compileToFragments(e):(o="+"===a||"-"===a,("new"===a||"typeof"===a||"delete"===a||o&&this.first instanceof n&&this.first.operator===a)&&t.push([this.makeCode(" ")]),(o&&this.first instanceof n||"new"===a&&this.first.isStatement(e))&&(this.first=new de(this.first)),t.push(this.first.compileToFragments(e,Y)),this.flip&&t.reverse(),this.joinFragmentArrays(t,""))}},{key:"compileContinuation",value:function compileContinuation(e){var t,o,n,r;return o=[],t=this.operator,null==e.scope.parent&&this.error(this.operator+" can only occur inside functions"),(null==(n=e.scope.method)?void 0:n.bound)&&e.scope.method.isGenerator&&this.error("yield cannot occur inside bound (fat arrow) functions"),0<=a.call(Object.keys(this.first),"expression")&&!(this.first instanceof Se)?null!=this.first.expression&&o.push(this.first.expression.compileToFragments(e,Y)):(e.level>=q&&o.push([this.makeCode("(")]),o.push([this.makeCode(t)]),""!==(null==(r=this.first.base)?void 0:r.value)&&o.push([this.makeCode(" ")]),o.push(this.first.compileToFragments(e,Y)),e.level>=q&&o.push([this.makeCode(")")])),this.joinFragmentArrays(o,"")}},{key:"compilePower",value:function compilePower(e){var a;return a=new Le(new R("Math"),[new r(new pe("pow"))]),new u(a,[this.first,this.second]).compileToFragments(e)}},{key:"compileFloorDivision",value:function compileFloorDivision(e){var a,t,o;return t=new Le(new R("Math"),[new r(new pe("floor"))]),o=this.second.shouldCache()?new de(this.second):this.second,a=new n("/",this.first,o),new u(t,[a]).compileToFragments(e)}},{key:"compileModulo",value:function compileModulo(e){var a;return a=new Le(new K(sa("modulo",e))),new u(a,[this.first,this.second]).compileToFragments(e)}},{key:"toString",value:function toString(e){return _get(n.prototype.__proto__||Object.getPrototypeOf(n.prototype),"toString",this).call(this,e,this.constructor.name+" "+this.operator)}}]),n}(l),t,o;return t={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},o={"!==":"===","===":"!=="},e.prototype.children=["first","second"],e}.call(this),e.In=U=function(){var e=function(e){function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return o.object=e,o.array=t,o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;if(this.array instanceof Le&&this.array.isArray()&&this.array.base.objects.length){for(r=this.array.base.objects,t=0,o=r.length;t= 0"))),We(r)===We(n))?o:(o=r.concat(this.makeCode(", "),o),e.levela.call(r,t)&&r.push(t);return delete e.comments}}),Me(r,n),Qe(n.expression,n),n}return _inherits(t,e),_createClass(t,[{key:"compileNode",value:function compileNode(e){var a,t,o;if(this.expression.front=this.front,o=this.expression.compile(e,Y),this.expression.unwrap()instanceof R&&!e.scope.check(o)){var n=this.negated?["===","||"]:["!==","&&"],r=_slicedToArray(n,2);a=r[0],t=r[1],o="typeof "+o+" "+a+' "undefined"'+("undefined"===this.comparisonTarget?"":" "+t+" "+o+" "+a+" "+this.comparisonTarget)}else a="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",o=o+" "+a+" "+this.comparisonTarget;return[this.makeCode(e.level<=W?o:"("+o+")")]}}]),t}(l);return e.prototype.children=["expression"],e.prototype.invert=ae,e}.call(this),e.Parens=de=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function unwrap(){return this.body}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;return(t=this.body.unwrap(),r=null==(n=t.comments)?void 0:n.some(function(e){return e.here&&!e.unshift&&!e.newLine}),t instanceof Le&&t.isAtomic()&&!this.csxAttribute&&!r)?(t.front=this.front,t.compileToFragments(e)):(o=t.compileToFragments(e,q),a=e.level=o.length),this.csxAttribute?this.wrapInBraces(o):a?o:this.wrapInParentheses(o))}}]),a}(l);return e.prototype.children=["body"],e}.call(this),e.StringWithInterpolations=be=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function unwrap(){return this}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(e){var t,o,n,r,l,s,i,d,c;if(this.csxAttribute)return c=new de(new a(this.body)),c.csxAttribute=!0,c.compileNode(e);for(r=this.body.unwrap(),n=[],d=[],r.traverseChildren(!1,function(e){var a,t,o,r,l,s;if(e instanceof ve){if(e.comments){var i;(i=d).push.apply(i,_toConsumableArray(e.comments)),delete e.comments}return n.push(e),!0}if(e instanceof de){if(0!==d.length){for(t=0,r=d.length;tP,!(this.step&&null!=P&&m)&&(_=L.freeVariable("len")),i=""+b+N+" = 0, "+_+" = "+M+".length",p=""+b+N+" = "+M+".length - 1",l=N+" < "+_,s=N+" >= 0",this.step?(null==P?(l=j+" > 0 ? "+l+" : "+s,i="("+j+" > 0 ? ("+i+") : "+p+")"):m&&(l=s,i=p),k=N+" += "+j):k=""+(v===N?N+"++":"++"+N),h=[this.makeCode(i+"; "+l+"; "+b+k)])),this.returns&&(I=""+this.tab+A+" = [];\n",S="\n"+this.tab+"return "+A+";",o.makeReturn(A)),this.guard&&(1=W?this.wrapInParentheses(n):n}},{key:"unfoldSoak",value:function unfoldSoak(){return this.soak&&this}}]),a}(l);return e.prototype.children=["condition","body","elseBody"],e}.call(this),Re={modulo:function modulo(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},objectWithoutKeys:function objectWithoutKeys(){return"function(o, ks) { var res = {}; for (var k in o) ([].indexOf.call(ks, k) < 0 && {}.hasOwnProperty.call(o, k)) && (res[k] = o[k]); return res; }"},boundMethodCheck:function boundMethodCheck(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},_extends:function _extends(){return"Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }"},hasProp:function hasProp(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function slice(){return"[].slice"},splice:function(){return"[].splice"}},z=1,q=2,X=3,W=4,Y=5,H=6,De=" ",fe=/^[+-]?\d+$/,sa=function(e,a){var t,o;return o=a.scope.root,e in o.utilities?o.utilities[e]:(t=o.freeVariable(e),o.assign(t,Re[e](a)),o.utilities[e]=t)},ea=function(e,a){var t=!(2=e);)e--;return a&&[a.sourceLine,a.sourceColumn]}}]),e}(),t=function(){var e=function(){function e(){_classCallCheck(this,e),this.lines=[]}return _createClass(e,[{key:"add",value:function add(e,t){var o=2=t);)t--;return n&&n.sourceLocation(o)}},{key:"generate",value:function generate(){var e=0"],y={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:f,names:[],mappings:t},(e.sourceMap||e.inlineMap)&&(y.sourcesContent=[a]),y}},{key:"encodeVlq",value:function encodeVlq(e){var a,t,l,s;for(a="",l=0>e?1:0,s=(_Mathabs(e)<<1)+l;s||!a;)t=s&r,s>>=n,s&&(t|=o),a+=this.encodeBase64(t);return a}},{key:"encodeBase64",value:function encodeBase64(e){return t[e]||function(){throw new Error("Cannot Base64 encode value: "+e)}()}}]),e}(),t,o,n,r;return n=5,o=1<",s(d,e),null==f[d]&&(f[d]=[]),f[d].push(e),y&&($=new r),S=u.tokenize(e,a),a.referencedVars=function(){var e,a,t;for(t=[],e=0,a=S.length;e"),d=e.getLineNumber(),o=e.getColumnNumber(),p=a(r,d,o),n=p?r+":"+p[0]+":"+p[1]:r+":"+d+":"+o),l=e.getFunctionName(),s=e.isConstructor(),i=!(e.isToplevel()||s),i?(c=e.getMethodName(),m=e.getTypeName(),l?(u=t="",m&&l.indexOf(m)&&(u=m+"."),c&&l.indexOf("."+c)!==l.length-c.length-1&&(t=" [as "+c+"]"),""+u+l+t+" ("+n+")"):m+"."+(c||"")+" ("+n+")"):s?"new "+(l||"")+" ("+n+")":l?l+" ("+n+")":n},i=function(e,t,n){var r,l,s,i,c,u;if(!(""===e||(i=e.slice(e.lastIndexOf(".")),0<=a.call(o,i))))return null;if(""!==e&&null!=g[e])return g[e][g[e].length-1];if(null!=g[""])for(c=g[""],l=c.length-1;0<=l;l+=-1)if(s=c[l],u=s.sourceLocation([t-1,n-1]),null!=(null==u?void 0:u[0])&&null!=u[1])return s;return null==f[e]?null:(r=d(f[e][f[e].length-1],{filename:e,sourceMap:!0,literate:p.isLiterate(e)}),r.sourceMap)},Error.prepareStackTrace=function(a,t){var o,n,r;return r=function(e,a,t){var o,n;return n=i(e,a,t),null!=n&&(o=n.sourceLocation([a-1,t-1])),null==o?null:[o[0]+1,o[1]+1]},n=function(){var a,n,l;for(l=[],a=0,n=t.length;a 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define("ace/apply_delta",[], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} - -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} - -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} - -exports.applyDelta = function(docLines, delta, doNotValidate) { - - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); - } - break; - } -}; -}); - -ace.define("ace/lib/event_emitter",[], function(require, exports, module) { -"use strict"; - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column - }; - } - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.off("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define("ace/document",[], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - this.getLinesForRange = function(range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - this.insertLines = function(row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - this.removeLines = function(firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - this.insert = function(position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - - return this.insertMergedLines(position, this.$split(text)); - }; - this.insertInLine = function(position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - - return this.clonePos(end); - }; - - this.clippedPos = function(row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } else if (row < 0) { - row = 0; - } else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; - }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; - }; - - this.pos = function(row, column) { - return {row: row, column: column}; - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - this.insertFullLines = function(row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - - return this.clonePos(end); - }; - this.remove = function(range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }); - return this.clonePos(start); - }; - this.removeInLine = function(row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({start: start, end: end}) - }, true); - - return this.clonePos(start); - }; - this.removeFullLines = function(firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - this.removeNewLine = function(row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - this.replace = function(range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - this.revertDelta(deltas[i]); - } - }; - this.applyDelta = function(delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - - this.$safeApplyDelta = function(delta) { - var docLength = this.$lines.length; - if ( - delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength - ) { - this.applyDelta(delta); - } - }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - this.revertDelta = function(delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: index + lines[l-1].length + newlineLength}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define("ace/worker/mirror",[], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -var Document = require("../document").Document; -var lang = require("../lib/lang"); - -var Mirror = exports.Mirror = function(sender) { - this.sender = sender; - var doc = this.doc = new Document(""); - - var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); - - var _self = this; - sender.on("change", function(e) { - var data = e.data; - if (data[0].start) { - doc.applyDeltas(data); - } else { - for (var i = 0; i < data.length; i += 2) { - if (Array.isArray(data[i+1])) { - var d = {action: "insert", start: data[i], lines: data[i+1]}; - } else { - var d = {action: "remove", start: data[i], end: data[i+1]}; - } - doc.applyDelta(d, true); - } - } - if (_self.$timeout) - return deferredUpdate.schedule(_self.$timeout); - _self.onUpdate(); - }); -}; - -(function() { - - this.$timeout = 500; - - this.setTimeout = function(timeout) { - this.$timeout = timeout; - }; - - this.setValue = function(value) { - this.doc.setValue(value); - this.deferredUpdate.schedule(this.$timeout); - }; - - this.getValue = function(callbackId) { - this.sender.callback(this.doc.getValue(), callbackId); - }; - - this.onUpdate = function() { - }; - - this.isPending = function() { - return this.deferredUpdate.isPending(); - }; - -}).call(Mirror.prototype); - -}); - -ace.define("ace/mode/css/csslint",[], function(require, exports, module) { - -var CSSLint = (function(){ - var module = module || {}, - exports = exports || {}; -var parserlib = (function () { -var require; -require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i") { - this.type = "child"; - } else if (text === "+") { - this.type = "adjacent-sibling"; - } else if (text === "~") { - this.type = "sibling"; - } - -} - -Combinator.prototype = new SyntaxUnit(); -Combinator.prototype.constructor = Combinator; - - -},{"../util/SyntaxUnit":26,"./Parser":6}],3:[function(require,module,exports){ -"use strict"; - -module.exports = Matcher; - -var StringReader = require("../util/StringReader"); -var SyntaxError = require("../util/SyntaxError"); -function Matcher(matchFunc, toString) { - this.match = function(expression) { - var result; - expression.mark(); - result = matchFunc(expression); - if (result) { - expression.drop(); - } else { - expression.restore(); - } - return result; - }; - this.toString = typeof toString === "function" ? toString : function() { - return toString; - }; -} -Matcher.prec = { - MOD: 5, - SEQ: 4, - ANDAND: 3, - OROR: 2, - ALT: 1 -}; -Matcher.parse = function(str) { - var reader, eat, expr, oror, andand, seq, mod, term, result; - reader = new StringReader(str); - eat = function(matcher) { - var result = reader.readMatch(matcher); - if (result === null) { - throw new SyntaxError( - "Expected " + matcher, reader.getLine(), reader.getCol()); - } - return result; - }; - expr = function() { - var m = [ oror() ]; - while (reader.readMatch(" | ") !== null) { - m.push(oror()); - } - return m.length === 1 ? m[0] : Matcher.alt.apply(Matcher, m); - }; - oror = function() { - var m = [ andand() ]; - while (reader.readMatch(" || ") !== null) { - m.push(andand()); - } - return m.length === 1 ? m[0] : Matcher.oror.apply(Matcher, m); - }; - andand = function() { - var m = [ seq() ]; - while (reader.readMatch(" && ") !== null) { - m.push(seq()); - } - return m.length === 1 ? m[0] : Matcher.andand.apply(Matcher, m); - }; - seq = function() { - var m = [ mod() ]; - while (reader.readMatch(/^ (?![&|\]])/) !== null) { - m.push(mod()); - } - return m.length === 1 ? m[0] : Matcher.seq.apply(Matcher, m); - }; - mod = function() { - var m = term(); - if (reader.readMatch("?") !== null) { - return m.question(); - } else if (reader.readMatch("*") !== null) { - return m.star(); - } else if (reader.readMatch("+") !== null) { - return m.plus(); - } else if (reader.readMatch("#") !== null) { - return m.hash(); - } else if (reader.readMatch(/^\{\s*/) !== null) { - var min = eat(/^\d+/); - eat(/^\s*,\s*/); - var max = eat(/^\d+/); - eat(/^\s*\}/); - return m.braces(Number(min), Number(max)); - } - return m; - }; - term = function() { - if (reader.readMatch("[ ") !== null) { - var m = expr(); - eat(" ]"); - return m; - } - return Matcher.fromType(eat(/^[^ ?*+#{]+/)); - }; - result = expr(); - if (!reader.eof()) { - throw new SyntaxError( - "Expected end of string", reader.getLine(), reader.getCol()); - } - return result; -}; -Matcher.cast = function(m) { - if (m instanceof Matcher) { - return m; - } - return Matcher.parse(m); -}; -Matcher.fromType = function(type) { - var ValidationTypes = require("./ValidationTypes"); - return new Matcher(function(expression) { - return expression.hasNext() && ValidationTypes.isType(expression, type); - }, type); -}; -Matcher.seq = function() { - var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); - if (ms.length === 1) { - return ms[0]; - } - return new Matcher(function(expression) { - var i, result = true; - for (i = 0; result && i < ms.length; i++) { - result = ms[i].match(expression); - } - return result; - }, function(prec) { - var p = Matcher.prec.SEQ; - var s = ms.map(function(m) { - return m.toString(p); - }).join(" "); - if (prec > p) { - s = "[ " + s + " ]"; - } - return s; - }); -}; -Matcher.alt = function() { - var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); - if (ms.length === 1) { - return ms[0]; - } - return new Matcher(function(expression) { - var i, result = false; - for (i = 0; !result && i < ms.length; i++) { - result = ms[i].match(expression); - } - return result; - }, function(prec) { - var p = Matcher.prec.ALT; - var s = ms.map(function(m) { - return m.toString(p); - }).join(" | "); - if (prec > p) { - s = "[ " + s + " ]"; - } - return s; - }); -}; -Matcher.many = function(required) { - var ms = Array.prototype.slice.call(arguments, 1).reduce(function(acc, v) { - if (v.expand) { - var ValidationTypes = require("./ValidationTypes"); - acc.push.apply(acc, ValidationTypes.complex[v.expand].options); - } else { - acc.push(Matcher.cast(v)); - } - return acc; - }, []); - - if (required === true) { - required = ms.map(function() { - return true; - }); - } - - var result = new Matcher(function(expression) { - var seen = [], max = 0, pass = 0; - var success = function(matchCount) { - if (pass === 0) { - max = Math.max(matchCount, max); - return matchCount === ms.length; - } else { - return matchCount === max; - } - }; - var tryMatch = function(matchCount) { - for (var i = 0; i < ms.length; i++) { - if (seen[i]) { - continue; - } - expression.mark(); - if (ms[i].match(expression)) { - seen[i] = true; - if (tryMatch(matchCount + (required === false || required[i] ? 1 : 0))) { - expression.drop(); - return true; - } - expression.restore(); - seen[i] = false; - } else { - expression.drop(); - } - } - return success(matchCount); - }; - if (!tryMatch(0)) { - pass++; - tryMatch(0); - } - - if (required === false) { - return max > 0; - } - for (var i = 0; i < ms.length; i++) { - if (required[i] && !seen[i]) { - return false; - } - } - return true; - }, function(prec) { - var p = required === false ? Matcher.prec.OROR : Matcher.prec.ANDAND; - var s = ms.map(function(m, i) { - if (required !== false && !required[i]) { - return m.toString(Matcher.prec.MOD) + "?"; - } - return m.toString(p); - }).join(required === false ? " || " : " && "); - if (prec > p) { - s = "[ " + s + " ]"; - } - return s; - }); - result.options = ms; - return result; -}; -Matcher.andand = function() { - var args = Array.prototype.slice.call(arguments); - args.unshift(true); - return Matcher.many.apply(Matcher, args); -}; -Matcher.oror = function() { - var args = Array.prototype.slice.call(arguments); - args.unshift(false); - return Matcher.many.apply(Matcher, args); -}; -Matcher.prototype = { - constructor: Matcher, - match: function() { - throw new Error("unimplemented"); - }, - toString: function() { - throw new Error("unimplemented"); - }, - func: function() { - return this.match.bind(this); - }, - then: function(m) { - return Matcher.seq(this, m); - }, - or: function(m) { - return Matcher.alt(this, m); - }, - andand: function(m) { - return Matcher.many(true, this, m); - }, - oror: function(m) { - return Matcher.many(false, this, m); - }, - star: function() { - return this.braces(0, Infinity, "*"); - }, - plus: function() { - return this.braces(1, Infinity, "+"); - }, - question: function() { - return this.braces(0, 1, "?"); - }, - hash: function() { - return this.braces(1, Infinity, "#", Matcher.cast(",")); - }, - braces: function(min, max, marker, optSep) { - var m1 = this, m2 = optSep ? optSep.then(this) : this; - if (!marker) { - marker = "{" + min + "," + max + "}"; - } - return new Matcher(function(expression) { - var result = true, i; - for (i = 0; i < max; i++) { - if (i > 0 && optSep) { - result = m2.match(expression); - } else { - result = m1.match(expression); - } - if (!result) { - break; - } - } - return i >= min; - }, function() { - return m1.toString(Matcher.prec.MOD) + marker; - }); - } -}; - -},{"../util/StringReader":24,"../util/SyntaxError":25,"./ValidationTypes":21}],4:[function(require,module,exports){ -"use strict"; - -module.exports = MediaFeature; - -var SyntaxUnit = require("../util/SyntaxUnit"); - -var Parser = require("./Parser"); -function MediaFeature(name, value) { - - SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); - this.name = name; - this.value = value; -} - -MediaFeature.prototype = new SyntaxUnit(); -MediaFeature.prototype.constructor = MediaFeature; - - -},{"../util/SyntaxUnit":26,"./Parser":6}],5:[function(require,module,exports){ -"use strict"; - -module.exports = MediaQuery; - -var SyntaxUnit = require("../util/SyntaxUnit"); - -var Parser = require("./Parser"); -function MediaQuery(modifier, mediaType, features, line, col) { - - SyntaxUnit.call(this, (modifier ? modifier + " " : "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); - this.modifier = modifier; - this.mediaType = mediaType; - this.features = features; - -} - -MediaQuery.prototype = new SyntaxUnit(); -MediaQuery.prototype.constructor = MediaQuery; - - -},{"../util/SyntaxUnit":26,"./Parser":6}],6:[function(require,module,exports){ -"use strict"; - -module.exports = Parser; - -var EventTarget = require("../util/EventTarget"); -var SyntaxError = require("../util/SyntaxError"); -var SyntaxUnit = require("../util/SyntaxUnit"); - -var Combinator = require("./Combinator"); -var MediaFeature = require("./MediaFeature"); -var MediaQuery = require("./MediaQuery"); -var PropertyName = require("./PropertyName"); -var PropertyValue = require("./PropertyValue"); -var PropertyValuePart = require("./PropertyValuePart"); -var Selector = require("./Selector"); -var SelectorPart = require("./SelectorPart"); -var SelectorSubPart = require("./SelectorSubPart"); -var TokenStream = require("./TokenStream"); -var Tokens = require("./Tokens"); -var Validation = require("./Validation"); -function Parser(options) { - EventTarget.call(this); - - - this.options = options || {}; - - this._tokenStream = null; -} -Parser.DEFAULT_TYPE = 0; -Parser.COMBINATOR_TYPE = 1; -Parser.MEDIA_FEATURE_TYPE = 2; -Parser.MEDIA_QUERY_TYPE = 3; -Parser.PROPERTY_NAME_TYPE = 4; -Parser.PROPERTY_VALUE_TYPE = 5; -Parser.PROPERTY_VALUE_PART_TYPE = 6; -Parser.SELECTOR_TYPE = 7; -Parser.SELECTOR_PART_TYPE = 8; -Parser.SELECTOR_SUB_PART_TYPE = 9; - -Parser.prototype = function() { - - var proto = new EventTarget(), // new prototype - prop, - additions = { - __proto__: null, - constructor: Parser, - DEFAULT_TYPE : 0, - COMBINATOR_TYPE : 1, - MEDIA_FEATURE_TYPE : 2, - MEDIA_QUERY_TYPE : 3, - PROPERTY_NAME_TYPE : 4, - PROPERTY_VALUE_TYPE : 5, - PROPERTY_VALUE_PART_TYPE : 6, - SELECTOR_TYPE : 7, - SELECTOR_PART_TYPE : 8, - SELECTOR_SUB_PART_TYPE : 9, - - _stylesheet: function() { - - var tokenStream = this._tokenStream, - count, - token, - tt; - - this.fire("startstylesheet"); - this._charset(); - - this._skipCruft(); - while (tokenStream.peek() === Tokens.IMPORT_SYM) { - this._import(); - this._skipCruft(); - } - while (tokenStream.peek() === Tokens.NAMESPACE_SYM) { - this._namespace(); - this._skipCruft(); - } - tt = tokenStream.peek(); - while (tt > Tokens.EOF) { - - try { - - switch (tt) { - case Tokens.MEDIA_SYM: - this._media(); - this._skipCruft(); - break; - case Tokens.PAGE_SYM: - this._page(); - this._skipCruft(); - break; - case Tokens.FONT_FACE_SYM: - this._font_face(); - this._skipCruft(); - break; - case Tokens.KEYFRAMES_SYM: - this._keyframes(); - this._skipCruft(); - break; - case Tokens.VIEWPORT_SYM: - this._viewport(); - this._skipCruft(); - break; - case Tokens.DOCUMENT_SYM: - this._document(); - this._skipCruft(); - break; - case Tokens.SUPPORTS_SYM: - this._supports(); - this._skipCruft(); - break; - case Tokens.UNKNOWN_SYM: // unknown @ rule - tokenStream.get(); - if (!this.options.strict) { - this.fire({ - type: "error", - error: null, - message: "Unknown @ rule: " + tokenStream.LT(0).value + ".", - line: tokenStream.LT(0).startLine, - col: tokenStream.LT(0).startCol - }); - count = 0; - while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) === Tokens.LBRACE) { - count++; // keep track of nesting depth - } - - while (count) { - tokenStream.advance([Tokens.RBRACE]); - count--; - } - - } else { - throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol); - } - break; - case Tokens.S: - this._readWhitespace(); - break; - default: - if (!this._ruleset()) { - switch (tt) { - case Tokens.CHARSET_SYM: - token = tokenStream.LT(1); - this._charset(false); - throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol); - case Tokens.IMPORT_SYM: - token = tokenStream.LT(1); - this._import(false); - throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol); - case Tokens.NAMESPACE_SYM: - token = tokenStream.LT(1); - this._namespace(false); - throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); - default: - tokenStream.get(); // get the last token - this._unexpectedToken(tokenStream.token()); - } - - } - } - } catch (ex) { - if (ex instanceof SyntaxError && !this.options.strict) { - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - } else { - throw ex; - } - } - - tt = tokenStream.peek(); - } - - if (tt !== Tokens.EOF) { - this._unexpectedToken(tokenStream.token()); - } - - this.fire("endstylesheet"); - }, - - _charset: function(emit) { - var tokenStream = this._tokenStream, - charset, - token, - line, - col; - - if (tokenStream.match(Tokens.CHARSET_SYM)) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.STRING); - - token = tokenStream.token(); - charset = token.value; - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.SEMICOLON); - - if (emit !== false) { - this.fire({ - type: "charset", - charset:charset, - line: line, - col: col - }); - } - } - }, - - _import: function(emit) { - - var tokenStream = this._tokenStream, - uri, - importToken, - mediaList = []; - tokenStream.mustMatch(Tokens.IMPORT_SYM); - importToken = tokenStream.token(); - this._readWhitespace(); - - tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); - uri = tokenStream.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/, "$1"); - - this._readWhitespace(); - - mediaList = this._media_query_list(); - tokenStream.mustMatch(Tokens.SEMICOLON); - this._readWhitespace(); - - if (emit !== false) { - this.fire({ - type: "import", - uri: uri, - media: mediaList, - line: importToken.startLine, - col: importToken.startCol - }); - } - - }, - - _namespace: function(emit) { - - var tokenStream = this._tokenStream, - line, - col, - prefix, - uri; - tokenStream.mustMatch(Tokens.NAMESPACE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - this._readWhitespace(); - if (tokenStream.match(Tokens.IDENT)) { - prefix = tokenStream.token().value; - this._readWhitespace(); - } - - tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); - uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.SEMICOLON); - this._readWhitespace(); - - if (emit !== false) { - this.fire({ - type: "namespace", - prefix: prefix, - uri: uri, - line: line, - col: col - }); - } - - }, - - _supports: function(emit) { - var tokenStream = this._tokenStream, - line, - col; - - if (tokenStream.match(Tokens.SUPPORTS_SYM)) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - this._supports_condition(); - this._readWhitespace(); - - tokenStream.mustMatch(Tokens.LBRACE); - this._readWhitespace(); - - if (emit !== false) { - this.fire({ - type: "startsupports", - line: line, - col: col - }); - } - - while (true) { - if (!this._ruleset()) { - break; - } - } - - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - this.fire({ - type: "endsupports", - line: line, - col: col - }); - } - }, - - _supports_condition: function() { - var tokenStream = this._tokenStream, - ident; - - if (tokenStream.match(Tokens.IDENT)) { - ident = tokenStream.token().value.toLowerCase(); - - if (ident === "not") { - tokenStream.mustMatch(Tokens.S); - this._supports_condition_in_parens(); - } else { - tokenStream.unget(); - } - } else { - this._supports_condition_in_parens(); - this._readWhitespace(); - - while (tokenStream.peek() === Tokens.IDENT) { - ident = tokenStream.LT(1).value.toLowerCase(); - if (ident === "and" || ident === "or") { - tokenStream.mustMatch(Tokens.IDENT); - this._readWhitespace(); - this._supports_condition_in_parens(); - this._readWhitespace(); - } - } - } - }, - - _supports_condition_in_parens: function() { - var tokenStream = this._tokenStream, - ident; - - if (tokenStream.match(Tokens.LPAREN)) { - this._readWhitespace(); - if (tokenStream.match(Tokens.IDENT)) { - ident = tokenStream.token().value.toLowerCase(); - if (ident === "not") { - this._readWhitespace(); - this._supports_condition(); - this._readWhitespace(); - tokenStream.mustMatch(Tokens.RPAREN); - } else { - tokenStream.unget(); - this._supports_declaration_condition(false); - } - } else { - this._supports_condition(); - this._readWhitespace(); - tokenStream.mustMatch(Tokens.RPAREN); - } - } else { - this._supports_declaration_condition(); - } - }, - - _supports_declaration_condition: function(requireStartParen) { - var tokenStream = this._tokenStream; - - if (requireStartParen !== false) { - tokenStream.mustMatch(Tokens.LPAREN); - } - this._readWhitespace(); - this._declaration(); - tokenStream.mustMatch(Tokens.RPAREN); - }, - - _media: function() { - var tokenStream = this._tokenStream, - line, - col, - mediaList; // = []; - tokenStream.mustMatch(Tokens.MEDIA_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - mediaList = this._media_query_list(); - - tokenStream.mustMatch(Tokens.LBRACE); - this._readWhitespace(); - - this.fire({ - type: "startmedia", - media: mediaList, - line: line, - col: col - }); - - while (true) { - if (tokenStream.peek() === Tokens.PAGE_SYM) { - this._page(); - } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM) { - this._font_face(); - } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM) { - this._viewport(); - } else if (tokenStream.peek() === Tokens.DOCUMENT_SYM) { - this._document(); - } else if (tokenStream.peek() === Tokens.SUPPORTS_SYM) { - this._supports(); - } else if (tokenStream.peek() === Tokens.MEDIA_SYM) { - this._media(); - } else if (!this._ruleset()) { - break; - } - } - - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - this.fire({ - type: "endmedia", - media: mediaList, - line: line, - col: col - }); - }, - _media_query_list: function() { - var tokenStream = this._tokenStream, - mediaList = []; - - - this._readWhitespace(); - - if (tokenStream.peek() === Tokens.IDENT || tokenStream.peek() === Tokens.LPAREN) { - mediaList.push(this._media_query()); - } - - while (tokenStream.match(Tokens.COMMA)) { - this._readWhitespace(); - mediaList.push(this._media_query()); - } - - return mediaList; - }, - _media_query: function() { - var tokenStream = this._tokenStream, - type = null, - ident = null, - token = null, - expressions = []; - - if (tokenStream.match(Tokens.IDENT)) { - ident = tokenStream.token().value.toLowerCase(); - if (ident !== "only" && ident !== "not") { - tokenStream.unget(); - ident = null; - } else { - token = tokenStream.token(); - } - } - - this._readWhitespace(); - - if (tokenStream.peek() === Tokens.IDENT) { - type = this._media_type(); - if (token === null) { - token = tokenStream.token(); - } - } else if (tokenStream.peek() === Tokens.LPAREN) { - if (token === null) { - token = tokenStream.LT(1); - } - expressions.push(this._media_expression()); - } - - if (type === null && expressions.length === 0) { - return null; - } else { - this._readWhitespace(); - while (tokenStream.match(Tokens.IDENT)) { - if (tokenStream.token().value.toLowerCase() !== "and") { - this._unexpectedToken(tokenStream.token()); - } - - this._readWhitespace(); - expressions.push(this._media_expression()); - } - } - - return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); - }, - _media_type: function() { - return this._media_feature(); - }, - _media_expression: function() { - var tokenStream = this._tokenStream, - feature = null, - token, - expression = null; - - tokenStream.mustMatch(Tokens.LPAREN); - this._readWhitespace(); - - feature = this._media_feature(); - this._readWhitespace(); - - if (tokenStream.match(Tokens.COLON)) { - this._readWhitespace(); - token = tokenStream.LT(1); - expression = this._expression(); - } - - tokenStream.mustMatch(Tokens.RPAREN); - this._readWhitespace(); - - return new MediaFeature(feature, expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null); - }, - _media_feature: function() { - var tokenStream = this._tokenStream; - - this._readWhitespace(); - - tokenStream.mustMatch(Tokens.IDENT); - - return SyntaxUnit.fromToken(tokenStream.token()); - }, - _page: function() { - var tokenStream = this._tokenStream, - line, - col, - identifier = null, - pseudoPage = null; - tokenStream.mustMatch(Tokens.PAGE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - if (tokenStream.match(Tokens.IDENT)) { - identifier = tokenStream.token().value; - if (identifier.toLowerCase() === "auto") { - this._unexpectedToken(tokenStream.token()); - } - } - if (tokenStream.peek() === Tokens.COLON) { - pseudoPage = this._pseudo_page(); - } - - this._readWhitespace(); - - this.fire({ - type: "startpage", - id: identifier, - pseudo: pseudoPage, - line: line, - col: col - }); - - this._readDeclarations(true, true); - - this.fire({ - type: "endpage", - id: identifier, - pseudo: pseudoPage, - line: line, - col: col - }); - - }, - _margin: function() { - var tokenStream = this._tokenStream, - line, - col, - marginSym = this._margin_sym(); - - if (marginSym) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this.fire({ - type: "startpagemargin", - margin: marginSym, - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endpagemargin", - margin: marginSym, - line: line, - col: col - }); - return true; - } else { - return false; - } - }, - _margin_sym: function() { - - var tokenStream = this._tokenStream; - - if (tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, - Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, - Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, - Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, - Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, - Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, - Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) { - return SyntaxUnit.fromToken(tokenStream.token()); - } else { - return null; - } - - }, - - _pseudo_page: function() { - - var tokenStream = this._tokenStream; - - tokenStream.mustMatch(Tokens.COLON); - tokenStream.mustMatch(Tokens.IDENT); - - return tokenStream.token().value; - }, - - _font_face: function() { - var tokenStream = this._tokenStream, - line, - col; - tokenStream.mustMatch(Tokens.FONT_FACE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - this.fire({ - type: "startfontface", - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endfontface", - line: line, - col: col - }); - }, - - _viewport: function() { - var tokenStream = this._tokenStream, - line, - col; - - tokenStream.mustMatch(Tokens.VIEWPORT_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - this.fire({ - type: "startviewport", - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endviewport", - line: line, - col: col - }); - - }, - - _document: function() { - - var tokenStream = this._tokenStream, - token, - functions = [], - prefix = ""; - - tokenStream.mustMatch(Tokens.DOCUMENT_SYM); - token = tokenStream.token(); - if (/^@-([^-]+)-/.test(token.value)) { - prefix = RegExp.$1; - } - - this._readWhitespace(); - functions.push(this._document_function()); - - while (tokenStream.match(Tokens.COMMA)) { - this._readWhitespace(); - functions.push(this._document_function()); - } - - tokenStream.mustMatch(Tokens.LBRACE); - this._readWhitespace(); - - this.fire({ - type: "startdocument", - functions: functions, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - - var ok = true; - while (ok) { - switch (tokenStream.peek()) { - case Tokens.PAGE_SYM: - this._page(); - break; - case Tokens.FONT_FACE_SYM: - this._font_face(); - break; - case Tokens.VIEWPORT_SYM: - this._viewport(); - break; - case Tokens.MEDIA_SYM: - this._media(); - break; - case Tokens.KEYFRAMES_SYM: - this._keyframes(); - break; - case Tokens.DOCUMENT_SYM: - this._document(); - break; - default: - ok = Boolean(this._ruleset()); - } - } - - tokenStream.mustMatch(Tokens.RBRACE); - token = tokenStream.token(); - this._readWhitespace(); - - this.fire({ - type: "enddocument", - functions: functions, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - }, - - _document_function: function() { - - var tokenStream = this._tokenStream, - value; - - if (tokenStream.match(Tokens.URI)) { - value = tokenStream.token().value; - this._readWhitespace(); - } else { - value = this._function(); - } - - return value; - }, - - _operator: function(inFunction) { - - var tokenStream = this._tokenStream, - token = null; - - if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || - inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS])) { - token = tokenStream.token(); - this._readWhitespace(); - } - return token ? PropertyValuePart.fromToken(token) : null; - - }, - - _combinator: function() { - - var tokenStream = this._tokenStream, - value = null, - token; - - if (tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])) { - token = tokenStream.token(); - value = new Combinator(token.value, token.startLine, token.startCol); - this._readWhitespace(); - } - - return value; - }, - - _unary_operator: function() { - - var tokenStream = this._tokenStream; - - if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])) { - return tokenStream.token().value; - } else { - return null; - } - }, - - _property: function() { - - var tokenStream = this._tokenStream, - value = null, - hack = null, - propertyName = "", - token, - line, - col; - if (tokenStream.peek() === Tokens.STAR && this.options.starHack) { - tokenStream.get(); - token = tokenStream.token(); - hack = token.value; - line = token.startLine; - col = token.startCol; - } - if (tokenStream.peek() === Tokens.MINUS) { - tokenStream.get(); - token = tokenStream.token(); - propertyName = token.value; - line = token.startLine; - col = token.startCol; - } - - if (tokenStream.match(Tokens.IDENT)) { - token = tokenStream.token(); - propertyName += token.value; - if (propertyName.charAt(0) === "_" && this.options.underscoreHack) { - hack = "_"; - propertyName = propertyName.substring(1); - } - - value = new PropertyName(propertyName, hack, line || token.startLine, col || token.startCol); - this._readWhitespace(); - } else if (tokenStream.peek() === Tokens.RBRACE) { - } else { - this._unexpectedToken(tokenStream.LT(1)); - } - - return value; - }, - _ruleset: function() { - - var tokenStream = this._tokenStream, - tt, - selectors; - try { - selectors = this._selectors_group(); - } catch (ex) { - if (ex instanceof SyntaxError && !this.options.strict) { - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - tt = tokenStream.advance([Tokens.RBRACE]); - if (tt === Tokens.RBRACE) { - } else { - throw ex; - } - - } else { - throw ex; - } - return true; - } - if (selectors) { - - this.fire({ - type: "startrule", - selectors: selectors, - line: selectors[0].line, - col: selectors[0].col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endrule", - selectors: selectors, - line: selectors[0].line, - col: selectors[0].col - }); - - } - - return selectors; - - }, - _selectors_group: function() { - var tokenStream = this._tokenStream, - selectors = [], - selector; - - selector = this._selector(); - if (selector !== null) { - - selectors.push(selector); - while (tokenStream.match(Tokens.COMMA)) { - this._readWhitespace(); - selector = this._selector(); - if (selector !== null) { - selectors.push(selector); - } else { - this._unexpectedToken(tokenStream.LT(1)); - } - } - } - - return selectors.length ? selectors : null; - }, - _selector: function() { - - var tokenStream = this._tokenStream, - selector = [], - nextSelector = null, - combinator = null, - ws = null; - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null) { - return null; - } - - selector.push(nextSelector); - - do { - combinator = this._combinator(); - - if (combinator !== null) { - selector.push(combinator); - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null) { - this._unexpectedToken(tokenStream.LT(1)); - } else { - selector.push(nextSelector); - } - } else { - if (this._readWhitespace()) { - ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); - combinator = this._combinator(); - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null) { - if (combinator !== null) { - this._unexpectedToken(tokenStream.LT(1)); - } - } else { - - if (combinator !== null) { - selector.push(combinator); - } else { - selector.push(ws); - } - - selector.push(nextSelector); - } - } else { - break; - } - - } - } while (true); - - return new Selector(selector, selector[0].line, selector[0].col); - }, - _simple_selector_sequence: function() { - - var tokenStream = this._tokenStream, - elementName = null, - modifiers = [], - selectorText = "", - components = [ - function() { - return tokenStream.match(Tokens.HASH) ? - new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : - null; - }, - this._class, - this._attrib, - this._pseudo, - this._negation - ], - i = 0, - len = components.length, - component = null, - line, - col; - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - - elementName = this._type_selector(); - if (!elementName) { - elementName = this._universal(); - } - - if (elementName !== null) { - selectorText += elementName; - } - - while (true) { - if (tokenStream.peek() === Tokens.S) { - break; - } - while (i < len && component === null) { - component = components[i++].call(this); - } - - if (component === null) { - if (selectorText === "") { - return null; - } else { - break; - } - } else { - i = 0; - modifiers.push(component); - selectorText += component.toString(); - component = null; - } - } - - - return selectorText !== "" ? - new SelectorPart(elementName, modifiers, selectorText, line, col) : - null; - }, - _type_selector: function() { - - var tokenStream = this._tokenStream, - ns = this._namespace_prefix(), - elementName = this._element_name(); - - if (!elementName) { - if (ns) { - tokenStream.unget(); - if (ns.length > 1) { - tokenStream.unget(); - } - } - - return null; - } else { - if (ns) { - elementName.text = ns + elementName.text; - elementName.col -= ns.length; - } - return elementName; - } - }, - _class: function() { - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.DOT)) { - tokenStream.mustMatch(Tokens.IDENT); - token = tokenStream.token(); - return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); - } else { - return null; - } - - }, - _element_name: function() { - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.IDENT)) { - token = tokenStream.token(); - return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); - - } else { - return null; - } - }, - _namespace_prefix: function() { - var tokenStream = this._tokenStream, - value = ""; - if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE) { - - if (tokenStream.match([Tokens.IDENT, Tokens.STAR])) { - value += tokenStream.token().value; - } - - tokenStream.mustMatch(Tokens.PIPE); - value += "|"; - - } - - return value.length ? value : null; - }, - _universal: function() { - var tokenStream = this._tokenStream, - value = "", - ns; - - ns = this._namespace_prefix(); - if (ns) { - value += ns; - } - - if (tokenStream.match(Tokens.STAR)) { - value += "*"; - } - - return value.length ? value : null; - - }, - _attrib: function() { - - var tokenStream = this._tokenStream, - value = null, - ns, - token; - - if (tokenStream.match(Tokens.LBRACKET)) { - token = tokenStream.token(); - value = token.value; - value += this._readWhitespace(); - - ns = this._namespace_prefix(); - - if (ns) { - value += ns; - } - - tokenStream.mustMatch(Tokens.IDENT); - value += tokenStream.token().value; - value += this._readWhitespace(); - - if (tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, - Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])) { - - value += tokenStream.token().value; - value += this._readWhitespace(); - - tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); - value += tokenStream.token().value; - value += this._readWhitespace(); - } - - tokenStream.mustMatch(Tokens.RBRACKET); - - return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol); - } else { - return null; - } - }, - _pseudo: function() { - - var tokenStream = this._tokenStream, - pseudo = null, - colons = ":", - line, - col; - - if (tokenStream.match(Tokens.COLON)) { - - if (tokenStream.match(Tokens.COLON)) { - colons += ":"; - } - - if (tokenStream.match(Tokens.IDENT)) { - pseudo = tokenStream.token().value; - line = tokenStream.token().startLine; - col = tokenStream.token().startCol - colons.length; - } else if (tokenStream.peek() === Tokens.FUNCTION) { - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol - colons.length; - pseudo = this._functional_pseudo(); - } - - if (pseudo) { - pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); - } else { - var startLine = tokenStream.LT(1).startLine, - startCol = tokenStream.LT(0).startCol; - throw new SyntaxError("Expected a `FUNCTION` or `IDENT` after colon at line " + startLine + ", col " + startCol + ".", startLine, startCol); - } - } - - return pseudo; - }, - _functional_pseudo: function() { - - var tokenStream = this._tokenStream, - value = null; - - if (tokenStream.match(Tokens.FUNCTION)) { - value = tokenStream.token().value; - value += this._readWhitespace(); - value += this._expression(); - tokenStream.mustMatch(Tokens.RPAREN); - value += ")"; - } - - return value; - }, - _expression: function() { - - var tokenStream = this._tokenStream, - value = ""; - - while (tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, - Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, - Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, - Tokens.RESOLUTION, Tokens.SLASH])) { - - value += tokenStream.token().value; - value += this._readWhitespace(); - } - - return value.length ? value : null; - - }, - _negation: function() { - - var tokenStream = this._tokenStream, - line, - col, - value = "", - arg, - subpart = null; - - if (tokenStream.match(Tokens.NOT)) { - value = tokenStream.token().value; - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - value += this._readWhitespace(); - arg = this._negation_arg(); - value += arg; - value += this._readWhitespace(); - tokenStream.match(Tokens.RPAREN); - value += tokenStream.token().value; - - subpart = new SelectorSubPart(value, "not", line, col); - subpart.args.push(arg); - } - - return subpart; - }, - _negation_arg: function() { - - var tokenStream = this._tokenStream, - args = [ - this._type_selector, - this._universal, - function() { - return tokenStream.match(Tokens.HASH) ? - new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : - null; - }, - this._class, - this._attrib, - this._pseudo - ], - arg = null, - i = 0, - len = args.length, - line, - col, - part; - - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - - while (i < len && arg === null) { - - arg = args[i].call(this); - i++; - } - if (arg === null) { - this._unexpectedToken(tokenStream.LT(1)); - } - if (arg.type === "elementName") { - part = new SelectorPart(arg, [], arg.toString(), line, col); - } else { - part = new SelectorPart(null, [arg], arg.toString(), line, col); - } - - return part; - }, - - _declaration: function() { - - var tokenStream = this._tokenStream, - property = null, - expr = null, - prio = null, - invalid = null, - propertyName = ""; - - property = this._property(); - if (property !== null) { - - tokenStream.mustMatch(Tokens.COLON); - this._readWhitespace(); - - expr = this._expr(); - if (!expr || expr.length === 0) { - this._unexpectedToken(tokenStream.LT(1)); - } - - prio = this._prio(); - propertyName = property.toString(); - if (this.options.starHack && property.hack === "*" || - this.options.underscoreHack && property.hack === "_") { - - propertyName = property.text; - } - - try { - this._validateProperty(propertyName, expr); - } catch (ex) { - invalid = ex; - } - - this.fire({ - type: "property", - property: property, - value: expr, - important: prio, - line: property.line, - col: property.col, - invalid: invalid - }); - - return true; - } else { - return false; - } - }, - - _prio: function() { - - var tokenStream = this._tokenStream, - result = tokenStream.match(Tokens.IMPORTANT_SYM); - - this._readWhitespace(); - return result; - }, - - _expr: function(inFunction) { - - var values = [], - value = null, - operator = null; - - value = this._term(inFunction); - if (value !== null) { - - values.push(value); - - do { - operator = this._operator(inFunction); - if (operator) { - values.push(operator); - } /*else { - values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); - valueParts = []; - }*/ - - value = this._term(inFunction); - - if (value === null) { - break; - } else { - values.push(value); - } - } while (true); - } - - return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; - }, - - _term: function(inFunction) { - - var tokenStream = this._tokenStream, - unary = null, - value = null, - endChar = null, - part = null, - token, - line, - col; - unary = this._unary_operator(); - if (unary !== null) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - if (tokenStream.peek() === Tokens.IE_FUNCTION && this.options.ieFilters) { - - value = this._ie_function(); - if (unary === null) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])) { - - token = tokenStream.token(); - endChar = token.endChar; - value = token.value + this._expr(inFunction).text; - if (unary === null) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - tokenStream.mustMatch(Tokens.type(endChar)); - value += endChar; - this._readWhitespace(); - } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, - Tokens.ANGLE, Tokens.TIME, - Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])) { - - value = tokenStream.token().value; - if (unary === null) { - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - part = PropertyValuePart.fromToken(tokenStream.token()); - } - this._readWhitespace(); - } else { - token = this._hexcolor(); - if (token === null) { - if (unary === null) { - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - } - if (value === null) { - if (tokenStream.LA(3) === Tokens.EQUALS && this.options.ieFilters) { - value = this._ie_function(); - } else { - value = this._function(); - } - } - - } else { - value = token.value; - if (unary === null) { - line = token.startLine; - col = token.startCol; - } - } - - } - - return part !== null ? part : value !== null ? - new PropertyValuePart(unary !== null ? unary + value : value, line, col) : - null; - - }, - - _function: function() { - - var tokenStream = this._tokenStream, - functionText = null, - expr = null, - lt; - - if (tokenStream.match(Tokens.FUNCTION)) { - functionText = tokenStream.token().value; - this._readWhitespace(); - expr = this._expr(true); - functionText += expr; - if (this.options.ieFilters && tokenStream.peek() === Tokens.EQUALS) { - do { - - if (this._readWhitespace()) { - functionText += tokenStream.token().value; - } - if (tokenStream.LA(0) === Tokens.COMMA) { - functionText += tokenStream.token().value; - } - - tokenStream.match(Tokens.IDENT); - functionText += tokenStream.token().value; - - tokenStream.match(Tokens.EQUALS); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { - tokenStream.get(); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - } - } while (tokenStream.match([Tokens.COMMA, Tokens.S])); - } - - tokenStream.match(Tokens.RPAREN); - functionText += ")"; - this._readWhitespace(); - } - - return functionText; - }, - - _ie_function: function() { - - var tokenStream = this._tokenStream, - functionText = null, - lt; - if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])) { - functionText = tokenStream.token().value; - - do { - - if (this._readWhitespace()) { - functionText += tokenStream.token().value; - } - if (tokenStream.LA(0) === Tokens.COMMA) { - functionText += tokenStream.token().value; - } - - tokenStream.match(Tokens.IDENT); - functionText += tokenStream.token().value; - - tokenStream.match(Tokens.EQUALS); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { - tokenStream.get(); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - } - } while (tokenStream.match([Tokens.COMMA, Tokens.S])); - - tokenStream.match(Tokens.RPAREN); - functionText += ")"; - this._readWhitespace(); - } - - return functionText; - }, - - _hexcolor: function() { - - var tokenStream = this._tokenStream, - token = null, - color; - - if (tokenStream.match(Tokens.HASH)) { - - token = tokenStream.token(); - color = token.value; - if (!/#[a-f0-9]{3,6}/i.test(color)) { - throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); - } - this._readWhitespace(); - } - - return token; - }, - - _keyframes: function() { - var tokenStream = this._tokenStream, - token, - tt, - name, - prefix = ""; - - tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); - token = tokenStream.token(); - if (/^@-([^-]+)-/.test(token.value)) { - prefix = RegExp.$1; - } - - this._readWhitespace(); - name = this._keyframe_name(); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.LBRACE); - - this.fire({ - type: "startkeyframes", - name: name, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - - this._readWhitespace(); - tt = tokenStream.peek(); - while (tt === Tokens.IDENT || tt === Tokens.PERCENTAGE) { - this._keyframe_rule(); - this._readWhitespace(); - tt = tokenStream.peek(); - } - - this.fire({ - type: "endkeyframes", - name: name, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - }, - - _keyframe_name: function() { - var tokenStream = this._tokenStream; - - tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); - return SyntaxUnit.fromToken(tokenStream.token()); - }, - - _keyframe_rule: function() { - var keyList = this._key_list(); - - this.fire({ - type: "startkeyframerule", - keys: keyList, - line: keyList[0].line, - col: keyList[0].col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endkeyframerule", - keys: keyList, - line: keyList[0].line, - col: keyList[0].col - }); - - }, - - _key_list: function() { - var tokenStream = this._tokenStream, - keyList = []; - keyList.push(this._key()); - - this._readWhitespace(); - - while (tokenStream.match(Tokens.COMMA)) { - this._readWhitespace(); - keyList.push(this._key()); - this._readWhitespace(); - } - - return keyList; - }, - - _key: function() { - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.PERCENTAGE)) { - return SyntaxUnit.fromToken(tokenStream.token()); - } else if (tokenStream.match(Tokens.IDENT)) { - token = tokenStream.token(); - - if (/from|to/i.test(token.value)) { - return SyntaxUnit.fromToken(token); - } - - tokenStream.unget(); - } - this._unexpectedToken(tokenStream.LT(1)); - }, - _skipCruft: function() { - while (this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])) { - } - }, - _readDeclarations: function(checkStart, readMargins) { - var tokenStream = this._tokenStream, - tt; - - - this._readWhitespace(); - - if (checkStart) { - tokenStream.mustMatch(Tokens.LBRACE); - } - - this._readWhitespace(); - - try { - - while (true) { - - if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())) { - } else if (this._declaration()) { - if (!tokenStream.match(Tokens.SEMICOLON)) { - break; - } - } else { - break; - } - this._readWhitespace(); - } - - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - } catch (ex) { - if (ex instanceof SyntaxError && !this.options.strict) { - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); - if (tt === Tokens.SEMICOLON) { - this._readDeclarations(false, readMargins); - } else if (tt !== Tokens.RBRACE) { - throw ex; - } - - } else { - throw ex; - } - } - - }, - _readWhitespace: function() { - - var tokenStream = this._tokenStream, - ws = ""; - - while (tokenStream.match(Tokens.S)) { - ws += tokenStream.token().value; - } - - return ws; - }, - _unexpectedToken: function(token) { - throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); - }, - _verifyEnd: function() { - if (this._tokenStream.LA(1) !== Tokens.EOF) { - this._unexpectedToken(this._tokenStream.LT(1)); - } - }, - _validateProperty: function(property, value) { - Validation.validate(property, value); - }, - - parse: function(input) { - this._tokenStream = new TokenStream(input, Tokens); - this._stylesheet(); - }, - - parseStyleSheet: function(input) { - return this.parse(input); - }, - - parseMediaQuery: function(input) { - this._tokenStream = new TokenStream(input, Tokens); - var result = this._media_query(); - this._verifyEnd(); - return result; - }, - parsePropertyValue: function(input) { - - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._expr(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseRule: function(input) { - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._ruleset(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseSelector: function(input) { - - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._selector(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseStyleAttribute: function(input) { - input += "}"; // for error recovery in _readDeclarations() - this._tokenStream = new TokenStream(input, Tokens); - this._readDeclarations(); - } - }; - for (prop in additions) { - if (Object.prototype.hasOwnProperty.call(additions, prop)) { - proto[prop] = additions[prop]; - } - } - - return proto; -}(); - -},{"../util/EventTarget":23,"../util/SyntaxError":25,"../util/SyntaxUnit":26,"./Combinator":2,"./MediaFeature":4,"./MediaQuery":5,"./PropertyName":8,"./PropertyValue":9,"./PropertyValuePart":11,"./Selector":13,"./SelectorPart":14,"./SelectorSubPart":15,"./TokenStream":17,"./Tokens":18,"./Validation":19}],7:[function(require,module,exports){ - -"use strict"; - -var Properties = module.exports = { - __proto__: null, - "align-items" : "flex-start | flex-end | center | baseline | stretch", - "align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", - "align-self" : "auto | flex-start | flex-end | center | baseline | stretch", - "all" : "initial | inherit | unset", - "-webkit-align-items" : "flex-start | flex-end | center | baseline | stretch", - "-webkit-align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", - "-webkit-align-self" : "auto | flex-start | flex-end | center | baseline | stretch", - "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ", - "alignment-baseline" : "auto | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", - "animation" : 1, - "animation-delay" : "